public final class SSAMoveResolver extends MoveResolver
| Modifier and Type | Field and Description |
|---|---|
private int |
firstVirtualStackIndex |
private static int |
STACK_SLOT_IN_CALLER_FRAME_IDX |
private int[] |
stackBlocked |
| Constructor and Description |
|---|
SSAMoveResolver(LinearScan allocator) |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
areMultipleReadsAllowed() |
protected void |
breakCycle(int spillCandidate) |
boolean |
checkEmpty() |
protected void |
checkMultipleReads() |
protected LIRInstruction |
createMove(AllocatableValue fromOpr,
AllocatableValue toOpr,
AllocatableValue fromLocation,
AllocatableValue toLocation) |
private int |
getStackArrayIndex(StackSlot stackSlot) |
private int |
getStackArrayIndex(StackSlotValue stackSlotValue) |
private int |
getStackArrayIndex(VirtualStackSlot virtualStackSlot) |
protected boolean |
mightBeBlocked(Value location) |
protected void |
setValueBlocked(Value location,
int direction) |
protected int |
valueBlocked(Value location) |
protected void |
verifyStackSlotMapping() |
addMapping, addMapping, getAllocator, getMappingFrom, isMoveToSelf, mappingFromSize, spillIntervalprivate static final int STACK_SLOT_IN_CALLER_FRAME_IDX
private int[] stackBlocked
private final int firstVirtualStackIndex
public SSAMoveResolver(LinearScan allocator)
public boolean checkEmpty()
checkEmpty in class MoveResolverprotected void checkMultipleReads()
checkMultipleReads in class MoveResolverprotected void verifyStackSlotMapping()
verifyStackSlotMapping in class MoveResolverprotected boolean areMultipleReadsAllowed()
areMultipleReadsAllowed in class MoveResolverprotected boolean mightBeBlocked(Value location)
mightBeBlocked in class MoveResolverprivate int getStackArrayIndex(StackSlotValue stackSlotValue)
private int getStackArrayIndex(StackSlot stackSlot)
private int getStackArrayIndex(VirtualStackSlot virtualStackSlot)
protected void setValueBlocked(Value location, int direction)
setValueBlocked in class MoveResolverprotected int valueBlocked(Value location)
valueBlocked in class MoveResolverprotected LIRInstruction createMove(AllocatableValue fromOpr, AllocatableValue toOpr, AllocatableValue fromLocation, AllocatableValue toLocation)
createMove in class MoveResolverfromOpr - operand of the from intervaltoOpr - operand of the to intervalfromLocation - location of the to intervaltoLocation - location of the to intervalprotected void breakCycle(int spillCandidate)
breakCycle in class MoveResolver