283 void access_store_at(DecoratorSet decorators, BasicType type,
284 LIRItem& base, LIR_Opr offset, LIR_Opr value,
285 CodeEmitInfo* patch_info = NULL, CodeEmitInfo* store_emit_info = NULL);
286
287 void access_load_at(DecoratorSet decorators, BasicType type,
288 LIRItem& base, LIR_Opr offset, LIR_Opr result,
289 CodeEmitInfo* patch_info = NULL, CodeEmitInfo* load_emit_info = NULL);
290
291 void access_load(DecoratorSet decorators, BasicType type,
292 LIR_Opr addr, LIR_Opr result);
293
294 LIR_Opr access_atomic_cmpxchg_at(DecoratorSet decorators, BasicType type,
295 LIRItem& base, LIRItem& offset, LIRItem& cmp_value, LIRItem& new_value);
296
297 LIR_Opr access_atomic_xchg_at(DecoratorSet decorators, BasicType type,
298 LIRItem& base, LIRItem& offset, LIRItem& value);
299
300 LIR_Opr access_atomic_add_at(DecoratorSet decorators, BasicType type,
301 LIRItem& base, LIRItem& offset, LIRItem& value);
302
303 // These need to guarantee JMM volatile semantics are preserved on each platform
304 // and requires one implementation per architecture.
305 LIR_Opr atomic_cmpxchg(BasicType type, LIR_Opr addr, LIRItem& cmp_value, LIRItem& new_value);
306 LIR_Opr atomic_xchg(BasicType type, LIR_Opr addr, LIRItem& new_value);
307 LIR_Opr atomic_add(BasicType type, LIR_Opr addr, LIRItem& new_value);
308
309 #ifdef CARDTABLEBARRIERSET_POST_BARRIER_HELPER
310 virtual void CardTableBarrierSet_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base);
311 #endif
312
313 // specific implementations
314 void array_store_check(LIR_Opr value, LIR_Opr array, CodeEmitInfo* store_check_info, ciMethod* profiled_method, int profiled_bci);
315
316 static LIR_Opr result_register_for(ValueType* type, bool callee = false);
317
318 ciObject* get_jobject_constant(Value value);
319
320 LIRItemList* invoke_visit_arguments(Invoke* x);
321 void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
322
|
283 void access_store_at(DecoratorSet decorators, BasicType type,
284 LIRItem& base, LIR_Opr offset, LIR_Opr value,
285 CodeEmitInfo* patch_info = NULL, CodeEmitInfo* store_emit_info = NULL);
286
287 void access_load_at(DecoratorSet decorators, BasicType type,
288 LIRItem& base, LIR_Opr offset, LIR_Opr result,
289 CodeEmitInfo* patch_info = NULL, CodeEmitInfo* load_emit_info = NULL);
290
291 void access_load(DecoratorSet decorators, BasicType type,
292 LIR_Opr addr, LIR_Opr result);
293
294 LIR_Opr access_atomic_cmpxchg_at(DecoratorSet decorators, BasicType type,
295 LIRItem& base, LIRItem& offset, LIRItem& cmp_value, LIRItem& new_value);
296
297 LIR_Opr access_atomic_xchg_at(DecoratorSet decorators, BasicType type,
298 LIRItem& base, LIRItem& offset, LIRItem& value);
299
300 LIR_Opr access_atomic_add_at(DecoratorSet decorators, BasicType type,
301 LIRItem& base, LIRItem& offset, LIRItem& value);
302
303 LIR_Opr access_resolve(DecoratorSet decorators, LIR_Opr obj, CodeEmitInfo* info);
304
305 // These need to guarantee JMM volatile semantics are preserved on each platform
306 // and requires one implementation per architecture.
307 LIR_Opr atomic_cmpxchg(BasicType type, LIR_Opr addr, LIRItem& cmp_value, LIRItem& new_value);
308 LIR_Opr atomic_xchg(BasicType type, LIR_Opr addr, LIRItem& new_value);
309 LIR_Opr atomic_add(BasicType type, LIR_Opr addr, LIRItem& new_value);
310
311 #ifdef CARDTABLEBARRIERSET_POST_BARRIER_HELPER
312 virtual void CardTableBarrierSet_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base);
313 #endif
314
315 // specific implementations
316 void array_store_check(LIR_Opr value, LIR_Opr array, CodeEmitInfo* store_check_info, ciMethod* profiled_method, int profiled_bci);
317
318 static LIR_Opr result_register_for(ValueType* type, bool callee = false);
319
320 ciObject* get_jobject_constant(Value value);
321
322 LIRItemList* invoke_visit_arguments(Invoke* x);
323 void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
324
|