X86: Add the other get VarHandles (getVolatile, getAcquire, getOpaque)
This commit implements VarHandle.getVolatile, getAcquire and getOpaque
intrinsics.
Test: ART_HEAP_POISONING=true art/test.py --host -r -t 712-varhandle-invocation --32
Test: ART_HEAP_POISONING=false art/test.py --host -r -t 712-varhandle-invocation --32
Test: ART_USE_READ_BARRIER=true art/test.py --host -r -t 712-varhandle-invocation --32
Test: ART_USE_READ_BARRIER=false art/test.py --host -r -t 712-varhandle-invocation --32
Bug: 65872996
Change-Id: I38501c226c9d5af0a9e5a1230abcb3114aad4737
diff --git a/compiler/optimizing/code_generator_x86.h b/compiler/optimizing/code_generator_x86.h
index efadae4..a573e84 100644
--- a/compiler/optimizing/code_generator_x86.h
+++ b/compiler/optimizing/code_generator_x86.h
@@ -442,13 +442,12 @@
void Move32(Location destination, Location source);
// Helper method to move a 64bits value between two locations.
void Move64(Location destination, Location source);
- // Helper method to move a primitive value from an address to a register.
- void MoveFromMemory(DataType::Type dst_type,
- Location dst,
- Register src_base,
- Register src_index = Register::kNoRegister,
- ScaleFactor src_scale = TIMES_1,
- int32_t src_disp = 0);
+ // Helper method to load a value from an address to a register.
+ void LoadFromMemoryNoBarrier(DataType::Type dst_type,
+ Location dst,
+ Address src,
+ XmmRegister temp = kNoXmmRegister,
+ bool is_atomic_load = false);
// Helper method to move a primitive value from a location to an address.
void MoveToMemory(DataType::Type src_type,
Location src,