diff options
-rw-r--r-- | runtime/transaction.cc | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/runtime/transaction.cc b/runtime/transaction.cc index 019a3227ee..fcda6c9a6e 100644 --- a/runtime/transaction.cc +++ b/runtime/transaction.cc @@ -157,7 +157,6 @@ void Transaction::UndoInternStringTableModifications() { } void Transaction::VisitRoots(RootCallback* callback, void* arg) { - LOG(INFO) << "Transaction::VisitRoots"; MutexLock mu(Thread::Current(), log_lock_); VisitObjectLogs(callback, arg); VisitArrayLogs(callback, arg); @@ -310,8 +309,10 @@ void Transaction::ObjectLog::VisitRoots(RootCallback* callback, void* arg) { if (field_value.kind == ObjectLog::kReference) { mirror::Object* obj = reinterpret_cast<mirror::Object*>(static_cast<uintptr_t>(field_value.value)); - callback(&obj, arg, 0, kRootUnknown); - field_value.value = reinterpret_cast<uintptr_t>(obj); + if (obj != nullptr) { + callback(&obj, arg, 0, kRootUnknown); + field_value.value = reinterpret_cast<uintptr_t>(obj); + } } } } |