Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 4be6d264a8f69d16cebe90c1a986703e2ccb0615..e9ba5eec7212d297400f31291dc5d62f2c308686 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -2472,12 +2472,18 @@ void LCodeGen::DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, |
Register temp = ToRegister(instr->TempAt(0)); |
ASSERT(temp.is(r4)); |
__ LoadHeapObject(InstanceofStub::right(), instr->function()); |
- static const int kAdditionalDelta = 4; |
+ static const int kAdditionalDelta = 5; |
int delta = masm_->InstructionsGeneratedSince(map_check) + kAdditionalDelta; |
Label before_push_delta; |
__ bind(&before_push_delta); |
__ BlockConstPoolFor(kAdditionalDelta); |
__ mov(temp, Operand(delta * kPointerSize)); |
+ // The mov above can generate one or two instructions. The delta was computed |
+ // for two instructions, so we need to pad here in case of one instruction. |
+ if (masm_->InstructionsGeneratedSince(&before_push_delta) != 2) { |
+ ASSERT_EQ(1, masm_->InstructionsGeneratedSince(&before_push_delta)); |
+ __ nop(); |
+ } |
__ StoreToSafepointRegisterSlot(temp, temp); |
CallCodeGeneric(stub.GetCode(), |
RelocInfo::CODE_TARGET, |