summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/fault_handler.cc3
-rw-r--r--runtime/mirror/object_reference.h4
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_;