Index: Source/platform/heap/Visitor.cpp |
diff --git a/Source/platform/heap/Visitor.cpp b/Source/platform/heap/Visitor.cpp |
index 6e1c337efe00f3f7652cd2c17e03787bb786821f..dc115595a90cd6982d7bd515297889254be77950 100644 |
--- a/Source/platform/heap/Visitor.cpp |
+++ b/Source/platform/heap/Visitor.cpp |
@@ -43,18 +43,18 @@ void Visitor::checkGCInfo(const void* payload, const GCInfo* gcInfo) |
#if !defined(COMPONENT_BUILD) |
// On component builds we cannot compare the gcInfos as they are statically |
// defined in each of the components and hence will not match. |
- ASSERT(FinalizedHeapObjectHeader::fromPayload(payload)->gcInfo() == gcInfo); |
+ BaseHeapPage* page = pageHeaderFromObject(payload); |
+ ASSERT(page->orphaned() || FinalizedHeapObjectHeader::fromPayload(payload)->gcInfo() == gcInfo); |
#endif |
} |
-#define DEFINE_VISITOR_CHECK_MARKER(Type) \ |
- void Visitor::checkGCInfo(const Type* payload, const GCInfo* gcInfo) \ |
- { \ |
- HeapObjectHeader::fromPayload(payload)->checkHeader(); \ |
- Type* object = const_cast<Type*>(payload); \ |
- Address addr = pageHeaderAddress(reinterpret_cast<Address>(object)); \ |
- BaseHeapPage* page = reinterpret_cast<BaseHeapPage*>(addr); \ |
- ASSERT(page->gcInfo() == gcInfo); \ |
+#define DEFINE_VISITOR_CHECK_MARKER(Type) \ |
+ void Visitor::checkGCInfo(const Type* payload, const GCInfo* gcInfo) \ |
+ { \ |
+ HeapObjectHeader::fromPayload(payload)->checkHeader(); \ |
+ Type* object = const_cast<Type*>(payload); \ |
+ BaseHeapPage* page = pageHeaderFromObject(object); \ |
+ ASSERT(page->orphaned() || page->gcInfo() == gcInfo); \ |
} |
FOR_EACH_TYPED_HEAP(DEFINE_VISITOR_CHECK_MARKER) |