src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.amd64/src/org/graalvm/compiler/lir/amd64/AMD64Move.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.amd64/src/org/graalvm/compiler/lir/amd64/AMD64Move.java Fri Dec 01 14:19:16 2017 -0500
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.amd64/src/org/graalvm/compiler/lir/amd64/AMD64Move.java Fri Dec 01 11:17:45 2017 -0800
@@ -299,16 +299,23 @@
@Def({REG}) protected AllocatableValue result;
@Use({COMPOSITE, UNINITIALIZED}) protected AMD64AddressValue address;
+ private final OperandSize size;
- public LeaOp(AllocatableValue result, AMD64AddressValue address) {
+ public LeaOp(AllocatableValue result, AMD64AddressValue address, OperandSize size) {
super(TYPE);
this.result = result;
this.address = address;
+ this.size = size;
}
@Override
public void emitCode(CompilationResultBuilder crb, AMD64MacroAssembler masm) {
- masm.leaq(asRegister(result, AMD64Kind.QWORD), address.toAddress());
+ if (size == OperandSize.QWORD) {
+ masm.leaq(asRegister(result, AMD64Kind.QWORD), address.toAddress());
+ } else {
+ assert size == OperandSize.DWORD;
+ masm.lead(asRegister(result, AMD64Kind.DWORD), address.toAddress());
+ }
}
}