Reviewers: Mikhail Naganov (Chromium), Yury Semikhatsky, loislo,
Message:
btw, as a nice side effect it eliminated 171K links out of 2200K on
gmail.com
snapshot.
Description:
Hide internal references pointing to the empty array in heap profiler.
Please review this at https://chromiumcodereview.appspot.com/10021052/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/profile-generator.cc
Index: src/profile-generator.cc
diff --git a/src/profile-generator.cc b/src/profile-generator.cc
index
f0aaa499e72527f6a08d0cc284e7a98fd59381c0..305981cc4999ee9ea9276f57e3989cb1b05c8d57
100644
--- a/src/profile-generator.cc
+++ b/src/profile-generator.cc
@@ -2519,14 +2519,13 @@ void
V8HeapExplorer::SetInternalReference(HeapObject* parent_obj,
Object* child_obj,
int field_offset) {
HeapEntry* child_entry = GetEntry(child_obj);
- if (child_entry != NULL) {
+ if (child_entry == NULL) return;
+ IndexedReferencesExtractor::MarkVisitedField(parent_obj, field_offset);
+ if (child_obj != heap_->empty_fixed_array()) {
filler_->SetNamedReference(HeapGraphEdge::kInternal,
- parent_obj,
- parent_entry,
+ parent_obj, parent_entry,
reference_name,
- child_obj,
- child_entry);
- IndexedReferencesExtractor::MarkVisitedField(parent_obj, field_offset);
+ child_obj, child_entry);
}
}
@@ -2537,14 +2536,13 @@ void
V8HeapExplorer::SetInternalReference(HeapObject* parent_obj,
Object* child_obj,
int field_offset) {
HeapEntry* child_entry = GetEntry(child_obj);
- if (child_entry != NULL) {
+ if (child_entry == NULL) return;
+ IndexedReferencesExtractor::MarkVisitedField(parent_obj, field_offset);
+ if (child_obj != heap_->empty_fixed_array()) {
filler_->SetNamedReference(HeapGraphEdge::kInternal,
- parent_obj,
- parent_entry,
+ parent_obj, parent_entry,
collection_->names()->GetName(index),
- child_obj,
- child_entry);
- IndexedReferencesExtractor::MarkVisitedField(parent_obj, field_offset);
+ child_obj, child_entry);
}
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev