Enable using nterp interpreter with userfaultfd GC am: 1455bb566b am: eaaf92d7ae am: af7e152010 am: adefdbfce3

Original change: https://android-review.googlesource.com/c/platform/art/+/2099075

Change-Id: Icdfb4a166f94e5f1a863716f9cb0339388a7132d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/runtime/interpreter/interpreter_cache-inl.h b/runtime/interpreter/interpreter_cache-inl.h
index 1dda78b..269f5fa 100644
--- a/runtime/interpreter/interpreter_cache-inl.h
+++ b/runtime/interpreter/interpreter_cache-inl.h
@@ -37,9 +37,9 @@
   DCHECK(self->GetInterpreterCache() == this) << "Must be called from owning thread";
 
   // For simplicity, only update the cache if weak ref accesses are enabled. If
-  // they are disabled, this means the GC is processing the cache, and is
+  // they are disabled, this means the CC GC could be processing the cache, and
   // reading it concurrently.
-  if (gUseReadBarrier && self->GetWeakRefAccessEnabled()) {
+  if (!gUseReadBarrier || self->GetWeakRefAccessEnabled()) {
     data_[IndexOf(key)] = Entry{key, value};
   }
 }
diff --git a/runtime/interpreter/mterp/nterp.cc b/runtime/interpreter/mterp/nterp.cc
index 3938d54..ef916a9 100644
--- a/runtime/interpreter/mterp/nterp.cc
+++ b/runtime/interpreter/mterp/nterp.cc
@@ -34,7 +34,7 @@
 namespace interpreter {
 
 bool IsNterpSupported() {
-  return !kPoisonHeapReferences && gUseReadBarrier;
+  return !kPoisonHeapReferences;
 }
 
 bool CanRuntimeUseNterp() REQUIRES_SHARED(Locks::mutator_lock_) {
diff --git a/runtime/thread-inl.h b/runtime/thread-inl.h
index a3ac1e7..4110ed2 100644
--- a/runtime/thread-inl.h
+++ b/runtime/thread-inl.h
@@ -373,7 +373,7 @@
 }
 
 inline bool Thread::GetWeakRefAccessEnabled() const {
-  CHECK(gUseReadBarrier);
+  DCHECK(gUseReadBarrier);
   DCHECK(this == Thread::Current());
   WeakRefAccessState s = tls32_.weak_ref_access_enabled.load(std::memory_order_relaxed);
   if (LIKELY(s == WeakRefAccessState::kVisiblyEnabled)) {
diff --git a/runtime/thread.h b/runtime/thread.h
index 60fd076..6b1c16c 100644
--- a/runtime/thread.h
+++ b/runtime/thread.h
@@ -1058,7 +1058,7 @@
   bool GetWeakRefAccessEnabled() const;  // Only safe for current thread.
 
   void SetWeakRefAccessEnabled(bool enabled) {
-    CHECK(gUseReadBarrier);
+    DCHECK(gUseReadBarrier);
     WeakRefAccessState new_state = enabled ?
         WeakRefAccessState::kEnabled : WeakRefAccessState::kDisabled;
     tls32_.weak_ref_access_enabled.store(new_state, std::memory_order_release);