| 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);
|
| }
|
|
|