summaryrefslogtreecommitdiff
path: root/compiler/optimizing/intrinsics_arm_vixl.cc
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2020-12-16 12:10:03 +0000
committer Vladimir Marko <vmarko@google.com> 2021-01-08 13:44:10 +0000
commit98873affc25ef6bc96f8c65f828f28530b8f3fcd (patch)
treebe471ad310edb1aa3a7b3df44528905ec7ce9a6c /compiler/optimizing/intrinsics_arm_vixl.cc
parent771708f3f0a15c1ae50617b4141c5f5dd47bf94f (diff)
arm64: Implement VarHandle intrinsics for byte array views.
Using benchmarks provided by https://android-review.googlesource.com/1420959 on blueline little cores with fixed frequency 1420800: before after GetByteArrayViewInt 27.093 0.024 SetByteArrayViewInt 28.067 0.024 GetByteArrayViewBigEndianInt 27.142 0.026 SetByteArrayViewBigEndianInt 28.040 0.025 Test: testrunner.py --target --64 --optimizing Bug: 71781600 Change-Id: I604326675042bd63dce8ec15075714003ca9915d
Diffstat (limited to 'compiler/optimizing/intrinsics_arm_vixl.cc')
-rw-r--r--compiler/optimizing/intrinsics_arm_vixl.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/optimizing/intrinsics_arm_vixl.cc b/compiler/optimizing/intrinsics_arm_vixl.cc
index 94e207b217..df214cccbd 100644
--- a/compiler/optimizing/intrinsics_arm_vixl.cc
+++ b/compiler/optimizing/intrinsics_arm_vixl.cc
@@ -3755,7 +3755,7 @@ static DataType::Type GetVarHandleExpectedValueType(HInvoke* invoke,
if (number_of_arguments == /* VarHandle object */ 1u + expected_coordinates_count) {
return invoke->GetType();
} else {
- return invoke->InputAt(number_of_arguments - 1u)->GetType();
+ return GetDataTypeFromShorty(invoke, number_of_arguments - 1u);
}
}
@@ -4265,7 +4265,7 @@ static void CreateVarHandleCompareAndSetOrExchangeLocations(HInvoke* invoke, boo
}
uint32_t number_of_arguments = invoke->GetNumberOfArguments();
- DataType::Type value_type = invoke->InputAt(number_of_arguments - 1u)->GetType();
+ DataType::Type value_type = GetDataTypeFromShorty(invoke, number_of_arguments - 1u);
if ((kEmitCompilerReadBarrier && !kUseBakerReadBarrier) &&
value_type == DataType::Type::kReference) {
// Unsupported for non-Baker read barrier because the artReadBarrierSlow() ignores