arm: Implement VarHandle.get/set intrinsics.

Including Opaque, Acquire/Release and Volatile variants.
Refactor Unsafe.get/put operations to share code with the
new VarHandle intrinsics, fixing potentially non-atomic
64-bit "Ordered" operations in the process.

Using benchmarks provided by
    https://android-review.googlesource.com/1420959
on blueline little cores with fixed frequency 1420800:
                             before after
GetStaticFieldInt            23.937 0.014
GetStaticFieldString         24.497 0.019
GetFieldInt                  27.510 0.016
GetFieldString               28.000 0.021
GetAcquireStaticFieldInt     23.953 0.017
GetAcquireStaticFieldString  24.532 0.021
GetAcquireFieldInt           27.457 0.020
GetAcquireFieldString        28.137 0.023
GetOpaqueStaticFieldInt      23.955 0.014
GetOpaqueStaticFieldString   24.530 0.019
GetOpaqueFieldInt            27.461 0.016
GetOpaqueFieldString         28.164 0.021
GetVolatileStaticFieldInt    23.971 0.017
GetVolatileStaticFieldString 24.612 0.021
GetVolatileFieldInt          27.518 0.020
GetVolatileFieldString       28.178 0.023
SetStaticFieldInt            25.291 0.014
SetStaticFieldString         28.873 0.018
SetFieldInt                  28.676 0.016
SetFieldString               32.286 0.021
SetVolatileStaticFieldInt    25.339 0.021
SetVolatileStaticFieldString 28.904 0.028
SetVolatileFieldInt          28.730 0.023
SetVolatileFieldString       32.322 0.030
SetOpaqueStaticFieldInt      25.343 0.014
SetOpaqueStaticFieldString   28.992 0.018
SetOpaqueFieldInt            28.749 0.016
SetOpaqueFieldString         32.317 0.022
SetReleaseStaticFieldInt     25.354 0.016
SetReleaseStaticFieldString  28.906 0.025
SetReleaseFieldInt           28.678 0.017
SetReleaseFieldString        32.262 0.027

Test: Covered by existing test 712-varhandle-invocations.
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: I0ac6d0c154791d787d5c4abd8095e3c2eee9abbb
4 files changed