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, spillInterval
private 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 MoveResolver
protected void checkMultipleReads()
checkMultipleReads
in class MoveResolver
protected void verifyStackSlotMapping()
verifyStackSlotMapping
in class MoveResolver
protected boolean areMultipleReadsAllowed()
areMultipleReadsAllowed
in class MoveResolver
protected boolean mightBeBlocked(Value location)
mightBeBlocked
in class MoveResolver
private int getStackArrayIndex(StackSlotValue stackSlotValue)
private int getStackArrayIndex(StackSlot stackSlot)
private int getStackArrayIndex(VirtualStackSlot virtualStackSlot)
protected void setValueBlocked(Value location, int direction)
setValueBlocked
in class MoveResolver
protected int valueBlocked(Value location)
valueBlocked
in class MoveResolver
protected LIRInstruction createMove(AllocatableValue fromOpr, AllocatableValue toOpr, AllocatableValue fromLocation, AllocatableValue toLocation)
createMove
in class MoveResolver
fromOpr
- 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