< prev index next >

src/share/vm/c1/c1_LIRGenerator.hpp

Print this page
rev 13055 : Implement barriers for maintaining connection matrix.


 269 
 270   // GC Barriers
 271 
 272   // generic interface
 273 
 274   void pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val, bool do_load, bool patch, CodeEmitInfo* info);
 275   void post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 276 
 277   LIR_Opr shenandoah_read_barrier(LIR_Opr obj, CodeEmitInfo* info, bool need_null_check);
 278   LIR_Opr shenandoah_write_barrier(LIR_Opr obj, CodeEmitInfo* info, bool need_null_check);
 279 
 280   // specific implementations
 281   // pre barriers
 282 
 283   void G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
 284                                          bool do_load, bool patch, CodeEmitInfo* info);
 285 
 286   // post barriers
 287 
 288   void G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);

 289   void CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 290 #ifdef CARDTABLEMODREF_POST_BARRIER_HELPER
 291   void CardTableModRef_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base);
 292 #endif
 293 
 294 
 295   static LIR_Opr result_register_for(ValueType* type, bool callee = false);
 296 
 297   ciObject* get_jobject_constant(Value value);
 298 
 299   LIRItemList* invoke_visit_arguments(Invoke* x);
 300   void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
 301 
 302   void trace_block_entry(BlockBegin* block);
 303 
 304   // volatile field operations are never patchable because a klass
 305   // must be loaded to know it's volatile which means that the offset
 306   // it always known as well.
 307   void volatile_field_store(LIR_Opr value, LIR_Address* address, CodeEmitInfo* info);
 308   void volatile_field_load(LIR_Address* address, LIR_Opr result, CodeEmitInfo* info);




 269 
 270   // GC Barriers
 271 
 272   // generic interface
 273 
 274   void pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val, bool do_load, bool patch, CodeEmitInfo* info);
 275   void post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 276 
 277   LIR_Opr shenandoah_read_barrier(LIR_Opr obj, CodeEmitInfo* info, bool need_null_check);
 278   LIR_Opr shenandoah_write_barrier(LIR_Opr obj, CodeEmitInfo* info, bool need_null_check);
 279 
 280   // specific implementations
 281   // pre barriers
 282 
 283   void G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
 284                                          bool do_load, bool patch, CodeEmitInfo* info);
 285 
 286   // post barriers
 287 
 288   void G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 289   void Shenandoah_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 290   void CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 291 #ifdef CARDTABLEMODREF_POST_BARRIER_HELPER
 292   void CardTableModRef_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base);
 293 #endif
 294 
 295 
 296   static LIR_Opr result_register_for(ValueType* type, bool callee = false);
 297 
 298   ciObject* get_jobject_constant(Value value);
 299 
 300   LIRItemList* invoke_visit_arguments(Invoke* x);
 301   void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
 302 
 303   void trace_block_entry(BlockBegin* block);
 304 
 305   // volatile field operations are never patchable because a klass
 306   // must be loaded to know it's volatile which means that the offset
 307   // it always known as well.
 308   void volatile_field_store(LIR_Opr value, LIR_Address* address, CodeEmitInfo* info);
 309   void volatile_field_load(LIR_Address* address, LIR_Opr result, CodeEmitInfo* info);


< prev index next >