diff options
Diffstat (limited to 'runtime/java_vm_ext.cc')
| -rw-r--r-- | runtime/java_vm_ext.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc index 92eef3983b..63e8887ff3 100644 --- a/runtime/java_vm_ext.cc +++ b/runtime/java_vm_ext.cc @@ -580,9 +580,12 @@ inline bool JavaVMExt::MayAccessWeakGlobals(Thread* self) const { } inline bool JavaVMExt::MayAccessWeakGlobalsUnlocked(Thread* self) const { - return kUseReadBarrier - ? self->GetWeakRefAccessEnabled() - : allow_accessing_weak_globals_.LoadSequentiallyConsistent(); + if (kUseReadBarrier) { + // self can be null during a runtime shutdown. ~Runtime()->~ClassLinker()->DecodeWeakGlobal(). + return self != nullptr ? self->GetWeakRefAccessEnabled() : true; + } else { + return allow_accessing_weak_globals_.LoadSequentiallyConsistent(); + } } mirror::Object* JavaVMExt::DecodeWeakGlobal(Thread* self, IndirectRef ref) { |