Mercurial > hg > graal-compiler
changeset 13372:af10ee69a8ac
fixed JDK-7079626: x64 emits unnecessary REX prefix
author | twisti |
---|---|
date | Tue, 17 Dec 2013 17:58:16 -0800 |
parents | 4db09b7304da |
children | 430c9f08728d |
files | graal/com.oracle.graal.asm.amd64/src/com/oracle/graal/asm/amd64/AMD64Assembler.java |
diffstat | 1 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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); } }