public class WriteElementNode extends JSTargetableNode
Modifier and Type | Field and Description |
---|---|
protected JavaScriptNode |
indexNode |
protected JavaScriptNode |
targetNode |
protected JavaScriptNode |
valueNode |
INTERMEDIATE_VALUE
Modifier | Constructor and Description |
---|---|
protected |
WriteElementNode(JavaScriptNode targetNode,
JavaScriptNode indexNode,
JavaScriptNode valueNode,
JSContext context,
boolean isStrict,
boolean writeOwn) |
Modifier and Type | Method and Description |
---|---|
protected JavaScriptNode |
copyUninitialized(Set<Class<? extends com.oracle.truffle.api.instrumentation.Tag>> materializedTags) |
static WriteElementNode |
create(JavaScriptNode targetNode,
JavaScriptNode indexNode,
JavaScriptNode valueNode,
JSContext context,
boolean isStrict) |
static WriteElementNode |
create(JSContext context,
boolean isStrict) |
static WriteElementNode |
create(JSContext context,
boolean isStrict,
boolean writeOwn) |
static WriteElementNode |
createCachedInterop(com.oracle.truffle.api.TruffleLanguage.LanguageReference<JavaScriptLanguage> languageRef) |
protected WriteElementNode |
createMaterialized(JavaScriptNode newTarget,
JavaScriptNode newIndex,
JavaScriptNode newValue) |
Object |
evaluateTarget(com.oracle.truffle.api.frame.VirtualFrame frame) |
Object |
execute(com.oracle.truffle.api.frame.VirtualFrame frame)
Executes this node using the specified context and frame and returns the result value.
|
double |
executeDouble(com.oracle.truffle.api.frame.VirtualFrame frame)
Like
JavaScriptNode.execute(VirtualFrame) except that it tries to convert the result value to a
double. |
int |
executeInt(com.oracle.truffle.api.frame.VirtualFrame frame)
Like
JavaScriptNode.execute(VirtualFrame) except that it tries to convert the result value to an
int. |
Object |
executeWithTarget(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target) |
Object |
executeWithTarget(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target,
Object receiver) |
protected Object |
executeWithTargetAndIndex(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target,
int index,
Object receiver) |
protected Object |
executeWithTargetAndIndex(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target,
Object index,
Object receiver) |
void |
executeWithTargetAndIndexAndValue(Object target,
int index,
Object value) |
void |
executeWithTargetAndIndexAndValue(Object target,
int index,
Object value,
Object receiver) |
void |
executeWithTargetAndIndexAndValue(Object target,
Object index,
Object value) |
void |
executeWithTargetAndIndexAndValue(Object target,
Object index,
Object value,
Object receiver) |
protected double |
executeWithTargetAndIndexDouble(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target,
int index,
Object receiver) |
protected double |
executeWithTargetAndIndexDouble(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target,
Object index,
Object receiver) |
protected int |
executeWithTargetAndIndexInt(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target,
int index,
Object receiver) |
protected int |
executeWithTargetAndIndexInt(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target,
Object index,
Object receiver) |
double |
executeWithTargetDouble(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target,
Object receiver) |
int |
executeWithTargetInt(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target,
Object receiver) |
JSContext |
getContext() |
JavaScriptNode |
getElement() |
JavaScriptNode |
getTarget() |
JavaScriptNode |
getValue() |
boolean |
hasTag(Class<? extends com.oracle.truffle.api.instrumentation.Tag> tag) |
boolean |
isResultAlwaysOfType(Class<?> clazz) |
boolean |
isStrict() |
com.oracle.truffle.api.instrumentation.InstrumentableNode |
materializeInstrumentableNodes(Set<Class<? extends com.oracle.truffle.api.instrumentation.Tag>> materializedTags) |
protected void |
requireObjectCoercible(Object target,
int index) |
protected void |
requireObjectCoercible(Object target,
Object index) |
protected ToArrayIndexNode |
toArrayIndexNode() |
boolean |
writeOwn() |
createWrapper, evaluateReceiver, executeDoubleWithTarget, executeIntWithTarget
addCallTag, addExpressionTag, addRootBodyTag, addStatementTag, cloneUninitialized, cloneUninitialized, copy, executeBoolean, executeLong, executeSafeInteger, executeString, executeVoid, expressionToString, findBlockScopeNode, getSourceSection, hasSourceSection, isInstrumentable, onReplace, removeSourceSection, setSourceSection, setSourceSection, toString, transferSourceSection, transferSourceSectionAddExpressionTag, transferSourceSectionAndTags
accept, adoptChildren, atomic, atomic, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, insert, insert, isAdoptable, isSafelyReplaceableBy, lookupContextReference, lookupLanguageReference, notifyInserted, replace, replace, reportPolymorphicSpecialize
protected JavaScriptNode targetNode
protected JavaScriptNode indexNode
protected JavaScriptNode valueNode
protected WriteElementNode(JavaScriptNode targetNode, JavaScriptNode indexNode, JavaScriptNode valueNode, JSContext context, boolean isStrict, boolean writeOwn)
public static WriteElementNode create(JSContext context, boolean isStrict)
public static WriteElementNode create(JSContext context, boolean isStrict, boolean writeOwn)
public static WriteElementNode create(JavaScriptNode targetNode, JavaScriptNode indexNode, JavaScriptNode valueNode, JSContext context, boolean isStrict)
protected final ToArrayIndexNode toArrayIndexNode()
protected final void requireObjectCoercible(Object target, int index)
public boolean hasTag(Class<? extends com.oracle.truffle.api.instrumentation.Tag> tag)
hasTag
in interface com.oracle.truffle.api.instrumentation.InstrumentableNode
hasTag
in class JavaScriptNode
public com.oracle.truffle.api.instrumentation.InstrumentableNode materializeInstrumentableNodes(Set<Class<? extends com.oracle.truffle.api.instrumentation.Tag>> materializedTags)
protected WriteElementNode createMaterialized(JavaScriptNode newTarget, JavaScriptNode newIndex, JavaScriptNode newValue)
public Object evaluateTarget(com.oracle.truffle.api.frame.VirtualFrame frame)
evaluateTarget
in class JSTargetableNode
public Object execute(com.oracle.truffle.api.frame.VirtualFrame frame)
JavaScriptNode
execute
in class JavaScriptNode
frame
- the frame of the currently executing guest language methodpublic int executeInt(com.oracle.truffle.api.frame.VirtualFrame frame) throws com.oracle.truffle.api.nodes.UnexpectedResultException
JavaScriptNode
JavaScriptNode.execute(VirtualFrame)
except that it tries to convert the result value to an
int. A node can override this method if it has a better way to producing a value of type int.executeInt
in class JavaScriptNode
frame
- the frame of the currently executing guest language methodcom.oracle.truffle.api.nodes.UnexpectedResultException
- if a loss-free conversion of the result to int is not
possiblepublic double executeDouble(com.oracle.truffle.api.frame.VirtualFrame frame) throws com.oracle.truffle.api.nodes.UnexpectedResultException
JavaScriptNode
JavaScriptNode.execute(VirtualFrame)
except that it tries to convert the result value to a
double. A node can override this method if it has a better way to producing a value of type
double.executeDouble
in class JavaScriptNode
frame
- the frame of the currently executing guest language methodcom.oracle.truffle.api.nodes.UnexpectedResultException
- if a loss-free conversion of the result to double is not
possiblepublic Object executeWithTarget(com.oracle.truffle.api.frame.VirtualFrame frame, Object target)
executeWithTarget
in class JSTargetableNode
public Object executeWithTarget(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, Object receiver)
public int executeWithTargetInt(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
com.oracle.truffle.api.nodes.UnexpectedResultException
public double executeWithTargetDouble(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
com.oracle.truffle.api.nodes.UnexpectedResultException
protected Object executeWithTargetAndIndex(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, Object index, Object receiver)
protected Object executeWithTargetAndIndex(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, int index, Object receiver)
protected int executeWithTargetAndIndexInt(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, Object index, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
com.oracle.truffle.api.nodes.UnexpectedResultException
protected int executeWithTargetAndIndexInt(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, int index, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
com.oracle.truffle.api.nodes.UnexpectedResultException
protected double executeWithTargetAndIndexDouble(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, Object index, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
com.oracle.truffle.api.nodes.UnexpectedResultException
protected double executeWithTargetAndIndexDouble(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, int index, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
com.oracle.truffle.api.nodes.UnexpectedResultException
public final void executeWithTargetAndIndexAndValue(Object target, Object index, Object value)
public final void executeWithTargetAndIndexAndValue(Object target, int index, Object value)
public final void executeWithTargetAndIndexAndValue(Object target, Object index, Object value, Object receiver)
public final void executeWithTargetAndIndexAndValue(Object target, int index, Object value, Object receiver)
public JavaScriptNode getTarget()
getTarget
in class JSTargetableNode
public JavaScriptNode getElement()
public JavaScriptNode getValue()
public JSContext getContext()
public boolean isStrict()
public boolean writeOwn()
protected JavaScriptNode copyUninitialized(Set<Class<? extends com.oracle.truffle.api.instrumentation.Tag>> materializedTags)
copyUninitialized
in class JavaScriptNode
public boolean isResultAlwaysOfType(Class<?> clazz)
isResultAlwaysOfType
in class JavaScriptNode
public static WriteElementNode createCachedInterop(com.oracle.truffle.api.TruffleLanguage.LanguageReference<JavaScriptLanguage> languageRef)