public class WritePropertyNode extends JSTargetableWriteNode
| Modifier and Type | Field and Description |
|---|---|
protected PropertySetNode |
cache |
protected HasPropertyCacheNode |
hasProperty |
protected JavaScriptNode |
rhsNode |
protected JavaScriptNode |
targetNode |
INTERMEDIATE_VALUE| Modifier | Constructor and Description |
|---|---|
protected |
WritePropertyNode(JavaScriptNode target,
JavaScriptNode rhs,
Object propertyKey,
boolean isGlobal,
JSContext context,
boolean isStrict,
boolean verifyHasProperty) |
| Modifier and Type | Method and Description |
|---|---|
protected JavaScriptNode |
copyUninitialized(Set<Class<? extends com.oracle.truffle.api.instrumentation.Tag>> materializedTags) |
static WritePropertyNode |
create(JavaScriptNode target,
Object propertyKey,
JavaScriptNode rhs,
JSContext ctx,
boolean isStrict) |
static WritePropertyNode |
create(JavaScriptNode target,
Object propertyKey,
JavaScriptNode rhs,
JSContext ctx,
boolean isStrict,
boolean isGlobal,
boolean verifyHasProperty) |
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. |
double |
executeDoubleWithValue(Object obj,
double value) |
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. |
int |
executeIntWithValue(Object obj,
int value) |
void |
executeVoid(com.oracle.truffle.api.frame.VirtualFrame frame)
Like
JavaScriptNode.execute(VirtualFrame) except that it throws away the result. |
Object |
executeWithTarget(com.oracle.truffle.api.frame.VirtualFrame frame,
Object target) |
Object |
executeWithValue(Object obj,
Object value) |
void |
executeWrite(com.oracle.truffle.api.frame.VirtualFrame frame,
Object value) |
Object |
getKey() |
Object |
getNodeObject() |
JavaScriptNode |
getRhs() |
JavaScriptNode |
getTarget() |
boolean |
hasTag(Class<? extends com.oracle.truffle.api.instrumentation.Tag> tag) |
boolean |
isGlobal() |
boolean |
isResultAlwaysOfType(Class<?> clazz) |
com.oracle.truffle.api.instrumentation.InstrumentableNode |
materializeInstrumentableNodes(Set<Class<? extends com.oracle.truffle.api.instrumentation.Tag>> materializedTags) |
createWrapper, evaluateReceiver, executeDoubleWithTarget, executeIntWithTargetaddCallTag, addExpressionTag, addRootBodyTag, addStatementTag, cloneUninitialized, cloneUninitialized, copy, executeBoolean, executeLong, expressionToString, findBlockScopeNode, getSourceSection, hasSourceSection, 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, reportPolymorphicSpecializeprotected JavaScriptNode targetNode
protected JavaScriptNode rhsNode
protected PropertySetNode cache
protected HasPropertyCacheNode hasProperty
protected WritePropertyNode(JavaScriptNode target, JavaScriptNode rhs, Object propertyKey, boolean isGlobal, JSContext context, boolean isStrict, boolean verifyHasProperty)
public static WritePropertyNode create(JavaScriptNode target, Object propertyKey, JavaScriptNode rhs, JSContext ctx, boolean isStrict)
public static WritePropertyNode create(JavaScriptNode target, Object propertyKey, JavaScriptNode rhs, JSContext ctx, boolean isStrict, boolean isGlobal, boolean verifyHasProperty)
public boolean hasTag(Class<? extends com.oracle.truffle.api.instrumentation.Tag> tag)
hasTag in interface com.oracle.truffle.api.instrumentation.InstrumentableNodehasTag in class JavaScriptNodepublic Object getNodeObject()
public com.oracle.truffle.api.instrumentation.InstrumentableNode materializeInstrumentableNodes(Set<Class<? extends com.oracle.truffle.api.instrumentation.Tag>> materializedTags)
public final JavaScriptNode getTarget()
getTarget in class JSTargetableNodepublic final JavaScriptNode getRhs()
public final Object getKey()
public final boolean isGlobal()
public final int executeIntWithValue(Object obj, int value)
public final double executeDoubleWithValue(Object obj, double value)
public final Object execute(com.oracle.truffle.api.frame.VirtualFrame frame)
JavaScriptNodeexecute in class JavaScriptNodeframe - the frame of the currently executing guest language methodpublic final int executeInt(com.oracle.truffle.api.frame.VirtualFrame frame)
throws com.oracle.truffle.api.nodes.UnexpectedResultException
JavaScriptNodeJavaScriptNode.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 JavaScriptNodeframe - 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 final double executeDouble(com.oracle.truffle.api.frame.VirtualFrame frame)
throws com.oracle.truffle.api.nodes.UnexpectedResultException
JavaScriptNodeJavaScriptNode.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 JavaScriptNodeframe - 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 final 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 final void executeWrite(com.oracle.truffle.api.frame.VirtualFrame frame,
Object value)
public final Object executeWithTarget(com.oracle.truffle.api.frame.VirtualFrame frame, Object target)
executeWithTarget in class JSTargetableNodepublic final Object evaluateTarget(com.oracle.truffle.api.frame.VirtualFrame frame)
evaluateTarget in class JSTargetableNodeprotected JavaScriptNode copyUninitialized(Set<Class<? extends com.oracle.truffle.api.instrumentation.Tag>> materializedTags)
copyUninitialized in class JavaScriptNodepublic boolean isResultAlwaysOfType(Class<?> clazz)
isResultAlwaysOfType in class JavaScriptNode