diff options
| author | 2015-07-16 20:32:27 -0700 | |
|---|---|---|
| committer | 2015-07-22 15:13:56 -0700 | |
| commit | 90443477f9a0061581c420775ce3b7eeae7468bc (patch) | |
| tree | 8c74b81dfae162e0fd0ccf8d5ac50827ba815174 /runtime/gc/reference_processor.h | |
| parent | 6078aec213dfaf111c29969706e8e5967cfc9bea (diff) | |
Move to newer clang annotations
Also enable -Wthread-safety-negative.
Changes:
Switch to capabilities and negative capabilities.
Future work:
Use capabilities to implement uninterruptible annotations to work
with AssertNoThreadSuspension.
Bug: 20072211
Change-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33
Diffstat (limited to 'runtime/gc/reference_processor.h')
| -rw-r--r-- | runtime/gc/reference_processor.h | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/runtime/gc/reference_processor.h b/runtime/gc/reference_processor.h index 95877d13af..d9dfedb464 100644 --- a/runtime/gc/reference_processor.h +++ b/runtime/gc/reference_processor.h @@ -48,39 +48,39 @@ class ReferenceProcessor { explicit ReferenceProcessor(); void ProcessReferences(bool concurrent, TimingLogger* timings, bool clear_soft_references, gc::collector::GarbageCollector* collector) - SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) - EXCLUSIVE_LOCKS_REQUIRED(Locks::heap_bitmap_lock_) - LOCKS_EXCLUDED(Locks::reference_processor_lock_); + SHARED_REQUIRES(Locks::mutator_lock_) + REQUIRES(Locks::heap_bitmap_lock_) + REQUIRES(!Locks::reference_processor_lock_); // The slow path bool is contained in the reference class object, can only be set once // Only allow setting this with mutators suspended so that we can avoid using a lock in the // GetReferent fast path as an optimization. - void EnableSlowPath() SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); + void EnableSlowPath() SHARED_REQUIRES(Locks::mutator_lock_); void BroadcastForSlowPath(Thread* self); // Decode the referent, may block if references are being processed. mirror::Object* GetReferent(Thread* self, mirror::Reference* reference) - SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) LOCKS_EXCLUDED(Locks::reference_processor_lock_); - void EnqueueClearedReferences(Thread* self) LOCKS_EXCLUDED(Locks::mutator_lock_); + SHARED_REQUIRES(Locks::mutator_lock_) REQUIRES(!Locks::reference_processor_lock_); + void EnqueueClearedReferences(Thread* self) REQUIRES(!Locks::mutator_lock_); void DelayReferenceReferent(mirror::Class* klass, mirror::Reference* ref, collector::GarbageCollector* collector) - SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); + SHARED_REQUIRES(Locks::mutator_lock_); void UpdateRoots(IsMarkedVisitor* visitor) - SHARED_LOCKS_REQUIRED(Locks::mutator_lock_, Locks::heap_bitmap_lock_); + SHARED_REQUIRES(Locks::mutator_lock_, Locks::heap_bitmap_lock_); // Make a circular list with reference if it is not enqueued. Uses the finalizer queue lock. bool MakeCircularListIfUnenqueued(mirror::FinalizerReference* reference) - SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) - LOCKS_EXCLUDED(Locks::reference_processor_lock_, - Locks::reference_queue_finalizer_references_lock_); + SHARED_REQUIRES(Locks::mutator_lock_) + REQUIRES(!Locks::reference_processor_lock_, + !Locks::reference_queue_finalizer_references_lock_); private: - bool SlowPathEnabled() SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); + bool SlowPathEnabled() SHARED_REQUIRES(Locks::mutator_lock_); // Called by ProcessReferences. - void DisableSlowPath(Thread* self) EXCLUSIVE_LOCKS_REQUIRED(Locks::reference_processor_lock_) - SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); + void DisableSlowPath(Thread* self) REQUIRES(Locks::reference_processor_lock_) + SHARED_REQUIRES(Locks::mutator_lock_); // If we are preserving references it means that some dead objects may become live, we use start // and stop preserving to block mutators using GetReferrent from getting access to these // referents. - void StartPreservingReferences(Thread* self) LOCKS_EXCLUDED(Locks::reference_processor_lock_); - void StopPreservingReferences(Thread* self) LOCKS_EXCLUDED(Locks::reference_processor_lock_); + void StartPreservingReferences(Thread* self) REQUIRES(!Locks::reference_processor_lock_); + void StopPreservingReferences(Thread* self) REQUIRES(!Locks::reference_processor_lock_); // Collector which is clearing references, used by the GetReferent to return referents which are // already marked. collector::GarbageCollector* collector_ GUARDED_BY(Locks::reference_processor_lock_); |