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 2210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2221 __ Add(params, x10, StandardFrameConstants::kCallerSPOffset); | 2221 __ Add(params, x10, StandardFrameConstants::kCallerSPOffset); |
2222 | 2222 |
2223 __ Bind(&runtime); | 2223 __ Bind(&runtime); |
2224 __ Push(params, param_count_smi, rest_index_smi); | 2224 __ Push(params, param_count_smi, rest_index_smi); |
2225 __ TailCallRuntime(Runtime::kNewRestParam, 3, 1); | 2225 __ TailCallRuntime(Runtime::kNewRestParam, 3, 1); |
2226 } | 2226 } |
2227 | 2227 |
2228 | 2228 |
2229 void RegExpExecStub::Generate(MacroAssembler* masm) { | 2229 void RegExpExecStub::Generate(MacroAssembler* masm) { |
2230 #ifdef V8_INTERPRETED_REGEXP | 2230 #ifdef V8_INTERPRETED_REGEXP |
2231 __ TailCallRuntime(Runtime::kRegExpExecRT, 4, 1); | 2231 __ TailCallRuntime(Runtime::kRegExpExec, 4, 1); |
2232 #else // V8_INTERPRETED_REGEXP | 2232 #else // V8_INTERPRETED_REGEXP |
2233 | 2233 |
2234 // Stack frame on entry. | 2234 // Stack frame on entry. |
2235 // jssp[0]: last_match_info (expected JSArray) | 2235 // jssp[0]: last_match_info (expected JSArray) |
2236 // jssp[8]: previous index | 2236 // jssp[8]: previous index |
2237 // jssp[16]: subject string | 2237 // jssp[16]: subject string |
2238 // jssp[24]: JSRegExp object | 2238 // jssp[24]: JSRegExp object |
2239 Label runtime; | 2239 Label runtime; |
2240 | 2240 |
2241 // Use of registers for this function. | 2241 // Use of registers for this function. |
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2686 | 2686 |
2687 __ Bind(&failure); | 2687 __ Bind(&failure); |
2688 __ Mov(x0, Operand(isolate()->factory()->null_value())); | 2688 __ Mov(x0, Operand(isolate()->factory()->null_value())); |
2689 __ PopCPURegList(used_callee_saved_registers); | 2689 __ PopCPURegList(used_callee_saved_registers); |
2690 // Drop the 4 arguments of the stub from the stack. | 2690 // Drop the 4 arguments of the stub from the stack. |
2691 __ Drop(4); | 2691 __ Drop(4); |
2692 __ Ret(); | 2692 __ Ret(); |
2693 | 2693 |
2694 __ Bind(&runtime); | 2694 __ Bind(&runtime); |
2695 __ PopCPURegList(used_callee_saved_registers); | 2695 __ PopCPURegList(used_callee_saved_registers); |
2696 __ TailCallRuntime(Runtime::kRegExpExecRT, 4, 1); | 2696 __ TailCallRuntime(Runtime::kRegExpExec, 4, 1); |
2697 | 2697 |
2698 // Deferred code for string handling. | 2698 // Deferred code for string handling. |
2699 // (6) Not a long external string? If yes, go to (8). | 2699 // (6) Not a long external string? If yes, go to (8). |
2700 __ Bind(¬_seq_nor_cons); | 2700 __ Bind(¬_seq_nor_cons); |
2701 // Compare flags are still set. | 2701 // Compare flags are still set. |
2702 __ B(ne, ¬_long_external); // Go to (8). | 2702 __ B(ne, ¬_long_external); // Go to (8). |
2703 | 2703 |
2704 // (7) External string. Make it, offset-wise, look like a sequential string. | 2704 // (7) External string. Make it, offset-wise, look like a sequential string. |
2705 __ Bind(&external_string); | 2705 __ Bind(&external_string); |
2706 if (masm->emit_debug_code()) { | 2706 if (masm->emit_debug_code()) { |
(...skipping 2807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5514 kStackUnwindSpace, NULL, spill_offset, | 5514 kStackUnwindSpace, NULL, spill_offset, |
5515 MemOperand(fp, 6 * kPointerSize), NULL); | 5515 MemOperand(fp, 6 * kPointerSize), NULL); |
5516 } | 5516 } |
5517 | 5517 |
5518 | 5518 |
5519 #undef __ | 5519 #undef __ |
5520 | 5520 |
5521 } } // namespace v8::internal | 5521 } } // namespace v8::internal |
5522 | 5522 |
5523 #endif // V8_TARGET_ARCH_ARM64 | 5523 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |