| 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 "v8.h" | 5 #include "v8.h" |
| 6 | 6 |
| 7 #if V8_TARGET_ARCH_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
| 8 | 8 |
| 9 #include "bootstrapper.h" | 9 #include "bootstrapper.h" |
| 10 #include "code-stubs.h" | 10 #include "code-stubs.h" |
| (...skipping 2703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2714 // Replace subject with first string. | 2714 // Replace subject with first string. |
| 2715 __ Ldr(subject, FieldMemOperand(subject, ConsString::kFirstOffset)); | 2715 __ Ldr(subject, FieldMemOperand(subject, ConsString::kFirstOffset)); |
| 2716 | 2716 |
| 2717 // (4) Is subject external? If yes, go to (7). | 2717 // (4) Is subject external? If yes, go to (7). |
| 2718 __ Bind(&check_underlying); | 2718 __ Bind(&check_underlying); |
| 2719 // Reload the string type. | 2719 // Reload the string type. |
| 2720 __ Ldr(x10, FieldMemOperand(subject, HeapObject::kMapOffset)); | 2720 __ Ldr(x10, FieldMemOperand(subject, HeapObject::kMapOffset)); |
| 2721 __ Ldrb(string_type, FieldMemOperand(x10, Map::kInstanceTypeOffset)); | 2721 __ Ldrb(string_type, FieldMemOperand(x10, Map::kInstanceTypeOffset)); |
| 2722 STATIC_ASSERT(kSeqStringTag == 0); | 2722 STATIC_ASSERT(kSeqStringTag == 0); |
| 2723 // The underlying external string is never a short external string. | 2723 // The underlying external string is never a short external string. |
| 2724 STATIC_CHECK(ExternalString::kMaxShortLength < ConsString::kMinLength); | 2724 STATIC_ASSERT(ExternalString::kMaxShortLength < ConsString::kMinLength); |
| 2725 STATIC_CHECK(ExternalString::kMaxShortLength < SlicedString::kMinLength); | 2725 STATIC_ASSERT(ExternalString::kMaxShortLength < SlicedString::kMinLength); |
| 2726 __ TestAndBranchIfAnySet(string_type.X(), | 2726 __ TestAndBranchIfAnySet(string_type.X(), |
| 2727 kStringRepresentationMask, | 2727 kStringRepresentationMask, |
| 2728 &external_string); // Go to (7). | 2728 &external_string); // Go to (7). |
| 2729 | 2729 |
| 2730 // (5) Sequential string. Load regexp code according to encoding. | 2730 // (5) Sequential string. Load regexp code according to encoding. |
| 2731 __ Bind(&seq_string); | 2731 __ Bind(&seq_string); |
| 2732 | 2732 |
| 2733 // Check that the third argument is a positive smi less than the subject | 2733 // Check that the third argument is a positive smi less than the subject |
| 2734 // string length. A negative value will be greater (unsigned comparison). | 2734 // string length. A negative value will be greater (unsigned comparison). |
| 2735 ASSERT(jssp.Is(__ StackPointer())); | 2735 ASSERT(jssp.Is(__ StackPointer())); |
| (...skipping 2829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5565 MemOperand(fp, 6 * kPointerSize), | 5565 MemOperand(fp, 6 * kPointerSize), |
| 5566 NULL); | 5566 NULL); |
| 5567 } | 5567 } |
| 5568 | 5568 |
| 5569 | 5569 |
| 5570 #undef __ | 5570 #undef __ |
| 5571 | 5571 |
| 5572 } } // namespace v8::internal | 5572 } } // namespace v8::internal |
| 5573 | 5573 |
| 5574 #endif // V8_TARGET_ARCH_ARM64 | 5574 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |