Remove read barrier in UnstartedUnsafeCompareAndSwapLong.
art::interpreter::UnstartedRuntime::UnstartedUnsafeCompareAndSwapLong
manipulates a long field and does not need a read barrier
(read barriers are only required when loading an object
reference from the heap).
Test: ART_USE_READ_BARRIER=true make test-art-host
Bug: 12687968
Change-Id: Ia46590e649a7bb46ca4b3c90bab03fb3a836563d
diff --git a/runtime/interpreter/unstarted_runtime.cc b/runtime/interpreter/unstarted_runtime.cc
index 25ce5cc..5a62bd7 100644
--- a/runtime/interpreter/unstarted_runtime.cc
+++ b/runtime/interpreter/unstarted_runtime.cc
@@ -1238,19 +1238,6 @@
int64_t offset = shadow_frame->GetVRegLong(arg_offset + 2);
int64_t expectedValue = shadow_frame->GetVRegLong(arg_offset + 4);
int64_t newValue = shadow_frame->GetVRegLong(arg_offset + 6);
-
- // Must use non transactional mode.
- if (kUseReadBarrier) {
- // Need to make sure the reference stored in the field is a to-space one before attempting the
- // CAS or the CAS could fail incorrectly.
- mirror::HeapReference<mirror::Object>* field_addr =
- reinterpret_cast<mirror::HeapReference<mirror::Object>*>(
- reinterpret_cast<uint8_t*>(obj) + static_cast<size_t>(offset));
- ReadBarrier::Barrier<mirror::Object, kWithReadBarrier, /*kAlwaysUpdateField*/true>(
- obj,
- MemberOffset(offset),
- field_addr);
- }
bool success;
// Check whether we're in a transaction, call accordingly.
if (Runtime::Current()->IsActiveTransaction()) {