Remove `ArtField::GetAccessFlagsDCheck()`.
This check provided little value and retrieved the declaring
class with a read barrier which may be undesirable in some
contexts. Also, do not require holding the mutator lock for
`ArtField::GetAccessFlags()` as we do not require it in
`ArtMethod::GetAccessFlags()` either.
We removed a similar check from `ArtMethod` in
https://android-review.googlesource.com/718816
but that one was even less useful because it was checking an
earlier class state (`kIdx`) than here (`kLoaded`).
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 181943478
Change-Id: I82fad9a0eb5cc21f67998ecf722facc1d8f8f76c
diff --git a/runtime/art_field.cc b/runtime/art_field.cc
index 639ee2b..be5ac8c 100644
--- a/runtime/art_field.cc
+++ b/runtime/art_field.cc
@@ -67,10 +67,6 @@
return result;
}
-void ArtField::GetAccessFlagsDCheck() {
- CHECK(GetDeclaringClass()->IsLoaded() || GetDeclaringClass()->IsErroneous());
-}
-
void ArtField::GetOffsetDCheck() {
CHECK(GetDeclaringClass()->IsResolved());
}
diff --git a/runtime/art_field.h b/runtime/art_field.h
index 86f67ad..0484622 100644
--- a/runtime/art_field.h
+++ b/runtime/art_field.h
@@ -51,10 +51,7 @@
return declaring_class_.AddressWithoutBarrier();
}
- uint32_t GetAccessFlags() REQUIRES_SHARED(Locks::mutator_lock_) {
- if (kIsDebugBuild) {
- GetAccessFlagsDCheck();
- }
+ uint32_t GetAccessFlags() {
return access_flags_;
}
@@ -242,7 +239,6 @@
ObjPtr<mirror::Class> ProxyFindSystemClass(const char* descriptor)
REQUIRES_SHARED(Locks::mutator_lock_);
- void GetAccessFlagsDCheck() REQUIRES_SHARED(Locks::mutator_lock_);
void GetOffsetDCheck() REQUIRES_SHARED(Locks::mutator_lock_);
GcRoot<mirror::Class> declaring_class_;