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

Reply via email to