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/heap/heap.h" | 5 #include "src/heap/heap.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/api.h" | 8 #include "src/api.h" |
9 #include "src/ast/context-slot-cache.h" | 9 #include "src/ast/context-slot-cache.h" |
10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
(...skipping 2229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2240 field_name##_map()->SetConstructorFunctionIndex( \ | 2240 field_name##_map()->SetConstructorFunctionIndex( \ |
2241 (constructor_function_index)); \ | 2241 (constructor_function_index)); \ |
2242 } | 2242 } |
2243 | 2243 |
2244 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, fixed_cow_array) | 2244 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, fixed_cow_array) |
2245 fixed_cow_array_map()->set_elements_kind(FAST_HOLEY_ELEMENTS); | 2245 fixed_cow_array_map()->set_elements_kind(FAST_HOLEY_ELEMENTS); |
2246 DCHECK_NE(fixed_array_map(), fixed_cow_array_map()); | 2246 DCHECK_NE(fixed_array_map(), fixed_cow_array_map()); |
2247 | 2247 |
2248 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, scope_info) | 2248 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, scope_info) |
2249 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, module_info) | 2249 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, module_info) |
| 2250 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, type_feedback_vector) |
2250 ALLOCATE_PRIMITIVE_MAP(HEAP_NUMBER_TYPE, HeapNumber::kSize, heap_number, | 2251 ALLOCATE_PRIMITIVE_MAP(HEAP_NUMBER_TYPE, HeapNumber::kSize, heap_number, |
2251 Context::NUMBER_FUNCTION_INDEX) | 2252 Context::NUMBER_FUNCTION_INDEX) |
2252 ALLOCATE_MAP(MUTABLE_HEAP_NUMBER_TYPE, HeapNumber::kSize, | 2253 ALLOCATE_MAP(MUTABLE_HEAP_NUMBER_TYPE, HeapNumber::kSize, |
2253 mutable_heap_number) | 2254 mutable_heap_number) |
2254 ALLOCATE_PRIMITIVE_MAP(SYMBOL_TYPE, Symbol::kSize, symbol, | 2255 ALLOCATE_PRIMITIVE_MAP(SYMBOL_TYPE, Symbol::kSize, symbol, |
2255 Context::SYMBOL_FUNCTION_INDEX) | 2256 Context::SYMBOL_FUNCTION_INDEX) |
2256 #define ALLOCATE_SIMD128_MAP(TYPE, Type, type, lane_count, lane_type) \ | 2257 #define ALLOCATE_SIMD128_MAP(TYPE, Type, type, lane_count, lane_type) \ |
2257 ALLOCATE_PRIMITIVE_MAP(SIMD128_VALUE_TYPE, Type::kSize, type, \ | 2258 ALLOCATE_PRIMITIVE_MAP(SIMD128_VALUE_TYPE, Type::kSize, type, \ |
2258 Context::TYPE##_FUNCTION_INDEX) | 2259 Context::TYPE##_FUNCTION_INDEX) |
2259 SIMD128_TYPES(ALLOCATE_SIMD128_MAP) | 2260 SIMD128_TYPES(ALLOCATE_SIMD128_MAP) |
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2768 // that all these functions will share the same invocation count, but | 2769 // that all these functions will share the same invocation count, but |
2769 // that shouldn't matter since we only use the invocation count to | 2770 // that shouldn't matter since we only use the invocation count to |
2770 // relativize the absolute call counts, but we can only have call counts | 2771 // relativize the absolute call counts, but we can only have call counts |
2771 // if we have actual feedback slots. | 2772 // if we have actual feedback slots. |
2772 Handle<FixedArray> empty_type_feedback_vector = factory->NewFixedArray( | 2773 Handle<FixedArray> empty_type_feedback_vector = factory->NewFixedArray( |
2773 TypeFeedbackVector::kReservedIndexCount, TENURED); | 2774 TypeFeedbackVector::kReservedIndexCount, TENURED); |
2774 empty_type_feedback_vector->set(TypeFeedbackVector::kMetadataIndex, | 2775 empty_type_feedback_vector->set(TypeFeedbackVector::kMetadataIndex, |
2775 empty_fixed_array()); | 2776 empty_fixed_array()); |
2776 empty_type_feedback_vector->set(TypeFeedbackVector::kInvocationCountIndex, | 2777 empty_type_feedback_vector->set(TypeFeedbackVector::kInvocationCountIndex, |
2777 Smi::kZero); | 2778 Smi::kZero); |
| 2779 empty_type_feedback_vector->set_map(type_feedback_vector_map()); |
2778 set_empty_type_feedback_vector(*empty_type_feedback_vector); | 2780 set_empty_type_feedback_vector(*empty_type_feedback_vector); |
2779 | 2781 |
2780 // We use a canonical empty LiteralsArray for all functions that neither | 2782 // We use a canonical empty LiteralsArray for all functions that neither |
2781 // have literals nor need a TypeFeedbackVector (besides the invocation | 2783 // have literals nor need a TypeFeedbackVector (besides the invocation |
2782 // count special slot). | 2784 // count special slot). |
2783 Handle<FixedArray> empty_literals_array = | 2785 Handle<FixedArray> empty_literals_array = |
2784 factory->NewFixedArray(1, TENURED); | 2786 factory->NewFixedArray(1, TENURED); |
2785 empty_literals_array->set(0, *empty_type_feedback_vector); | 2787 empty_literals_array->set(0, *empty_type_feedback_vector); |
2786 set_empty_literals_array(*empty_literals_array); | 2788 set_empty_literals_array(*empty_literals_array); |
2787 } | 2789 } |
(...skipping 3755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6543 } | 6545 } |
6544 | 6546 |
6545 | 6547 |
6546 // static | 6548 // static |
6547 int Heap::GetStaticVisitorIdForMap(Map* map) { | 6549 int Heap::GetStaticVisitorIdForMap(Map* map) { |
6548 return StaticVisitorBase::GetVisitorId(map); | 6550 return StaticVisitorBase::GetVisitorId(map); |
6549 } | 6551 } |
6550 | 6552 |
6551 } // namespace internal | 6553 } // namespace internal |
6552 } // namespace v8 | 6554 } // namespace v8 |
OLD | NEW |