| Index: src/heap-snapshot-generator.h
|
| diff --git a/src/heap-snapshot-generator.h b/src/heap-snapshot-generator.h
|
| index 634ede19ab49c8b9d02ac9c7841a2b965f25da22..1582b2e1e85a94e9a518c2392a51370a59b41d37 100644
|
| --- a/src/heap-snapshot-generator.h
|
| +++ b/src/heap-snapshot-generator.h
|
| @@ -376,6 +376,9 @@ class V8HeapExplorer : public HeapEntriesAllocator {
|
| static HeapObject* const kInternalRootObject;
|
|
|
| private:
|
| + typedef bool (V8HeapExplorer::*ExtractReferencesMethod)(int entry,
|
| + HeapObject* object);
|
| +
|
| HeapEntry* AddEntry(HeapObject* object);
|
| HeapEntry* AddEntry(HeapObject* object,
|
| HeapEntry::Type type,
|
| @@ -383,7 +386,11 @@ class V8HeapExplorer : public HeapEntriesAllocator {
|
|
|
| const char* GetSystemEntryName(HeapObject* object);
|
|
|
| - void ExtractReferences(HeapObject* obj);
|
| + template<V8HeapExplorer::ExtractReferencesMethod extractor>
|
| + bool IterateAndExtractSinglePass();
|
| +
|
| + bool ExtractReferencesPass1(int entry, HeapObject* obj);
|
| + bool ExtractReferencesPass2(int entry, HeapObject* obj);
|
| void ExtractJSGlobalProxyReferences(int entry, JSGlobalProxy* proxy);
|
| void ExtractJSObjectReferences(int entry, JSObject* js_obj);
|
| void ExtractStringReferences(int entry, String* obj);
|
| @@ -400,12 +407,14 @@ class V8HeapExplorer : public HeapEntriesAllocator {
|
| void ExtractPropertyCellReferences(int entry, PropertyCell* cell);
|
| void ExtractAllocationSiteReferences(int entry, AllocationSite* site);
|
| void ExtractJSArrayBufferReferences(int entry, JSArrayBuffer* buffer);
|
| + void ExtractFixedArrayReferences(int entry, FixedArray* array);
|
| void ExtractClosureReferences(JSObject* js_obj, int entry);
|
| void ExtractPropertyReferences(JSObject* js_obj, int entry);
|
| bool ExtractAccessorPairProperty(JSObject* js_obj, int entry,
|
| Object* key, Object* callback_obj);
|
| void ExtractElementReferences(JSObject* js_obj, int entry);
|
| void ExtractInternalReferences(JSObject* js_obj, int entry);
|
| +
|
| bool IsEssentialObject(Object* object);
|
| void SetContextReference(HeapObject* parent_obj,
|
| int parent,
|
| @@ -439,6 +448,11 @@ class V8HeapExplorer : public HeapEntriesAllocator {
|
| const char* reference_name,
|
| Object* child_obj,
|
| int field_offset);
|
| + void SetWeakReference(HeapObject* parent_obj,
|
| + int parent,
|
| + int index,
|
| + Object* child_obj,
|
| + int field_offset);
|
| void SetPropertyReference(HeapObject* parent_obj,
|
| int parent,
|
| Name* reference_name,
|
| @@ -452,6 +466,7 @@ class V8HeapExplorer : public HeapEntriesAllocator {
|
| VisitorSynchronization::SyncTag tag, bool is_weak, Object* child);
|
| const char* GetStrongGcSubrootName(Object* object);
|
| void TagObject(Object* obj, const char* tag);
|
| + void MarkAsWeakContainer(Object* object);
|
|
|
| HeapEntry* GetEntry(Object* obj);
|
|
|
| @@ -467,6 +482,7 @@ class V8HeapExplorer : public HeapEntriesAllocator {
|
| HeapObjectsSet objects_tags_;
|
| HeapObjectsSet strong_gc_subroot_names_;
|
| HeapObjectsSet user_roots_;
|
| + HeapObjectsSet weak_containers_;
|
| v8::HeapProfiler::ObjectNameResolver* global_object_name_resolver_;
|
|
|
| static HeapObject* const kGcRootsObject;
|
|
|