diff options
author | 2020-12-16 12:10:03 +0000 | |
---|---|---|
committer | 2021-01-08 13:44:10 +0000 | |
commit | 98873affc25ef6bc96f8c65f828f28530b8f3fcd (patch) | |
tree | be471ad310edb1aa3a7b3df44528905ec7ce9a6c /compiler/optimizing/intrinsics_arm_vixl.cc | |
parent | 771708f3f0a15c1ae50617b4141c5f5dd47bf94f (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.cc | 4 |
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 |