299 // These need to guarantee JMM volatile semantics are preserved on each platform |
299 // These need to guarantee JMM volatile semantics are preserved on each platform |
300 // and requires one implementation per architecture. |
300 // and requires one implementation per architecture. |
301 LIR_Opr atomic_cmpxchg(BasicType type, LIR_Opr addr, LIRItem& cmp_value, LIRItem& new_value); |
301 LIR_Opr atomic_cmpxchg(BasicType type, LIR_Opr addr, LIRItem& cmp_value, LIRItem& new_value); |
302 LIR_Opr atomic_xchg(BasicType type, LIR_Opr addr, LIRItem& new_value); |
302 LIR_Opr atomic_xchg(BasicType type, LIR_Opr addr, LIRItem& new_value); |
303 LIR_Opr atomic_add(BasicType type, LIR_Opr addr, LIRItem& new_value); |
303 LIR_Opr atomic_add(BasicType type, LIR_Opr addr, LIRItem& new_value); |
|
304 |
|
305 #ifdef CARDTABLEBARRIERSET_POST_BARRIER_HELPER |
|
306 virtual void CardTableBarrierSet_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base); |
|
307 #endif |
304 |
308 |
305 // specific implementations |
309 // specific implementations |
306 void array_store_check(LIR_Opr value, LIR_Opr array, CodeEmitInfo* store_check_info, ciMethod* profiled_method, int profiled_bci); |
310 void array_store_check(LIR_Opr value, LIR_Opr array, CodeEmitInfo* store_check_info, ciMethod* profiled_method, int profiled_bci); |
307 |
311 |
308 static LIR_Opr result_register_for(ValueType* type, bool callee = false); |
312 static LIR_Opr result_register_for(ValueType* type, bool callee = false); |