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-inl.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'runtime/mirror/reference-inl.h') diff --git a/runtime/mirror/reference-inl.h b/runtime/mirror/reference-inl.h index 039989bcb4..a449b41087 100644 --- a/runtime/mirror/reference-inl.h +++ b/runtime/mirror/reference-inl.h @@ -19,6 +19,8 @@ #include "reference.h" +#include "obj_ptr-inl.h" + namespace art { namespace mirror { @@ -27,6 +29,24 @@ inline uint32_t Reference::ClassSize(PointerSize pointer_size) { return Class::ComputeClassSize(false, vtable_entries, 2, 0, 0, 0, 0, pointer_size); } +template +inline void Reference::SetReferent(ObjPtr referent) { + SetFieldObjectVolatile(ReferentOffset(), referent); +} + +inline void Reference::SetPendingNext(ObjPtr pending_next) { + if (Runtime::Current()->IsActiveTransaction()) { + SetFieldObject(PendingNextOffset(), pending_next); + } else { + SetFieldObject(PendingNextOffset(), pending_next); + } +} + +template +inline void FinalizerReference::SetZombie(ObjPtr zombie) { + return SetFieldObjectVolatile(ZombieOffset(), zombie); +} + } // namespace mirror } // namespace art -- cgit v1.2.3-59-g8ed1b