Add more VerifyObject calls.
Added verify object calls to SirtRef, IndirectReferenceTable,
ReferenceTable.
Removed un-needed verify object in ScopedObjectAccess / DecodeJObject
since object sources are handled.
Bug: 12934910
Change-Id: I55a46a8ea61fed2a77526eda27fd2cce97a9b125
diff --git a/runtime/thread.cc b/runtime/thread.cc
index a50fa00..3a70613 100644
--- a/runtime/thread.cc
+++ b/runtime/thread.cc
@@ -1203,9 +1203,11 @@
if (LIKELY(SirtContains(obj))) {
// Read from SIRT.
result = reinterpret_cast<StackReference<mirror::Object>*>(obj)->AsMirrorPtr();
+ VerifyObject(result);
} else if (Runtime::Current()->GetJavaVM()->work_around_app_jni_bugs) {
// Assume an invalid local reference is actually a direct pointer.
result = reinterpret_cast<mirror::Object*>(obj);
+ VerifyObject(result);
} else {
result = kInvalidIndirectRefObject;
}
@@ -1225,10 +1227,6 @@
if (UNLIKELY(result == nullptr)) {
JniAbortF(nullptr, "use of deleted %s %p", ToStr<IndirectRefKind>(kind).c_str(), obj);
- } else {
- if (result != kInvalidIndirectRefObject) {
- VerifyObject(result);
- }
}
return result;
}