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