Class InvokeMethodVirtualNode

java.lang.Object
com.oracle.truffle.api.nodes.Node
org.pkl.core.ast.PklNode
org.pkl.core.ast.ExpressionNode
org.pkl.core.ast.expression.member.InvokeMethodVirtualNode
All Implemented Interfaces:
com.oracle.truffle.api.nodes.NodeInterface, Cloneable

public abstract class InvokeMethodVirtualNode extends ExpressionNode
A virtual method call.
  • Nested Class Summary

    Nested classes/interfaces inherited from class com.oracle.truffle.api.nodes.Node

    com.oracle.truffle.api.nodes.Node.Child, com.oracle.truffle.api.nodes.Node.Children
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final Identifier
     

    Fields inherited from class org.pkl.core.ast.PklNode

    sourceSection
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    InvokeMethodVirtualNode(com.oracle.truffle.api.source.SourceSection sourceSection, Identifier methodName, ExpressionNode[] argumentNodes, MemberLookupMode lookupMode)
     
    protected
    InvokeMethodVirtualNode(com.oracle.truffle.api.source.SourceSection sourceSection, Identifier methodName, ExpressionNode[] argumentNodes, MemberLookupMode lookupMode, boolean needsConst)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected Object
    eval(com.oracle.truffle.api.frame.VirtualFrame frame, Object receiver, VmClass receiverClass, com.oracle.truffle.api.nodes.IndirectCallNode callNode)
     
    protected Object
    evalCached(com.oracle.truffle.api.frame.VirtualFrame frame, Object receiver, VmClass receiverClass, VmClass cachedReceiverClass, ClassMethod method, com.oracle.truffle.api.nodes.DirectCallNode callNode)
     
    protected Object
    evalFunction(com.oracle.truffle.api.frame.VirtualFrame frame, VmFunction receiver, VmClass receiverClass, com.oracle.truffle.api.nodes.IndirectCallNode callNode)
    Intrinsifies `FunctionN.apply()` calls.
    protected Object
    evalFunctionCached(com.oracle.truffle.api.frame.VirtualFrame frame, VmFunction receiver, VmClass receiverClass, com.oracle.truffle.api.RootCallTarget cachedCallTarget, com.oracle.truffle.api.nodes.DirectCallNode callNode)
    Intrinsifies `FunctionN.apply()` calls.
    abstract Object
    executeWith(com.oracle.truffle.api.frame.VirtualFrame frame, Object value, VmClass clazz)
    When only using this execute method, pass `null` for `receiverNode` and `receiverClassNode` to InvokeMethodVirtualNodeGen.create(com.oracle.truffle.api.source.SourceSection, org.pkl.core.runtime.Identifier, org.pkl.core.ast.ExpressionNode[], org.pkl.core.ast.MemberLookupMode, boolean, org.pkl.core.ast.ExpressionNode, org.pkl.core.ast.internal.GetClassNode).
    protected ClassMethod
    resolveMethod(VmClass receiverClass)
     

    Methods inherited from class org.pkl.core.ast.ExpressionNode

    executeBoolean, executeFloat, executeGeneric, executeInt

    Methods inherited from class org.pkl.core.ast.PklNode

    exceptionBuilder, getShortName, getSourceSection, toString

    Methods inherited from class com.oracle.truffle.api.nodes.Node

    accept, adoptChildren, atomic, atomic, copy, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, insert, insert, isAdoptable, isSafelyReplaceableBy, notifyInserted, onReplace, replace, replace, reportPolymorphicSpecialize

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • methodName

      protected final Identifier methodName
  • Constructor Details

    • InvokeMethodVirtualNode

      protected InvokeMethodVirtualNode(com.oracle.truffle.api.source.SourceSection sourceSection, Identifier methodName, ExpressionNode[] argumentNodes, MemberLookupMode lookupMode, boolean needsConst)
    • InvokeMethodVirtualNode

      protected InvokeMethodVirtualNode(com.oracle.truffle.api.source.SourceSection sourceSection, Identifier methodName, ExpressionNode[] argumentNodes, MemberLookupMode lookupMode)
  • Method Details

    • executeWith

      public abstract Object executeWith(com.oracle.truffle.api.frame.VirtualFrame frame, Object value, VmClass clazz)
      When only using this execute method, pass `null` for `receiverNode` and `receiverClassNode` to InvokeMethodVirtualNodeGen.create(com.oracle.truffle.api.source.SourceSection, org.pkl.core.runtime.Identifier, org.pkl.core.ast.ExpressionNode[], org.pkl.core.ast.MemberLookupMode, boolean, org.pkl.core.ast.ExpressionNode, org.pkl.core.ast.internal.GetClassNode).
    • evalFunctionCached

      protected Object evalFunctionCached(com.oracle.truffle.api.frame.VirtualFrame frame, VmFunction receiver, VmClass receiverClass, com.oracle.truffle.api.RootCallTarget cachedCallTarget, com.oracle.truffle.api.nodes.DirectCallNode callNode)
      Intrinsifies `FunctionN.apply()` calls.
    • evalFunction

      protected Object evalFunction(com.oracle.truffle.api.frame.VirtualFrame frame, VmFunction receiver, VmClass receiverClass, com.oracle.truffle.api.nodes.IndirectCallNode callNode)
      Intrinsifies `FunctionN.apply()` calls.
    • evalCached

      protected Object evalCached(com.oracle.truffle.api.frame.VirtualFrame frame, Object receiver, VmClass receiverClass, VmClass cachedReceiverClass, ClassMethod method, com.oracle.truffle.api.nodes.DirectCallNode callNode)
    • eval

      protected Object eval(com.oracle.truffle.api.frame.VirtualFrame frame, Object receiver, VmClass receiverClass, com.oracle.truffle.api.nodes.IndirectCallNode callNode)
    • resolveMethod

      protected ClassMethod resolveMethod(VmClass receiverClass)