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