| 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 #if V8_TARGET_ARCH_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 |
| 6 | 6 |
| 7 #include "src/bootstrapper.h" | 7 #include "src/bootstrapper.h" |
| 8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
| 9 #include "src/codegen.h" | 9 #include "src/codegen.h" |
| 10 #include "src/ic/handler-compiler.h" | 10 #include "src/ic/handler-compiler.h" |
| (...skipping 2835 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2846 FixedArray::OffsetOfElementAt(TypeFeedbackVector::kWithTypesIndex); | 2846 FixedArray::OffsetOfElementAt(TypeFeedbackVector::kWithTypesIndex); |
| 2847 const int generic_offset = | 2847 const int generic_offset = |
| 2848 FixedArray::OffsetOfElementAt(TypeFeedbackVector::kGenericCountIndex); | 2848 FixedArray::OffsetOfElementAt(TypeFeedbackVector::kGenericCountIndex); |
| 2849 Label extra_checks_or_miss, call; | 2849 Label extra_checks_or_miss, call; |
| 2850 int argc = arg_count(); | 2850 int argc = arg_count(); |
| 2851 ParameterCount actual(argc); | 2851 ParameterCount actual(argc); |
| 2852 | 2852 |
| 2853 Register function = x1; | 2853 Register function = x1; |
| 2854 Register feedback_vector = x2; | 2854 Register feedback_vector = x2; |
| 2855 Register index = x3; | 2855 Register index = x3; |
| 2856 Register type = x4; | |
| 2857 | 2856 |
| 2858 // The checks. First, does x1 match the recorded monomorphic target? | 2857 // The checks. First, does x1 match the recorded monomorphic target? |
| 2859 __ Add(x4, feedback_vector, | 2858 __ Add(x4, feedback_vector, |
| 2860 Operand::UntagSmiAndScale(index, kPointerSizeLog2)); | 2859 Operand::UntagSmiAndScale(index, kPointerSizeLog2)); |
| 2861 __ Ldr(x4, FieldMemOperand(x4, FixedArray::kHeaderSize)); | 2860 __ Ldr(x4, FieldMemOperand(x4, FixedArray::kHeaderSize)); |
| 2862 | 2861 |
| 2863 // We don't know that we have a weak cell. We might have a private symbol | 2862 // We don't know that we have a weak cell. We might have a private symbol |
| 2864 // or an AllocationSite, but the memory is safe to examine. | 2863 // or an AllocationSite, but the memory is safe to examine. |
| 2865 // AllocationSite::kTransitionInfoOffset - contains a Smi or pointer to | 2864 // AllocationSite::kTransitionInfoOffset - contains a Smi or pointer to |
| 2866 // FixedArray. | 2865 // FixedArray. |
| (...skipping 3010 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5877 MemOperand(fp, 6 * kPointerSize), NULL); | 5876 MemOperand(fp, 6 * kPointerSize), NULL); |
| 5878 } | 5877 } |
| 5879 | 5878 |
| 5880 | 5879 |
| 5881 #undef __ | 5880 #undef __ |
| 5882 | 5881 |
| 5883 } // namespace internal | 5882 } // namespace internal |
| 5884 } // namespace v8 | 5883 } // namespace v8 |
| 5885 | 5884 |
| 5886 #endif // V8_TARGET_ARCH_ARM64 | 5885 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |