Mercurial > hg > graal-compiler
changeset 22721:2d6bcedb5058
Allow OperandMode.TEMP to be STACK; do not reuse VirtualStackSlot for temp slots on SPARC
line wrap: on
line diff
--- a/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Tue Sep 29 15:02:34 2015 +0200 +++ b/graal/com.oracle.graal.compiler.sparc/src/com/oracle/graal/compiler/sparc/SPARCLIRGenerator.java Tue Sep 29 16:01:13 2015 +0200 @@ -146,7 +146,6 @@ */ public abstract class SPARCLIRGenerator extends LIRGenerator { - private StackSlotValue tmpStackSlot; private SPARCSpillMoveFactory moveFactory; private Variable constantTableBase; private SPARCLoadConstantTableBaseOp loadConstantTableBaseOp; @@ -1053,10 +1052,7 @@ } protected StackSlotValue getTempSlot(LIRKind kind) { - if (tmpStackSlot == null) { - tmpStackSlot = getResult().getFrameMapBuilder().allocateSpillSlot(kind); - } - return tmpStackSlot; + return getResult().getFrameMapBuilder().allocateSpillSlot(kind); } protected SPARC getArchitecture() {
--- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Tue Sep 29 15:02:34 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCMove.java Tue Sep 29 16:01:13 2015 +0200 @@ -182,7 +182,7 @@ @Def({REG}) protected AllocatableValue result; @Use({REG}) protected AllocatableValue input; - @Use({STACK, ILLEGAL}) protected AllocatableValue temp; + @Temp({STACK, ILLEGAL}) protected AllocatableValue temp; public MoveFpGp(AllocatableValue result, AllocatableValue input, AllocatableValue temp) { super(TYPE, SIZE);
--- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java Tue Sep 29 15:02:34 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/LIRInstruction.java Tue Sep 29 16:01:13 2015 +0200 @@ -171,7 +171,7 @@ ALLOWED_FLAGS = new EnumMap<>(OperandMode.class); ALLOWED_FLAGS.put(OperandMode.USE, EnumSet.of(REG, STACK, COMPOSITE, CONST, ILLEGAL, HINT, UNINITIALIZED)); ALLOWED_FLAGS.put(ALIVE, EnumSet.of(REG, STACK, COMPOSITE, CONST, ILLEGAL, HINT, UNINITIALIZED)); - ALLOWED_FLAGS.put(TEMP, EnumSet.of(REG, COMPOSITE, CONST, ILLEGAL, HINT)); + ALLOWED_FLAGS.put(TEMP, EnumSet.of(REG, STACK, COMPOSITE, ILLEGAL, HINT)); ALLOWED_FLAGS.put(DEF, EnumSet.of(REG, STACK, COMPOSITE, ILLEGAL, HINT)); }