Class OptimizedOSRLoopNode

java.lang.Object
com.oracle.truffle.api.nodes.Node
com.oracle.truffle.api.nodes.LoopNode
com.oracle.truffle.runtime.OptimizedOSRLoopNode
All Implemented Interfaces:
com.oracle.truffle.api.nodes.NodeInterface, com.oracle.truffle.api.ReplaceObserver, Cloneable

public abstract class OptimizedOSRLoopNode extends com.oracle.truffle.api.nodes.LoopNode implements com.oracle.truffle.api.ReplaceObserver
Loop node implementation that supports on-stack-replacement with compiled code.
See Also:
  • Nested Class Summary

    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.Children
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected com.oracle.truffle.api.nodes.RepeatingNode
     
  • Method Summary

    Modifier and Type
    Method
    Description
    final com.oracle.truffle.api.nodes.Node
     
    static com.oracle.truffle.api.nodes.LoopNode
    create(com.oracle.truffle.api.nodes.RepeatingNode repeat)
    Creates the default loop node implementation with the default configuration.
    protected com.oracle.truffle.runtime.OptimizedOSRLoopNode.AbstractLoopOSRRootNode
    createRootNode(com.oracle.truffle.api.frame.FrameDescriptor rootFrameDescriptor, Class<? extends com.oracle.truffle.api.frame.VirtualFrame> clazz)
     
    execute(com.oracle.truffle.api.frame.VirtualFrame frame)
     
    final void
    Forces OSR compilation for this loop.
     
    final com.oracle.truffle.api.nodes.RepeatingNode
     
    protected final boolean
    inject(boolean condition)
     
    final boolean
    nodeReplaced(com.oracle.truffle.api.nodes.Node oldNode, com.oracle.truffle.api.nodes.Node newNode, CharSequence reason)
     
    protected final void
    profileCounted(long iterations)
     

    Methods inherited from class com.oracle.truffle.api.nodes.LoopNode

    reportLoopCount

    Methods inherited from class com.oracle.truffle.api.nodes.Node

    accept, adoptChildren, atomic, atomic, deepCopy, getChildren, getCost, getDebugProperties, getDescription, getEncapsulatingSourceSection, getLock, getParent, getRootNode, getSourceSection, insert, insert, isAdoptable, isSafelyReplaceableBy, notifyInserted, onReplace, replace, replace, reportPolymorphicSpecialize, reportReplace, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • repeatingNode

      protected com.oracle.truffle.api.nodes.RepeatingNode repeatingNode
  • Method Details

    • createRootNode

      protected com.oracle.truffle.runtime.OptimizedOSRLoopNode.AbstractLoopOSRRootNode createRootNode(com.oracle.truffle.api.frame.FrameDescriptor rootFrameDescriptor, Class<? extends com.oracle.truffle.api.frame.VirtualFrame> clazz)
      Parameters:
      rootFrameDescriptor - may be null.
    • copy

      public final com.oracle.truffle.api.nodes.Node copy()
      Overrides:
      copy in class com.oracle.truffle.api.nodes.Node
    • execute

      public Object execute(com.oracle.truffle.api.frame.VirtualFrame frame)
      Overrides:
      execute in class com.oracle.truffle.api.nodes.LoopNode
    • forceOSR

      public final void forceOSR()
      Forces OSR compilation for this loop.
    • getCompiledOSRLoop

      public final OptimizedCallTarget getCompiledOSRLoop()
    • nodeReplaced

      public final boolean nodeReplaced(com.oracle.truffle.api.nodes.Node oldNode, com.oracle.truffle.api.nodes.Node newNode, CharSequence reason)
      Specified by:
      nodeReplaced in interface com.oracle.truffle.api.ReplaceObserver
    • create

      public static com.oracle.truffle.api.nodes.LoopNode create(com.oracle.truffle.api.nodes.RepeatingNode repeat)
      Creates the default loop node implementation with the default configuration. If OSR is disabled OptimizedLoopNode will be used instead.
    • getRepeatingNode

      public final com.oracle.truffle.api.nodes.RepeatingNode getRepeatingNode()
      Specified by:
      getRepeatingNode in class com.oracle.truffle.api.nodes.LoopNode
    • profileCounted

      protected final void profileCounted(long iterations)
    • inject

      protected final boolean inject(boolean condition)