OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 2298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2309 static void GenerateRecordCallTarget(MacroAssembler* masm) { | 2309 static void GenerateRecordCallTarget(MacroAssembler* masm) { |
2310 // Cache the called function in a feedback vector slot. Cache states | 2310 // Cache the called function in a feedback vector slot. Cache states |
2311 // are uninitialized, monomorphic (indicated by a JSFunction), and | 2311 // are uninitialized, monomorphic (indicated by a JSFunction), and |
2312 // megamorphic. | 2312 // megamorphic. |
2313 // r0 : number of arguments to the construct function | 2313 // r0 : number of arguments to the construct function |
2314 // r1 : the function to call | 2314 // r1 : the function to call |
2315 // r2 : Feedback vector | 2315 // r2 : Feedback vector |
2316 // r3 : slot in feedback vector (Smi) | 2316 // r3 : slot in feedback vector (Smi) |
2317 Label initialize, done, miss, megamorphic, not_array_function; | 2317 Label initialize, done, miss, megamorphic, not_array_function; |
2318 | 2318 |
2319 DCHECK_EQ(*TypeFeedbackInfo::MegamorphicSentinel(masm->isolate()), | 2319 DCHECK_EQ(*TypeFeedbackVector::MegamorphicSentinel(masm->isolate()), |
2320 masm->isolate()->heap()->megamorphic_symbol()); | 2320 masm->isolate()->heap()->megamorphic_symbol()); |
2321 DCHECK_EQ(*TypeFeedbackInfo::UninitializedSentinel(masm->isolate()), | 2321 DCHECK_EQ(*TypeFeedbackVector::UninitializedSentinel(masm->isolate()), |
2322 masm->isolate()->heap()->uninitialized_symbol()); | 2322 masm->isolate()->heap()->uninitialized_symbol()); |
2323 | 2323 |
2324 // Load the cache state into r4. | 2324 // Load the cache state into r4. |
2325 __ add(r4, r2, Operand::PointerOffsetFromSmiKey(r3)); | 2325 __ add(r4, r2, Operand::PointerOffsetFromSmiKey(r3)); |
2326 __ ldr(r4, FieldMemOperand(r4, FixedArray::kHeaderSize)); | 2326 __ ldr(r4, FieldMemOperand(r4, FixedArray::kHeaderSize)); |
2327 | 2327 |
2328 // A monomorphic cache hit or an already megamorphic state: invoke the | 2328 // A monomorphic cache hit or an already megamorphic state: invoke the |
2329 // function without changing the state. | 2329 // function without changing the state. |
2330 __ cmp(r4, r1); | 2330 __ cmp(r4, r1); |
2331 __ b(eq, &done); | 2331 __ b(eq, &done); |
(...skipping 2320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4652 MemOperand(fp, 6 * kPointerSize), | 4652 MemOperand(fp, 6 * kPointerSize), |
4653 NULL); | 4653 NULL); |
4654 } | 4654 } |
4655 | 4655 |
4656 | 4656 |
4657 #undef __ | 4657 #undef __ |
4658 | 4658 |
4659 } } // namespace v8::internal | 4659 } } // namespace v8::internal |
4660 | 4660 |
4661 #endif // V8_TARGET_ARCH_ARM | 4661 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |