Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index bd54068a267f4bca1e9179d728da81378eac10f6..c5cf0ee17a6ab4b98d6e47c827bd04c75049e59d 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -4283,9 +4283,12 @@ void LCodeGen::DoCallNew(LCallNew* instr) { |
ASSERT(ToRegister(instr->result()).is(r0)); |
__ mov(r0, Operand(instr->arity())); |
- // No cell in r2 for construct type feedback in optimized code |
- Handle<Object> undefined_value(isolate()->heap()->undefined_value()); |
- __ mov(r2, Operand(undefined_value)); |
+ if (FLAG_optimize_constructed_arrays) { |
+ // No cell in r2 for construct type feedback in optimized code |
+ Handle<Object> undefined_value(isolate()->heap()->undefined_value(), |
+ isolate()); |
+ __ mov(r2, Operand(undefined_value)); |
+ } |
CallConstructStub stub(NO_CALL_FUNCTION_FLAGS); |
CallCode(stub.GetCode(isolate()), RelocInfo::CONSTRUCT_CALL, instr); |
} |
@@ -4294,6 +4297,7 @@ void LCodeGen::DoCallNew(LCallNew* instr) { |
void LCodeGen::DoCallNewArray(LCallNewArray* instr) { |
ASSERT(ToRegister(instr->constructor()).is(r1)); |
ASSERT(ToRegister(instr->result()).is(r0)); |
+ ASSERT(FLAG_optimize_constructed_arrays); |
__ mov(r0, Operand(instr->arity())); |
__ mov(r2, Operand(instr->hydrogen()->property_cell())); |