< prev index next >

src/share/vm/c1/c1_LIRGenerator.hpp

Print this page




 209   // Given an immediate value, return an operand usable in logical ops.
 210   LIR_Opr load_immediate(int x, BasicType type);
 211 
 212   void  set_result(Value x, LIR_Opr opr)           {
 213     assert(opr->is_valid(), "must set to valid value");
 214     assert(x->operand()->is_illegal(), "operand should never change");
 215     assert(!opr->is_register() || opr->is_virtual(), "should never set result to a physical register");
 216     x->set_operand(opr);
 217     assert(opr == x->operand(), "must be");
 218     if (opr->is_virtual()) {
 219       _instruction_for_operand.at_put_grow(opr->vreg_number(), x, NULL);
 220     }
 221   }
 222   void  set_no_result(Value x)                     { assert(!x->has_uses(), "can't have use"); x->clear_operand(); }
 223 
 224   friend class LIRItem;
 225 
 226   LIR_Opr round_item(LIR_Opr opr);
 227   LIR_Opr force_to_spill(LIR_Opr value, BasicType t);
 228 


 229   PhiResolverState& resolver_state() { return _resolver_state; }
 230 
 231   void  move_to_phi(PhiResolver* resolver, Value cur_val, Value sux_val);
 232   void  move_to_phi(ValueStack* cur_state);
 233 
 234   // code emission
 235   void do_ArithmeticOp_Long   (ArithmeticOp*    x);
 236   void do_ArithmeticOp_Int    (ArithmeticOp*    x);
 237   void do_ArithmeticOp_FPU    (ArithmeticOp*    x);
 238 
 239   // platform dependent
 240   LIR_Opr getThreadPointer();
 241 
 242   void do_RegisterFinalizer(Intrinsic* x);
 243   void do_isInstance(Intrinsic* x);
 244   void do_getClass(Intrinsic* x);
 245   void do_currentThread(Intrinsic* x);
 246   void do_MathIntrinsic(Intrinsic* x);
 247   void do_ArrayCopy(Intrinsic* x);
 248   void do_CompareAndSwap(Intrinsic* x, ValueType* type);
 249   void do_NIOCheckIndex(Intrinsic* x);
 250   void do_FPIntrinsics(Intrinsic* x);
 251   void do_Reference_get(Intrinsic* x);
 252   void do_update_CRC32(Intrinsic* x);
 253 
 254   LIR_Opr call_runtime(BasicTypeArray* signature, LIRItemList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
 255   LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
 256 
 257   // convenience functions
 258   LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
 259   LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);
 260 
 261   // GC Barriers
 262 
 263   // generic interface
 264 
 265   void pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val, bool do_load, bool patch, CodeEmitInfo* info);
 266   void post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);



 267 
 268   // specific implementations
 269   // pre barriers
 270 
 271   void G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
 272                                          bool do_load, bool patch, CodeEmitInfo* info);
 273 
 274   // post barriers
 275 
 276   void G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 277   void CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 278 #ifdef CARDTABLEMODREF_POST_BARRIER_HELPER
 279   void CardTableModRef_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base);
 280 #endif
 281 
 282 
 283   static LIR_Opr result_register_for(ValueType* type, bool callee = false);
 284 
 285   ciObject* get_jobject_constant(Value value);
 286 




 209   // Given an immediate value, return an operand usable in logical ops.
 210   LIR_Opr load_immediate(int x, BasicType type);
 211 
 212   void  set_result(Value x, LIR_Opr opr)           {
 213     assert(opr->is_valid(), "must set to valid value");
 214     assert(x->operand()->is_illegal(), "operand should never change");
 215     assert(!opr->is_register() || opr->is_virtual(), "should never set result to a physical register");
 216     x->set_operand(opr);
 217     assert(opr == x->operand(), "must be");
 218     if (opr->is_virtual()) {
 219       _instruction_for_operand.at_put_grow(opr->vreg_number(), x, NULL);
 220     }
 221   }
 222   void  set_no_result(Value x)                     { assert(!x->has_uses(), "can't have use"); x->clear_operand(); }
 223 
 224   friend class LIRItem;
 225 
 226   LIR_Opr round_item(LIR_Opr opr);
 227   LIR_Opr force_to_spill(LIR_Opr value, BasicType t);
 228 
 229   LIR_Opr force_opr_to(LIR_Opr op, LIR_Opr reg);
 230 
 231   PhiResolverState& resolver_state() { return _resolver_state; }
 232 
 233   void  move_to_phi(PhiResolver* resolver, Value cur_val, Value sux_val);
 234   void  move_to_phi(ValueStack* cur_state);
 235 
 236   // code emission
 237   void do_ArithmeticOp_Long   (ArithmeticOp*    x);
 238   void do_ArithmeticOp_Int    (ArithmeticOp*    x);
 239   void do_ArithmeticOp_FPU    (ArithmeticOp*    x);
 240 
 241   // platform dependent
 242   LIR_Opr getThreadPointer();
 243 
 244   void do_RegisterFinalizer(Intrinsic* x);
 245   void do_isInstance(Intrinsic* x);
 246   void do_getClass(Intrinsic* x);
 247   void do_currentThread(Intrinsic* x);
 248   void do_MathIntrinsic(Intrinsic* x);
 249   void do_ArrayCopy(Intrinsic* x);
 250   void do_CompareAndSwap(Intrinsic* x, ValueType* type);
 251   void do_NIOCheckIndex(Intrinsic* x);
 252   void do_FPIntrinsics(Intrinsic* x);
 253   void do_Reference_get(Intrinsic* x);
 254   void do_update_CRC32(Intrinsic* x);
 255 
 256   LIR_Opr call_runtime(BasicTypeArray* signature, LIRItemList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
 257   LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
 258 
 259   // convenience functions
 260   LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
 261   LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);
 262 
 263   // GC Barriers
 264 
 265   // generic interface
 266 
 267   void pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val, bool do_load, bool patch, CodeEmitInfo* info);
 268   void post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 269 
 270   LIR_Opr shenandoah_read_barrier(LIR_Opr obj, CodeEmitInfo* info, bool need_null_check);
 271   LIR_Opr shenandoah_write_barrier(LIR_Opr obj, CodeEmitInfo* info, bool need_null_check);
 272 
 273   // specific implementations
 274   // pre barriers
 275 
 276   void G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
 277                                          bool do_load, bool patch, CodeEmitInfo* info);
 278 
 279   // post barriers
 280 
 281   void G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 282   void CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
 283 #ifdef CARDTABLEMODREF_POST_BARRIER_HELPER
 284   void CardTableModRef_post_barrier_helper(LIR_OprDesc* addr, LIR_Const* card_table_base);
 285 #endif
 286 
 287 
 288   static LIR_Opr result_register_for(ValueType* type, bool callee = false);
 289 
 290   ciObject* get_jobject_constant(Value value);
 291 


< prev index next >