diff options
| author | 2015-08-31 20:37:43 +0000 | |
|---|---|---|
| committer | 2015-08-31 20:37:43 +0000 | |
| commit | f92d753fe3c43f7988d031c7c7e2c9a399f18103 (patch) | |
| tree | 4a73e35ad6d53836282d5c03eb8b466f2023f8d8 /runtime/java_vm_ext.cc | |
| parent | 5899810257a6c1bd2b252cfc46c78e2c9bea3c52 (diff) | |
| parent | 673ed3d8aedc5462a47ded827c99f35d46525457 (diff) | |
Merge "Revert "Revert "Change dex caches to be weak roots"""
Diffstat (limited to 'runtime/java_vm_ext.cc')
| -rw-r--r-- | runtime/java_vm_ext.cc | 9 | 
1 files changed, 8 insertions, 1 deletions
diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc index 9d41018c1b..ef7a924c63 100644 --- a/runtime/java_vm_ext.cc +++ b/runtime/java_vm_ext.cc @@ -373,7 +373,7 @@ JavaVMExt::JavaVMExt(Runtime* runtime, const RuntimeArgumentMap& runtime_options        globals_(gGlobalsInitial, gGlobalsMax, kGlobal),        libraries_(new Libraries),        unchecked_functions_(&gJniInvokeInterface), -      weak_globals_lock_("JNI weak global reference table lock"), +      weak_globals_lock_("JNI weak global reference table lock", kJniWeakGlobalsLock),        weak_globals_(kWeakGlobalsInitial, kWeakGlobalsMax, kWeakGlobal),        allow_new_weak_globals_(true),        weak_globals_add_condition_("weak globals add condition", weak_globals_lock_) { @@ -578,6 +578,13 @@ void JavaVMExt::UpdateGlobal(Thread* self, IndirectRef ref, mirror::Object* resu  mirror::Object* JavaVMExt::DecodeWeakGlobal(Thread* self, IndirectRef ref) {    MutexLock mu(self, weak_globals_lock_); +  return DecodeWeakGlobalLocked(self, ref); +} + +mirror::Object* JavaVMExt::DecodeWeakGlobalLocked(Thread* self, IndirectRef ref) { +  if (kDebugLocking) { +    weak_globals_lock_.AssertHeld(self); +  }    while (UNLIKELY((!kUseReadBarrier && !allow_new_weak_globals_) ||                    (kUseReadBarrier && !self->GetWeakRefAccessEnabled()))) {      weak_globals_add_condition_.WaitHoldingLocks(self);  |