public abstract class PartialEscapeClosure<BlockT extends PartialEscapeBlockState<BlockT>> extends EffectsClosure<BlockT>
Modifier and Type | Class and Description |
---|---|
static class |
PartialEscapeClosure.Final
Final subclass of PartialEscapeClosure, for performance and to make everything behave nicely
with generics.
|
protected class |
PartialEscapeClosure.MergeProcessor |
EffectsClosure.LoopKillCache
Modifier and Type | Field and Description |
---|---|
static CounterKey |
COUNTER_ALLOCATION_REMOVED |
static CounterKey |
COUNTER_MATERIALIZATIONS |
static CounterKey |
COUNTER_MATERIALIZATIONS_LOOP_END |
static CounterKey |
COUNTER_MATERIALIZATIONS_LOOP_EXIT |
static CounterKey |
COUNTER_MATERIALIZATIONS_LOOP_REITERATION |
static CounterKey |
COUNTER_MATERIALIZATIONS_MERGE |
static CounterKey |
COUNTER_MATERIALIZATIONS_PHI |
static CounterKey |
COUNTER_MATERIALIZATIONS_UNHANDLED |
static CounterKey |
COUNTER_MEMORYCHECKPOINT |
protected org.graalvm.compiler.virtual.phases.ea.VirtualizerToolImpl |
tool
This is handed out to implementers of
Virtualizable . |
ArrayList<VirtualObjectNode> |
virtualObjects
The indexes into this array correspond to
VirtualObjectNode.getObjectId() . |
aliases, blockEffects, cfg, changed, currentMode, debug, loopLocationKillCache, loopMergeEffects, schedule
Constructor and Description |
---|
PartialEscapeClosure(StructuredGraph.ScheduleResult schedule,
CoreProviders providers) |
Modifier and Type | Method and Description |
---|---|
protected PartialEscapeClosure.MergeProcessor |
createMergeProcessor(Block merge) |
protected boolean |
ensureMaterialized(PartialEscapeBlockState<?> state,
int object,
FixedNode materializeBefore,
GraphEffectList effects,
CounterKey counter) |
ValueNode |
getAlias(ValueNode value) |
ValueNode |
getAliasAndResolve(PartialEscapeBlockState<?> state,
ValueNode value) |
ObjectState |
getObjectState(PartialEscapeBlockState<?> state,
ValueNode value) |
boolean |
needsApplyEffects() |
protected void |
processInitialLoopState(Loop<Block> loop,
BlockT initialState) |
protected void |
processLoopExit(LoopExitNode exitNode,
BlockT initialState,
BlockT exitState,
GraphEffectList effects) |
protected boolean |
processNode(Node node,
BlockT state,
GraphEffectList effects,
FixedWithNextNode lastFixedNode)
Collects the effects of virtualizing the given node.
|
protected void |
processNodeInputs(ValueNode node,
FixedNode insertBefore,
BlockT state,
GraphEffectList effects)
This replaces all inputs that point to virtual or materialized values with the actual value,
materializing if necessary.
|
protected void |
processNodeWithState(NodeWithState nodeWithState,
BlockT state,
GraphEffectList effects) |
protected void |
processStateBeforeLoopOnOverflow(BlockT initialState,
FixedNode materializeBefore,
GraphEffectList effects) |
protected boolean |
requiresProcessing(Node node) |
protected boolean |
shouldMaterializeNonVirtualizable(BlockT state,
int id,
FixedNode insertBefore) |
protected BlockT |
stripKilledLoopLocations(Loop<Block> loop,
BlockT originalInitialState) |
static boolean |
updateStatesForMaterialized(PartialEscapeBlockState<?> state,
VirtualObjectNode virtual,
ValueNode materializedValue) |
protected boolean |
virtualize(ValueNode node,
VirtualizerTool vt) |
addScalarAlias, afterSplit, applyEffects, getScalarAlias, hasChanged, hasScalarReplacedInputs, merge, processBlock, processKilledLoopLocations, processLoop
cloneState, getInitialState
public static final CounterKey COUNTER_MATERIALIZATIONS
public static final CounterKey COUNTER_MATERIALIZATIONS_PHI
public static final CounterKey COUNTER_MATERIALIZATIONS_MERGE
public static final CounterKey COUNTER_MATERIALIZATIONS_UNHANDLED
public static final CounterKey COUNTER_MATERIALIZATIONS_LOOP_REITERATION
public static final CounterKey COUNTER_MATERIALIZATIONS_LOOP_END
public static final CounterKey COUNTER_MATERIALIZATIONS_LOOP_EXIT
public static final CounterKey COUNTER_ALLOCATION_REMOVED
public static final CounterKey COUNTER_MEMORYCHECKPOINT
protected final org.graalvm.compiler.virtual.phases.ea.VirtualizerToolImpl tool
Virtualizable
.public final ArrayList<VirtualObjectNode> virtualObjects
VirtualObjectNode.getObjectId()
.public PartialEscapeClosure(StructuredGraph.ScheduleResult schedule, CoreProviders providers)
public boolean needsApplyEffects()
needsApplyEffects
in class EffectsClosure<BlockT extends PartialEscapeBlockState<BlockT>>
protected boolean processNode(Node node, BlockT state, GraphEffectList effects, FixedWithNextNode lastFixedNode)
EffectsClosure
processNode
in class EffectsClosure<BlockT extends PartialEscapeBlockState<BlockT>>
protected void processStateBeforeLoopOnOverflow(BlockT initialState, FixedNode materializeBefore, GraphEffectList effects)
processStateBeforeLoopOnOverflow
in class EffectsClosure<BlockT extends PartialEscapeBlockState<BlockT>>
protected boolean requiresProcessing(Node node)
protected boolean virtualize(ValueNode node, VirtualizerTool vt)
protected void processNodeInputs(ValueNode node, FixedNode insertBefore, BlockT state, GraphEffectList effects)
VirtualObjectState
.protected boolean shouldMaterializeNonVirtualizable(BlockT state, int id, FixedNode insertBefore)
protected void processNodeWithState(NodeWithState nodeWithState, BlockT state, GraphEffectList effects)
protected boolean ensureMaterialized(PartialEscapeBlockState<?> state, int object, FixedNode materializeBefore, GraphEffectList effects, CounterKey counter)
public static boolean updateStatesForMaterialized(PartialEscapeBlockState<?> state, VirtualObjectNode virtual, ValueNode materializedValue)
protected BlockT stripKilledLoopLocations(Loop<Block> loop, BlockT originalInitialState)
stripKilledLoopLocations
in class EffectsClosure<BlockT extends PartialEscapeBlockState<BlockT>>
protected void processInitialLoopState(Loop<Block> loop, BlockT initialState)
processInitialLoopState
in class EffectsClosure<BlockT extends PartialEscapeBlockState<BlockT>>
protected void processLoopExit(LoopExitNode exitNode, BlockT initialState, BlockT exitState, GraphEffectList effects)
processLoopExit
in class EffectsClosure<BlockT extends PartialEscapeBlockState<BlockT>>
protected PartialEscapeClosure.MergeProcessor createMergeProcessor(Block merge)
createMergeProcessor
in class EffectsClosure<BlockT extends PartialEscapeBlockState<BlockT>>
public ObjectState getObjectState(PartialEscapeBlockState<?> state, ValueNode value)
public ValueNode getAliasAndResolve(PartialEscapeBlockState<?> state, ValueNode value)