diff options
Diffstat (limited to 'deps/v8/src/heap-snapshot-generator.cc')
-rw-r--r-- | deps/v8/src/heap-snapshot-generator.cc | 55 |
1 files changed, 10 insertions, 45 deletions
diff --git a/deps/v8/src/heap-snapshot-generator.cc b/deps/v8/src/heap-snapshot-generator.cc index d22239f381..3d890f720e 100644 --- a/deps/v8/src/heap-snapshot-generator.cc +++ b/deps/v8/src/heap-snapshot-generator.cc @@ -190,7 +190,6 @@ template <> struct SnapshotSizeConstants<4> { static const int kExpectedHeapEntrySize = 24; static const int kExpectedHeapSnapshotsCollectionSize = 100; static const int kExpectedHeapSnapshotSize = 132; - static const size_t kMaxSerializableSnapshotRawSize = 256 * MB; }; template <> struct SnapshotSizeConstants<8> { @@ -198,8 +197,6 @@ template <> struct SnapshotSizeConstants<8> { static const int kExpectedHeapEntrySize = 32; static const int kExpectedHeapSnapshotsCollectionSize = 152; static const int kExpectedHeapSnapshotSize = 160; - static const uint64_t kMaxSerializableSnapshotRawSize = - static_cast<uint64_t>(6000) * MB; }; } // namespace @@ -1939,18 +1936,19 @@ void NativeObjectsExplorer::FillRetainedObjects() { Isolate* isolate = Isolate::Current(); const GCType major_gc_type = kGCTypeMarkSweepCompact; // Record objects that are joined into ObjectGroups. - isolate->heap()->CallGCPrologueCallbacks(major_gc_type); + isolate->heap()->CallGCPrologueCallbacks( + major_gc_type, kGCCallbackFlagConstructRetainedObjectInfos); List<ObjectGroup*>* groups = isolate->global_handles()->object_groups(); for (int i = 0; i < groups->length(); ++i) { ObjectGroup* group = groups->at(i); - if (group->info_ == NULL) continue; - List<HeapObject*>* list = GetListMaybeDisposeInfo(group->info_); - for (size_t j = 0; j < group->length_; ++j) { - HeapObject* obj = HeapObject::cast(*group->objects_[j]); + if (group->info == NULL) continue; + List<HeapObject*>* list = GetListMaybeDisposeInfo(group->info); + for (size_t j = 0; j < group->length; ++j) { + HeapObject* obj = HeapObject::cast(*group->objects[j]); list->Add(obj); in_groups_.Insert(obj); } - group->info_ = NULL; // Acquire info object ownership. + group->info = NULL; // Acquire info object ownership. } isolate->global_handles()->RemoveObjectGroups(); isolate->heap()->CallGCEpilogueCallbacks(major_gc_type); @@ -1966,12 +1964,12 @@ void NativeObjectsExplorer::FillImplicitReferences() { isolate->global_handles()->implicit_ref_groups(); for (int i = 0; i < groups->length(); ++i) { ImplicitRefGroup* group = groups->at(i); - HeapObject* parent = *group->parent_; + HeapObject* parent = *group->parent; int parent_entry = filler_->FindOrAddEntry(parent, native_entries_allocator_)->index(); ASSERT(parent_entry != HeapEntry::kNoEntry); - Object*** children = group->children_; - for (size_t j = 0; j < group->length_; ++j) { + Object*** children = group->children; + for (size_t j = 0; j < group->length; ++j) { Object* child = *children[j]; HeapEntry* child_entry = filler_->FindOrAddEntry(child, native_entries_allocator_); @@ -2384,42 +2382,9 @@ const int HeapSnapshotJSONSerializer::kNodeFieldsCount = 5; void HeapSnapshotJSONSerializer::Serialize(v8::OutputStream* stream) { ASSERT(writer_ == NULL); writer_ = new OutputStreamWriter(stream); - - HeapSnapshot* original_snapshot = NULL; - if (snapshot_->RawSnapshotSize() >= - SnapshotSizeConstants<kPointerSize>::kMaxSerializableSnapshotRawSize) { - // The snapshot is too big. Serialize a fake snapshot. - original_snapshot = snapshot_; - snapshot_ = CreateFakeSnapshot(); - } - SerializeImpl(); - delete writer_; writer_ = NULL; - - if (original_snapshot != NULL) { - delete snapshot_; - snapshot_ = original_snapshot; - } -} - - -HeapSnapshot* HeapSnapshotJSONSerializer::CreateFakeSnapshot() { - HeapSnapshot* result = new HeapSnapshot(snapshot_->collection(), - snapshot_->title(), - snapshot_->uid()); - result->AddRootEntry(); - const char* text = snapshot_->collection()->names()->GetFormatted( - "The snapshot is too big. " - "Maximum snapshot size is %" V8_PTR_PREFIX "u MB. " - "Actual snapshot size is %" V8_PTR_PREFIX "u MB.", - SnapshotSizeConstants<kPointerSize>::kMaxSerializableSnapshotRawSize / MB, - (snapshot_->RawSnapshotSize() + MB - 1) / MB); - HeapEntry* message = result->AddEntry(HeapEntry::kString, text, 0, 4); - result->root()->SetIndexedReference(HeapGraphEdge::kElement, 1, message); - result->FillChildren(); - return result; } |