diff options
Diffstat (limited to 'runtime/mirror/class_ext.h')
-rw-r--r-- | runtime/mirror/class_ext.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/runtime/mirror/class_ext.h b/runtime/mirror/class_ext.h index 6fb225fd69..eb4047be24 100644 --- a/runtime/mirror/class_ext.h +++ b/runtime/mirror/class_ext.h @@ -106,8 +106,26 @@ class MANAGED ClassExt : public Object { inline void VisitNativeRoots(Visitor& visitor, PointerSize pointer_size) REQUIRES_SHARED(Locks::mutator_lock_); + template<ReadBarrierOption kReadBarrierOption = kWithReadBarrier, class Visitor> + inline void VisitMethods(Visitor visitor, PointerSize pointer_size) + REQUIRES_SHARED(Locks::mutator_lock_); + static ObjPtr<ClassExt> Alloc(Thread* self) REQUIRES_SHARED(Locks::mutator_lock_); + // TODO Save the obsolete class, if we have one. + // TODO We need this so jit-cleanup can work. the obsolete class might get cleaned up early + // otherwise. We should remove the need for this. + template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags, + ReadBarrierOption kReadBarrierOption = kWithReadBarrier> + ObjPtr<Class> GetObsoleteClass() REQUIRES_SHARED(Locks::mutator_lock_); + void SetObsoleteClass(ObjPtr<Class> classes) REQUIRES_SHARED(Locks::mutator_lock_); + + template<ReadBarrierOption kReadBarrierOption = kWithReadBarrier, typename Visitor> + inline void VisitJFieldIDs(Visitor v) REQUIRES_SHARED(Locks::mutator_lock_); + + template<ReadBarrierOption kReadBarrierOption = kWithReadBarrier, typename Visitor> + inline void VisitJMethodIDs(Visitor v) REQUIRES_SHARED(Locks::mutator_lock_); + private: template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags, ReadBarrierOption kReadBarrierOption = kWithReadBarrier> @@ -123,6 +141,9 @@ class MANAGED ClassExt : public Object { // the classes methods_ array or '0' if no id has been assigned to that method yet. HeapReference<PointerArray> jmethod_ids_; + // If set this is the Class object that was being used before a structural redefinition occurred. + HeapReference<Class> obsolete_class_; + HeapReference<ObjectArray<DexCache>> obsolete_dex_caches_; HeapReference<PointerArray> obsolete_methods_; @@ -137,8 +158,8 @@ class MANAGED ClassExt : public Object { HeapReference<Object> verify_error_; // Native pointer to DexFile and ClassDef index of this class before it was JVMTI-redefined. - int32_t pre_redefine_class_def_index_; int64_t pre_redefine_dex_file_ptr_; + int32_t pre_redefine_class_def_index_; friend struct art::ClassExtOffsets; // for verifying offset information DISALLOW_IMPLICIT_CONSTRUCTORS(ClassExt); |