Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index 046edbdda2ddb942fafe74cac53475964fe71981..b196254d847ae7cc772ff2d5b527db087e69393c 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -3972,7 +3972,13 @@ void LCodeGen::DoStoreCodeEntry(LStoreCodeEntry* instr) { |
void LCodeGen::DoInnerAllocatedObject(LInnerAllocatedObject* instr) { |
Register result = ToRegister(instr->result()); |
Register base = ToRegister(instr->base_object()); |
- __ lea(result, Operand(base, instr->offset())); |
+ if (instr->offset()->IsConstantOperand()) { |
+ LConstantOperand* offset = LConstantOperand::cast(instr->offset()); |
+ __ lea(result, Operand(base, ToInteger32(offset))); |
+ } else { |
+ Register offset = ToRegister(instr->offset()); |
+ __ lea(result, Operand(base, offset, times_1, 0)); |
+ } |
} |