arm: Implement VarHandle GetAndUpdate intrinsics.
Using benchmarks provided by
https://android-review.googlesource.com/1420959
on blueline little cores with fixed frequency 1420800:
before after
GetAndAddStaticFieldInt 25.119 0.030
GetAndAddFieldInt 28.785 0.031
GetAndAddStaticFieldFloat 25.195 0.033
GetAndAddFieldFloat 28.924 0.034
GetAndAddAcquireStaticFieldInt 25.101 0.029
GetAndAddAcquireFieldInt 28.767 0.031
GetAndAddAcquireStaticFieldFloat 25.186 0.031
GetAndAddAcquireFieldFloat 28.948 0.034
GetAndAddReleaseStaticFieldInt 25.138 0.026
GetAndAddReleaseFieldInt 28.798 0.028
GetAndAddReleaseStaticFieldFloat 25.186 0.029
GetAndAddReleaseFieldFloat 28.937 0.031
GetAndBitwiseOrStaticFieldInt 25.134 0.030
GetAndBitwiseOrFieldInt 28.860 0.032
GetAndBitwiseOrAcquireStaticFieldInt 25.126 0.029
GetAndBitwiseOrAcquireFieldInt 28.801 0.031
GetAndBitwiseOrReleaseStaticFieldInt 25.129 0.026
GetAndBitwiseOrReleaseFieldInt 28.794 0.028
GetAndBitwiseXorStaticFieldInt 25.120 0.030
GetAndBitwiseXorFieldInt 28.778 0.031
GetAndBitwiseXorAcquireStaticFieldInt 25.111 0.029
GetAndBitwiseXorAcquireFieldInt 28.749 0.031
GetAndBitwiseXorReleaseStaticFieldInt 25.167 0.026
GetAndBitwiseXorReleaseFieldInt 28.804 0.028
GetAndBitwiseAndStaticFieldInt 25.194 0.030
GetAndBitwiseAndFieldInt 28.917 0.031
GetAndBitwiseAndAcquireStaticFieldInt 25.195 0.029
GetAndBitwiseAndAcquireFieldInt 28.843 0.031
GetAndBitwiseAndReleaseStaticFieldInt 25.187 0.026
GetAndBitwiseAndReleaseFieldInt 28.867 0.028
GetAndSetStaticFieldInt 24.912 0.030
GetAndSetStaticFieldString 29.681 0.040
GetAndSetFieldInt 28.612 0.031
GetAndSetFieldString 32.699 0.041
GetAndSetAcquireStaticFieldInt 24.875 0.029
GetAndSetAcquireStaticFieldString 29.692 0.036
GetAndSetAcquireFieldInt 28.604 0.031
GetAndSetAcquireFieldString 32.606 0.038
GetAndSetReleaseStaticFieldInt 24.872 0.026
GetAndSetReleaseStaticFieldString 29.691 0.037
GetAndSetReleaseFieldInt 28.699 0.028
GetAndSetReleaseFieldString 32.721 0.039
Test: Covered by existing tests.
Test: testrunner.py --target --32 -optimizing
Test: Repeat with ART_USE_READ_BARRIER=false ART_HEAP_POISONING=true.
Test: Repeat with ART_READ_BARRIER_TYPE=TABLELOOKUP.
Bug: 71781600
Change-Id: I6c110de362c01f0f8e80960aae731038b35fda64
2 files changed