Interface InvocationCompiler

All Known Implementing Classes:
IndyInvocationCompiler, NormalInvocationCompiler

public interface InvocationCompiler
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    invokeArrayDeref(String file, String scopeFieldName, CallBase call)
    Invoke the array dereferencing method ([]) on an object other than self.
    void
    invokeClassSuper(String file, String name, int arity, boolean hasClosure, boolean literalClosure, boolean[] splatmap)
    Invoke a superclass method from a class context.
    void
    Perform a === call appropriate for a case/when statement.
    void
    invokeInstanceSuper(String file, String name, int arity, boolean hasClosure, boolean literalClosure, boolean[] splatmap)
    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)
    Invoke a superclass method from an unresolved context.
    void
    invokeZSuper(String file, String name, int arity, boolean hasClosure, boolean[] splatmap)
    Invoke a superclass method from a zsuper in a block.
  • 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)
      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
    • invokeClassSuper

      void invokeClassSuper(String file, String name, int arity, boolean hasClosure, boolean literalClosure, boolean[] splatmap)
      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
    • invokeUnresolvedSuper

      void invokeUnresolvedSuper(String file, String name, int arity, boolean hasClosure, boolean literalClosure, boolean[] splatmap)
      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
    • invokeZSuper

      void invokeZSuper(String file, String name, int arity, boolean hasClosure, boolean[] splatmap)
      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
    • invokeEQQ

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