Various debug ART GC performance improvements
Removed unnecessary read barriers in SizeOf and a few other places.
Disabled disallow read barrier check.
Before:
GC time: 15.817s
Real 0m26.113s
user 1m16.780s
sys 0m3.152s
After:
GC time: 9.212s
real 0m19.875s
user 1m9.916s
sys 0m1.916s
Bug: 35644369
Test: test-art-host
Change-Id: I79a65259deff2a478a96e02ae69b14730b6dcbe6
diff --git a/runtime/mirror/object-inl.h b/runtime/mirror/object-inl.h
index 811f1ea..f83645e 100644
--- a/runtime/mirror/object-inl.h
+++ b/runtime/mirror/object-inl.h
@@ -513,8 +513,11 @@
return GetClass<kVerifyFlags>()->IsPhantomReferenceClass();
}
-template<VerifyObjectFlags kVerifyFlags, ReadBarrierOption kReadBarrierOption>
+template<VerifyObjectFlags kVerifyFlags>
inline size_t Object::SizeOf() {
+ // Read barrier is never required for SizeOf since objects sizes are constant. Reading from-space
+ // values is OK because of that.
+ static constexpr ReadBarrierOption kReadBarrierOption = kWithoutReadBarrier;
size_t result;
constexpr auto kNewFlags = static_cast<VerifyObjectFlags>(kVerifyFlags & ~kVerifyThis);
if (IsArrayInstance<kVerifyFlags, kReadBarrierOption>()) {