x86: Deduplicate load from memory for non-reference types.
Deduplicate common code in HandleFieldGet, VisitArrayGet and
GenerateVarHandleGet. Reference types are handled individually in each
case because these functions have subtle differences.
Bug: 65872996
Test: art/test.py --host -r --optimizing --32
Change-Id: Idcbe0bdb98290732816deec0cb1c42c530d5026f
diff --git a/compiler/optimizing/intrinsics_x86.cc b/compiler/optimizing/intrinsics_x86.cc
index b0c4b57..d11bfa2 100644
--- a/compiler/optimizing/intrinsics_x86.cc
+++ b/compiler/optimizing/intrinsics_x86.cc
@@ -3671,7 +3671,8 @@
} else if (type == DataType::Type::kInt64 &&
invoke->GetIntrinsic() != Intrinsics::kVarHandleGet) {
XmmRegister xmm_temp = locations->GetTemp(2).AsFpuRegister<XmmRegister>();
- codegen->LoadFromMemoryNoBarrier(type, out, field_addr, xmm_temp, /* is_atomic_load= */ true);
+ codegen->LoadFromMemoryNoBarrier(
+ type, out, field_addr, /* instr= */ nullptr, xmm_temp, /* is_atomic_load= */ true);
} else {
codegen->LoadFromMemoryNoBarrier(type, out, field_addr);
}