Index: src/heap-snapshot-generator.cc |
diff --git a/src/heap-snapshot-generator.cc b/src/heap-snapshot-generator.cc |
index aa28d07b98c75ec4bc2436466f22f6e5a7d67a68..a7c1c2eb93ba4f6de3bc31ec064d4cad68264a3d 100644 |
--- a/src/heap-snapshot-generator.cc |
+++ b/src/heap-snapshot-generator.cc |
@@ -927,10 +927,68 @@ HeapEntry* V8HeapExplorer::AddEntry(Address address, |
} |
+class SnapshotFiller { |
+ public: |
+ explicit SnapshotFiller(HeapSnapshot* snapshot, HeapEntriesMap* entries) |
+ : snapshot_(snapshot), |
+ names_(snapshot->profiler()->names()), |
+ entries_(entries) { } |
+ HeapEntry* AddEntry(HeapThing ptr, HeapEntriesAllocator* allocator) { |
+ HeapEntry* entry = allocator->AllocateEntry(ptr); |
+ entries_->Pair(ptr, entry->index()); |
+ return entry; |
+ } |
+ HeapEntry* FindEntry(HeapThing ptr) { |
+ int index = entries_->Map(ptr); |
+ return index != HeapEntry::kNoEntry ? &snapshot_->entries()[index] : NULL; |
+ } |
+ HeapEntry* FindOrAddEntry(HeapThing ptr, HeapEntriesAllocator* allocator) { |
+ HeapEntry* entry = FindEntry(ptr); |
+ return entry != NULL ? entry : AddEntry(ptr, allocator); |
+ } |
+ void SetIndexedReference(HeapGraphEdge::Type type, |
+ int parent, |
+ int index, |
+ HeapEntry* child_entry) { |
+ HeapEntry* parent_entry = &snapshot_->entries()[parent]; |
+ parent_entry->SetIndexedReference(type, index, child_entry); |
+ } |
+ void SetIndexedAutoIndexReference(HeapGraphEdge::Type type, |
+ int parent, |
+ HeapEntry* child_entry) { |
+ HeapEntry* parent_entry = &snapshot_->entries()[parent]; |
+ int index = parent_entry->children_count() + 1; |
+ parent_entry->SetIndexedReference(type, index, child_entry); |
+ } |
+ void SetNamedReference(HeapGraphEdge::Type type, |
+ int parent, |
+ const char* reference_name, |
+ HeapEntry* child_entry) { |
+ HeapEntry* parent_entry = &snapshot_->entries()[parent]; |
+ parent_entry->SetNamedReference(type, reference_name, child_entry); |
+ } |
+ void SetNamedAutoIndexReference(HeapGraphEdge::Type type, |
+ int parent, |
+ HeapEntry* child_entry) { |
+ HeapEntry* parent_entry = &snapshot_->entries()[parent]; |
+ int index = parent_entry->children_count() + 1; |
+ parent_entry->SetNamedReference( |
+ type, |
+ names_->GetName(index), |
+ child_entry); |
+ } |
+ |
+ private: |
+ HeapSnapshot* snapshot_; |
+ StringsStorage* names_; |
+ HeapEntriesMap* entries_; |
+}; |
+ |
+ |
class GcSubrootsEnumerator : public ObjectVisitor { |
public: |
GcSubrootsEnumerator( |
- SnapshotFillerInterface* filler, V8HeapExplorer* explorer) |
+ SnapshotFiller* filler, V8HeapExplorer* explorer) |
: filler_(filler), |
explorer_(explorer), |
previous_object_count_(0), |
@@ -947,14 +1005,14 @@ class GcSubrootsEnumerator : public ObjectVisitor { |
} |
} |
private: |
- SnapshotFillerInterface* filler_; |
+ SnapshotFiller* filler_; |
V8HeapExplorer* explorer_; |
intptr_t previous_object_count_; |
intptr_t object_count_; |
}; |
-void V8HeapExplorer::AddRootEntries(SnapshotFillerInterface* filler) { |
+void V8HeapExplorer::AddRootEntries(SnapshotFiller* filler) { |
filler->AddEntry(kInternalRootObject, this); |
filler->AddEntry(kGcRootsObject, this); |
GcSubrootsEnumerator enumerator(filler, this); |
@@ -1764,7 +1822,7 @@ class RootsReferencesExtractor : public ObjectVisitor { |
bool V8HeapExplorer::IterateAndExtractReferences( |
- SnapshotFillerInterface* filler) { |
+ SnapshotFiller* filler) { |
filler_ = filler; |
// Make sure builtin code objects get their builtin tags |
@@ -2275,7 +2333,7 @@ List<HeapObject*>* NativeObjectsExplorer::GetListMaybeDisposeInfo( |
bool NativeObjectsExplorer::IterateAndExtractReferences( |
- SnapshotFillerInterface* filler) { |
+ SnapshotFiller* filler) { |
filler_ = filler; |
FillRetainedObjects(); |
FillImplicitReferences(); |
@@ -2402,64 +2460,6 @@ void NativeObjectsExplorer::VisitSubtreeWrapper(Object** p, uint16_t class_id) { |
} |
-class SnapshotFiller : public SnapshotFillerInterface { |
- public: |
- explicit SnapshotFiller(HeapSnapshot* snapshot, HeapEntriesMap* entries) |
- : snapshot_(snapshot), |
- names_(snapshot->profiler()->names()), |
- entries_(entries) { } |
- HeapEntry* AddEntry(HeapThing ptr, HeapEntriesAllocator* allocator) { |
- HeapEntry* entry = allocator->AllocateEntry(ptr); |
- entries_->Pair(ptr, entry->index()); |
- return entry; |
- } |
- HeapEntry* FindEntry(HeapThing ptr) { |
- int index = entries_->Map(ptr); |
- return index != HeapEntry::kNoEntry ? &snapshot_->entries()[index] : NULL; |
- } |
- HeapEntry* FindOrAddEntry(HeapThing ptr, HeapEntriesAllocator* allocator) { |
- HeapEntry* entry = FindEntry(ptr); |
- return entry != NULL ? entry : AddEntry(ptr, allocator); |
- } |
- void SetIndexedReference(HeapGraphEdge::Type type, |
- int parent, |
- int index, |
- HeapEntry* child_entry) { |
- HeapEntry* parent_entry = &snapshot_->entries()[parent]; |
- parent_entry->SetIndexedReference(type, index, child_entry); |
- } |
- void SetIndexedAutoIndexReference(HeapGraphEdge::Type type, |
- int parent, |
- HeapEntry* child_entry) { |
- HeapEntry* parent_entry = &snapshot_->entries()[parent]; |
- int index = parent_entry->children_count() + 1; |
- parent_entry->SetIndexedReference(type, index, child_entry); |
- } |
- void SetNamedReference(HeapGraphEdge::Type type, |
- int parent, |
- const char* reference_name, |
- HeapEntry* child_entry) { |
- HeapEntry* parent_entry = &snapshot_->entries()[parent]; |
- parent_entry->SetNamedReference(type, reference_name, child_entry); |
- } |
- void SetNamedAutoIndexReference(HeapGraphEdge::Type type, |
- int parent, |
- HeapEntry* child_entry) { |
- HeapEntry* parent_entry = &snapshot_->entries()[parent]; |
- int index = parent_entry->children_count() + 1; |
- parent_entry->SetNamedReference( |
- type, |
- names_->GetName(index), |
- child_entry); |
- } |
- |
- private: |
- HeapSnapshot* snapshot_; |
- StringsStorage* names_; |
- HeapEntriesMap* entries_; |
-}; |
- |
- |
HeapSnapshotGenerator::HeapSnapshotGenerator( |
HeapSnapshot* snapshot, |
v8::ActivityControl* control, |