Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 76c8443e7c30cc422154eab202c61dba16e5941e..98649b1273f8a55d8dad284bd3e85b5a03ce46c0 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -2210,12 +2210,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, |