# HG changeset patch # User Stefan Anzinger # Date 1429196946 -7200 # Node ID 68ff637e95b1059f52c0c7c9c721ea8a6a4bf120 # Parent ec36daea3cf0fdcbcc886ecf469acae139dc86bf# Parent e6b59c7b39919b56b74dfe97e85e1a6b98b90243 Merge diff -r e6b59c7b3991 -r 68ff637e95b1 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 Apr 16 14:43:13 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Thu Apr 16 17:09:06 2015 +0200 @@ -724,6 +724,7 @@ masm.fcmp(Fcc0, Fcmps, asFloatReg(src), asFloatReg(src)); masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); masm.fstox(asFloatReg(src), asDoubleReg(dst)); + masm.fxtod(asRegister(dst), asRegister(dst)); masm.fsubd(asDoubleReg(dst), asDoubleReg(dst), asDoubleReg(dst)); masm.bind(notOrdered); break; @@ -747,8 +748,8 @@ masm.fcmp(Fcc0, Fcmpd, asDoubleReg(src), asDoubleReg(src)); masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); masm.fdtoi(asDoubleReg(src), asFloatReg(dst)); + masm.fitos(asFloatReg(dst), asFloatReg(dst)); masm.fsubs(asFloatReg(dst), asFloatReg(dst), asFloatReg(dst)); - masm.fstoi(asFloatReg(dst), asFloatReg(dst)); masm.bind(notOrdered); break; case FNEG: diff -r e6b59c7b3991 -r 68ff637e95b1 graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java Thu Apr 16 14:43:13 2015 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/alloc/lsra/LinearScanWalker.java Thu Apr 16 17:09:06 2015 +0200 @@ -747,7 +747,7 @@ if (firstUsage <= interval.from() + 1) { String description = "cannot spill interval that is used in first instruction (possible reason: no register found) firstUsage=" + firstUsage + ", interval.from()=" + - interval.from(); + interval.from() + "; already used candidates: " + Arrays.toString(availableRegs); // assign a reasonable register and do a bailout in product mode to avoid errors allocator.assignSpillSlot(interval); allocator.printIntervals(description); diff -r e6b59c7b3991 -r 68ff637e95b1 mx/mx_graal.py --- a/mx/mx_graal.py Thu Apr 16 14:43:13 2015 +0200 +++ b/mx/mx_graal.py Thu Apr 16 17:09:06 2015 +0200 @@ -1543,7 +1543,9 @@ with VM('graal', 'product'): with Task('BootstrapWithRegisterPressure:product', tasks) as t: - if t: vm(['-XX:-TieredCompilation', '-G:RegisterPressure=rbx,r11,r10,r14,xmm3,xmm11,xmm14', '-esa', '-version']) + if t: + registers = 'o0,o1,o2,o3,f8,f9,d32,d34' if platform.processor() == 'sparc' else 'rbx,r11,r10,r14,xmm3,xmm11,xmm14' + vm(['-XX:-TieredCompilation', '-G:RegisterPressure=' + registers, '-esa', '-version']) with VM('graal', 'product'): with Task('BootstrapWithImmutableCode:product', tasks) as t: