diff options
Diffstat (limited to 'runtime/mirror/class.h')
-rw-r--r-- | runtime/mirror/class.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/runtime/mirror/class.h b/runtime/mirror/class.h index c9f27ad53f..f8b8cdeb3d 100644 --- a/runtime/mirror/class.h +++ b/runtime/mirror/class.h @@ -231,7 +231,13 @@ class MANAGED Class FINAL : public Object { } template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags> - ALWAYS_INLINE uint32_t GetAccessFlags() REQUIRES_SHARED(Locks::mutator_lock_); + ALWAYS_INLINE uint32_t GetAccessFlags() REQUIRES_SHARED(Locks::mutator_lock_) { + if (kIsDebugBuild) { + GetAccessFlagsDCheck<kVerifyFlags>(); + } + return GetField32<kVerifyFlags>(AccessFlagsOffset()); + } + static MemberOffset AccessFlagsOffset() { return OFFSET_OF_OBJECT_MEMBER(Class, access_flags_); } @@ -1397,6 +1403,9 @@ class MANAGED Class FINAL : public Object { bool ProxyDescriptorEquals(const char* match) REQUIRES_SHARED(Locks::mutator_lock_); + template<VerifyObjectFlags kVerifyFlags> + void GetAccessFlagsDCheck() REQUIRES_SHARED(Locks::mutator_lock_); + // Check that the pointer size matches the one in the class linker. ALWAYS_INLINE static void CheckPointerSize(PointerSize pointer_size); |