public abstract class BlockScopeNode extends NamedEvaluationTargetNode implements com.oracle.truffle.api.nodes.RepeatingNode
| Modifier and Type | Class and Description |
|---|---|
static class |
BlockScopeNode.FrameBlockScopeNode |
static class |
BlockScopeNode.VirtualBlockScopeNode
Represents a local block scope that has been merged into the function's virtual frame.
|
| Modifier and Type | Field and Description |
|---|---|
protected JavaScriptNode |
block |
INTERMEDIATE_VALUE| Modifier | Constructor and Description |
|---|---|
protected |
BlockScopeNode(JavaScriptNode block) |
| Modifier and Type | Method and Description |
|---|---|
abstract com.oracle.truffle.api.frame.VirtualFrame |
appendScopeFrame(com.oracle.truffle.api.frame.VirtualFrame frame) |
static BlockScopeNode |
create(JavaScriptNode block,
JSFrameSlot blockScopeSlot,
com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor,
JSFrameSlot parentSlot,
boolean functionBlock,
boolean captureFunctionFrame,
boolean generatorFunctionBlock,
boolean hasParentBlock,
int start,
int end) |
static BlockScopeNode |
createVirtual(JavaScriptNode block,
int frameStart,
int frameEnd) |
Object |
execute(com.oracle.truffle.api.frame.VirtualFrame frame)
Executes this node using the specified context and frame and returns the result value.
|
boolean |
executeRepeating(com.oracle.truffle.api.frame.VirtualFrame frame) |
void |
executeVoid(com.oracle.truffle.api.frame.VirtualFrame frame)
Like
JavaScriptNode.execute(VirtualFrame) except that it throws away the result. |
Object |
executeWithName(com.oracle.truffle.api.frame.VirtualFrame frame,
Object name) |
void |
exitScope(com.oracle.truffle.api.frame.VirtualFrame frame) |
abstract void |
exitScope(com.oracle.truffle.api.frame.VirtualFrame frame,
boolean yield) |
JavaScriptNode |
getBlock() |
abstract Object |
getBlockScope(com.oracle.truffle.api.frame.VirtualFrame frame) |
int |
getFrameEnd() |
int |
getFrameStart() |
abstract boolean |
isFunctionBlock() |
boolean |
isResultAlwaysOfType(Class<?> clazz) |
abstract void |
setBlockScope(com.oracle.truffle.api.frame.VirtualFrame frame,
Object state) |
createWrapperaddCallTag, addExpressionTag, addRootBodyTag, addStatementTag, cloneUninitialized, cloneUninitialized, copy, copyUninitialized, executeBoolean, executeDouble, executeInt, executeLong, expressionToString, findBlockScopeNode, getSourceSection, hasSourceSection, hasTag, isInstrumentable, onReplace, removeSourceSection, setSourceSection, setSourceSection, toString, transferSourceSection, transferSourceSectionAddExpressionTag, transferSourceSectionAndTagsgetLanguage, getRealm, hasOverloadedOperatorsaccept, adoptChildren, atomic, atomic, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, insert, insert, isAdoptable, isSafelyReplaceableBy, notifyInserted, replace, replace, reportPolymorphicSpecializeclone, equals, getClass, hashCode, notify, notifyAll, wait, wait, waitprotected JavaScriptNode block
protected BlockScopeNode(JavaScriptNode block)
public static BlockScopeNode create(JavaScriptNode block, JSFrameSlot blockScopeSlot, com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor, JSFrameSlot parentSlot, boolean functionBlock, boolean captureFunctionFrame, boolean generatorFunctionBlock, boolean hasParentBlock, int start, int end)
public static BlockScopeNode createVirtual(JavaScriptNode block, int frameStart, int frameEnd)
public Object execute(com.oracle.truffle.api.frame.VirtualFrame frame)
JavaScriptNodeexecute in class JavaScriptNodeframe - the frame of the currently executing guest language methodpublic void executeVoid(com.oracle.truffle.api.frame.VirtualFrame frame)
JavaScriptNodeJavaScriptNode.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.executeVoid in class JavaScriptNodeframe - the frame of the currently executing guest language methodpublic abstract com.oracle.truffle.api.frame.VirtualFrame appendScopeFrame(com.oracle.truffle.api.frame.VirtualFrame frame)
public final void exitScope(com.oracle.truffle.api.frame.VirtualFrame frame)
public abstract void exitScope(com.oracle.truffle.api.frame.VirtualFrame frame,
boolean yield)
public abstract Object getBlockScope(com.oracle.truffle.api.frame.VirtualFrame frame)
public abstract void setBlockScope(com.oracle.truffle.api.frame.VirtualFrame frame,
Object state)
public boolean executeRepeating(com.oracle.truffle.api.frame.VirtualFrame frame)
executeRepeating in interface com.oracle.truffle.api.nodes.RepeatingNodepublic Object executeWithName(com.oracle.truffle.api.frame.VirtualFrame frame, Object name)
executeWithName in class NamedEvaluationTargetNodepublic JavaScriptNode getBlock()
public abstract boolean isFunctionBlock()
public boolean isResultAlwaysOfType(Class<?> clazz)
isResultAlwaysOfType in class JavaScriptNodepublic int getFrameStart()
public int getFrameEnd()