| 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 |