< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.hpp

Print this page
rev 51517 : 8207169: X86: Modularize cmpxchg-oop assembler for C1 and C2

@@ -321,10 +321,21 @@
 
   // Resolves obj access. Result is placed in the same register.
   // All other registers are preserved.
   void resolve(DecoratorSet decorators, Register obj);
 
+  // Atomically store newval into addr, if addr currently contains oldval.
+  // This version is intended for use by C1 assembler, and encodes uncompressed
+  // oops if necessary. C1 assembler expects flags state to be set according
+  // to success of the CAS.
+  void access_cmpxchg_oop_c1(Address addr, Register oldval, Register newval,
+                             Register tmp1, Register tmp2);
+
+  void access_cmpxchg_oop_c2(Register res, Address addr, Register oldval, Register newval,
+                             Register tmp1, Register tmp2,
+                             bool narrow, bool exchange, bool expect_null);
+
   void load_heap_oop(Register dst, Address src, Register tmp1 = noreg,
                      Register thread_tmp = noreg, DecoratorSet decorators = 0);
   void load_heap_oop_not_null(Register dst, Address src, Register tmp1 = noreg,
                               Register thread_tmp = noreg, DecoratorSet decorators = 0);
   void store_heap_oop(Address dst, Register src, Register tmp1 = noreg,
< prev index next >