| Index: src/arm/code-stubs-arm.cc
|
| diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc
|
| index d9449d55436261c259438eb60a1e1b8dc13b927d..8a744ae6c536ec5acc12a4fcbbcd3e24f7914f2c 100644
|
| --- a/src/arm/code-stubs-arm.cc
|
| +++ b/src/arm/code-stubs-arm.cc
|
| @@ -3186,43 +3186,9 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| // r1: pushed function (to be verified)
|
| __ JumpIfSmi(r1, &non_function);
|
|
|
| - // The receiver might implicitly be the global object. This is
|
| - // indicated by passing the hole as the receiver to the call
|
| - // function stub.
|
| - if (ReceiverMightBeImplicit() || ReceiverIsImplicit()) {
|
| - Label try_call, call, patch_current_context;
|
| - if (ReceiverMightBeImplicit()) {
|
| - // Get the receiver from the stack.
|
| - // function, receiver [, arguments]
|
| - __ ldr(r4, MemOperand(sp, argc_ * kPointerSize));
|
| - // Call as function is indicated with the hole.
|
| - __ CompareRoot(r4, Heap::kTheHoleValueRootIndex);
|
| - __ b(ne, &try_call);
|
| - }
|
| - // Patch the receiver on the stack with the global receiver object.
|
| - // Goto slow case if we do not have a function.
|
| - __ CompareObjectType(r1, r3, r3, JS_FUNCTION_TYPE);
|
| - __ b(ne, &patch_current_context);
|
| - CallStubCompiler::FetchGlobalProxy(masm, r3, r1);
|
| - __ str(r3, MemOperand(sp, argc_ * kPointerSize));
|
| - __ jmp(&call);
|
| -
|
| - __ bind(&patch_current_context);
|
| - __ LoadRoot(r4, Heap::kUndefinedValueRootIndex);
|
| - __ str(r4, MemOperand(sp, argc_ * kPointerSize));
|
| - __ jmp(&slow);
|
| -
|
| - __ bind(&try_call);
|
| - // Get the map of the function object.
|
| - __ CompareObjectType(r1, r3, r3, JS_FUNCTION_TYPE);
|
| - __ b(ne, &slow);
|
| -
|
| - __ bind(&call);
|
| - } else {
|
| - // Get the map of the function object.
|
| - __ CompareObjectType(r1, r3, r3, JS_FUNCTION_TYPE);
|
| - __ b(ne, &slow);
|
| - }
|
| + // Goto slow case if we do not have a function.
|
| + __ CompareObjectType(r1, r3, r3, JS_FUNCTION_TYPE);
|
| + __ b(ne, &slow);
|
|
|
| if (RecordCallTarget()) {
|
| GenerateRecordCallTarget(masm);
|
| @@ -3232,17 +3198,6 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| // r1: pushed function
|
| ParameterCount actual(argc_);
|
|
|
| - if (ReceiverMightBeImplicit()) {
|
| - Label call_as_function;
|
| - __ CompareRoot(r4, Heap::kTheHoleValueRootIndex);
|
| - __ b(eq, &call_as_function);
|
| - __ InvokeFunction(r1,
|
| - actual,
|
| - JUMP_FUNCTION,
|
| - NullCallWrapper(),
|
| - CALL_AS_METHOD);
|
| - __ bind(&call_as_function);
|
| - }
|
| __ InvokeFunction(r1,
|
| actual,
|
| JUMP_FUNCTION,
|
| @@ -3281,7 +3236,7 @@ void CallFunctionStub::Generate(MacroAssembler* masm) {
|
| __ mov(r0, Operand(argc_)); // Set up the number of arguments.
|
| __ mov(r2, Operand::Zero());
|
| __ GetBuiltinEntry(r3, Builtins::CALL_NON_FUNCTION);
|
| - __ SetCallKind(r5, CALL_AS_METHOD);
|
| + __ SetCallKind(r5, CALL_AS_FUNCTION);
|
| __ Jump(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(),
|
| RelocInfo::CODE_TARGET);
|
| }
|
|
|