diff options
author | 2022-04-14 10:13:15 +0100 | |
---|---|---|
committer | 2022-04-21 07:39:09 +0000 | |
commit | b6e0e02a859866446b3022d543cbe1d95391fcb0 (patch) | |
tree | 5237e970a5ee93d9f685d4986b5b75eb07fd4a43 | |
parent | a23cf27371c4dba8fcc920d688b362926564107d (diff) |
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
-rw-r--r-- | runtime/art_field.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/runtime/art_field.h b/runtime/art_field.h index c8d8e8cef2..4e77e7f0a5 100644 --- a/runtime/art_field.h +++ b/runtime/art_field.h @@ -55,24 +55,24 @@ class ArtField final { 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 @@ class ArtField final { } // Offset to field within an Object. - MemberOffset GetOffset() REQUIRES_SHARED(Locks::mutator_lock_) { + MemberOffset GetOffset() { return MemberOffset(offset_); } @@ -179,7 +179,7 @@ class ArtField final { visitor.VisitRoot(declaring_class_.AddressWithoutBarrier()); } - bool IsVolatile() REQUIRES_SHARED(Locks::mutator_lock_) { + bool IsVolatile() { return (GetAccessFlags() & kAccVolatile) != 0; } |