diff options
Diffstat (limited to 'runtime/intern_table.cc')
-rw-r--r-- | runtime/intern_table.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/runtime/intern_table.cc b/runtime/intern_table.cc index 7b7510979d..d885226bb0 100644 --- a/runtime/intern_table.cc +++ b/runtime/intern_table.cc @@ -199,7 +199,8 @@ void InternTable::WaitUntilAccessible(Thread* self) { { ScopedThreadSuspension sts(self, kWaitingWeakGcRootRead); MutexLock mu(self, *Locks::intern_table_lock_); - while (weak_root_state_ == gc::kWeakRootStateNoReadsOrWrites) { + while ((!kUseReadBarrier && weak_root_state_ == gc::kWeakRootStateNoReadsOrWrites) || + (kUseReadBarrier && !self->GetWeakRefAccessEnabled())) { weak_intern_condition_.Wait(self); } } |