hotspot/src/share/vm/c1/c1_LIRGenerator.hpp
changeset 6176 4d9030fe341f
parent 5547 f4b087cbb361
child 6453 970dc585ab63
equal deleted inserted replaced
6175:86dbf3cacacc 6176:4d9030fe341f
   312   void shift_op   (Bytecodes::Code code, LIR_Opr dst_reg, LIR_Opr value, LIR_Opr count, LIR_Opr tmp);
   312   void shift_op   (Bytecodes::Code code, LIR_Opr dst_reg, LIR_Opr value, LIR_Opr count, LIR_Opr tmp);
   313 
   313 
   314   void logic_op   (Bytecodes::Code code, LIR_Opr dst_reg, LIR_Opr left, LIR_Opr right);
   314   void logic_op   (Bytecodes::Code code, LIR_Opr dst_reg, LIR_Opr left, LIR_Opr right);
   315 
   315 
   316   void monitor_enter (LIR_Opr object, LIR_Opr lock, LIR_Opr hdr, LIR_Opr scratch, int monitor_no, CodeEmitInfo* info_for_exception, CodeEmitInfo* info);
   316   void monitor_enter (LIR_Opr object, LIR_Opr lock, LIR_Opr hdr, LIR_Opr scratch, int monitor_no, CodeEmitInfo* info_for_exception, CodeEmitInfo* info);
   317   void monitor_exit  (LIR_Opr object, LIR_Opr lock, LIR_Opr hdr, int monitor_no);
   317   void monitor_exit  (LIR_Opr object, LIR_Opr lock, LIR_Opr hdr, LIR_Opr scratch, int monitor_no);
   318 
   318 
   319   void new_instance    (LIR_Opr  dst, ciInstanceKlass* klass, LIR_Opr  scratch1, LIR_Opr  scratch2, LIR_Opr  scratch3,  LIR_Opr scratch4, LIR_Opr  klass_reg, CodeEmitInfo* info);
   319   void new_instance    (LIR_Opr  dst, ciInstanceKlass* klass, LIR_Opr  scratch1, LIR_Opr  scratch2, LIR_Opr  scratch3,  LIR_Opr scratch4, LIR_Opr  klass_reg, CodeEmitInfo* info);
   320 
   320 
   321   // machine dependent
   321   // machine dependent
   322   void cmp_mem_int(LIR_Condition condition, LIR_Opr base, int disp, int c, CodeEmitInfo* info);
   322   void cmp_mem_int(LIR_Condition condition, LIR_Opr base, int disp, int c, CodeEmitInfo* info);
   335                                 BasicType type);
   335                                 BasicType type);
   336   LIR_Address* generate_address(LIR_Opr base, int disp, BasicType type) {
   336   LIR_Address* generate_address(LIR_Opr base, int disp, BasicType type) {
   337     return generate_address(base, LIR_OprFact::illegalOpr, 0, disp, type);
   337     return generate_address(base, LIR_OprFact::illegalOpr, 0, disp, type);
   338   }
   338   }
   339   LIR_Address* emit_array_address(LIR_Opr array_opr, LIR_Opr index_opr, BasicType type, bool needs_card_mark);
   339   LIR_Address* emit_array_address(LIR_Opr array_opr, LIR_Opr index_opr, BasicType type, bool needs_card_mark);
       
   340 
       
   341   // the helper for generate_address
       
   342   void add_large_constant(LIR_Opr src, int c, LIR_Opr dest);
   340 
   343 
   341   // machine preferences and characteristics
   344   // machine preferences and characteristics
   342   bool can_inline_as_constant(Value i) const;
   345   bool can_inline_as_constant(Value i) const;
   343   bool can_inline_as_constant(LIR_Const* c) const;
   346   bool can_inline_as_constant(LIR_Const* c) const;
   344   bool can_store_as_constant(Value i, BasicType type) const;
   347   bool can_store_as_constant(Value i, BasicType type) const;
   391     case If::gtr: l = lir_cond_greater;      break;
   394     case If::gtr: l = lir_cond_greater;      break;
   392     };
   395     };
   393     return l;
   396     return l;
   394   }
   397   }
   395 
   398 
       
   399 #ifdef __SOFTFP__
       
   400   void do_soft_float_compare(If *x);
       
   401 #endif // __SOFTFP__
       
   402 
   396   void init();
   403   void init();
   397 
   404 
   398   SwitchRangeArray* create_lookup_ranges(TableSwitch* x);
   405   SwitchRangeArray* create_lookup_ranges(TableSwitch* x);
   399   SwitchRangeArray* create_lookup_ranges(LookupSwitch* x);
   406   SwitchRangeArray* create_lookup_ranges(LookupSwitch* x);
   400   void do_SwitchRanges(SwitchRangeArray* x, LIR_Opr value, BlockBegin* default_sux);
   407   void do_SwitchRanges(SwitchRangeArray* x, LIR_Opr value, BlockBegin* default_sux);
   442   static LIR_Opr divInOpr();
   449   static LIR_Opr divInOpr();
   443   static LIR_Opr divOutOpr();
   450   static LIR_Opr divOutOpr();
   444   static LIR_Opr remOutOpr();
   451   static LIR_Opr remOutOpr();
   445   static LIR_Opr shiftCountOpr();
   452   static LIR_Opr shiftCountOpr();
   446   LIR_Opr syncTempOpr();
   453   LIR_Opr syncTempOpr();
       
   454   LIR_Opr atomicLockOpr();
   447 
   455 
   448   // returns a register suitable for saving the thread in a
   456   // returns a register suitable for saving the thread in a
   449   // call_runtime_leaf if one is needed.
   457   // call_runtime_leaf if one is needed.
   450   LIR_Opr getThreadTemp();
   458   LIR_Opr getThreadTemp();
   451 
   459