Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 6b38fd13ba8846739e243561393d7af13dfbcdc6..9ae6b08dab7824b0af41715c34c5801a37df55b4 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -2781,9 +2781,6 @@ void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) { |
Register temp = ToRegister(instr->temp()); |
Register result = ToRegister(instr->result()); |
- ASSERT(object.is(r0)); |
- ASSERT(result.is(r0)); |
- |
// A Smi is not instance of anything. |
__ JumpIfSmi(object, &false_result); |
@@ -2841,9 +2838,6 @@ void LCodeGen::DoInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr) { |
void LCodeGen::DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, |
Label* map_check) { |
- Register result = ToRegister(instr->result()); |
- ASSERT(result.is(r0)); |
- |
InstanceofStub::Flags flags = InstanceofStub::kNoFlags; |
flags = static_cast<InstanceofStub::Flags>( |
flags | InstanceofStub::kArgsInRegisters); |
@@ -2856,37 +2850,32 @@ void LCodeGen::DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, |
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters); |
LoadContextFromDeferred(instr->context()); |
- // Get the temp register reserved by the instruction. This needs to be r4 as |
- // its slot of the pushing of safepoint registers is used to communicate the |
- // offset to the location of the map check. |
- Register temp = ToRegister(instr->temp()); |
- ASSERT(temp.is(r4)); |
__ Move(InstanceofStub::right(), instr->function()); |
- static const int kAdditionalDelta = 5; |
+ static const int kAdditionalDelta = 4; |
// Make sure that code size is predicable, since we use specific constants |
// offsets in the code to find embedded values.. |
- PredictableCodeSizeScope predictable(masm_, 6 * Assembler::kInstrSize); |
+ PredictableCodeSizeScope predictable(masm_, 5 * Assembler::kInstrSize); |
int delta = masm_->InstructionsGeneratedSince(map_check) + kAdditionalDelta; |
Label before_push_delta; |
__ bind(&before_push_delta); |
__ BlockConstPoolFor(kAdditionalDelta); |
- __ mov(temp, Operand(delta * kPointerSize)); |
+ // r5 is used to communicate the offset to the location of the map check. |
+ __ mov(r5, 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(isolate()), |
RelocInfo::CODE_TARGET, |
instr, |
RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS); |
LEnvironment* env = instr->GetDeferredLazyDeoptimizationEnvironment(); |
safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index()); |
- // Put the result value into the result register slot and |
+ // Put the result value (r0) into the result register slot and |
// restore all registers. |
- __ StoreToSafepointRegisterSlot(result, result); |
+ __ StoreToSafepointRegisterSlot(r0, ToRegister(instr->result())); |
} |