# HG changeset patch # User Christos Kotselidis # Date 1370967235 -7200 # Node ID e85afceb39e76008a71fcb87a0bce696e0205139 # Parent 4abd6387a6123df88665992ab2f176cfa327d8ab# Parent 3754bb5aab2fac07ce8c80b3bdaa885103f90969 Merge diff -r 3754bb5aab2f -r e85afceb39e7 graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java --- a/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Tue Jun 11 13:14:52 2013 +0200 +++ b/graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java Tue Jun 11 18:13:55 2013 +0200 @@ -33,6 +33,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.asm.*; import com.oracle.graal.asm.amd64.*; +import com.oracle.graal.asm.amd64.AMD64Assembler.ConditionFlag; import com.oracle.graal.graph.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.StandardOp.MoveOp; @@ -667,6 +668,8 @@ } else { // Otherwise the narrow heap base, which resides always in register 12, is subtracted // followed by right shift. + masm.testq(scratchRegister, scratchRegister); + masm.cmovq(ConditionFlag.Equal, scratchRegister, AMD64.r12); masm.subq(scratchRegister, AMD64.r12); masm.shrq(scratchRegister, logMinObjAlignment); } @@ -681,9 +684,12 @@ masm.shlq(resRegister, logMinObjAlignment); } } else { - // Otherwise the narrow heap base is added to the shifted address. + Label done = new Label(); masm.shlq(resRegister, logMinObjAlignment); + masm.jccb(ConditionFlag.Equal, done); + // Otherwise the narrow heap base is added to the shifted address. masm.addq(resRegister, AMD64.r12); + masm.bind(done); } } diff -r 3754bb5aab2f -r e85afceb39e7 src/share/vm/runtime/arguments.cpp --- a/src/share/vm/runtime/arguments.cpp Tue Jun 11 13:14:52 2013 +0200 +++ b/src/share/vm/runtime/arguments.cpp Tue Jun 11 18:13:55 2013 +0200 @@ -2102,9 +2102,8 @@ warning("UseCompressedOops is disabled, because it is not supported by Graal"); FLAG_SET_CMDLINE(bool, UseCompressedOops, false); } else { - jio_fprintf(defaultStream::error_stream(), - "CompressedOops are not supported in Graal at the moment\n"); - status = false; + status = true; + FLAG_SET_CMDLINE(bool, UseCompressedOops, true); } } else { // This prevents the flag being set to true by set_ergonomics_flags()