| Index: src/heap-snapshot-generator.h
|
| diff --git a/src/heap-snapshot-generator.h b/src/heap-snapshot-generator.h
|
| index 8717f8f25edccfefe9878b05959897a83578a87e..634ede19ab49c8b9d02ac9c7841a2b965f25da22 100644
|
| --- a/src/heap-snapshot-generator.h
|
| +++ b/src/heap-snapshot-generator.h
|
| @@ -37,6 +37,7 @@ class AllocationTracker;
|
| class AllocationTraceNode;
|
| class HeapEntry;
|
| class HeapSnapshot;
|
| +class SnapshotFiller;
|
|
|
| class HeapGraphEdge BASE_EMBEDDED {
|
| public:
|
| @@ -114,7 +115,8 @@ class HeapEntry BASE_EMBEDDED {
|
| Type type,
|
| const char* name,
|
| SnapshotObjectId id,
|
| - size_t self_size);
|
| + size_t self_size,
|
| + unsigned trace_node_id);
|
|
|
| HeapSnapshot* snapshot() { return snapshot_; }
|
| Type type() { return static_cast<Type>(type_); }
|
| @@ -122,6 +124,7 @@ class HeapEntry BASE_EMBEDDED {
|
| void set_name(const char* name) { name_ = name; }
|
| inline SnapshotObjectId id() { return id_; }
|
| size_t self_size() { return self_size_; }
|
| + unsigned trace_node_id() const { return trace_node_id_; }
|
| INLINE(int index() const);
|
| int children_count() const { return children_count_; }
|
| INLINE(int set_children_index(int index));
|
| @@ -147,9 +150,11 @@ class HeapEntry BASE_EMBEDDED {
|
| int children_count_: 28;
|
| int children_index_;
|
| size_t self_size_;
|
| - SnapshotObjectId id_;
|
| HeapSnapshot* snapshot_;
|
| const char* name_;
|
| + SnapshotObjectId id_;
|
| + // id of allocation stack trace top node
|
| + unsigned trace_node_id_;
|
| };
|
|
|
|
|
| @@ -186,7 +191,8 @@ class HeapSnapshot {
|
| HeapEntry* AddEntry(HeapEntry::Type type,
|
| const char* name,
|
| SnapshotObjectId id,
|
| - size_t size);
|
| + size_t size,
|
| + unsigned trace_node_id);
|
| HeapEntry* AddRootEntry();
|
| HeapEntry* AddGcRootsEntry();
|
| HeapEntry* AddGcSubrootEntry(int tag);
|
| @@ -228,7 +234,7 @@ class HeapObjectsMap {
|
| SnapshotObjectId FindOrAddEntry(Address addr,
|
| unsigned int size,
|
| bool accessed = true);
|
| - void MoveObject(Address from, Address to, int size);
|
| + bool MoveObject(Address from, Address to, int size);
|
| void UpdateObjectSize(Address addr, int size);
|
| SnapshotObjectId last_assigned_id() const {
|
| return next_id_ - kObjectIdStep;
|
| @@ -338,32 +344,6 @@ class HeapObjectsSet {
|
| };
|
|
|
|
|
| -// An interface used to populate a snapshot with nodes and edges.
|
| -class SnapshotFillerInterface {
|
| - public:
|
| - virtual ~SnapshotFillerInterface() { }
|
| - virtual HeapEntry* AddEntry(HeapThing ptr,
|
| - HeapEntriesAllocator* allocator) = 0;
|
| - virtual HeapEntry* FindEntry(HeapThing ptr) = 0;
|
| - virtual HeapEntry* FindOrAddEntry(HeapThing ptr,
|
| - HeapEntriesAllocator* allocator) = 0;
|
| - virtual void SetIndexedReference(HeapGraphEdge::Type type,
|
| - int parent_entry,
|
| - int index,
|
| - HeapEntry* child_entry) = 0;
|
| - virtual void SetIndexedAutoIndexReference(HeapGraphEdge::Type type,
|
| - int parent_entry,
|
| - HeapEntry* child_entry) = 0;
|
| - virtual void SetNamedReference(HeapGraphEdge::Type type,
|
| - int parent_entry,
|
| - const char* reference_name,
|
| - HeapEntry* child_entry) = 0;
|
| - virtual void SetNamedAutoIndexReference(HeapGraphEdge::Type type,
|
| - int parent_entry,
|
| - HeapEntry* child_entry) = 0;
|
| -};
|
| -
|
| -
|
| class SnapshottingProgressReportingInterface {
|
| public:
|
| virtual ~SnapshottingProgressReportingInterface() { }
|
| @@ -380,9 +360,9 @@ class V8HeapExplorer : public HeapEntriesAllocator {
|
| v8::HeapProfiler::ObjectNameResolver* resolver);
|
| virtual ~V8HeapExplorer();
|
| virtual HeapEntry* AllocateEntry(HeapThing ptr);
|
| - void AddRootEntries(SnapshotFillerInterface* filler);
|
| + void AddRootEntries(SnapshotFiller* filler);
|
| int EstimateObjectsCount(HeapIterator* iterator);
|
| - bool IterateAndExtractReferences(SnapshotFillerInterface* filler);
|
| + bool IterateAndExtractReferences(SnapshotFiller* filler);
|
| void TagGlobalObjects();
|
| void TagCodeObject(Code* code);
|
| void TagBuiltinCodeObject(Code* code, const char* name);
|
| @@ -483,7 +463,7 @@ class V8HeapExplorer : public HeapEntriesAllocator {
|
| StringsStorage* names_;
|
| HeapObjectsMap* heap_object_map_;
|
| SnapshottingProgressReportingInterface* progress_;
|
| - SnapshotFillerInterface* filler_;
|
| + SnapshotFiller* filler_;
|
| HeapObjectsSet objects_tags_;
|
| HeapObjectsSet strong_gc_subroot_names_;
|
| HeapObjectsSet user_roots_;
|
| @@ -510,9 +490,9 @@ class NativeObjectsExplorer {
|
| NativeObjectsExplorer(HeapSnapshot* snapshot,
|
| SnapshottingProgressReportingInterface* progress);
|
| virtual ~NativeObjectsExplorer();
|
| - void AddRootEntries(SnapshotFillerInterface* filler);
|
| + void AddRootEntries(SnapshotFiller* filler);
|
| int EstimateObjectsCount();
|
| - bool IterateAndExtractReferences(SnapshotFillerInterface* filler);
|
| + bool IterateAndExtractReferences(SnapshotFiller* filler);
|
|
|
| private:
|
| void FillRetainedObjects();
|
| @@ -552,7 +532,7 @@ class NativeObjectsExplorer {
|
| HeapEntriesAllocator* synthetic_entries_allocator_;
|
| HeapEntriesAllocator* native_entries_allocator_;
|
| // Used during references extraction.
|
| - SnapshotFillerInterface* filler_;
|
| + SnapshotFiller* filler_;
|
|
|
| static HeapThing const kNativesRootObject;
|
|
|
|
|