x86_64: Implement VarHandle.set{Opaque,Release,Volatile} for fields.
Benchmarks improvements (using benchmarks provided by
https://android-review.googlesource.com/1420959):
benchmark before after
--------------------------------------------
SetVolatileStaticFieldInt 2.782 0.00678
SetVolatileStaticFieldString 3.040 0.00678
SetVolatileFieldInt 3.082 0.00678
SetVolatileFieldString 3.317 0.00678
SetOpaqueStaticFieldInt 2.804 0.00177
SetOpaqueStaticFieldString 3.040 0.00230
SetOpaqueFieldInt 3.080 0.00174
SetOpaqueFieldString 3.317 0.00224
SetReleaseStaticFieldInt 2.795 0.00177
SetReleaseStaticFieldString 3.042 0.00281
SetReleaseFieldInt 3.076 0.00174
SetReleaseFieldString 3.326 0.00225
Bug: 65872996
Test: lunch aosp_cf_x86_64_phone-userdebug \
&& art/test.py --host -r -t 712-varhandle-invocations --64
Test: Repeat with ART_USE_READ_BARRIER=false.
Test: Repeat with ART_HEAP_POISONING=true.
Change-Id: Idc5922ba4542608cf2b8d9ba686206b9956baaf6
3 files changed