# HG changeset patch # User Roland Schatz # Date 1402478070 -7200 # Node ID 048943ad39bfc59550c9f6f5458947c5de0432fe # Parent 77cb0f0e5e3ff209d41c72b593b5cb895b91a3e9 Reuse existing address simplification code in visitDirectCompareAndSwap. diff -r 77cb0f0e5e3f -r 048943ad39bf graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Wed Jun 11 10:53:44 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java Wed Jun 11 11:14:30 2014 +0200 @@ -30,7 +30,6 @@ import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.asm.*; -import com.oracle.graal.asm.amd64.AMD64Address.Scale; import com.oracle.graal.compiler.amd64.*; import com.oracle.graal.compiler.common.calc.*; import com.oracle.graal.compiler.gen.*; @@ -243,16 +242,7 @@ Value expected = gen.loadNonConst(operand(x.expectedValue())); Variable newVal = gen.load(operand(x.newValue())); - int disp = 0; - AMD64AddressValue address; - Value index = operand(x.offset()); - if (ValueUtil.isConstant(index) && NumUtil.isInt(ValueUtil.asConstant(index).asLong() + disp)) { - assert !gen.getCodeCache().needsDataPatch(asConstant(index)); - disp += (int) ValueUtil.asConstant(index).asLong(); - address = new AMD64AddressValue(kind, gen.load(operand(x.object())), disp); - } else { - address = new AMD64AddressValue(kind, gen.load(operand(x.object())), gen.load(index), Scale.Times1, disp); - } + AMD64AddressValue address = getGen().emitAddress(operand(x.object()), 0, operand(x.offset()), 1); RegisterValue raxLocal = AMD64.rax.asValue(kind); gen.emitMove(raxLocal, expected);