OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
8 | 8 |
9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 2103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2114 | 2114 |
2115 // Patch the arguments.length and parameters pointer in the current frame. | 2115 // Patch the arguments.length and parameters pointer in the current frame. |
2116 __ Ldr(x11, MemOperand(caller_fp, | 2116 __ Ldr(x11, MemOperand(caller_fp, |
2117 ArgumentsAdaptorFrameConstants::kLengthOffset)); | 2117 ArgumentsAdaptorFrameConstants::kLengthOffset)); |
2118 __ Poke(x11, 0 * kXRegSize); | 2118 __ Poke(x11, 0 * kXRegSize); |
2119 __ Add(x10, caller_fp, Operand::UntagSmiAndScale(x11, kPointerSizeLog2)); | 2119 __ Add(x10, caller_fp, Operand::UntagSmiAndScale(x11, kPointerSizeLog2)); |
2120 __ Add(x10, x10, StandardFrameConstants::kCallerSPOffset); | 2120 __ Add(x10, x10, StandardFrameConstants::kCallerSPOffset); |
2121 __ Poke(x10, 1 * kXRegSize); | 2121 __ Poke(x10, 1 * kXRegSize); |
2122 | 2122 |
2123 __ Bind(&runtime); | 2123 __ Bind(&runtime); |
2124 __ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1); | 2124 __ TailCallRuntime(Runtime::kHiddenNewSloppyArguments, 3, 1); |
2125 } | 2125 } |
2126 | 2126 |
2127 | 2127 |
2128 void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) { | 2128 void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) { |
2129 // Stack layout on entry. | 2129 // Stack layout on entry. |
2130 // jssp[0]: number of parameters (tagged) | 2130 // jssp[0]: number of parameters (tagged) |
2131 // jssp[8]: address of receiver argument | 2131 // jssp[8]: address of receiver argument |
2132 // jssp[16]: function | 2132 // jssp[16]: function |
2133 // | 2133 // |
2134 // Returns pointer to result object in x0. | 2134 // Returns pointer to result object in x0. |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2386 | 2386 |
2387 __ Bind(&arguments_test); | 2387 __ Bind(&arguments_test); |
2388 __ Cmp(x10, arg_count); | 2388 __ Cmp(x10, arg_count); |
2389 __ B(lt, &arguments_loop); | 2389 __ B(lt, &arguments_loop); |
2390 | 2390 |
2391 __ Ret(); | 2391 __ Ret(); |
2392 | 2392 |
2393 // Do the runtime call to allocate the arguments object. | 2393 // Do the runtime call to allocate the arguments object. |
2394 __ Bind(&runtime); | 2394 __ Bind(&runtime); |
2395 __ Push(function, recv_arg, arg_count_smi); | 2395 __ Push(function, recv_arg, arg_count_smi); |
2396 __ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1); | 2396 __ TailCallRuntime(Runtime::kHiddenNewSloppyArguments, 3, 1); |
2397 } | 2397 } |
2398 | 2398 |
2399 | 2399 |
2400 void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { | 2400 void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) { |
2401 // Stack layout on entry. | 2401 // Stack layout on entry. |
2402 // jssp[0]: number of parameters (tagged) | 2402 // jssp[0]: number of parameters (tagged) |
2403 // jssp[8]: address of receiver argument | 2403 // jssp[8]: address of receiver argument |
2404 // jssp[16]: function | 2404 // jssp[16]: function |
2405 // | 2405 // |
2406 // Returns pointer to result object in x0. | 2406 // Returns pointer to result object in x0. |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2519 __ Sub(param_count, param_count, 1); | 2519 __ Sub(param_count, param_count, 1); |
2520 __ Cbnz(param_count, &loop); | 2520 __ Cbnz(param_count, &loop); |
2521 | 2521 |
2522 // Return from stub. | 2522 // Return from stub. |
2523 __ Bind(&done); | 2523 __ Bind(&done); |
2524 __ Ret(); | 2524 __ Ret(); |
2525 | 2525 |
2526 // Do the runtime call to allocate the arguments object. | 2526 // Do the runtime call to allocate the arguments object. |
2527 __ Bind(&runtime); | 2527 __ Bind(&runtime); |
2528 __ Push(function, params, param_count_smi); | 2528 __ Push(function, params, param_count_smi); |
2529 __ TailCallRuntime(Runtime::kHiddenNewStrictArgumentsFast, 3, 1); | 2529 __ TailCallRuntime(Runtime::kHiddenNewStrictArguments, 3, 1); |
2530 } | 2530 } |
2531 | 2531 |
2532 | 2532 |
2533 void RegExpExecStub::Generate(MacroAssembler* masm) { | 2533 void RegExpExecStub::Generate(MacroAssembler* masm) { |
2534 #ifdef V8_INTERPRETED_REGEXP | 2534 #ifdef V8_INTERPRETED_REGEXP |
2535 __ TailCallRuntime(Runtime::kHiddenRegExpExec, 4, 1); | 2535 __ TailCallRuntime(Runtime::kHiddenRegExpExec, 4, 1); |
2536 #else // V8_INTERPRETED_REGEXP | 2536 #else // V8_INTERPRETED_REGEXP |
2537 | 2537 |
2538 // Stack frame on entry. | 2538 // Stack frame on entry. |
2539 // jssp[0]: last_match_info (expected JSArray) | 2539 // jssp[0]: last_match_info (expected JSArray) |
(...skipping 3006 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5546 MemOperand(fp, 6 * kPointerSize), | 5546 MemOperand(fp, 6 * kPointerSize), |
5547 NULL); | 5547 NULL); |
5548 } | 5548 } |
5549 | 5549 |
5550 | 5550 |
5551 #undef __ | 5551 #undef __ |
5552 | 5552 |
5553 } } // namespace v8::internal | 5553 } } // namespace v8::internal |
5554 | 5554 |
5555 #endif // V8_TARGET_ARCH_ARM64 | 5555 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |