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
diff --git a/runtime/transaction.h b/runtime/transaction.h
index 030478c..8ff0614 100644
--- a/runtime/transaction.h
+++ b/runtime/transaction.h
@@ -46,63 +46,63 @@
   ~Transaction();
 
   void Abort(const std::string& abort_message)
-      LOCKS_EXCLUDED(log_lock_)
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+      REQUIRES(!log_lock_)
+      SHARED_REQUIRES(Locks::mutator_lock_);
   void ThrowAbortError(Thread* self, const std::string* abort_message)
-      LOCKS_EXCLUDED(log_lock_)
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
-  bool IsAborted() LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(!log_lock_)
+      SHARED_REQUIRES(Locks::mutator_lock_);
+  bool IsAborted() REQUIRES(!log_lock_);
 
   // Record object field changes.
   void RecordWriteFieldBoolean(mirror::Object* obj, MemberOffset field_offset, uint8_t value,
                                bool is_volatile)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(!log_lock_);
   void RecordWriteFieldByte(mirror::Object* obj, MemberOffset field_offset, int8_t value,
                                bool is_volatile)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(!log_lock_);
   void RecordWriteFieldChar(mirror::Object* obj, MemberOffset field_offset, uint16_t value,
                             bool is_volatile)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(!log_lock_);
   void RecordWriteFieldShort(mirror::Object* obj, MemberOffset field_offset, int16_t value,
                              bool is_volatile)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(!log_lock_);
   void RecordWriteField32(mirror::Object* obj, MemberOffset field_offset, uint32_t value,
                           bool is_volatile)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(!log_lock_);
   void RecordWriteField64(mirror::Object* obj, MemberOffset field_offset, uint64_t value,
                           bool is_volatile)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(!log_lock_);
   void RecordWriteFieldReference(mirror::Object* obj, MemberOffset field_offset,
                                  mirror::Object* value, bool is_volatile)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(!log_lock_);
 
   // Record array change.
   void RecordWriteArray(mirror::Array* array, size_t index, uint64_t value)
-      LOCKS_EXCLUDED(log_lock_)
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+      REQUIRES(!log_lock_)
+      SHARED_REQUIRES(Locks::mutator_lock_);
 
   // Record intern string table changes.
   void RecordStrongStringInsertion(mirror::String* s)
-      EXCLUSIVE_LOCKS_REQUIRED(Locks::intern_table_lock_)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(Locks::intern_table_lock_)
+      REQUIRES(!log_lock_);
   void RecordWeakStringInsertion(mirror::String* s)
-      EXCLUSIVE_LOCKS_REQUIRED(Locks::intern_table_lock_)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(Locks::intern_table_lock_)
+      REQUIRES(!log_lock_);
   void RecordStrongStringRemoval(mirror::String* s)
-      EXCLUSIVE_LOCKS_REQUIRED(Locks::intern_table_lock_)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(Locks::intern_table_lock_)
+      REQUIRES(!log_lock_);
   void RecordWeakStringRemoval(mirror::String* s)
-      EXCLUSIVE_LOCKS_REQUIRED(Locks::intern_table_lock_)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(Locks::intern_table_lock_)
+      REQUIRES(!log_lock_);
 
   // Abort transaction by undoing all recorded changes.
   void Rollback()
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_)
-      LOCKS_EXCLUDED(log_lock_);
+      SHARED_REQUIRES(Locks::mutator_lock_)
+      REQUIRES(!log_lock_);
 
   void VisitRoots(RootVisitor* visitor)
-      LOCKS_EXCLUDED(log_lock_)
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+      REQUIRES(!log_lock_)
+      SHARED_REQUIRES(Locks::mutator_lock_);
 
  private:
   class ObjectLog : public ValueObject {
@@ -115,8 +115,8 @@
     void Log64BitsValue(MemberOffset offset, uint64_t value, bool is_volatile);
     void LogReferenceValue(MemberOffset offset, mirror::Object* obj, bool is_volatile);
 
-    void Undo(mirror::Object* obj) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
-    void VisitRoots(RootVisitor* visitor) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+    void Undo(mirror::Object* obj) SHARED_REQUIRES(Locks::mutator_lock_);
+    void VisitRoots(RootVisitor* visitor) SHARED_REQUIRES(Locks::mutator_lock_);
 
     size_t Size() const {
       return field_values_.size();
@@ -141,7 +141,7 @@
 
     void LogValue(FieldValueKind kind, MemberOffset offset, uint64_t value, bool is_volatile);
     void UndoFieldWrite(mirror::Object* obj, MemberOffset field_offset,
-                        const FieldValue& field_value) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+                        const FieldValue& field_value) SHARED_REQUIRES(Locks::mutator_lock_);
 
     // Maps field's offset to its value.
     std::map<uint32_t, FieldValue> field_values_;
@@ -151,7 +151,7 @@
    public:
     void LogValue(size_t index, uint64_t value);
 
-    void Undo(mirror::Array* obj) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+    void Undo(mirror::Array* obj) SHARED_REQUIRES(Locks::mutator_lock_);
 
     size_t Size() const {
       return array_values_.size();
@@ -159,7 +159,7 @@
 
    private:
     void UndoArrayWrite(mirror::Array* array, Primitive::Type array_type, size_t index,
-                        uint64_t value) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+                        uint64_t value) SHARED_REQUIRES(Locks::mutator_lock_);
 
     // Maps index to value.
     // TODO use JValue instead ?
@@ -182,9 +182,9 @@
     }
 
     void Undo(InternTable* intern_table)
-        SHARED_LOCKS_REQUIRED(Locks::mutator_lock_)
-        EXCLUSIVE_LOCKS_REQUIRED(Locks::intern_table_lock_);
-    void VisitRoots(RootVisitor* visitor) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+        SHARED_REQUIRES(Locks::mutator_lock_)
+        REQUIRES(Locks::intern_table_lock_);
+    void VisitRoots(RootVisitor* visitor) SHARED_REQUIRES(Locks::mutator_lock_);
 
    private:
     mirror::String* str_;
@@ -193,31 +193,31 @@
   };
 
   void LogInternedString(const InternStringLog& log)
-      EXCLUSIVE_LOCKS_REQUIRED(Locks::intern_table_lock_)
-      LOCKS_EXCLUDED(log_lock_);
+      REQUIRES(Locks::intern_table_lock_)
+      REQUIRES(!log_lock_);
 
   void UndoObjectModifications()
-      EXCLUSIVE_LOCKS_REQUIRED(log_lock_)
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+      REQUIRES(log_lock_)
+      SHARED_REQUIRES(Locks::mutator_lock_);
   void UndoArrayModifications()
-      EXCLUSIVE_LOCKS_REQUIRED(log_lock_)
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+      REQUIRES(log_lock_)
+      SHARED_REQUIRES(Locks::mutator_lock_);
   void UndoInternStringTableModifications()
-      EXCLUSIVE_LOCKS_REQUIRED(Locks::intern_table_lock_)
-      EXCLUSIVE_LOCKS_REQUIRED(log_lock_)
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+      REQUIRES(Locks::intern_table_lock_)
+      REQUIRES(log_lock_)
+      SHARED_REQUIRES(Locks::mutator_lock_);
 
   void VisitObjectLogs(RootVisitor* visitor)
-      EXCLUSIVE_LOCKS_REQUIRED(log_lock_)
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+      REQUIRES(log_lock_)
+      SHARED_REQUIRES(Locks::mutator_lock_);
   void VisitArrayLogs(RootVisitor* visitor)
-      EXCLUSIVE_LOCKS_REQUIRED(log_lock_)
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+      REQUIRES(log_lock_)
+      SHARED_REQUIRES(Locks::mutator_lock_);
   void VisitStringLogs(RootVisitor* visitor)
-      EXCLUSIVE_LOCKS_REQUIRED(log_lock_)
-      SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+      REQUIRES(log_lock_)
+      SHARED_REQUIRES(Locks::mutator_lock_);
 
-  const std::string& GetAbortMessage() LOCKS_EXCLUDED(log_lock_);
+  const std::string& GetAbortMessage() REQUIRES(!log_lock_);
 
   Mutex log_lock_ ACQUIRED_AFTER(Locks::intern_table_lock_);
   std::map<mirror::Object*, ObjectLog> object_logs_ GUARDED_BY(log_lock_);