Interface InvocationCompiler

All Known Implementing Classes:
IndyInvocationCompiler, NormalInvocationCompiler

public interface InvocationCompiler
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    asString(AsStringInstr call, String scopeFieldName, String file)
    Coerces the receiver to a String using to_s, unless it is already a String Stack required: context, caller, receiver
    void
    invokeArrayDeref(String file, String scopeFieldName, CallBase call)
    Invoke the array dereferencing method ([]) on an object other than self.
    void
    invokeBlockGiven(String methodName, String file)
    Invoke block_given? or iterator? with awareness of any built-in methods.
    void
    invokeClassSuper(String file, String name, int arity, boolean hasClosure, boolean literalClosure, boolean[] splatmap, int flags)
    Invoke a superclass method from a class context.
    void
    Perform a === call appropriate for a case/when statement.
    void
    invokeFrameName(String methodName, String file)
    Invoke __method__ or __callee__ with awareness of any built-in methods.
    void
    invokeInstanceSuper(String file, String name, int arity, boolean hasClosure, boolean literalClosure, boolean[] splatmap, int flags)
    Invoke a superclass method from an instance context.
    void
    invokeOther(String file, String scopeFieldName, CallBase call, int arity)
    Invoke a method on an object other than self.
    void
    invokeOtherOneFixnum(String file, CallBase call, long fixnum)
    Invoke a fixnum-receiving method on an object other than self.
    void
    invokeOtherOneFloat(String file, CallBase call, double flote)
    Invoke a float-receiving method on an object other than self.
    void
    invokeSelf(String file, String scopeFieldName, CallBase call, int arity)
    Invoke a method on self.
    void
    invokeUnresolvedSuper(String file, String name, int arity, boolean hasClosure, boolean literalClosure, boolean[] splatmap, int flags)
    Invoke a superclass method from an unresolved context.
    void
    invokeZSuper(String file, String name, int arity, boolean hasClosure, boolean[] splatmap, int flags)
    Invoke a superclass method from a zsuper in a block.
    void
    setCallInfo(int flags)
    Sets the current callInfo, when it cannot be passed other ways Stack required: none
  • Method Details

    • invokeOther

      void invokeOther(String file, String scopeFieldName, CallBase call, int arity)
      Invoke a method on an object other than self.

      Stack required: context, self, all arguments, optional block

      Parameters:
      call - the call to be invoked
    • invokeArrayDeref

      void invokeArrayDeref(String file, String scopeFieldName, CallBase call)
      Invoke the array dereferencing method ([]) on an object other than self.

      If this invokes against a Hash with a frozen string, it will follow an optimized path.

      Stack required: context, self, target, arg0

      Parameters:
      file -
    • invokeOtherOneFixnum

      void invokeOtherOneFixnum(String file, CallBase call, long fixnum)
      Invoke a fixnum-receiving method on an object other than self.

      Stack required: context, self, receiver (fixnum will be handled separately)

    • invokeOtherOneFloat

      void invokeOtherOneFloat(String file, CallBase call, double flote)
      Invoke a float-receiving method on an object other than self.

      Stack required: context, self, receiver (float will be handled separately)

    • invokeSelf

      void invokeSelf(String file, String scopeFieldName, CallBase call, int arity)
      Invoke a method on self. Stack required: context, caller, self, all arguments, optional block
      Parameters:
      file - the filename of the script making this call
      call - to be invoked on self
      arity - of the call.
    • invokeInstanceSuper

      void invokeInstanceSuper(String file, String name, int arity, boolean hasClosure, boolean literalClosure, boolean[] splatmap, int flags)
      Invoke a superclass method from an instance context.

      Stack required: context, caller, self, start class, arguments[, block]

      Parameters:
      file - the filename of the script making this call
      name - name of the method to invoke
      arity - arity of the arguments on the stack
      hasClosure - whether a block is passed
      literalClosure - whether the block passed is a literal closure
      splatmap - a map of arguments to be splatted back into arg list
      flags -
    • invokeClassSuper

      void invokeClassSuper(String file, String name, int arity, boolean hasClosure, boolean literalClosure, boolean[] splatmap, int flags)
      Invoke a superclass method from a class context.

      Stack required: context, caller, self, start class, arguments[, block]

      Parameters:
      file - the filename of the script making this call
      name - name of the method to invoke
      arity - arity of the arguments on the stack
      hasClosure - whether a block is passed
      literalClosure - whether the block passed is a literal closure
      splatmap - a map of arguments to be splatted back into arg list
      flags -
    • invokeUnresolvedSuper

      void invokeUnresolvedSuper(String file, String name, int arity, boolean hasClosure, boolean literalClosure, boolean[] splatmap, int flags)
      Invoke a superclass method from an unresolved context.

      Stack required: context, caller, self, arguments[, block]

      Parameters:
      file - the filename of the script making this call
      name - name of the method to invoke
      arity - arity of the arguments on the stack
      hasClosure - whether a block is passed
      literalClosure - whether the block passed is a literal closure
      splatmap - a map of arguments to be splatted back into arg list
      flags -
    • invokeZSuper

      void invokeZSuper(String file, String name, int arity, boolean hasClosure, boolean[] splatmap, int flags)
      Invoke a superclass method from a zsuper in a block.

      Stack required: context, caller, self, arguments[, block]

      Parameters:
      file - the filename of the script making this call
      name - name of the method to invoke
      arity - arity of the arguments on the stack
      hasClosure - whether a block is passed
      splatmap - a map of arguments to be splatted back into arg list
      flags -
    • invokeEQQ

      void invokeEQQ(EQQInstr call)
      Perform a === call appropriate for a case/when statement. Stack required: context, case value, when value
    • asString

      void asString(AsStringInstr call, String scopeFieldName, String file)
      Coerces the receiver to a String using to_s, unless it is already a String Stack required: context, caller, receiver
    • setCallInfo

      void setCallInfo(int flags)
      Sets the current callInfo, when it cannot be passed other ways Stack required: none
    • invokeBlockGiven

      void invokeBlockGiven(String methodName, String file)
      Invoke block_given? or iterator? with awareness of any built-in methods.
    • invokeFrameName

      void invokeFrameName(String methodName, String file)
      Invoke __method__ or __callee__ with awareness of any built-in methods.