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