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 |