270 LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
271
272 // convenience functions
273 LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
274 LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);
275
276 // Access API
277
278 private:
279 BarrierSetC1 *_barrier_set;
280
281 public:
282 void access_store_at(DecoratorSet decorators, BasicType type,
283 LIRItem& base, LIR_Opr offset, LIR_Opr value,
284 CodeEmitInfo* patch_info = NULL, CodeEmitInfo* store_emit_info = NULL);
285
286 void access_load_at(DecoratorSet decorators, BasicType type,
287 LIRItem& base, LIR_Opr offset, LIR_Opr result,
288 CodeEmitInfo* patch_info = NULL, CodeEmitInfo* load_emit_info = NULL);
289
290 LIR_Opr access_atomic_cmpxchg_at(DecoratorSet decorators, BasicType type,
291 LIRItem& base, LIRItem& offset, LIRItem& cmp_value, LIRItem& new_value);
292
293 LIR_Opr access_atomic_xchg_at(DecoratorSet decorators, BasicType type,
294 LIRItem& base, LIRItem& offset, LIRItem& value);
295
296 LIR_Opr access_atomic_add_at(DecoratorSet decorators, BasicType type,
297 LIRItem& base, LIRItem& offset, LIRItem& value);
298
299 // These need to guarantee JMM volatile semantics are preserved on each platform
300 // and requires one implementation per architecture.
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);
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
308
|
270 LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
271
272 // convenience functions
273 LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
274 LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);
275
276 // Access API
277
278 private:
279 BarrierSetC1 *_barrier_set;
280
281 public:
282 void access_store_at(DecoratorSet decorators, BasicType type,
283 LIRItem& base, LIR_Opr offset, LIR_Opr value,
284 CodeEmitInfo* patch_info = NULL, CodeEmitInfo* store_emit_info = NULL);
285
286 void access_load_at(DecoratorSet decorators, BasicType type,
287 LIRItem& base, LIR_Opr offset, LIR_Opr result,
288 CodeEmitInfo* patch_info = NULL, CodeEmitInfo* load_emit_info = NULL);
289
290 void access_load(DecoratorSet decorators, BasicType type,
291 LIR_Opr addr, LIR_Opr result);
292
293 LIR_Opr access_atomic_cmpxchg_at(DecoratorSet decorators, BasicType type,
294 LIRItem& base, LIRItem& offset, LIRItem& cmp_value, LIRItem& new_value);
295
296 LIR_Opr access_atomic_xchg_at(DecoratorSet decorators, BasicType type,
297 LIRItem& base, LIRItem& offset, LIRItem& value);
298
299 LIR_Opr access_atomic_add_at(DecoratorSet decorators, BasicType type,
300 LIRItem& base, LIRItem& offset, LIRItem& value);
301
302 // These need to guarantee JMM volatile semantics are preserved on each platform
303 // and requires one implementation per architecture.
304 LIR_Opr atomic_cmpxchg(BasicType type, LIR_Opr addr, LIRItem& cmp_value, LIRItem& new_value);
305 LIR_Opr atomic_xchg(BasicType type, LIR_Opr addr, LIRItem& new_value);
306 LIR_Opr atomic_add(BasicType type, LIR_Opr addr, LIRItem& new_value);
307
308 #ifdef CARDTABLEBARRIERSET_POST_BARRIER_HELPER
309 virtual void CardTableBarrierSet_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base);
310 #endif
311
|