From 5d3f73aef1b778d81ba101ece41935adee259cf2 Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Fri, 14 Oct 2016 14:28:47 -0700 Subject: Move reference processor and mirror::Reference to ObjPtr Bug: 31113334 Test: test-art-host Change-Id: I2c7c3dfd88ebf12a0de271436f8a7781f997e061 --- runtime/mirror/reference.h | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'runtime/mirror/reference.h') 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 - void SetReferent(Object* referent) REQUIRES_SHARED(Locks::mutator_lock_) { - SetFieldObjectVolatile(ReferentOffset(), referent); - } + void SetReferent(ObjPtr referent) REQUIRES_SHARED(Locks::mutator_lock_); template void ClearReferent() REQUIRES_SHARED(Locks::mutator_lock_) { SetFieldObjectVolatile(ReferentOffset(), nullptr); @@ -82,14 +81,7 @@ class MANAGED Reference : public Object { return GetFieldObject(PendingNextOffset()); } - void SetPendingNext(Reference* pending_next) - REQUIRES_SHARED(Locks::mutator_lock_) { - if (Runtime::Current()->IsActiveTransaction()) { - SetFieldObject(PendingNextOffset(), pending_next); - } else { - SetFieldObject(PendingNextOffset(), pending_next); - } - } + void SetPendingNext(ObjPtr 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(); } - static void SetClass(Class* klass); + static void SetClass(ObjPtr klass); static void ResetClass(); static void VisitRoots(RootVisitor* visitor) REQUIRES_SHARED(Locks::mutator_lock_); @@ -144,9 +136,8 @@ class MANAGED FinalizerReference : public Reference { } template - void SetZombie(Object* zombie) REQUIRES_SHARED(Locks::mutator_lock_) { - return SetFieldObjectVolatile(ZombieOffset(), zombie); - } + void SetZombie(ObjPtr zombie) REQUIRES_SHARED(Locks::mutator_lock_); + Object* GetZombie() REQUIRES_SHARED(Locks::mutator_lock_) { return GetFieldObjectVolatile(ZombieOffset()); } -- cgit v1.2.3-59-g8ed1b