diff options
Diffstat (limited to 'runtime/mirror/class.h')
-rw-r--r-- | runtime/mirror/class.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/runtime/mirror/class.h b/runtime/mirror/class.h index 09d5532deb..144350f02e 100644 --- a/runtime/mirror/class.h +++ b/runtime/mirror/class.h @@ -1229,6 +1229,23 @@ class MANAGED Class final : public Object { void FixupNativePointers(Class* dest, PointerSize pointer_size, const Visitor& visitor) REQUIRES_SHARED(Locks::mutator_lock_); + // Get or create the various jni id arrays in a lock-less thread safe manner. + ObjPtr<PointerArray> GetOrCreateMethodIds() REQUIRES_SHARED(Locks::mutator_lock_); + ObjPtr<PointerArray> GetMethodIds() REQUIRES_SHARED(Locks::mutator_lock_); + ObjPtr<PointerArray> GetOrCreateStaticFieldIds() REQUIRES_SHARED(Locks::mutator_lock_); + ObjPtr<PointerArray> GetStaticFieldIds() REQUIRES_SHARED(Locks::mutator_lock_); + ObjPtr<PointerArray> GetOrCreateInstanceFieldIds() REQUIRES_SHARED(Locks::mutator_lock_); + ObjPtr<PointerArray> GetInstanceFieldIds() REQUIRES_SHARED(Locks::mutator_lock_); + + // Calculate the index in the ifields_, methods_ or sfields_ arrays a method is located at. This + // is to be used with the above Get{,OrCreate}...Ids functions. + size_t GetStaticFieldIdOffset(ArtField* field) + REQUIRES_SHARED(Locks::mutator_lock_); + size_t GetInstanceFieldIdOffset(ArtField* field) + REQUIRES_SHARED(Locks::mutator_lock_); + size_t GetMethodIdOffset(ArtMethod* method, PointerSize pointer_size) + REQUIRES_SHARED(Locks::mutator_lock_); + private: template <typename T, VerifyObjectFlags kVerifyFlags, typename Visitor> void FixupNativePointer( |