Mercurial > hg > graal-jvmci-8
changeset 22157:18013bd8052a
SSALinearScanEliminateSpillMovePhase#canEliminateSpillMove: call to super class.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Tue, 07 Jul 2015 13:24:01 +0200 |
parents | 0be1cc9089de |
children | 0d31a8c4fc2e |
files | graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScanEliminateSpillMovePhase.java |
diffstat | 1 files changed, 8 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScanEliminateSpillMovePhase.java Tue Jul 07 15:05:50 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/SSALinearScanEliminateSpillMovePhase.java Tue Jul 07 13:24:01 2015 +0200 @@ -45,14 +45,16 @@ @Override protected boolean canEliminateSpillMove(AbstractBlockBase<?> block, MoveOp move) { - // SSA Linear Scan might introduce moves to stack slots assert isVariable(move.getResult()) || LinearScanPhase.SSA_LSRA.getValue() : "Move should not be produced in a non-SSA compilation: " + move; - Interval curInterval = allocator.intervalFor(move.getResult()); - - if (!isRegister(curInterval.location()) && curInterval.alwaysInMemory() && !isPhiResolutionMove(block, move, curInterval)) { - assert isStackSlotValue(curInterval.location()) : "Not a stack slot: " + curInterval.location(); - return true; + if (super.canEliminateSpillMove(block, move)) { + // SSA Linear Scan might introduce moves to stack slots + Interval curInterval = allocator.intervalFor(move.getResult()); + assert !isRegister(curInterval.location()) && curInterval.alwaysInMemory(); + if (!isPhiResolutionMove(block, move, curInterval)) { + assert isStackSlotValue(curInterval.location()) : "Not a stack slot: " + curInterval.location(); + return true; + } } return false; }