Class BlockScopeNode.FrameBlockScopeNode

All Implemented Interfaces:
com.oracle.truffle.api.instrumentation.InstrumentableNode, com.oracle.truffle.api.nodes.NodeInterface, com.oracle.truffle.api.nodes.RepeatingNode, ResumableNode, ResumableNode.WithObjectState, FrameDescriptorProvider, Cloneable
Enclosing class:
BlockScopeNode

public static class BlockScopeNode.FrameBlockScopeNode extends BlockScopeNode implements ResumableNode.WithObjectState, FrameDescriptorProvider
  • Field Details

    • blockScopeSlot

      protected final int blockScopeSlot
    • parentSlot

      protected final int parentSlot
    • frameDescriptor

      protected final com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
    • functionBlock

      protected final boolean functionBlock
      If true, this is the function-level block scope.
    • captureFunctionFrame

      protected final boolean captureFunctionFrame
      If true, put the virtual function frame in the parent scope slot.
    • generatorFunctionBlock

      protected final boolean generatorFunctionBlock
      If true, this is a block scope in the generator function prologue.
    • hasParentBlock

      protected final boolean hasParentBlock
    • start

      protected final int start
      Virtual frame slots start index (inclusive).
    • end

      protected final int end
      Virtual frame slots end index (exclusive).
  • Constructor Details

    • FrameBlockScopeNode

      protected FrameBlockScopeNode(JavaScriptNode block, int blockScopeSlot, com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor, int parentSlot, boolean functionBlock, boolean captureFunctionFrame, boolean generatorFunctionBlock, boolean hasParentBlock, int start, int end)
  • Method Details

    • materializeInstrumentableNodes

      public com.oracle.truffle.api.instrumentation.InstrumentableNode materializeInstrumentableNodes(Set<Class<? extends com.oracle.truffle.api.instrumentation.Tag>> materializedTags)
      Specified by:
      materializeInstrumentableNodes in interface com.oracle.truffle.api.instrumentation.InstrumentableNode
    • appendScopeFrame

      public com.oracle.truffle.api.frame.VirtualFrame appendScopeFrame(com.oracle.truffle.api.frame.VirtualFrame frame)
      Specified by:
      appendScopeFrame in class BlockScopeNode
    • exitScope

      public void exitScope(com.oracle.truffle.api.frame.VirtualFrame frame, boolean yield)
      Specified by:
      exitScope in class BlockScopeNode
    • getFrameDescriptor

      public com.oracle.truffle.api.frame.FrameDescriptor getFrameDescriptor()
      Specified by:
      getFrameDescriptor in interface FrameDescriptorProvider
    • resume

      public Object resume(com.oracle.truffle.api.frame.VirtualFrame frame, int stateSlot)
      Specified by:
      resume in interface ResumableNode
    • getBlockScope

      public Object getBlockScope(com.oracle.truffle.api.frame.VirtualFrame frame)
      Specified by:
      getBlockScope in class BlockScopeNode
    • setBlockScope

      public void setBlockScope(com.oracle.truffle.api.frame.VirtualFrame frame, Object state)
      Specified by:
      setBlockScope in class BlockScopeNode
    • isFunctionBlock

      public boolean isFunctionBlock()
      Specified by:
      isFunctionBlock in class BlockScopeNode
    • getFrameStart

      public int getFrameStart()
      Overrides:
      getFrameStart in class BlockScopeNode
    • getFrameEnd

      public int getFrameEnd()
      Overrides:
      getFrameEnd in class BlockScopeNode
    • copyUninitialized

      protected JavaScriptNode copyUninitialized(Set<Class<? extends com.oracle.truffle.api.instrumentation.Tag>> materializedTags)
      Overrides:
      copyUninitialized in class JavaScriptNode