Class ReadElementNode

All Implemented Interfaces:
com.oracle.truffle.api.instrumentation.InstrumentableNode, com.oracle.truffle.api.nodes.NodeInterface, ReadNode, Cloneable

public class ReadElementNode extends JSTargetableNode implements ReadNode
  • Field Details

    • context

      protected final JSContext context
  • Constructor Details

  • Method Details

    • create

      public static ReadElementNode create(JSContext context)
    • create

      public static ReadElementNode create(JavaScriptNode targetNode, JavaScriptNode indexNode, JSContext context)
    • 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
    • hasTag

      public boolean hasTag(Class<? extends com.oracle.truffle.api.instrumentation.Tag> tag)
      Specified by:
      hasTag in interface com.oracle.truffle.api.instrumentation.InstrumentableNode
      Overrides:
      hasTag in class JavaScriptNode
    • evaluateTarget

      public Object evaluateTarget(com.oracle.truffle.api.frame.VirtualFrame frame)
      Overrides:
      evaluateTarget in class JSTargetableNode
    • execute

      public Object execute(com.oracle.truffle.api.frame.VirtualFrame frame)
      Description copied from class: JavaScriptNode
      Executes this node using the specified context and frame and returns the result value.
      Specified by:
      execute in class JavaScriptNode
      Parameters:
      frame - the frame of the currently executing guest language method
      Returns:
      the value of the execution
    • executeInt

      public int executeInt(com.oracle.truffle.api.frame.VirtualFrame frame) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Description copied from class: JavaScriptNode
      Like 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.
      Overrides:
      executeInt in class JavaScriptNode
      Parameters:
      frame - the frame of the currently executing guest language method
      Returns:
      the value of the execution as an int
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException - if a loss-free conversion of the result to int is not possible
    • executeDouble

      public double executeDouble(com.oracle.truffle.api.frame.VirtualFrame frame) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Description copied from class: JavaScriptNode
      Like 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.
      Overrides:
      executeDouble in class JavaScriptNode
      Parameters:
      frame - the frame of the currently executing guest language method
      Returns:
      the value of the execution as a double
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException - if a loss-free conversion of the result to double is not possible
    • executeWithTarget

      public Object executeWithTarget(com.oracle.truffle.api.frame.VirtualFrame frame, Object target)
      Specified by:
      executeWithTarget in class JSTargetableNode
    • executeWithTarget

      public Object executeWithTarget(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, Object receiver)
    • executeWithTargetInt

      public int executeWithTargetInt(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • executeWithTargetDouble

      public double executeWithTargetDouble(com.oracle.truffle.api.frame.VirtualFrame frame, Object target, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • executeWithTargetAndIndex

      public final Object executeWithTargetAndIndex(Object target, Object index)
    • executeWithTargetAndIndex

      public final Object executeWithTargetAndIndex(Object target, int index)
    • executeWithTargetAndIndex

      public final Object executeWithTargetAndIndex(Object target, long index)
    • executeWithTargetAndIndex

      public final Object executeWithTargetAndIndex(Object target, Object index, Object receiver)
    • executeWithTargetAndIndex

      public final Object executeWithTargetAndIndex(Object target, int index, Object receiver)
    • executeWithTargetAndIndexInt

      public final int executeWithTargetAndIndexInt(Object target, Object index, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • executeWithTargetAndIndexInt

      public final int executeWithTargetAndIndexInt(Object target, int index, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • executeWithTargetAndIndexDouble

      public final double executeWithTargetAndIndexDouble(Object target, Object index, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • executeWithTargetAndIndexDouble

      public final double executeWithTargetAndIndexDouble(Object target, int index, Object receiver) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • executeWithTargetAndIndexOrDefault

      public final Object executeWithTargetAndIndexOrDefault(Object target, Object index, Object defaultValue)
    • executeTypeDispatch

      protected final Object executeTypeDispatch(Object target, Object index, Object receiver, Object defaultValue)
    • executeTypeDispatch

      protected final Object executeTypeDispatch(Object target, int index, Object receiver, Object defaultValue)
    • executeTypeDispatch

      protected final Object executeTypeDispatch(Object target, long index, Object receiver, Object defaultValue)
    • executeTypeDispatchInt

      protected final int executeTypeDispatchInt(Object target, Object index, Object receiver, Object defaultValue) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • executeTypeDispatchInt

      protected final int executeTypeDispatchInt(Object target, int index, Object receiver, Object defaultValue) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • executeTypeDispatchDouble

      protected final double executeTypeDispatchDouble(Object target, Object index, Object receiver, Object defaultValue) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • executeTypeDispatchDouble

      protected final double executeTypeDispatchDouble(Object target, int index, Object receiver, Object defaultValue) throws com.oracle.truffle.api.nodes.UnexpectedResultException
      Throws:
      com.oracle.truffle.api.nodes.UnexpectedResultException
    • makeArrayCacheNode

      protected static com.oracle.truffle.js.nodes.access.ReadElementNode.ArrayReadElementCacheNode makeArrayCacheNode(JSDynamicObject target, ScriptArray array)
    • getTarget

      public final JavaScriptNode getTarget()
      Overrides:
      getTarget in class JSTargetableNode
    • getElement

      public final JavaScriptNode getElement()
    • getContext

      public final JSContext getContext()
    • copyUninitialized

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

      public String expressionToString()
      Overrides:
      expressionToString in class JSTargetableNode
    • getIndexNode

      public JavaScriptNode getIndexNode()