Class AbstractBlockNode

All Implemented Interfaces:
com.oracle.truffle.api.instrumentation.InstrumentableNode, com.oracle.truffle.api.nodes.BlockNode.ElementExecutor<JavaScriptNode>, com.oracle.truffle.api.nodes.NodeInterface, SequenceNode, Cloneable
Direct Known Subclasses:
AbstractGeneratorBlockNode, ExprBlockNode, VoidBlockNode

public abstract class AbstractBlockNode extends StatementNode implements SequenceNode, com.oracle.truffle.api.nodes.BlockNode.ElementExecutor<JavaScriptNode>
  • Field Details

    • block

      protected com.oracle.truffle.api.nodes.BlockNode<JavaScriptNode> block
  • Constructor Details

    • AbstractBlockNode

      protected AbstractBlockNode(JavaScriptNode[] statements)
  • Method Details

    • getStatements

      public final JavaScriptNode[] getStatements()
      Specified by:
      getStatements in interface SequenceNode
    • executeVoid

      public void executeVoid(com.oracle.truffle.api.frame.VirtualFrame frame)
      Description copied from class: JavaScriptNode
      Like JavaScriptNode.execute(VirtualFrame) except that it throws away the result. A node can override this method if it has a better way to execute without producing a value.
      Overrides:
      executeVoid in class JavaScriptNode
      Parameters:
      frame - the frame of the currently executing guest language method
    • execute

      public Object execute(com.oracle.truffle.api.frame.VirtualFrame frame)
      Description copied from class: JavaScriptNode
      Executes this node using the specified context and frame and returns the result value.
      Specified by:
      execute in class JavaScriptNode
      Parameters:
      frame - the frame of the currently executing guest language method
      Returns:
      the value of the execution
    • executeVoid

      public void executeVoid(com.oracle.truffle.api.frame.VirtualFrame frame, JavaScriptNode node, int index, int argument)
      Specified by:
      executeVoid in interface com.oracle.truffle.api.nodes.BlockNode.ElementExecutor<JavaScriptNode>
    • executeGeneric

      public Object executeGeneric(com.oracle.truffle.api.frame.VirtualFrame frame, JavaScriptNode node, int index, int argument)
      Specified by:
      executeGeneric in interface com.oracle.truffle.api.nodes.BlockNode.ElementExecutor<JavaScriptNode>
    • filterStatements

      protected static JavaScriptNode filterStatements(JavaScriptNode[] originalStatements, boolean exprBlock)
      Filter out empty statements, unwrap void nodes, and inline block nodes. If creating an expression block, for the last statement, only inline expression block nodes.
    • newListFromRange

      protected static ArrayList<JavaScriptNode> newListFromRange(JavaScriptNode[] statements, int from, int to)