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 2741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2752 set_undefined_cell(*factory->NewCell(factory->undefined_value())); | 2752 set_undefined_cell(*factory->NewCell(factory->undefined_value())); |
2753 | 2753 |
2754 // Microtask queue uses the empty fixed array as a sentinel for "empty". | 2754 // Microtask queue uses the empty fixed array as a sentinel for "empty". |
2755 // Number of queued microtasks stored in Isolate::pending_microtask_count(). | 2755 // Number of queued microtasks stored in Isolate::pending_microtask_count(). |
2756 set_microtask_queue(empty_fixed_array()); | 2756 set_microtask_queue(empty_fixed_array()); |
2757 | 2757 |
2758 { | 2758 { |
2759 StaticFeedbackVectorSpec spec; | 2759 StaticFeedbackVectorSpec spec; |
2760 FeedbackVectorSlot slot = spec.AddLoadICSlot(); | 2760 FeedbackVectorSlot slot = spec.AddLoadICSlot(); |
2761 DCHECK_EQ(slot, FeedbackVectorSlot(TypeFeedbackVector::kDummyLoadICSlot)); | 2761 DCHECK_EQ(slot, FeedbackVectorSlot(TypeFeedbackVector::kDummyLoadICSlot)); |
2762 | 2762 USE(slot); |
2763 slot = spec.AddKeyedLoadICSlot(); | |
2764 DCHECK_EQ(slot, | |
2765 FeedbackVectorSlot(TypeFeedbackVector::kDummyKeyedLoadICSlot)); | |
2766 | |
2767 slot = spec.AddStoreICSlot(); | |
2768 DCHECK_EQ(slot, FeedbackVectorSlot(TypeFeedbackVector::kDummyStoreICSlot)); | |
2769 | |
2770 slot = spec.AddKeyedStoreICSlot(); | |
2771 DCHECK_EQ(slot, | |
2772 FeedbackVectorSlot(TypeFeedbackVector::kDummyKeyedStoreICSlot)); | |
2773 | 2763 |
2774 Handle<TypeFeedbackMetadata> dummy_metadata = | 2764 Handle<TypeFeedbackMetadata> dummy_metadata = |
2775 TypeFeedbackMetadata::New(isolate(), &spec); | 2765 TypeFeedbackMetadata::New(isolate(), &spec); |
2776 Handle<TypeFeedbackVector> dummy_vector = | 2766 Handle<TypeFeedbackVector> dummy_vector = |
2777 TypeFeedbackVector::New(isolate(), dummy_metadata); | 2767 TypeFeedbackVector::New(isolate(), dummy_metadata); |
2778 | 2768 |
2779 set_dummy_vector(*dummy_vector); | 2769 set_dummy_vector(*dummy_vector); |
2780 | 2770 |
2781 // Now initialize dummy vector's entries. | 2771 // Now initialize dummy vector's entries. |
2782 LoadICNexus(isolate()).ConfigureMegamorphic(); | 2772 LoadICNexus(isolate()).ConfigureMegamorphic(); |
2783 StoreICNexus(isolate()).ConfigureMegamorphic(); | |
2784 KeyedLoadICNexus(isolate()).ConfigureMegamorphicKeyed(PROPERTY); | |
2785 KeyedStoreICNexus(isolate()).ConfigureMegamorphicKeyed(PROPERTY); | |
2786 } | 2773 } |
2787 | 2774 |
2788 { | 2775 { |
2789 // Create a canonical empty TypeFeedbackVector, which is shared by all | 2776 // Create a canonical empty TypeFeedbackVector, which is shared by all |
2790 // functions that don't need actual type feedback slots. Note however | 2777 // functions that don't need actual type feedback slots. Note however |
2791 // that all these functions will share the same invocation count, but | 2778 // that all these functions will share the same invocation count, but |
2792 // that shouldn't matter since we only use the invocation count to | 2779 // that shouldn't matter since we only use the invocation count to |
2793 // relativize the absolute call counts, but we can only have call counts | 2780 // relativize the absolute call counts, but we can only have call counts |
2794 // if we have actual feedback slots. | 2781 // if we have actual feedback slots. |
2795 Handle<FixedArray> empty_type_feedback_vector = factory->NewFixedArray( | 2782 Handle<FixedArray> empty_type_feedback_vector = factory->NewFixedArray( |
(...skipping 3805 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6601 } | 6588 } |
6602 | 6589 |
6603 | 6590 |
6604 // static | 6591 // static |
6605 int Heap::GetStaticVisitorIdForMap(Map* map) { | 6592 int Heap::GetStaticVisitorIdForMap(Map* map) { |
6606 return StaticVisitorBase::GetVisitorId(map); | 6593 return StaticVisitorBase::GetVisitorId(map); |
6607 } | 6594 } |
6608 | 6595 |
6609 } // namespace internal | 6596 } // namespace internal |
6610 } // namespace v8 | 6597 } // namespace v8 |
OLD | NEW |