< prev index next >

src/hotspot/share/c1/c1_LIRGenerator.hpp

Print this page


 300   LIR_Opr access_atomic_xchg_at(DecoratorSet decorators, BasicType type,
 301                                 LIRItem& base, LIRItem& offset, LIRItem& value);
 302 
 303   LIR_Opr access_atomic_add_at(DecoratorSet decorators, BasicType type,
 304                                LIRItem& base, LIRItem& offset, LIRItem& value);
 305 
 306   LIR_Opr access_resolve(DecoratorSet decorators, LIR_Opr obj);
 307 
 308   // These need to guarantee JMM volatile semantics are preserved on each platform
 309   // and requires one implementation per architecture.
 310   LIR_Opr atomic_cmpxchg(BasicType type, LIR_Opr addr, LIRItem& cmp_value, LIRItem& new_value);
 311   LIR_Opr atomic_xchg(BasicType type, LIR_Opr addr, LIRItem& new_value);
 312   LIR_Opr atomic_add(BasicType type, LIR_Opr addr, LIRItem& new_value);
 313 
 314 #ifdef CARDTABLEBARRIERSET_POST_BARRIER_HELPER
 315   virtual void CardTableBarrierSet_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base);
 316 #endif
 317 
 318   // specific implementations
 319   void array_store_check(LIR_Opr value, LIR_Opr array, CodeEmitInfo* store_check_info, ciMethod* profiled_method, int profiled_bci);

 320 
 321   static LIR_Opr result_register_for(ValueType* type, bool callee = false);
 322 
 323   ciObject* get_jobject_constant(Value value);
 324 
 325   LIRItemList* invoke_visit_arguments(Invoke* x);
 326   void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
 327 
 328   void trace_block_entry(BlockBegin* block);
 329 
 330   // volatile field operations are never patchable because a klass
 331   // must be loaded to know it's volatile which means that the offset
 332   // it always known as well.
 333   void volatile_field_store(LIR_Opr value, LIR_Address* address, CodeEmitInfo* info);
 334   void volatile_field_load(LIR_Address* address, LIR_Opr result, CodeEmitInfo* info);
 335 
 336   void put_Object_unsafe(LIR_Opr src, LIR_Opr offset, LIR_Opr data, BasicType type, bool is_volatile);
 337   void get_Object_unsafe(LIR_Opr dest, LIR_Opr src, LIR_Opr offset, BasicType type, bool is_volatile);
 338 
 339   void arithmetic_call_op (Bytecodes::Code code, LIR_Opr result, LIR_OprList* args);




 300   LIR_Opr access_atomic_xchg_at(DecoratorSet decorators, BasicType type,
 301                                 LIRItem& base, LIRItem& offset, LIRItem& value);
 302 
 303   LIR_Opr access_atomic_add_at(DecoratorSet decorators, BasicType type,
 304                                LIRItem& base, LIRItem& offset, LIRItem& value);
 305 
 306   LIR_Opr access_resolve(DecoratorSet decorators, LIR_Opr obj);
 307 
 308   // These need to guarantee JMM volatile semantics are preserved on each platform
 309   // and requires one implementation per architecture.
 310   LIR_Opr atomic_cmpxchg(BasicType type, LIR_Opr addr, LIRItem& cmp_value, LIRItem& new_value);
 311   LIR_Opr atomic_xchg(BasicType type, LIR_Opr addr, LIRItem& new_value);
 312   LIR_Opr atomic_add(BasicType type, LIR_Opr addr, LIRItem& new_value);
 313 
 314 #ifdef CARDTABLEBARRIERSET_POST_BARRIER_HELPER
 315   virtual void CardTableBarrierSet_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base);
 316 #endif
 317 
 318   // specific implementations
 319   void array_store_check(LIR_Opr value, LIR_Opr array, CodeEmitInfo* store_check_info, ciMethod* profiled_method, int profiled_bci);
 320   void flattened_array_store_check(LIR_Opr value, ciKlass* element_klass, CodeEmitInfo* store_check_info);
 321 
 322   static LIR_Opr result_register_for(ValueType* type, bool callee = false);
 323 
 324   ciObject* get_jobject_constant(Value value);
 325 
 326   LIRItemList* invoke_visit_arguments(Invoke* x);
 327   void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
 328 
 329   void trace_block_entry(BlockBegin* block);
 330 
 331   // volatile field operations are never patchable because a klass
 332   // must be loaded to know it's volatile which means that the offset
 333   // it always known as well.
 334   void volatile_field_store(LIR_Opr value, LIR_Address* address, CodeEmitInfo* info);
 335   void volatile_field_load(LIR_Address* address, LIR_Opr result, CodeEmitInfo* info);
 336 
 337   void put_Object_unsafe(LIR_Opr src, LIR_Opr offset, LIR_Opr data, BasicType type, bool is_volatile);
 338   void get_Object_unsafe(LIR_Opr dest, LIR_Opr src, LIR_Opr offset, BasicType type, bool is_volatile);
 339 
 340   void arithmetic_call_op (Bytecodes::Code code, LIR_Opr result, LIR_OprList* args);


< prev index next >