diff options
Diffstat (limited to 'runtime/java_vm_ext.cc')
-rw-r--r-- | runtime/java_vm_ext.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc index 424addb2a8..0ac5b88e80 100644 --- a/runtime/java_vm_ext.cc +++ b/runtime/java_vm_ext.cc @@ -760,6 +760,11 @@ void JavaVMExt::SweepJniWeakGlobals(IsMarkedCallback* callback, void* arg) { for (mirror::Object** entry : weak_globals_) { // Since this is called by the GC, we don't need a read barrier. mirror::Object* obj = *entry; + if (obj == nullptr) { + // Need to skip null here to distinguish between null entries + // and cleared weak ref entries. + continue; + } mirror::Object* new_obj = callback(obj, arg); if (new_obj == nullptr) { new_obj = Runtime::Current()->GetClearedJniWeakGlobal(); |