(Experimental) Add Brooks pointers.
This feature is disabled by default.
Verified that the Brooks pointers are installed correctly by using the
CMS/SS collectors.
Change-Id: Ia9be9814ab6e29169ac85edc4792ce8c81d552a9
diff --git a/runtime/gc/space/image_space.cc b/runtime/gc/space/image_space.cc
index 12c5451..76c4d25 100644
--- a/runtime/gc/space/image_space.cc
+++ b/runtime/gc/space/image_space.cc
@@ -133,6 +133,11 @@
mirror::Object* obj = reinterpret_cast<mirror::Object*>(current);
CHECK(live_bitmap_->Test(obj));
CHECK(obj->GetClass() != nullptr) << "Image object at address " << obj << " has null class";
+ if (kUseBrooksPointer) {
+ CHECK(obj->GetBrooksPointer() == obj)
+ << "Bad Brooks pointer: obj=" << reinterpret_cast<void*>(obj)
+ << " brooks_ptr=" << reinterpret_cast<void*>(obj->GetBrooksPointer());
+ }
current += RoundUp(obj->SizeOf(), kObjectAlignment);
}
}