Chromium Code Reviews| 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/base/bits.h" | 9 #include "src/base/bits.h" |
| 10 #include "src/base/once.h" | 10 #include "src/base/once.h" |
| (...skipping 2703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2714 // Allocate object to hold object observation state. | 2714 // Allocate object to hold object observation state. |
| 2715 set_observation_state(*factory->NewJSObjectFromMap( | 2715 set_observation_state(*factory->NewJSObjectFromMap( |
| 2716 factory->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize))); | 2716 factory->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize))); |
| 2717 | 2717 |
| 2718 // Microtask queue uses the empty fixed array as a sentinel for "empty". | 2718 // Microtask queue uses the empty fixed array as a sentinel for "empty". |
| 2719 // Number of queued microtasks stored in Isolate::pending_microtask_count(). | 2719 // Number of queued microtasks stored in Isolate::pending_microtask_count(). |
| 2720 set_microtask_queue(empty_fixed_array()); | 2720 set_microtask_queue(empty_fixed_array()); |
| 2721 | 2721 |
| 2722 { | 2722 { |
| 2723 FeedbackVectorSlotKind kinds[] = {FeedbackVectorSlotKind::LOAD_IC, | 2723 FeedbackVectorSlotKind kinds[] = {FeedbackVectorSlotKind::LOAD_IC, |
| 2724 FeedbackVectorSlotKind::INVALID, | |
| 2724 FeedbackVectorSlotKind::KEYED_LOAD_IC, | 2725 FeedbackVectorSlotKind::KEYED_LOAD_IC, |
| 2726 FeedbackVectorSlotKind::INVALID, | |
| 2725 FeedbackVectorSlotKind::STORE_IC, | 2727 FeedbackVectorSlotKind::STORE_IC, |
| 2726 FeedbackVectorSlotKind::KEYED_STORE_IC}; | 2728 FeedbackVectorSlotKind::INVALID, |
| 2727 StaticFeedbackVectorSpec spec(0, 4, kinds); | 2729 FeedbackVectorSlotKind::KEYED_STORE_IC, |
| 2730 FeedbackVectorSlotKind::INVALID}; | |
| 2731 StaticFeedbackVectorSpec spec(arraysize(kinds), kinds); | |
| 2728 Handle<TypeFeedbackVector> dummy_vector = | 2732 Handle<TypeFeedbackVector> dummy_vector = |
| 2729 factory->NewTypeFeedbackVector(&spec); | 2733 TypeFeedbackVector::New(isolate(), &spec); |
| 2730 for (int i = 0; i < 4; i++) { | 2734 for (int i = 0; i < spec.slots(); i++) { |
| 2731 dummy_vector->Set(FeedbackVectorICSlot(0), | 2735 if (kinds[i] != FeedbackVectorSlotKind::INVALID) { |
|
Igor Sheludko
2015/09/30 16:30:56
I guess we wanted to use FeedbackVectorICSlot(i) h
mvstanton
2015/10/01 10:24:31
Good catch.
| |
| 2732 *TypeFeedbackVector::MegamorphicSentinel(isolate()), | 2736 dummy_vector->Set(FeedbackVectorSlot(i), |
| 2733 SKIP_WRITE_BARRIER); | 2737 *TypeFeedbackVector::MegamorphicSentinel(isolate()), |
| 2738 SKIP_WRITE_BARRIER); | |
| 2739 } | |
| 2734 } | 2740 } |
| 2741 DCHECK_EQ(FeedbackVectorSlotKind::LOAD_IC, | |
| 2742 dummy_vector->GetKind( | |
| 2743 FeedbackVectorSlot(TypeFeedbackVector::kDummyLoadICSlot))); | |
| 2744 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_LOAD_IC, | |
| 2745 dummy_vector->GetKind(FeedbackVectorSlot( | |
| 2746 TypeFeedbackVector::kDummyKeyedLoadICSlot))); | |
| 2747 DCHECK_EQ(FeedbackVectorSlotKind::STORE_IC, | |
| 2748 dummy_vector->GetKind( | |
| 2749 FeedbackVectorSlot(TypeFeedbackVector::kDummyStoreICSlot))); | |
| 2750 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC, | |
| 2751 dummy_vector->GetKind(FeedbackVectorSlot( | |
| 2752 TypeFeedbackVector::kDummyKeyedStoreICSlot))); | |
| 2753 | |
| 2735 set_dummy_vector(*dummy_vector); | 2754 set_dummy_vector(*dummy_vector); |
| 2736 } | 2755 } |
| 2737 | 2756 |
| 2738 set_detached_contexts(empty_fixed_array()); | 2757 set_detached_contexts(empty_fixed_array()); |
| 2739 set_retained_maps(ArrayList::cast(empty_fixed_array())); | 2758 set_retained_maps(ArrayList::cast(empty_fixed_array())); |
| 2740 | 2759 |
| 2741 set_weak_object_to_code_table( | 2760 set_weak_object_to_code_table( |
| 2742 *WeakHashTable::New(isolate(), 16, USE_DEFAULT_MINIMUM_CAPACITY, | 2761 *WeakHashTable::New(isolate(), 16, USE_DEFAULT_MINIMUM_CAPACITY, |
| 2743 TENURED)); | 2762 TENURED)); |
| 2744 | 2763 |
| (...skipping 3340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6085 } | 6104 } |
| 6086 | 6105 |
| 6087 | 6106 |
| 6088 // static | 6107 // static |
| 6089 int Heap::GetStaticVisitorIdForMap(Map* map) { | 6108 int Heap::GetStaticVisitorIdForMap(Map* map) { |
| 6090 return StaticVisitorBase::GetVisitorId(map); | 6109 return StaticVisitorBase::GetVisitorId(map); |
| 6091 } | 6110 } |
| 6092 | 6111 |
| 6093 } // namespace internal | 6112 } // namespace internal |
| 6094 } // namespace v8 | 6113 } // namespace v8 |
| OLD | NEW |