< prev index next >

src/cpu/aarch64/vm/macroAssembler_aarch64.hpp

Print this page
rev 12152 : [mq]: verification.patch

@@ -539,10 +539,21 @@
   inline void clear_fpsr()
   {
     msr(0b011, 0b0100, 0b0100, 0b001, zr);
   }
 
+  // Macro instructions for accessing and updating the condition flags
+  inline void get_cflags(Register reg)
+  {
+    mrs(0b011, 0b0100, 0b0010, 0b000, reg);
+  }
+
+  inline void set_cflags(Register reg)
+  {
+    msr(0b011, 0b0100, 0b0010, 0b000, reg);
+  }
+
   // DCZID_EL0: op1 == 011
   //            CRn == 0000
   //            CRm == 0000
   //            op2 == 111
   inline void get_dczid_el0(Register reg)

@@ -1237,14 +1248,23 @@
                       Register cnt1, Register cnt2,
                       Register tmp1, Register tmp2,
                       Register tmp3, Register tmp4,
                       int int_cnt1, Register result, int ae);
 
-  void in_heap_check(Register r, Label &nope);
-  void shenandoah_store_check(Register r, Address addr);
-  void shenandoah_store_check(Address addr);
-  void shenandoah_store_check(Register addr);
+  void in_heap_check(Register r, Register tmp, Label &nope);
+
+private:
+  void shenandoah_cset_check(Register obj, Register tmp1, Register tmp2, Label& done);
+
+public:
+  void _shenandoah_store_addr_check(Register addr, const char* msg, const char* file, int line);
+  void _shenandoah_store_addr_check(Address addr, const char* msg, const char* file, int line);
+#define shenandoah_store_addr_check(reg) _shenandoah_store_addr_check(reg, "oop not safe for writing", __FILE__, __LINE__)
+
+  void _shenandoah_store_check(Address addr, Register value, const char* msg, const char* file, int line);
+  void _shenandoah_store_check(Register addr, Register value, const char* msg, const char* file, int line);
+#define shenandoah_store_check(addr, value) _shenandoah_store_check(addr, value, "oop not safe for writing", __FILE__, __LINE__)
 
 private:
   void add2_with_carry(Register final_dest_hi, Register dest_hi, Register dest_lo,
                        Register src1, Register src2);
   void add2_with_carry(Register dest_hi, Register dest_lo, Register src1, Register src2) {
< prev index next >