src/share/vm/c1/c1_LIRGenerator.hpp

Print this page
rev 2161 : [mq]: initial-intrinsification-changes
rev 2162 : [mq]: code-review-comments-vladimir


 229   void  move_to_phi(PhiResolver* resolver, Value cur_val, Value sux_val);
 230   void  move_to_phi(ValueStack* cur_state);
 231 
 232   // code emission
 233   void do_ArithmeticOp_Long   (ArithmeticOp*    x);
 234   void do_ArithmeticOp_Int    (ArithmeticOp*    x);
 235   void do_ArithmeticOp_FPU    (ArithmeticOp*    x);
 236 
 237   // platform dependent
 238   LIR_Opr getThreadPointer();
 239 
 240   void do_RegisterFinalizer(Intrinsic* x);
 241   void do_getClass(Intrinsic* x);
 242   void do_currentThread(Intrinsic* x);
 243   void do_MathIntrinsic(Intrinsic* x);
 244   void do_ArrayCopy(Intrinsic* x);
 245   void do_CompareAndSwap(Intrinsic* x, ValueType* type);
 246   void do_AttemptUpdate(Intrinsic* x);
 247   void do_NIOCheckIndex(Intrinsic* x);
 248   void do_FPIntrinsics(Intrinsic* x);

 249 
 250   void do_UnsafePrefetch(UnsafePrefetch* x, bool is_store);
 251 
 252   LIR_Opr call_runtime(BasicTypeArray* signature, LIRItemList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
 253   LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
 254 
 255   // convenience functions
 256   LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
 257   LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);
 258 
 259   // GC Barriers
 260 
 261   // generic interface
 262 
 263   void pre_barrier(LIR_Opr addr_opr, bool patch,  CodeEmitInfo* info);
 264   void post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 265 
 266   // specific implementations
 267   // pre barriers
 268 
 269   void G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, bool patch,  CodeEmitInfo* info);

 270 
 271   // post barriers
 272 
 273   void G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 274   void CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 275 
 276 
 277   static LIR_Opr result_register_for(ValueType* type, bool callee = false);
 278 
 279   ciObject* get_jobject_constant(Value value);
 280 
 281   LIRItemList* invoke_visit_arguments(Invoke* x);
 282   void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
 283 
 284   void trace_block_entry(BlockBegin* block);
 285 
 286   // volatile field operations are never patchable because a klass
 287   // must be loaded to know it's volatile which means that the offset
 288   // it always known as well.
 289   void volatile_field_store(LIR_Opr value, LIR_Address* address, CodeEmitInfo* info);




 229   void  move_to_phi(PhiResolver* resolver, Value cur_val, Value sux_val);
 230   void  move_to_phi(ValueStack* cur_state);
 231 
 232   // code emission
 233   void do_ArithmeticOp_Long   (ArithmeticOp*    x);
 234   void do_ArithmeticOp_Int    (ArithmeticOp*    x);
 235   void do_ArithmeticOp_FPU    (ArithmeticOp*    x);
 236 
 237   // platform dependent
 238   LIR_Opr getThreadPointer();
 239 
 240   void do_RegisterFinalizer(Intrinsic* x);
 241   void do_getClass(Intrinsic* x);
 242   void do_currentThread(Intrinsic* x);
 243   void do_MathIntrinsic(Intrinsic* x);
 244   void do_ArrayCopy(Intrinsic* x);
 245   void do_CompareAndSwap(Intrinsic* x, ValueType* type);
 246   void do_AttemptUpdate(Intrinsic* x);
 247   void do_NIOCheckIndex(Intrinsic* x);
 248   void do_FPIntrinsics(Intrinsic* x);
 249   void do_Reference_get(Intrinsic* x);
 250 
 251   void do_UnsafePrefetch(UnsafePrefetch* x, bool is_store);
 252 
 253   LIR_Opr call_runtime(BasicTypeArray* signature, LIRItemList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
 254   LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
 255 
 256   // convenience functions
 257   LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
 258   LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);
 259 
 260   // GC Barriers
 261 
 262   // generic interface
 263 
 264   void pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val, bool do_load, bool patch, CodeEmitInfo* info);
 265   void post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 266 
 267   // specific implementations
 268   // pre barriers
 269 
 270   void G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
 271                                          bool do_load, bool patch, CodeEmitInfo* info);
 272 
 273   // post barriers
 274 
 275   void G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 276   void CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 277 
 278 
 279   static LIR_Opr result_register_for(ValueType* type, bool callee = false);
 280 
 281   ciObject* get_jobject_constant(Value value);
 282 
 283   LIRItemList* invoke_visit_arguments(Invoke* x);
 284   void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
 285 
 286   void trace_block_entry(BlockBegin* block);
 287 
 288   // volatile field operations are never patchable because a klass
 289   // must be loaded to know it's volatile which means that the offset
 290   // it always known as well.
 291   void volatile_field_store(LIR_Opr value, LIR_Address* address, CodeEmitInfo* info);