protected static class GraphDecoder.LoopScope extends Object
| Modifier and Type | Field and Description |
|---|---|
Node[] |
createdNodes
Nodes that have been created, indexed by the orderId.
|
Node[] |
initialCreatedNodes
Nodes that have been created in outer loop scopes and existed before starting to process
this loop, indexed by the orderId.
|
org.graalvm.collections.EconomicMap<GraphDecoder.LoopExplosionState,GraphDecoder.LoopExplosionState> |
iterationStates
Information about already processed loop iterations for state merging during loop
explosion.
|
int |
loopBeginOrderId |
int |
loopDepth |
int |
loopIteration |
GraphDecoder.MethodScope |
methodScope |
Deque<GraphDecoder.LoopScope> |
nextIterationFromLoopEndDuplication
Same as
GraphDecoder.LoopScope.nextIterationFromLoopExitDuplication except that upcoming iterations
have been created because the duplication of loop ends
LoopExplosionPlugin.LoopExplosionKind.duplicateLoopEnds() is enabled. |
Deque<GraphDecoder.LoopScope> |
nextIterationFromLoopExitDuplication
Upcoming, not yet processed, loop iterations created in the context of code duplication
along loop exits.
|
Deque<GraphDecoder.LoopScope> |
nextIterationsFromUnrolling
Same as
GraphDecoder.LoopScope.nextIterationFromLoopExitDuplication except that upcoming iterations
have been created because the unrolling of a loop with constant iteration count
LoopExplosionPlugin.LoopExplosionKind.unrollLoops() is enabled. |
BitSet |
nodesToProcess
The worklist of fixed nodes to process.
|
GraphDecoder.LoopScope |
outer |
| Modifier | Constructor and Description |
|---|---|
protected |
LoopScope(GraphDecoder.MethodScope methodScope) |
protected |
LoopScope(GraphDecoder.MethodScope methodScope,
GraphDecoder.LoopScope outer,
int loopDepth,
int loopIteration,
int loopBeginOrderId,
GraphDecoder.LoopScopeTrigger trigger,
Node[] initialCreatedNodes,
Node[] createdNodes,
Deque<GraphDecoder.LoopScope> nextIterationFromLoopExitDuplication,
Deque<GraphDecoder.LoopScope> nextIterationFromLoopEndDuplication,
Deque<GraphDecoder.LoopScope> nextIterationsFromUnrolling,
org.graalvm.collections.EconomicMap<GraphDecoder.LoopExplosionState,GraphDecoder.LoopExplosionState> iterationStates) |
| Modifier and Type | Method and Description |
|---|---|
GraphDecoder.LoopScope |
getNextIterationToProcess(boolean remove)
Return the next iteration yet to be processed that has been created in the context of
decoding this loop scope.
|
boolean |
hasIterationsToProcess()
Determines if iterations generated when decoding this loop have yet to be processed.
|
String |
toString() |
public final GraphDecoder.MethodScope methodScope
public final GraphDecoder.LoopScope outer
public final int loopDepth
public final int loopIteration
public Deque<GraphDecoder.LoopScope> nextIterationFromLoopExitDuplication
GraphDecoder.MethodScope.loopExplosion has
LoopExplosionPlugin.LoopExplosionKind.duplicateLoopExits() enabled.public Deque<GraphDecoder.LoopScope> nextIterationFromLoopEndDuplication
GraphDecoder.LoopScope.nextIterationFromLoopExitDuplication except that upcoming iterations
have been created because the duplication of loop ends
LoopExplosionPlugin.LoopExplosionKind.duplicateLoopEnds() is enabled.public Deque<GraphDecoder.LoopScope> nextIterationsFromUnrolling
GraphDecoder.LoopScope.nextIterationFromLoopExitDuplication except that upcoming iterations
have been created because the unrolling of a loop with constant iteration count
LoopExplosionPlugin.LoopExplosionKind.unrollLoops() is enabled.public final org.graalvm.collections.EconomicMap<GraphDecoder.LoopExplosionState,GraphDecoder.LoopExplosionState> iterationStates
GraphDecoder.MethodScope.loopExplosion is
LoopExplosionPlugin.LoopExplosionKind.MERGE_EXPLODE.public final int loopBeginOrderId
public final BitSet nodesToProcess
public final Node[] createdNodes
public final Node[] initialCreatedNodes
GraphDecoder.MethodScope.loopExplosion is
not LoopExplosionPlugin.LoopExplosionKind.NONE.protected LoopScope(GraphDecoder.MethodScope methodScope)
protected LoopScope(GraphDecoder.MethodScope methodScope, GraphDecoder.LoopScope outer, int loopDepth, int loopIteration, int loopBeginOrderId, GraphDecoder.LoopScopeTrigger trigger, Node[] initialCreatedNodes, Node[] createdNodes, Deque<GraphDecoder.LoopScope> nextIterationFromLoopExitDuplication, Deque<GraphDecoder.LoopScope> nextIterationFromLoopEndDuplication, Deque<GraphDecoder.LoopScope> nextIterationsFromUnrolling, org.graalvm.collections.EconomicMap<GraphDecoder.LoopExplosionState,GraphDecoder.LoopExplosionState> iterationStates)
public boolean hasIterationsToProcess()
true if there are iterations to be decoded, false elsepublic GraphDecoder.LoopScope getNextIterationToProcess(boolean remove)
remove - determines if the query of the next iteration should remove it from the
list of iterations to be processedGraphDecoder.LoopScope to be processed that has been created in the context
of decoding this loop scope. Note that the order is not necessarily reflecting
the number of loop iterations.