Class SLExpressionNode

java.lang.Object
com.oracle.truffle.api.nodes.Node
All Implemented Interfaces:
com.oracle.truffle.api.instrumentation.InstrumentableNode, com.oracle.truffle.api.nodes.NodeInterface, Cloneable
Direct Known Subclasses:
SLBigIntegerLiteralNode, SLBinaryNode, SLBuiltinAstNode, SLFunctionBodyNode, SLFunctionLiteralNode, SLInvokeNode, SLLogicalNotNode, SLLongLiteralNode, SLParenExpressionNode, SLReadArgumentNode, SLReadLocalVariableNode, SLReadPropertyNode, SLShortCircuitNode, SLStringLiteralNode, SLToBooleanNode, SLUnboxNode, SLWriteLocalVariableNode, SLWritePropertyNode

public abstract class SLExpressionNode extends SLStatementNode
Base class for all SL nodes that produce a value and therefore benefit from type specialization. The annotation TypeSystemReference specifies the SL types. Specifying it here defines the type system for all subclasses.
  • Constructor Details

    • SLExpressionNode

      public SLExpressionNode()
  • Method Details

    • executeGeneric

      public abstract Object executeGeneric(com.oracle.truffle.api.frame.VirtualFrame frame)
      The execute method when no specialization is possible. This is the most general case, therefore it must be provided by all subclasses.
    • executeVoid

      public void executeVoid(com.oracle.truffle.api.frame.VirtualFrame frame)
      When we use an expression at places where a statement is already sufficient, the return value is just discarded.
      Specified by:
      executeVoid in class SLStatementNode
    • createWrapper

      public com.oracle.truffle.api.instrumentation.InstrumentableNode.WrapperNode createWrapper(com.oracle.truffle.api.instrumentation.ProbeNode probe)
      Specified by:
      createWrapper in interface com.oracle.truffle.api.instrumentation.InstrumentableNode
      Overrides:
      createWrapper in class SLStatementNode
    • hasTag

      public boolean hasTag(Class<? extends com.oracle.truffle.api.instrumentation.Tag> tag)
      Specified by:
      hasTag in interface com.oracle.truffle.api.instrumentation.InstrumentableNode
      Overrides:
      hasTag in class SLStatementNode
    • addExpressionTag

      public final void addExpressionTag()
      Marks this node as being a StandardTags.ExpressionTag for instrumentation purposes.
    • executeLong

      public long executeLong(com.oracle.truffle.api.frame.VirtualFrame frame) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • executeBoolean

      public boolean executeBoolean(com.oracle.truffle.api.frame.VirtualFrame frame) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException