diff options
Diffstat (limited to 'runtime/gc/heap.h')
| -rw-r--r-- | runtime/gc/heap.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/runtime/gc/heap.h b/runtime/gc/heap.h index 4e1a0ff242..529af9539e 100644 --- a/runtime/gc/heap.h +++ b/runtime/gc/heap.h @@ -611,6 +611,9 @@ class Heap { return zygote_space_ != nullptr; } + void WaitForConcurrentGCRequest(Thread* self) LOCKS_EXCLUDED(gc_request_lock_); + void NotifyConcurrentGCRequest(Thread* self) LOCKS_EXCLUDED(gc_request_lock_); + private: // Compact source space to target space. void Compact(space::ContinuousMemMapAllocSpace* target_space, @@ -874,6 +877,11 @@ class Heap { Mutex* gc_complete_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER; std::unique_ptr<ConditionVariable> gc_complete_cond_ GUARDED_BY(gc_complete_lock_); + // Guards concurrent GC requests. + Mutex* gc_request_lock_ DEFAULT_MUTEX_ACQUIRED_AFTER; + std::unique_ptr<ConditionVariable> gc_request_cond_ GUARDED_BY(gc_request_lock_); + bool gc_request_pending_ GUARDED_BY(gc_request_lock_); + // Reference processor; ReferenceProcessor reference_processor_; |