summaryrefslogtreecommitdiff
path: root/runtime/mirror/class.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/mirror/class.h')
-rw-r--r--runtime/mirror/class.h17
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(