Index: src/heap-snapshot-generator.cc |
diff --git a/src/heap-snapshot-generator.cc b/src/heap-snapshot-generator.cc |
index 1c8a7b3dc4d7a3bb93cee7dce1d5ab68eae4c248..6a5bb63a0ea2a50e5ee737a31bd52ddd9b116db3 100644 |
--- a/src/heap-snapshot-generator.cc |
+++ b/src/heap-snapshot-generator.cc |
@@ -732,7 +732,7 @@ V8HeapExplorer::V8HeapExplorer( |
HeapSnapshot* snapshot, |
SnapshottingProgressReportingInterface* progress, |
v8::HeapProfiler::ObjectNameResolver* resolver) |
- : heap_(Isolate::Current()->heap()), |
+ : heap_(snapshot->collection()->heap()), |
snapshot_(snapshot), |
collection_(snapshot_->collection()), |
progress_(progress), |
@@ -1852,7 +1852,7 @@ class GlobalObjectsEnumerator : public ObjectVisitor { |
// Modifies heap. Must not be run during heap traversal. |
void V8HeapExplorer::TagGlobalObjects() { |
- Isolate* isolate = Isolate::Current(); |
+ Isolate* isolate = heap_->isolate(); |
HandleScope scope(isolate); |
GlobalObjectsEnumerator enumerator; |
isolate->global_handles()->IterateAllRoots(&enumerator); |
@@ -1927,8 +1927,10 @@ HeapEntry* BasicHeapEntriesAllocator::AllocateEntry(HeapThing ptr) { |
NativeObjectsExplorer::NativeObjectsExplorer( |
- HeapSnapshot* snapshot, SnapshottingProgressReportingInterface* progress) |
- : snapshot_(snapshot), |
+ HeapSnapshot* snapshot, |
+ SnapshottingProgressReportingInterface* progress) |
+ : isolate_(snapshot->collection()->heap()->isolate()), |
+ snapshot_(snapshot), |
collection_(snapshot_->collection()), |
progress_(progress), |
embedder_queried_(false), |
@@ -1973,7 +1975,7 @@ int NativeObjectsExplorer::EstimateObjectsCount() { |
void NativeObjectsExplorer::FillRetainedObjects() { |
if (embedder_queried_) return; |
- Isolate* isolate = Isolate::Current(); |
+ Isolate* isolate = isolate_; |
const GCType major_gc_type = kGCTypeMarkSweepCompact; |
// Record objects that are joined into ObjectGroups. |
isolate->heap()->CallGCPrologueCallbacks( |
@@ -2000,7 +2002,7 @@ void NativeObjectsExplorer::FillRetainedObjects() { |
void NativeObjectsExplorer::FillImplicitReferences() { |
- Isolate* isolate = Isolate::Current(); |
+ Isolate* isolate = isolate_; |
List<ImplicitRefGroup*>* groups = |
isolate->global_handles()->implicit_ref_groups(); |
for (int i = 0; i < groups->length(); ++i) { |
@@ -2157,7 +2159,7 @@ void NativeObjectsExplorer::SetRootNativeRootsReference() { |
void NativeObjectsExplorer::VisitSubtreeWrapper(Object** p, uint16_t class_id) { |
if (in_groups_.Contains(*p)) return; |
- Isolate* isolate = Isolate::Current(); |
+ Isolate* isolate = isolate_; |
v8::RetainedObjectInfo* info = |
isolate->heap_profiler()->ExecuteWrapperClassCallback(class_id, p); |
if (info == NULL) return; |
@@ -2243,15 +2245,15 @@ bool HeapSnapshotGenerator::GenerateSnapshot() { |
// full GC is reachable from the root when computing dominators. |
// This is not true for weakly reachable objects. |
// As a temporary solution we call GC twice. |
- Isolate::Current()->heap()->CollectAllGarbage( |
+ heap_->CollectAllGarbage( |
Heap::kMakeHeapIterableMask, |
"HeapSnapshotGenerator::GenerateSnapshot"); |
- Isolate::Current()->heap()->CollectAllGarbage( |
+ heap_->CollectAllGarbage( |
Heap::kMakeHeapIterableMask, |
"HeapSnapshotGenerator::GenerateSnapshot"); |
#ifdef VERIFY_HEAP |
- Heap* debug_heap = Isolate::Current()->heap(); |
+ Heap* debug_heap = heap_; |
CHECK(!debug_heap->old_data_space()->was_swept_conservatively()); |
CHECK(!debug_heap->old_pointer_space()->was_swept_conservatively()); |
CHECK(!debug_heap->code_space()->was_swept_conservatively()); |