diff options
author | 2022-05-18 04:52:24 +0000 | |
---|---|---|
committer | 2022-08-10 18:06:05 +0000 | |
commit | 1455bb566b7d8efc72c2e476733c8cf21ffd7247 (patch) | |
tree | bc52e4a37105810705942cd3c215457cb86b2c24 | |
parent | 65429ce9bcaf8779f5d6cd14aeee4acd60006095 (diff) |
Enable using nterp interpreter with userfaultfd GC
Test: build module and install on device
Bug: 160737021
Change-Id: Iee69e8d5b486a0b6d1ce49b8c5e09ab1727f8a6f
-rw-r--r-- | runtime/interpreter/interpreter_cache-inl.h | 4 | ||||
-rw-r--r-- | runtime/interpreter/mterp/nterp.cc | 2 | ||||
-rw-r--r-- | runtime/thread-inl.h | 2 | ||||
-rw-r--r-- | runtime/thread.h | 2 |
4 files changed, 5 insertions, 5 deletions
diff --git a/runtime/interpreter/interpreter_cache-inl.h b/runtime/interpreter/interpreter_cache-inl.h index 1dda78b0ab..269f5fa9ab 100644 --- a/runtime/interpreter/interpreter_cache-inl.h +++ b/runtime/interpreter/interpreter_cache-inl.h @@ -37,9 +37,9 @@ inline void InterpreterCache::Set(Thread* self, const void* key, size_t value) { 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 3938d54d62..ef916a9aa2 100644 --- a/runtime/interpreter/mterp/nterp.cc +++ b/runtime/interpreter/mterp/nterp.cc @@ -34,7 +34,7 @@ namespace art { 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 a3ac1e763c..4110ed2851 100644 --- a/runtime/thread-inl.h +++ b/runtime/thread-inl.h @@ -373,7 +373,7 @@ inline bool Thread::PushOnThreadLocalAllocationStack(mirror::Object* obj) { } 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 60fd076c4d..6b1c16c907 100644 --- a/runtime/thread.h +++ b/runtime/thread.h @@ -1058,7 +1058,7 @@ class Thread { 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); |