Remove read barriers in Class::IsClassClass and Object::IsClass
Remove unnecessary read barriers since Class.class is not movable.
Test: test-art-host
Bug: 114413743
Change-Id: Id68562606bab75bf5ba99a7e8a38e7db9d46df1d
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 511d468..44c73fb 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -431,6 +431,8 @@
heap->IncrementDisableMovingGC(self);
StackHandleScope<64> hs(self); // 64 is picked arbitrarily.
auto class_class_size = mirror::Class::ClassClassSize(image_pointer_size_);
+ // Allocate the object as non-movable so that there are no cases where Object::IsClass returns
+ // the incorrect result when comparing to-space vs from-space.
Handle<mirror::Class> java_lang_Class(hs.NewHandle(ObjPtr<mirror::Class>::DownCast(MakeObjPtr(
heap->AllocNonMovableObject<true>(self, nullptr, class_class_size, VoidFunctor())))));
CHECK(java_lang_Class != nullptr);