diff options
-rw-r--r-- | runtime/mirror/class-inl.h | 11 | ||||
-rw-r--r-- | runtime/mirror/class.h | 9 |
2 files changed, 12 insertions, 8 deletions
diff --git a/runtime/mirror/class-inl.h b/runtime/mirror/class-inl.h index 5465e37993..2cff47e8b4 100644 --- a/runtime/mirror/class-inl.h +++ b/runtime/mirror/class-inl.h @@ -65,6 +65,17 @@ inline Class* Class::GetSuperClass() { OFFSET_OF_OBJECT_MEMBER(Class, super_class_)); } +inline void Class::SetSuperClass(ObjPtr<Class> new_super_class) { + // Super class is assigned once, except during class linker initialization. + if (kIsDebugBuild) { + ObjPtr<Class> old_super_class = + GetFieldObject<Class>(OFFSET_OF_OBJECT_MEMBER(Class, super_class_)); + DCHECK(old_super_class == nullptr || old_super_class == new_super_class); + } + DCHECK(new_super_class != nullptr); + SetFieldObject<false>(OFFSET_OF_OBJECT_MEMBER(Class, super_class_), new_super_class); +} + template<VerifyObjectFlags kVerifyFlags, ReadBarrierOption kReadBarrierOption> inline ClassLoader* Class::GetClassLoader() { return GetFieldObject<ClassLoader, kVerifyFlags, kReadBarrierOption>( diff --git a/runtime/mirror/class.h b/runtime/mirror/class.h index f8b8cdeb3d..d34f09c721 100644 --- a/runtime/mirror/class.h +++ b/runtime/mirror/class.h @@ -689,14 +689,7 @@ class MANAGED Class FINAL : public Object { // `This` and `klass` must be classes. ObjPtr<Class> GetCommonSuperClass(Handle<Class> klass) REQUIRES_SHARED(Locks::mutator_lock_); - void SetSuperClass(ObjPtr<Class> new_super_class) REQUIRES_SHARED(Locks::mutator_lock_) { - // Super class is assigned once, except during class linker initialization. - ObjPtr<Class> old_super_class = - GetFieldObject<Class>(OFFSET_OF_OBJECT_MEMBER(Class, super_class_)); - DCHECK(old_super_class == nullptr || old_super_class == new_super_class); - DCHECK(new_super_class != nullptr); - SetFieldObject<false>(OFFSET_OF_OBJECT_MEMBER(Class, super_class_), new_super_class); - } + void SetSuperClass(ObjPtr<Class> new_super_class) REQUIRES_SHARED(Locks::mutator_lock_); bool HasSuperClass() REQUIRES_SHARED(Locks::mutator_lock_) { return GetSuperClass() != nullptr; |