diff options
| author | 2016-10-14 14:28:47 -0700 | |
|---|---|---|
| committer | 2016-10-14 14:38:43 -0700 | |
| commit | 5d3f73aef1b778d81ba101ece41935adee259cf2 (patch) | |
| tree | fec0c2fdbb88df0a366e29b6470d1274aa6e2ec1 /runtime/mirror/reference.h | |
| parent | cfdff144f154df876987fefb340058a975c43381 (diff) | |
Move reference processor and mirror::Reference to ObjPtr
Bug: 31113334
Test: test-art-host
Change-Id: I2c7c3dfd88ebf12a0de271436f8a7781f997e061
Diffstat (limited to 'runtime/mirror/reference.h')
| -rw-r--r-- | runtime/mirror/reference.h | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/runtime/mirror/reference.h b/runtime/mirror/reference.h index 6a8b32b62d..f2fa589500 100644 --- a/runtime/mirror/reference.h +++ b/runtime/mirror/reference.h @@ -20,6 +20,7 @@ #include "base/enums.h" #include "class.h" #include "gc_root.h" +#include "obj_ptr.h" #include "object.h" #include "object_callbacks.h" #include "read_barrier_option.h" @@ -69,9 +70,7 @@ class MANAGED Reference : public Object { ReferentOffset()); } template<bool kTransactionActive> - void SetReferent(Object* referent) REQUIRES_SHARED(Locks::mutator_lock_) { - SetFieldObjectVolatile<kTransactionActive>(ReferentOffset(), referent); - } + void SetReferent(ObjPtr<Object> referent) REQUIRES_SHARED(Locks::mutator_lock_); template<bool kTransactionActive> void ClearReferent() REQUIRES_SHARED(Locks::mutator_lock_) { SetFieldObjectVolatile<kTransactionActive>(ReferentOffset(), nullptr); @@ -82,14 +81,7 @@ class MANAGED Reference : public Object { return GetFieldObject<Reference, kDefaultVerifyFlags, kReadBarrierOption>(PendingNextOffset()); } - void SetPendingNext(Reference* pending_next) - REQUIRES_SHARED(Locks::mutator_lock_) { - if (Runtime::Current()->IsActiveTransaction()) { - SetFieldObject<true>(PendingNextOffset(), pending_next); - } else { - SetFieldObject<false>(PendingNextOffset(), pending_next); - } - } + void SetPendingNext(ObjPtr<Reference> pending_next) REQUIRES_SHARED(Locks::mutator_lock_); // Returns true if the reference's pendingNext is null, indicating it is // okay to process this reference. @@ -112,7 +104,7 @@ class MANAGED Reference : public Object { DCHECK(!java_lang_ref_Reference_.IsNull()); return java_lang_ref_Reference_.Read<kReadBarrierOption>(); } - static void SetClass(Class* klass); + static void SetClass(ObjPtr<Class> klass); static void ResetClass(); static void VisitRoots(RootVisitor* visitor) REQUIRES_SHARED(Locks::mutator_lock_); @@ -144,9 +136,8 @@ class MANAGED FinalizerReference : public Reference { } template<bool kTransactionActive> - void SetZombie(Object* zombie) REQUIRES_SHARED(Locks::mutator_lock_) { - return SetFieldObjectVolatile<kTransactionActive>(ZombieOffset(), zombie); - } + void SetZombie(ObjPtr<Object> zombie) REQUIRES_SHARED(Locks::mutator_lock_); + Object* GetZombie() REQUIRES_SHARED(Locks::mutator_lock_) { return GetFieldObjectVolatile<Object>(ZombieOffset()); } |