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 3608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3619 StringHelper::GenerateCompareFlatOneByteStrings(masm, lhs, rhs, x10, x11, | 3619 StringHelper::GenerateCompareFlatOneByteStrings(masm, lhs, rhs, x10, x11, |
3620 x12, x13); | 3620 x12, x13); |
3621 } | 3621 } |
3622 | 3622 |
3623 // Handle more complex cases in runtime. | 3623 // Handle more complex cases in runtime. |
3624 __ Bind(&runtime); | 3624 __ Bind(&runtime); |
3625 __ Push(lhs, rhs); | 3625 __ Push(lhs, rhs); |
3626 if (equality) { | 3626 if (equality) { |
3627 __ TailCallRuntime(Runtime::kStringEquals, 2, 1); | 3627 __ TailCallRuntime(Runtime::kStringEquals, 2, 1); |
3628 } else { | 3628 } else { |
3629 __ TailCallRuntime(Runtime::kStringCompare, 2, 1); | 3629 __ TailCallRuntime(Runtime::kStringCompareRT, 2, 1); |
3630 } | 3630 } |
3631 | 3631 |
3632 __ Bind(&miss); | 3632 __ Bind(&miss); |
3633 GenerateMiss(masm); | 3633 GenerateMiss(masm); |
3634 } | 3634 } |
3635 | 3635 |
3636 | 3636 |
3637 void CompareICStub::GenerateObjects(MacroAssembler* masm) { | 3637 void CompareICStub::GenerateObjects(MacroAssembler* masm) { |
3638 DCHECK(state() == CompareICState::OBJECT); | 3638 DCHECK(state() == CompareICState::OBJECT); |
3639 ASM_LOCATION("CompareICStub[Objects]"); | 3639 ASM_LOCATION("CompareICStub[Objects]"); |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3951 __ Add(result_length, result_length, result_length); | 3951 __ Add(result_length, result_length, result_length); |
3952 __ CopyBytes(result_char0, substring_char0, result_length, x3, kCopyLong); | 3952 __ CopyBytes(result_char0, substring_char0, result_length, x3, kCopyLong); |
3953 | 3953 |
3954 __ Bind(&return_x0); | 3954 __ Bind(&return_x0); |
3955 Counters* counters = isolate()->counters(); | 3955 Counters* counters = isolate()->counters(); |
3956 __ IncrementCounter(counters->sub_string_native(), 1, x3, x4); | 3956 __ IncrementCounter(counters->sub_string_native(), 1, x3, x4); |
3957 __ Drop(3); | 3957 __ Drop(3); |
3958 __ Ret(); | 3958 __ Ret(); |
3959 | 3959 |
3960 __ Bind(&runtime); | 3960 __ Bind(&runtime); |
3961 __ TailCallRuntime(Runtime::kSubString, 3, 1); | 3961 __ TailCallRuntime(Runtime::kSubStringRT, 3, 1); |
3962 | 3962 |
3963 __ bind(&single_char); | 3963 __ bind(&single_char); |
3964 // x1: result_length | 3964 // x1: result_length |
3965 // x10: input_string | 3965 // x10: input_string |
3966 // x12: input_type | 3966 // x12: input_type |
3967 // x15: from (untagged) | 3967 // x15: from (untagged) |
3968 __ SmiTag(from); | 3968 __ SmiTag(from); |
3969 StringCharAtGenerator generator(input_string, from, result_length, x0, | 3969 StringCharAtGenerator generator(input_string, from, result_length, x0, |
3970 &runtime, &runtime, &runtime, | 3970 &runtime, &runtime, &runtime, |
3971 STRING_INDEX_IS_NUMBER, RECEIVER_IS_STRING); | 3971 STRING_INDEX_IS_NUMBER, RECEIVER_IS_STRING); |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4159 | 4159 |
4160 __ Bind(&runtime); | 4160 __ Bind(&runtime); |
4161 | 4161 |
4162 // Push arguments back on to the stack. | 4162 // Push arguments back on to the stack. |
4163 // sp[0] = right string | 4163 // sp[0] = right string |
4164 // sp[8] = left string. | 4164 // sp[8] = left string. |
4165 __ Push(left, right); | 4165 __ Push(left, right); |
4166 | 4166 |
4167 // Call the runtime. | 4167 // Call the runtime. |
4168 // Returns -1 (less), 0 (equal), or 1 (greater) tagged as a small integer. | 4168 // Returns -1 (less), 0 (equal), or 1 (greater) tagged as a small integer. |
4169 __ TailCallRuntime(Runtime::kStringCompare, 2, 1); | 4169 __ TailCallRuntime(Runtime::kStringCompareRT, 2, 1); |
4170 } | 4170 } |
4171 | 4171 |
4172 | 4172 |
4173 void BinaryOpICWithAllocationSiteStub::Generate(MacroAssembler* masm) { | 4173 void BinaryOpICWithAllocationSiteStub::Generate(MacroAssembler* masm) { |
4174 // ----------- S t a t e ------------- | 4174 // ----------- S t a t e ------------- |
4175 // -- x1 : left | 4175 // -- x1 : left |
4176 // -- x0 : right | 4176 // -- x0 : right |
4177 // -- lr : return address | 4177 // -- lr : return address |
4178 // ----------------------------------- | 4178 // ----------------------------------- |
4179 | 4179 |
(...skipping 1334 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 |