summaryrefslogtreecommitdiff
path: root/runtime/jni/java_vm_ext.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/jni/java_vm_ext.cc')
-rw-r--r--runtime/jni/java_vm_ext.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/runtime/jni/java_vm_ext.cc b/runtime/jni/java_vm_ext.cc
index 12e6d22252..94108c69de 100644
--- a/runtime/jni/java_vm_ext.cc
+++ b/runtime/jni/java_vm_ext.cc
@@ -864,6 +864,10 @@ ObjPtr<mirror::Object> JavaVMExt::DecodeWeakGlobalLocked(Thread* self, IndirectR
if (kDebugLocking) {
Locks::jni_weak_globals_lock_->AssertHeld(self);
}
+ // TODO: Handle the already null case without waiting.
+ // TODO: Otherwise we should just wait for kInitMarkingDone, and track which weak globals were
+ // marked at that point. We would only need one mark bit per entry in the weak_globals_ table,
+ // and a quick pass over that early on during reference processing.
WaitForWeakGlobalsAccess(self);
return weak_globals_.Get(ref);
}