diff options
-rw-r--r-- | runtime/fault_handler.cc | 3 | ||||
-rw-r--r-- | runtime/mirror/object_reference.h | 4 |
2 files changed, 4 insertions, 3 deletions
diff --git a/runtime/fault_handler.cc b/runtime/fault_handler.cc index f86329947d..7d01af02a3 100644 --- a/runtime/fault_handler.cc +++ b/runtime/fault_handler.cc @@ -79,8 +79,7 @@ static mirror::Class* SafeGetDeclaringClass(ArtMethod* method) static mirror::Class* SafeGetClass(mirror::Object* obj) REQUIRES_SHARED(Locks::mutator_lock_) { char* obj_cls = reinterpret_cast<char*>(obj) + mirror::Object::ClassOffset().SizeValue(); - mirror::CompressedReference<mirror::Class> cls = - mirror::CompressedReference<mirror::Class>::FromMirrorPtr(nullptr); + mirror::HeapReference<mirror::Class> cls; ssize_t rc = SafeCopy(&cls, obj_cls, sizeof(cls)); CHECK_NE(-1, rc); diff --git a/runtime/mirror/object_reference.h b/runtime/mirror/object_reference.h index 108e8ae730..c62ee6cb61 100644 --- a/runtime/mirror/object_reference.h +++ b/runtime/mirror/object_reference.h @@ -104,6 +104,8 @@ class MANAGED HeapReference { using Compression = PtrCompression<kPoisonHeapReferences, MirrorType>; public: + HeapReference() REQUIRES_SHARED(Locks::mutator_lock_) : HeapReference(nullptr) {} + template <bool kIsVolatile = false> MirrorType* AsMirrorPtr() const REQUIRES_SHARED(Locks::mutator_lock_) { return Compression::Decompress( @@ -141,7 +143,7 @@ class MANAGED HeapReference { private: explicit HeapReference(MirrorType* mirror_ptr) REQUIRES_SHARED(Locks::mutator_lock_) - : reference_(this->Compress(mirror_ptr)) {} + : reference_(Compression::Compress(mirror_ptr)) {} // The encoded reference to a mirror::Object. Atomically updateable. Atomic<uint32_t> reference_; |