x86_64: Implement VarHandle.getAndBitwise{And,Or,Xor} for fields.
Benchmarks improvements (using benchmarks provided by
https://android-review.googlesource.com/1420959):
benchmark before after
-----------------------------------------------------
GetAndBitwiseOrStaticFieldInt 2.346 0.012
GetAndBitwiseOrFieldInt 2.615 0.010
GetAndBitwiseOrAcquireStaticFieldInt 2.340 0.008
GetAndBitwiseOrAcquireFieldInt 2.616 0.008
GetAndBitwiseOrReleaseStaticFieldInt 2.349 0.008
GetAndBitwiseOrReleaseFieldInt 2.614 0.008
GetAndBitwiseXorStaticFieldInt 2.336 0.010
GetAndBitwiseXorFieldInt 2.611 0.010
GetAndBitwiseXorAcquireStaticFieldInt 2.332 0.008
GetAndBitwiseXorAcquireFieldInt 2.613 0.008
GetAndBitwiseXorReleaseStaticFieldInt 2.335 0.008
GetAndBitwiseXorReleaseFieldInt 2.617 0.008
GetAndBitwiseAndStaticFieldInt 2.341 0.010
GetAndBitwiseAndFieldInt 2.619 0.010
GetAndBitwiseAndAcquireStaticFieldInt 2.345 0.008
GetAndBitwiseAndAcquireFieldInt 2.610 0.009
GetAndBitwiseAndReleaseStaticFieldInt 2.343 0.008
GetAndBitwiseAndReleaseFieldInt 2.616 0.008
Bug: 71781600
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: Ied3ae34aaad24e1b2cd8237fed4ac64aa9ae10ae
1 file changed