Revision: 16705
Author:   [email protected]
Date:     Fri Sep 13 08:13:17 2013 UTC
Log:      Every place where AllocationMemento is initialized with an
AllocationSite is now checked to be sure a valid Site goes in.
This is temporary code to diagnose chromium bug 284577.

BUG=
[email protected]

Review URL: https://codereview.chromium.org/23622029
http://code.google.com/p/v8/source/detail?r=16705

Modified:
 /branches/bleeding_edge/src/heap.cc
 /branches/bleeding_edge/src/hydrogen.cc

=======================================
--- /branches/bleeding_edge/src/heap.cc Thu Sep 12 13:27:42 2013 UTC
+++ /branches/bleeding_edge/src/heap.cc Fri Sep 13 08:13:17 2013 UTC
@@ -4310,6 +4310,10 @@
   AllocationMemento* alloc_memento = reinterpret_cast<AllocationMemento*>(
       reinterpret_cast<Address>(result) + map->instance_size());
   alloc_memento->set_map_no_write_barrier(allocation_memento_map());
+
+  // TODO(mvstanton): To diagnose bug 284577, some extra checks
+  CHECK(allocation_site->map() == allocation_site_map());
+
   alloc_memento->set_allocation_site(*allocation_site, SKIP_WRITE_BARRIER);
   return result;
 }
@@ -5053,6 +5057,10 @@
       AllocationMemento* alloc_memento;
       if (maybe_alloc_memento->To(&alloc_memento)) {
         alloc_memento->set_map_no_write_barrier(allocation_memento_map());
+
+        // TODO(mvstanton): To diagnose bug 284577, some extra checks
+        CHECK(site->map() == allocation_site_map());
+
         alloc_memento->set_allocation_site(site, SKIP_WRITE_BARRIER);
       }
     }
@@ -5075,6 +5083,10 @@
AllocationMemento* alloc_memento = reinterpret_cast<AllocationMemento*>(
         reinterpret_cast<Address>(clone) + object_size);
     alloc_memento->set_map_no_write_barrier(allocation_memento_map());
+
+    // TODO(mvstanton): To diagnose bug 284577, some extra checks
+    CHECK(site->map() == allocation_site_map());
+
     alloc_memento->set_allocation_site(site, SKIP_WRITE_BARRIER);
   }

=======================================
--- /branches/bleeding_edge/src/hydrogen.cc     Thu Sep 12 22:04:04 2013 UTC
+++ /branches/bleeding_edge/src/hydrogen.cc     Fri Sep 13 08:13:17 2013 UTC
@@ -1831,6 +1831,20 @@
   Handle<Map> alloc_memento_map(
       isolate()->heap()->allocation_memento_map());
   AddStoreMapConstant(alloc_memento, alloc_memento_map);
+
+  // TODO(mvstanton): the code below is turned on to diagnose chromium bug
+  // 284577.
+  Handle<Map> alloc_site_map(isolate()->heap()->allocation_site_map());
+  IfBuilder builder(this);
+  // Read the map
+  HValue* map_field = Add<HLoadNamedField>(alloc_site,
+                                           HObjectAccess::ForMap());
+  HValue* alloc_site_map_value = Add<HConstant>(alloc_site_map);
+ builder.IfNot<HCompareObjectEqAndBranch>(map_field, alloc_site_map_value);
+  builder.Then();
+  AddInstruction(new(zone()) HDebugBreak());
+  builder.End();
+
   HObjectAccess access = HObjectAccess::ForAllocationMementoSite();
   Add<HStoreNamedField>(alloc_memento, access, alloc_site);
   return alloc_memento;

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to