Index: src/objects-debug.cc |
diff --git a/src/objects-debug.cc b/src/objects-debug.cc |
index 1d5af5b9e706c3984373a4def4194f33cb3ee647..d9d5c056b163b6e2b21c48a1f61071147b1b4fd1 100644 |
--- a/src/objects-debug.cc |
+++ b/src/objects-debug.cc |
@@ -256,9 +256,17 @@ void JSObject::JSObjectVerify() { |
} |
if (HasFastProperties()) { |
- CHECK_EQ(map()->unused_property_fields(), |
- (map()->inobject_properties() + properties()->length() - |
- map()->NextFreePropertyIndex())); |
+ int actual_unused_property_fields = map()->inobject_properties() + |
+ properties()->length() - |
+ map()->NextFreePropertyIndex(); |
+ if (map()->unused_property_fields() != actual_unused_property_fields) { |
+ // This could actually happen in the middle of StoreTransitionStub |
+ // when the new extended backing store is already set into the object and |
+ // the allocation of the MutableHeapNumber triggers GC (in this case map |
+ // is not updated yet). |
+ CHECK_EQ(map()->unused_property_fields(), |
+ actual_unused_property_fields - JSObject::kFieldsAdded); |
+ } |
DescriptorArray* descriptors = map()->instance_descriptors(); |
for (int i = 0; i < map()->NumberOfOwnDescriptors(); i++) { |
if (descriptors->GetDetails(i).type() == FIELD) { |