< 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 >