# HG changeset patch # User Stefan Anzinger # Date 1411663348 25200 # Node ID 7d8bb35e67c8737cb4a27231a8c63715eddc4d6f # Parent 7a99826863d9800def6cbce3f517248bc613511d# Parent 26d07b31c4a867c3b39113bece86ea1816ad63fc Merge diff -r 26d07b31c4a8 -r 7d8bb35e67c8 graal/com.oracle.graal.asm/src/com/oracle/graal/asm/Assembler.java --- a/graal/com.oracle.graal.asm/src/com/oracle/graal/asm/Assembler.java Thu Sep 25 14:43:52 2014 +0200 +++ b/graal/com.oracle.graal.asm/src/com/oracle/graal/asm/Assembler.java Thu Sep 25 09:42:28 2014 -0700 @@ -33,7 +33,7 @@ public abstract class Assembler { public final TargetDescription target; - private Set jumpDisplacementHints; + private List jumpDisplacementHints; /** * Backing code buffer. @@ -206,7 +206,7 @@ public LabelHint requestLabelHint(Label label) { if (jumpDisplacementHints == null) { - jumpDisplacementHints = new HashSet<>(); + jumpDisplacementHints = new ArrayList<>(); } LabelHint hint = new LabelHint(label, position()); this.jumpDisplacementHints.add(hint); @@ -216,8 +216,7 @@ public static class LabelHint { private Label label; private int forPosition; - private int capturedTarget; - private boolean captured = false; + private int capturedTarget = -1; protected LabelHint(Label label, int lastPosition) { super(); @@ -227,7 +226,6 @@ protected void capture() { this.capturedTarget = label.position(); - this.captured = true; } public int getTarget() { @@ -241,7 +239,7 @@ } public boolean isValid() { - return captured; + return capturedTarget >= 0; } } } diff -r 26d07b31c4a8 -r 7d8bb35e67c8 graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java --- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Thu Sep 25 14:43:52 2014 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Thu Sep 25 09:42:28 2014 -0700 @@ -575,24 +575,24 @@ new Signx(asLongReg(src), asIntReg(dst)).emit(masm); break; case B2L: - new Sllx(asIntReg(src), 56, asLongReg(dst)).emit(masm); + new Sll(asIntReg(src), 24, asLongReg(dst)).emit(masm); delaySlotLir.emitControlTransfer(crb, masm); - new Srax(asLongReg(dst), 56, asLongReg(dst)).emit(masm); + new Sra(asLongReg(dst), 24, asLongReg(dst)).emit(masm); break; case B2I: - new Sllx(asIntReg(src), 56, asIntReg(dst)).emit(masm); + new Sll(asIntReg(src), 24, asIntReg(dst)).emit(masm); delaySlotLir.emitControlTransfer(crb, masm); - new Srax(asIntReg(dst), 56, asIntReg(dst)).emit(masm); + new Sra(asIntReg(dst), 24, asIntReg(dst)).emit(masm); break; case S2L: - new Sllx(asIntReg(src), 48, asLongReg(dst)).emit(masm); + new Sll(asIntReg(src), 16, asLongReg(dst)).emit(masm); delaySlotLir.emitControlTransfer(crb, masm); - new Srax(asLongReg(dst), 48, asLongReg(dst)).emit(masm); + new Sra(asLongReg(dst), 16, asLongReg(dst)).emit(masm); break; case S2I: - new Sllx(asIntReg(src), 48, asIntReg(dst)).emit(masm); + new Sll(asIntReg(src), 16, asIntReg(dst)).emit(masm); delaySlotLir.emitControlTransfer(crb, masm); - new Srax(asIntReg(dst), 48, asIntReg(dst)).emit(masm); + new Sra(asIntReg(dst), 16, asIntReg(dst)).emit(masm); break; case I2F: delaySlotLir.emitControlTransfer(crb, masm);