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.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/runtime/mirror/class.h b/runtime/mirror/class.h
index a8b8235ee3..f5c2614908 100644
--- a/runtime/mirror/class.h
+++ b/runtime/mirror/class.h
@@ -105,6 +105,10 @@ class MANAGED Class final : public Object {
static void SetStatus(Handle<Class> h_this, ClassStatus new_status, Thread* self)
REQUIRES_SHARED(Locks::mutator_lock_) REQUIRES(!Roles::uninterruptible_);
+ // Used for structural redefinition to directly set the class-status while
+ // holding a strong mutator-lock.
+ void SetStatusLocked(ClassStatus new_status) REQUIRES(Locks::mutator_lock_);
+
void SetStatusForPrimitiveOrArray(ClassStatus new_status) REQUIRES_SHARED(Locks::mutator_lock_);
static constexpr MemberOffset StatusOffset() {
@@ -617,6 +621,11 @@ class MANAGED Class final : public Object {
// to themselves. Classes for primitive types may not assign to each other.
ALWAYS_INLINE bool IsAssignableFrom(ObjPtr<Class> src) REQUIRES_SHARED(Locks::mutator_lock_);
+ // Checks if 'klass' is a redefined version of this.
+ bool IsObsoleteVersionOf(ObjPtr<Class> klass) REQUIRES_SHARED(Locks::mutator_lock_);
+
+ ObjPtr<Class> GetObsoleteClass() REQUIRES_SHARED(Locks::mutator_lock_);
+
template<VerifyObjectFlags kVerifyFlags = kDefaultVerifyFlags,
ReadBarrierOption kReadBarrierOption = kWithReadBarrier>
ALWAYS_INLINE ObjPtr<Class> GetSuperClass() REQUIRES_SHARED(Locks::mutator_lock_);