Add read barriers to the weak roots in the intern table.
Bug: 12687968
Change-Id: I424f1df76a7e3d7154fb9f3c951c973d19bd640f
diff --git a/runtime/transaction.h b/runtime/transaction.h
index 6fd86c8..7859126 100644
--- a/runtime/transaction.h
+++ b/runtime/transaction.h
@@ -147,7 +147,9 @@
DCHECK(s != nullptr);
}
- void Undo(InternTable* intern_table) EXCLUSIVE_LOCKS_REQUIRED(Locks::intern_table_lock_);
+ void Undo(InternTable* intern_table)
+ SHARED_LOCKS_REQUIRED(Locks::mutator_lock_)
+ EXCLUSIVE_LOCKS_REQUIRED(Locks::intern_table_lock_);
void VisitRoots(RootCallback* callback, void* arg);
private:
@@ -169,7 +171,8 @@
SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
void UndoInternStringTableModifications()
EXCLUSIVE_LOCKS_REQUIRED(Locks::intern_table_lock_)
- EXCLUSIVE_LOCKS_REQUIRED(log_lock_);
+ EXCLUSIVE_LOCKS_REQUIRED(log_lock_)
+ SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
void VisitObjectLogs(RootCallback* callback, void* arg)
EXCLUSIVE_LOCKS_REQUIRED(log_lock_)