diff options
Diffstat (limited to 'runtime/verify_object.h')
-rw-r--r-- | runtime/verify_object.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/runtime/verify_object.h b/runtime/verify_object.h index 384e56f7f4..519f7f5f5a 100644 --- a/runtime/verify_object.h +++ b/runtime/verify_object.h @@ -53,7 +53,16 @@ static constexpr VerifyObjectFlags kDefaultVerifyFlags = kVerifyNone; static constexpr VerifyObjectMode kVerifyObjectSupport = kDefaultVerifyFlags != 0 ? kVerifyObjectModeFast : kVerifyObjectModeDisabled; -ALWAYS_INLINE void VerifyObject(ObjPtr<mirror::Object> obj) NO_THREAD_SAFETY_ANALYSIS; +// Implements the actual object checks. +void VerifyObjectImpl(ObjPtr<mirror::Object> obj) NO_THREAD_SAFETY_ANALYSIS; + +// Is a front to optimize out any calls if no verification is enabled. +ALWAYS_INLINE +static inline void VerifyObject(ObjPtr<mirror::Object> obj) NO_THREAD_SAFETY_ANALYSIS { + if (kVerifyObjectSupport > kVerifyObjectModeDisabled && obj != nullptr) { + VerifyObjectImpl(obj); + } +} // Check that c.getClass() == c.getClass().getClass(). ALWAYS_INLINE bool VerifyClassClass(ObjPtr<mirror::Class> c) NO_THREAD_SAFETY_ANALYSIS; |