Do not require mutator lock for some `ArtField` fields.
Namely for `access_flags_` and `offset_`. The `ArtField` has
not been a managed heap object for a very long time, so we
do not need to guard these primitive fields with the mutator
lock. And we similarly do not require the mutator lock for
`ArtMethod::access_flags_` either.
Test: Rely on TreeHugger.
Change-Id: I6522dad83089a742131e6e8689db04a19bd30ead
diff --git a/runtime/art_field.h b/runtime/art_field.h
index c8d8e8c..4e77e7f 100644
--- a/runtime/art_field.h
+++ b/runtime/art_field.h
@@ -55,24 +55,24 @@
return access_flags_;
}
- void SetAccessFlags(uint32_t new_access_flags) REQUIRES_SHARED(Locks::mutator_lock_) {
+ void SetAccessFlags(uint32_t new_access_flags) {
// Not called within a transaction.
access_flags_ = new_access_flags;
}
- bool IsPublic() REQUIRES_SHARED(Locks::mutator_lock_) {
+ bool IsPublic() {
return (GetAccessFlags() & kAccPublic) != 0;
}
- bool IsStatic() REQUIRES_SHARED(Locks::mutator_lock_) {
+ bool IsStatic() {
return (GetAccessFlags() & kAccStatic) != 0;
}
- bool IsFinal() REQUIRES_SHARED(Locks::mutator_lock_) {
+ bool IsFinal() {
return (GetAccessFlags() & kAccFinal) != 0;
}
- bool IsPrivate() REQUIRES_SHARED(Locks::mutator_lock_) {
+ bool IsPrivate() {
return (GetAccessFlags() & kAccPrivate) != 0;
}
@@ -86,7 +86,7 @@
}
// Offset to field within an Object.
- MemberOffset GetOffset() REQUIRES_SHARED(Locks::mutator_lock_) {
+ MemberOffset GetOffset() {
return MemberOffset(offset_);
}
@@ -179,7 +179,7 @@
visitor.VisitRoot(declaring_class_.AddressWithoutBarrier());
}
- bool IsVolatile() REQUIRES_SHARED(Locks::mutator_lock_) {
+ bool IsVolatile() {
return (GetAccessFlags() & kAccVolatile) != 0;
}