Don't need to block in AddWeakGlobalRef and MonitorList::Add under CC.

CMS needs this to block because an object allocated during the GC
won't be marked and concurrent reference processing would incorrectly
clear the JNI weak ref or the monitor list weak.

But CC doesn't because of the to-space invariant, that is, when a
mutator tries to create a JNI weak ref or a monitor for an object, it
must be already marked and the concurrent reference processing
wouldn't incorrectly clear it.

Bug: 34128900
Bug: 12687968
Test: test-art-host with CC.
Change-Id: Ia87bf8ed9e604900df5ecb450c89b0ac222bef32
diff --git a/runtime/monitor.cc b/runtime/monitor.cc
index 893abd5..9c09275 100644
--- a/runtime/monitor.cc
+++ b/runtime/monitor.cc
@@ -1361,8 +1361,10 @@
 void MonitorList::Add(Monitor* m) {
   Thread* self = Thread::Current();
   MutexLock mu(self, monitor_list_lock_);
-  while (UNLIKELY((!kUseReadBarrier && !allow_new_monitors_) ||
-                  (kUseReadBarrier && !self->GetWeakRefAccessEnabled()))) {
+  // CMS needs this to block for concurrent reference processing because an object allocated during
+  // the GC won't be marked and concurrent reference processing would incorrectly clear the JNI weak
+  // ref. But CC (kUseReadBarrier == true) doesn't because of the to-space invariant.
+  while (!kUseReadBarrier && UNLIKELY(!allow_new_monitors_)) {
     // Check and run the empty checkpoint before blocking so the empty checkpoint will work in the
     // presence of threads blocking for weak ref access.
     self->CheckEmptyCheckpoint();