Commit f5e65cc8 authored by Alexei Filippov's avatar Alexei Filippov Committed by Commit Bot

Revert "[heap profiler] Refactor: remove SnapshotFiller proxy"

This reverts commit 0352ea97.

Reason for revert: A dependent patch broke the build https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20gcc%204.8/22123

Original change's description:
> [heap profiler] Refactor: remove SnapshotFiller proxy
> 
> Long time ago there were two passes over heap. One was counting
> objects and edge and another was filling them. Since then we have
> just a single pass, but the filler object is still there.
> 
> Remove it for the sake of layering simplicity.
> 
> Change-Id: Ic873eb5ca616b9dcae17fe388197dde8f539026f
> Reviewed-on: https://chromium-review.googlesource.com/1244380
> Commit-Queue: Alexei Filippov <alph@chromium.org>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#56246}

TBR=ulan@chromium.org,alph@chromium.org,mlippautz@chromium.org

Change-Id: If71ddcc0008d138054074fc4cca3f38e032763e0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/1246234Reviewed-by: 's avatarAlexei Filippov <alph@chromium.org>
Commit-Queue: Alexei Filippov <alph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#56247}
parent 0352ea97
This diff is collapsed.
...@@ -29,7 +29,6 @@ class HeapEntry; ...@@ -29,7 +29,6 @@ class HeapEntry;
class HeapIterator; class HeapIterator;
class HeapProfiler; class HeapProfiler;
class HeapSnapshot; class HeapSnapshot;
class HeapSnapshotGenerator;
class JSArrayBuffer; class JSArrayBuffer;
class JSCollection; class JSCollection;
class JSGeneratorObject; class JSGeneratorObject;
...@@ -37,6 +36,7 @@ class JSGlobalObject; ...@@ -37,6 +36,7 @@ class JSGlobalObject;
class JSGlobalProxy; class JSGlobalProxy;
class JSPromise; class JSPromise;
class JSWeakCollection; class JSWeakCollection;
class SnapshotFiller;
struct SourceLocation { struct SourceLocation {
SourceLocation(int entry_index, int scriptId, int line, int col) SourceLocation(int entry_index, int scriptId, int line, int col)
...@@ -136,13 +136,6 @@ class HeapEntry { ...@@ -136,13 +136,6 @@ class HeapEntry {
HeapGraphEdge::Type type, int index, HeapEntry* entry); HeapGraphEdge::Type type, int index, HeapEntry* entry);
void SetNamedReference( void SetNamedReference(
HeapGraphEdge::Type type, const char* name, HeapEntry* entry); HeapGraphEdge::Type type, const char* name, HeapEntry* entry);
void SetIndexedAutoIndexReference(HeapGraphEdge::Type type,
HeapEntry* child) {
SetIndexedReference(type, children_count_ + 1, child);
}
void SetNamedAutoIndexReference(HeapGraphEdge::Type type,
const char* description, HeapEntry* child,
StringsStorage* strings);
void Print( void Print(
const char* prefix, const char* edge_name, int max_depth, int indent); const char* prefix, const char* edge_name, int max_depth, int indent);
...@@ -317,10 +310,9 @@ class V8HeapExplorer : public HeapEntriesAllocator { ...@@ -317,10 +310,9 @@ class V8HeapExplorer : public HeapEntriesAllocator {
SnapshottingProgressReportingInterface* progress, SnapshottingProgressReportingInterface* progress,
v8::HeapProfiler::ObjectNameResolver* resolver); v8::HeapProfiler::ObjectNameResolver* resolver);
~V8HeapExplorer() override = default; ~V8HeapExplorer() override = default;
HeapEntry* AllocateEntry(HeapThing ptr) override; HeapEntry* AllocateEntry(HeapThing ptr) override;
int EstimateObjectsCount(); int EstimateObjectsCount();
bool IterateAndExtractReferences(HeapSnapshotGenerator* generator); bool IterateAndExtractReferences(SnapshotFiller* filler);
void TagGlobalObjects(); void TagGlobalObjects();
void TagCodeObject(Code* code); void TagCodeObject(Code* code);
void TagBuiltinCodeObject(Code* code, const char* name); void TagBuiltinCodeObject(Code* code, const char* name);
...@@ -433,7 +425,7 @@ class V8HeapExplorer : public HeapEntriesAllocator { ...@@ -433,7 +425,7 @@ class V8HeapExplorer : public HeapEntriesAllocator {
StringsStorage* names_; StringsStorage* names_;
HeapObjectsMap* heap_object_map_; HeapObjectsMap* heap_object_map_;
SnapshottingProgressReportingInterface* progress_; SnapshottingProgressReportingInterface* progress_;
HeapSnapshotGenerator* generator_ = nullptr; SnapshotFiller* filler_;
std::unordered_map<JSGlobalObject*, const char*> objects_tags_; std::unordered_map<JSGlobalObject*, const char*> objects_tags_;
std::unordered_map<Object*, const char*> strong_gc_subroot_names_; std::unordered_map<Object*, const char*> strong_gc_subroot_names_;
std::unordered_set<JSGlobalObject*> user_roots_; std::unordered_set<JSGlobalObject*> user_roots_;
...@@ -458,7 +450,7 @@ class NativeObjectsExplorer { ...@@ -458,7 +450,7 @@ class NativeObjectsExplorer {
SnapshottingProgressReportingInterface* progress); SnapshottingProgressReportingInterface* progress);
virtual ~NativeObjectsExplorer(); virtual ~NativeObjectsExplorer();
int EstimateObjectsCount(); int EstimateObjectsCount();
bool IterateAndExtractReferences(HeapSnapshotGenerator* generator); bool IterateAndExtractReferences(SnapshotFiller* filler);
private: private:
void FillRetainedObjects(); void FillRetainedObjects();
...@@ -502,7 +494,7 @@ class NativeObjectsExplorer { ...@@ -502,7 +494,7 @@ class NativeObjectsExplorer {
std::unique_ptr<HeapEntriesAllocator> native_entries_allocator_; std::unique_ptr<HeapEntriesAllocator> native_entries_allocator_;
std::unique_ptr<HeapEntriesAllocator> embedder_graph_entries_allocator_; std::unique_ptr<HeapEntriesAllocator> embedder_graph_entries_allocator_;
// Used during references extraction. // Used during references extraction.
HeapSnapshotGenerator* generator_ = nullptr; SnapshotFiller* filler_;
v8::HeapProfiler::RetainerEdges edges_; v8::HeapProfiler::RetainerEdges edges_;
static HeapThing const kNativesRootObject; static HeapThing const kNativesRootObject;
...@@ -512,6 +504,7 @@ class NativeObjectsExplorer { ...@@ -512,6 +504,7 @@ class NativeObjectsExplorer {
DISALLOW_COPY_AND_ASSIGN(NativeObjectsExplorer); DISALLOW_COPY_AND_ASSIGN(NativeObjectsExplorer);
}; };
class HeapSnapshotGenerator : public SnapshottingProgressReportingInterface { class HeapSnapshotGenerator : public SnapshottingProgressReportingInterface {
public: public:
// The HeapEntriesMap instance is used to track a mapping between // The HeapEntriesMap instance is used to track a mapping between
...@@ -524,21 +517,6 @@ class HeapSnapshotGenerator : public SnapshottingProgressReportingInterface { ...@@ -524,21 +517,6 @@ class HeapSnapshotGenerator : public SnapshottingProgressReportingInterface {
Heap* heap); Heap* heap);
bool GenerateSnapshot(); bool GenerateSnapshot();
HeapEntry* FindEntry(HeapThing ptr) {
auto it = entries_map_.find(ptr);
return it != entries_map_.end() ? it->second : nullptr;
}
HeapEntry* AddEntry(HeapThing ptr, HeapEntriesAllocator* allocator) {
return entries_map_.emplace(ptr, allocator->AllocateEntry(ptr))
.first->second;
}
HeapEntry* FindOrAddEntry(HeapThing ptr, HeapEntriesAllocator* allocator) {
HeapEntry* entry = FindEntry(ptr);
return entry != nullptr ? entry : AddEntry(ptr, allocator);
}
private: private:
bool FillReferences(); bool FillReferences();
void ProgressStep() override; void ProgressStep() override;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment