| 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 |