Add more DCHECK logging to Heap::CheckPreconditionsForAllocObject
Print out relevant info about why the DCHECK failed.
Bug: 35746587
Test: test-art-host
Change-Id: If09ad7d050126647abc16a02c5e9a596634e285c
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc
index 53be30e..37963e4 100644
--- a/runtime/gc/heap.cc
+++ b/runtime/gc/heap.cc
@@ -3961,7 +3961,14 @@
void Heap::CheckPreconditionsForAllocObject(ObjPtr<mirror::Class> c, size_t byte_count) {
CHECK(c == nullptr || (c->IsClassClass() && byte_count >= sizeof(mirror::Class)) ||
- (c->IsVariableSize() || c->GetObjectSize() == byte_count)) << c->GetClassFlags();
+ (c->IsVariableSize() || c->GetObjectSize() == byte_count))
+ << "ClassFlags=" << c->GetClassFlags()
+ << " IsClassClass=" << c->IsClassClass()
+ << " byte_count=" << byte_count
+ << " IsVariableSize=" << c->IsVariableSize()
+ << " ObjectSize=" << c->GetObjectSize()
+ << " sizeof(Class)=" << sizeof(mirror::Class)
+ << " klass=" << c.Ptr();
CHECK_GE(byte_count, sizeof(mirror::Object));
}