Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index 3a068c8cc8883eddffe97a1904cd1c43a9247231..44de7aabc3e998cf9bf7990a28b784f10b620894 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -3111,26 +3111,23 @@ void CallFunctionStub::Generate(MacroAssembler* masm) { |
if (CallAsMethod()) { |
if (NeedsChecks()) { |
// Do not transform the receiver for strict mode functions. |
- __ ldr(r2, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); |
- __ ldr(r3, FieldMemOperand(r2, SharedFunctionInfo::kCompilerHintsOffset)); |
- __ tst(r3, Operand(1 << (SharedFunctionInfo::kStrictModeFunction + |
+ __ ldr(r3, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); |
+ __ ldr(r4, FieldMemOperand(r3, SharedFunctionInfo::kCompilerHintsOffset)); |
+ __ tst(r4, Operand(1 << (SharedFunctionInfo::kStrictModeFunction + |
kSmiTagSize))); |
__ b(ne, &cont); |
// Do not transform the receiver for native (Compilerhints already in r3). |
- __ tst(r3, Operand(1 << (SharedFunctionInfo::kNative + kSmiTagSize))); |
+ __ tst(r4, Operand(1 << (SharedFunctionInfo::kNative + kSmiTagSize))); |
__ b(ne, &cont); |
} |
// Compute the receiver in non-strict mode. |
- __ ldr(r2, MemOperand(sp, argc_ * kPointerSize)); |
+ __ ldr(r3, MemOperand(sp, argc_ * kPointerSize)); |
if (NeedsChecks()) { |
- // r0: actual number of arguments |
- // r1: function |
- // r2: first argument |
- __ JumpIfSmi(r2, &wrap); |
- __ CompareObjectType(r2, r3, r3, FIRST_SPEC_OBJECT_TYPE); |
+ __ JumpIfSmi(r3, &wrap); |
+ __ CompareObjectType(r3, r4, r4, FIRST_SPEC_OBJECT_TYPE); |
__ b(lt, &wrap); |
} else { |
__ jmp(&wrap); |
@@ -3180,8 +3177,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) { |
__ bind(&wrap); |
// Wrap the receiver and patch it back onto the stack. |
{ FrameScope frame_scope(masm, StackFrame::INTERNAL); |
- __ push(r1); |
- __ push(r2); |
+ __ Push(r1, r3); |
__ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION); |
__ pop(r1); |
} |