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 #ifndef V8_OBJECTS_VISITING_INL_H_ | 5 #ifndef V8_OBJECTS_VISITING_INL_H_ |
6 #define V8_OBJECTS_VISITING_INL_H_ | 6 #define V8_OBJECTS_VISITING_INL_H_ |
7 | 7 |
8 #include "src/heap/array-buffer-tracker.h" | 8 #include "src/heap/array-buffer-tracker.h" |
9 #include "src/heap/mark-compact.h" | 9 #include "src/heap/mark-compact.h" |
10 #include "src/heap/objects-visiting.h" | 10 #include "src/heap/objects-visiting.h" |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 | 88 |
89 table_.Register(kVisitFreeSpace, &VisitFreeSpace); | 89 table_.Register(kVisitFreeSpace, &VisitFreeSpace); |
90 | 90 |
91 table_.Register( | 91 table_.Register( |
92 kVisitJSWeakCollection, | 92 kVisitJSWeakCollection, |
93 &FlexibleBodyVisitor<StaticVisitor, JSWeakCollection::BodyDescriptor, | 93 &FlexibleBodyVisitor<StaticVisitor, JSWeakCollection::BodyDescriptor, |
94 int>::Visit); | 94 int>::Visit); |
95 | 95 |
96 table_.Register(kVisitJSRegExp, &JSObjectVisitor::Visit); | 96 table_.Register(kVisitJSRegExp, &JSObjectVisitor::Visit); |
97 | 97 |
98 table_.template RegisterSpecializations<DataObjectVisitor, kVisitDataObject, | 98 table_.Register(kVisitDataObject, &DataObjectVisitor::Visit); |
99 kVisitDataObjectGeneric>(); | |
100 | 99 |
101 table_.template RegisterSpecializations<JSObjectVisitor, kVisitJSObject, | 100 table_.Register(kVisitJSObjectFast, &JSObjectFastVisitor::Visit); |
102 kVisitJSObjectGeneric>(); | 101 table_.Register(kVisitJSObject, &JSObjectVisitor::Visit); |
103 | 102 |
104 // Not using specialized Api object visitor for newspace. | 103 // Not using specialized Api object visitor for newspace. |
105 table_.template RegisterSpecializations<JSObjectVisitor, kVisitJSApiObject, | 104 table_.Register(kVisitJSApiObject, &JSObjectVisitor::Visit); |
106 kVisitJSApiObjectGeneric>(); | |
107 | 105 |
108 table_.template RegisterSpecializations<StructVisitor, kVisitStruct, | 106 table_.Register(kVisitStruct, &StructVisitor::Visit); |
109 kVisitStructGeneric>(); | |
110 | 107 |
111 table_.Register(kVisitBytecodeArray, &UnreachableVisitor); | 108 table_.Register(kVisitBytecodeArray, &UnreachableVisitor); |
112 table_.Register(kVisitSharedFunctionInfo, &UnreachableVisitor); | 109 table_.Register(kVisitSharedFunctionInfo, &UnreachableVisitor); |
113 } | 110 } |
114 | 111 |
115 template <typename StaticVisitor> | 112 template <typename StaticVisitor> |
116 void StaticMarkingVisitor<StaticVisitor>::Initialize() { | 113 void StaticMarkingVisitor<StaticVisitor>::Initialize() { |
117 table_.Register(kVisitShortcutCandidate, | 114 table_.Register(kVisitShortcutCandidate, |
118 &FixedBodyVisitor<StaticVisitor, ConsString::BodyDescriptor, | 115 &FixedBodyVisitor<StaticVisitor, ConsString::BodyDescriptor, |
119 void>::Visit); | 116 void>::Visit); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 &FixedBodyVisitor<StaticVisitor, Cell::BodyDescriptor, void>::Visit); | 188 &FixedBodyVisitor<StaticVisitor, Cell::BodyDescriptor, void>::Visit); |
192 | 189 |
193 table_.Register(kVisitPropertyCell, | 190 table_.Register(kVisitPropertyCell, |
194 &FixedBodyVisitor<StaticVisitor, PropertyCell::BodyDescriptor, | 191 &FixedBodyVisitor<StaticVisitor, PropertyCell::BodyDescriptor, |
195 void>::Visit); | 192 void>::Visit); |
196 | 193 |
197 table_.Register(kVisitWeakCell, &VisitWeakCell); | 194 table_.Register(kVisitWeakCell, &VisitWeakCell); |
198 | 195 |
199 table_.Register(kVisitTransitionArray, &VisitTransitionArray); | 196 table_.Register(kVisitTransitionArray, &VisitTransitionArray); |
200 | 197 |
201 table_.template RegisterSpecializations<DataObjectVisitor, kVisitDataObject, | 198 table_.Register(kVisitDataObject, &DataObjectVisitor::Visit); |
202 kVisitDataObjectGeneric>(); | |
203 | 199 |
204 table_.template RegisterSpecializations<JSObjectVisitor, kVisitJSObject, | 200 table_.Register(kVisitJSObjectFast, &JSObjectFastVisitor::Visit); |
205 kVisitJSObjectGeneric>(); | 201 table_.Register(kVisitJSObject, &JSObjectVisitor::Visit); |
206 | 202 |
207 table_.template RegisterSpecializations<JSApiObjectVisitor, kVisitJSApiObject, | 203 table_.Register(kVisitJSApiObject, &JSApiObjectVisitor::Visit); |
208 kVisitJSApiObjectGeneric>(); | |
209 | 204 |
210 table_.template RegisterSpecializations<StructObjectVisitor, kVisitStruct, | 205 table_.Register(kVisitStruct, &StructObjectVisitor::Visit); |
211 kVisitStructGeneric>(); | |
212 } | 206 } |
213 | 207 |
214 | 208 |
215 template <typename StaticVisitor> | 209 template <typename StaticVisitor> |
216 void StaticMarkingVisitor<StaticVisitor>::VisitCodeEntry( | 210 void StaticMarkingVisitor<StaticVisitor>::VisitCodeEntry( |
217 Heap* heap, HeapObject* object, Address entry_address) { | 211 Heap* heap, HeapObject* object, Address entry_address) { |
218 Code* code = Code::cast(Code::GetObjectFromEntryAddress(entry_address)); | 212 Code* code = Code::cast(Code::GetObjectFromEntryAddress(entry_address)); |
219 heap->mark_compact_collector()->RecordCodeEntrySlot(object, entry_address, | 213 heap->mark_compact_collector()->RecordCodeEntrySlot(object, entry_address, |
220 code); | 214 code); |
221 StaticVisitor::MarkObject(heap, code); | 215 StaticVisitor::MarkObject(heap, code); |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 typedef FlexibleBodyVisitor<StaticVisitor, JSFunction::BodyDescriptorWeakCode, | 635 typedef FlexibleBodyVisitor<StaticVisitor, JSFunction::BodyDescriptorWeakCode, |
642 void> JSFunctionWeakCodeBodyVisitor; | 636 void> JSFunctionWeakCodeBodyVisitor; |
643 JSFunctionWeakCodeBodyVisitor::Visit(map, object); | 637 JSFunctionWeakCodeBodyVisitor::Visit(map, object); |
644 } | 638 } |
645 | 639 |
646 | 640 |
647 } // namespace internal | 641 } // namespace internal |
648 } // namespace v8 | 642 } // namespace v8 |
649 | 643 |
650 #endif // V8_OBJECTS_VISITING_INL_H_ | 644 #endif // V8_OBJECTS_VISITING_INL_H_ |
OLD | NEW |