# HG changeset patch # User twisti # Date 1387331896 28800 # Node ID af10ee69a8ac5d8ce976e37b605bce61a9af7220 # Parent 4db09b7304da2501cda023be6f7b542077f77076 fixed JDK-7079626: x64 emits unnecessary REX prefix diff -r 4db09b7304da -r af10ee69a8ac graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java --- a/graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java Tue Dec 17 22:37:03 2013 +0100 +++ b/graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java Tue Dec 17 17:58:16 2013 -0800 @@ -917,7 +917,7 @@ public final void movb(AMD64Address dst, Register src) { assert src.getRegisterCategory() == AMD64.CPU : "must have byte register"; - prefix(dst, src); // , true) + prefix(dst, src, true); emitByte(0x88); emitOperandHelper(src, dst); } @@ -1895,6 +1895,10 @@ } private void prefix(AMD64Address adr, Register reg) { + prefix(adr, reg, false); + } + + private void prefix(AMD64Address adr, Register reg, boolean byteinst) { if (reg.encoding < 8) { if (needsRex(adr.getBase())) { if (needsRex(adr.getIndex())) { @@ -1905,7 +1909,7 @@ } else { if (needsRex(adr.getIndex())) { emitByte(Prefix.REXX); - } else if (reg.encoding >= 4) { + } else if (byteinst && reg.encoding >= 4) { emitByte(Prefix.REX); } }