Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 739f042cb84df04fc96865d78167adac2bdf9a78..d3a5ff3f2934f867a2e7aaf84562653b32d2afad 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -4426,7 +4426,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)); |
+ } |
} |