Class JSMaterializedInvokeTargetableNode
java.lang.Object
com.oracle.truffle.api.nodes.Node
com.oracle.truffle.js.nodes.JavaScriptBaseNode
com.oracle.truffle.js.nodes.JavaScriptNode
com.oracle.truffle.js.nodes.access.JSTargetableNode
com.oracle.truffle.js.nodes.instrumentation.JSMaterializedInvokeTargetableNode
- All Implemented Interfaces:
com.oracle.truffle.api.instrumentation.InstrumentableNode, com.oracle.truffle.api.nodes.NodeInterface, Cloneable
Materialized nodes used by
MaterializedInvokeNode to report JS function values to
the instrumentation framework.
By default, InvokeNode evaluates its target node in two separate steps: first, the
node is evaluated to retrieve the target value. Then, the same node is evaluated via
executeWithTarget() to retrieve the JS function instance to be called. The second
evaluation via executeWithTarget() causes a read event (e.g., property read) that
will be detected by the instrumentation framework. Since the target is already evaluated, such
read event will however miss its target value, resulting in a wrong series of
instrumentation events.
The materialized nodes in this class internally re-evaluate the target value
provided via executeWithTarget() using the internal EchoTargetValueNode
. In this way, the instrumentation framework is able to trace target and report it
correctly as an onInput value.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classInstrumentable node reporting to the instrumentation framework any value provided toexecuteWithTarget().Nested classes/interfaces inherited from class com.oracle.truffle.api.nodes.Node
com.oracle.truffle.api.nodes.Node.Child, com.oracle.truffle.api.nodes.Node.ChildrenNested classes/interfaces inherited from interface com.oracle.truffle.api.instrumentation.InstrumentableNode
com.oracle.truffle.api.instrumentation.InstrumentableNode.WrapperNode -
Field Summary
Fields inherited from class JavaScriptNode
INTERMEDIATE_VALUE -
Constructor Summary
Constructors -
Method Summary
Methods inherited from class JSTargetableNode
createWrapper, evaluateReceiver, evaluateTarget, executeDoubleWithTarget, executeIntWithTarget, executeWithTarget, getTargetMethods inherited from class JavaScriptNode
addCallTag, addExpressionTag, addRootBodyTag, addStatementTag, cloneUninitialized, cloneUninitialized, copy, copyUninitialized, execute, executeBoolean, executeDouble, executeInt, executeVoid, expressionToString, findBlockScopeNode, getSourceSection, hasSourceSection, hasTag, isInstrumentable, isResultAlwaysOfType, onReplace, setSourceSection, setSourceSection, toString, transferSourceSection, transferSourceSectionAddExpressionTag, transferSourceSectionAndTagsMethods inherited from class JavaScriptBaseNode
getJSContext, getLanguage, getLanguageOptions, getRealm, hasOverloadedOperators, reportLoopCount, reportLoopCountMethods inherited from class com.oracle.truffle.api.nodes.Node
accept, adoptChildren, atomic, atomic, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, insert, insert, isAdoptable, isSafelyReplaceableBy, notifyInserted, replace, replace, reportPolymorphicSpecialize, reportReplaceMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.oracle.truffle.api.instrumentation.InstrumentableNode
createProbe, findNearestNodeAt, findNearestNodeAt, findProbe, getNodeObject, materializeInstrumentableNodes
-
Constructor Details
-
JSMaterializedInvokeTargetableNode
public JSMaterializedInvokeTargetableNode()
-
-
Method Details
-
createFor
-