diff options
| author | 2019-06-27 15:50:11 +0000 | |
|---|---|---|
| committer | 2019-06-28 14:58:17 +0000 | |
| commit | 79d6c800cd8aa1da335ea0523c391852780ac02a (patch) | |
| tree | a77faf41d7b658709113c72d7eaaaa1ce2ded6b5 /runtime/mirror/class_ext.h | |
| parent | 01fbfbebceb00b94cc54738ebf425b6c4a79211a (diff) | |
Revert^2 "Support using opaque JNI ids"
We weren't handing the fact that encoding jmethodIDs could cause OOM
exceptions in some places in reflection.cc. This could lead to
attempting to use a null jmethodID as if it were a real id. This issue
is fixed by the parent CL.
This reverts commit b476a29a2c.
This reverts commit 3b2905366c.
This Unreverts commit d5d645ffec.
This Unreverts commit 21d5994583.
Reason for revert: Fixed issue causing 004 debuggable flakes
Test: ./test.py --host --jit --debuggable
Bug: 134162467
Change-Id: Iece08ab299cd8a20f8382be7be6c3796858e70eb
Diffstat (limited to 'runtime/mirror/class_ext.h')
| -rw-r--r-- | runtime/mirror/class_ext.h | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/runtime/mirror/class_ext.h b/runtime/mirror/class_ext.h index 70bea33c1f..6fb225fd69 100644 --- a/runtime/mirror/class_ext.h +++ b/runtime/mirror/class_ext.h @@ -48,6 +48,33 @@ class MANAGED ClassExt : public Object { template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags, ReadBarrierOption kReadBarrierOption = kWithReadBarrier> + ObjPtr<PointerArray> EnsureInstanceJFieldIDsArrayPresent(size_t count) + REQUIRES_SHARED(Locks::mutator_lock_); + + template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags, + ReadBarrierOption kReadBarrierOption = kWithReadBarrier> + ObjPtr<PointerArray> GetInstanceJFieldIDs() REQUIRES_SHARED(Locks::mutator_lock_); + + template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags, + ReadBarrierOption kReadBarrierOption = kWithReadBarrier> + ObjPtr<PointerArray> EnsureStaticJFieldIDsArrayPresent(size_t count) + REQUIRES_SHARED(Locks::mutator_lock_); + + template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags, + ReadBarrierOption kReadBarrierOption = kWithReadBarrier> + ObjPtr<PointerArray> GetStaticJFieldIDs() REQUIRES_SHARED(Locks::mutator_lock_); + + template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags, + ReadBarrierOption kReadBarrierOption = kWithReadBarrier> + ObjPtr<PointerArray> EnsureJMethodIDsArrayPresent(size_t count) + REQUIRES_SHARED(Locks::mutator_lock_); + + template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags, + ReadBarrierOption kReadBarrierOption = kWithReadBarrier> + ObjPtr<PointerArray> GetJMethodIDs() REQUIRES_SHARED(Locks::mutator_lock_); + + template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags, + ReadBarrierOption kReadBarrierOption = kWithReadBarrier> ObjPtr<PointerArray> GetObsoleteMethods() REQUIRES_SHARED(Locks::mutator_lock_); ObjPtr<Object> GetOriginalDexFile() REQUIRES_SHARED(Locks::mutator_lock_); @@ -82,19 +109,36 @@ class MANAGED ClassExt : public Object { static ObjPtr<ClassExt> Alloc(Thread* self) REQUIRES_SHARED(Locks::mutator_lock_); private: + template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags, + ReadBarrierOption kReadBarrierOption = kWithReadBarrier> + ObjPtr<PointerArray> EnsureJniIdsArrayPresent(MemberOffset off, size_t count) + REQUIRES_SHARED(Locks::mutator_lock_); + // Field order required by test "ValidateFieldOrderOfJavaCppUnionClasses". + // An array containing the jfieldIDs assigned to each field in the corresponding position in the + // classes ifields_ array or '0' if no id has been assigned to that field yet. + HeapReference<PointerArray> instance_jfield_ids_; + + // An array containing the jmethodIDs assigned to each method in the corresponding position in + // the classes methods_ array or '0' if no id has been assigned to that method yet. + HeapReference<PointerArray> jmethod_ids_; + HeapReference<ObjectArray<DexCache>> obsolete_dex_caches_; HeapReference<PointerArray> obsolete_methods_; HeapReference<Object> original_dex_file_; + // An array containing the jfieldIDs assigned to each field in the corresponding position in the + // classes sfields_ array or '0' if no id has been assigned to that field yet. + HeapReference<PointerArray> static_jfield_ids_; + // The saved verification error of this class. HeapReference<Object> verify_error_; // Native pointer to DexFile and ClassDef index of this class before it was JVMTI-redefined. - int64_t pre_redefine_dex_file_ptr_; int32_t pre_redefine_class_def_index_; + int64_t pre_redefine_dex_file_ptr_; friend struct art::ClassExtOffsets; // for verifying offset information DISALLOW_IMPLICIT_CONSTRUCTORS(ClassExt); |