Less redundant verification.
~3 less objects verified per object scanned in the GC. Helps the
irogers dogfood experience.
Change-Id: I6efeab7842a6c702adecef73fb573c19291fecf2
diff --git a/runtime/mirror/object-inl.h b/runtime/mirror/object-inl.h
index 281d4ec..527b8a6 100644
--- a/runtime/mirror/object-inl.h
+++ b/runtime/mirror/object-inl.h
@@ -612,17 +612,17 @@
const JavaLangRefVisitor& ref_visitor) {
mirror::Class* klass = GetClass<kVerifyFlags>();
if (UNLIKELY(klass == Class::GetJavaLangClass())) {
- DCHECK_EQ(klass->GetClass(), Class::GetJavaLangClass());
+ DCHECK_EQ(klass->GetClass<kVerifyNone>(), Class::GetJavaLangClass());
AsClass<kVerifyNone>()->VisitReferences<kVisitClass>(klass, visitor);
} else if (UNLIKELY(klass->IsArrayClass<kVerifyFlags>())) {
if (klass->IsObjectArrayClass<kVerifyNone>()) {
- AsObjectArray<mirror::Object>()->VisitReferences<kVisitClass>(visitor);
+ AsObjectArray<mirror::Object, kVerifyNone>()->VisitReferences<kVisitClass>(visitor);
} else if (kVisitClass) {
visitor(this, ClassOffset(), false);
}
} else {
- VisitFieldsReferences<kVisitClass, false>(klass->GetReferenceInstanceOffsets(), visitor);
- if (UNLIKELY(klass->IsReferenceClass())) {
+ VisitInstanceFieldsReferences<kVisitClass>(klass, visitor);
+ if (UNLIKELY(klass->IsReferenceClass<kVerifyNone>())) {
ref_visitor(klass, AsReference());
}
}