Reviewers: Vyacheslav Egorov,

Description:
Assert that independent handles do not participate in grouping.

Please review this at http://codereview.chromium.org/7044007/

Affected files:
  M src/global-handles.cc


Index: src/global-handles.cc
diff --git a/src/global-handles.cc b/src/global-handles.cc
index 250f1276494c532d6f8834cb867ffeeed10b2bc5..e4bbc9582e6d33e755e67a352c1d9679241ad394 100644
--- a/src/global-handles.cc
+++ b/src/global-handles.cc
@@ -619,6 +619,11 @@ void GlobalHandles::Print() {
 void GlobalHandles::AddObjectGroup(Object*** handles,
                                    size_t length,
                                    v8::RetainedObjectInfo* info) {
+#ifdef DEBUG
+  for (size_t i = 0; i < length; ++i) {
+    ASSERT(!Node::FromLocation(handles[i])->independent_);
+  }
+#endif
   if (length == 0) {
     if (info != NULL) info->Dispose();
     return;
@@ -630,6 +635,12 @@ void GlobalHandles::AddObjectGroup(Object*** handles,
 void GlobalHandles::AddImplicitReferences(HeapObject** parent,
                                           Object*** children,
                                           size_t length) {
+#ifdef DEBUG
+  ASSERT(!Node::FromLocation(BitCast<Object**>(parent))->independent_);
+  for (size_t i = 0; i < length; ++i) {
+    ASSERT(!Node::FromLocation(children[i])->independent_);
+  }
+#endif
   if (length == 0) return;
implicit_ref_groups_.Add(ImplicitRefGroup::New(parent, children, length));
 }


--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to