< prev index next >

src/hotspot/share/c1/c1_LIR.hpp

Print this page




 871 class    LIR_OpTypeCheck;
 872 class    LIR_OpCompareAndSwap;
 873 class    LIR_OpProfileCall;
 874 class    LIR_OpProfileType;
 875 #ifdef ASSERT
 876 class    LIR_OpAssert;
 877 #endif
 878 
 879 // LIR operation codes
 880 enum LIR_Code {
 881     lir_none
 882   , begin_op0
 883       , lir_word_align
 884       , lir_label
 885       , lir_nop
 886       , lir_backwardbranch_target
 887       , lir_std_entry
 888       , lir_osr_entry
 889       , lir_build_frame
 890       , lir_fpop_raw
 891       , lir_24bit_FPU
 892       , lir_reset_FPU
 893       , lir_breakpoint
 894       , lir_rtcall
 895       , lir_membar
 896       , lir_membar_acquire
 897       , lir_membar_release
 898       , lir_membar_loadload
 899       , lir_membar_storestore
 900       , lir_membar_loadstore
 901       , lir_membar_storeload
 902       , lir_get_thread
 903       , lir_on_spin_wait
 904   , end_op0
 905   , begin_op1
 906       , lir_fxch
 907       , lir_fld
 908       , lir_ffree
 909       , lir_push
 910       , lir_pop
 911       , lir_null_check
 912       , lir_return
 913       , lir_leal
 914       , lir_branch
 915       , lir_cond_float_branch
 916       , lir_move
 917       , lir_convert
 918       , lir_alloc_object
 919       , lir_monaddr
 920       , lir_roundfp
 921       , lir_safepoint
 922       , lir_pack64
 923       , lir_unpack64
 924       , lir_unwind
 925   , end_op1
 926   , begin_op2
 927       , lir_cmp
 928       , lir_cmp_l2i


2215   void shift_left(LIR_Opr value, int count, LIR_Opr dst)       { shift_left(value, LIR_OprFact::intConst(count), dst, LIR_OprFact::illegalOpr); }
2216   void shift_right(LIR_Opr value, int count, LIR_Opr dst)      { shift_right(value, LIR_OprFact::intConst(count), dst, LIR_OprFact::illegalOpr); }
2217   void unsigned_shift_right(LIR_Opr value, int count, LIR_Opr dst) { unsigned_shift_right(value, LIR_OprFact::intConst(count), dst, LIR_OprFact::illegalOpr); }
2218 
2219   void lcmp2int(LIR_Opr left, LIR_Opr right, LIR_Opr dst)        { append(new LIR_Op2(lir_cmp_l2i,  left, right, dst)); }
2220   void fcmp2int(LIR_Opr left, LIR_Opr right, LIR_Opr dst, bool is_unordered_less);
2221 
2222   void call_runtime_leaf(address routine, LIR_Opr tmp, LIR_Opr result, LIR_OprList* arguments) {
2223     append(new LIR_OpRTCall(routine, tmp, result, arguments));
2224   }
2225 
2226   void call_runtime(address routine, LIR_Opr tmp, LIR_Opr result,
2227                     LIR_OprList* arguments, CodeEmitInfo* info) {
2228     append(new LIR_OpRTCall(routine, tmp, result, arguments, info));
2229   }
2230 
2231   void load_stack_address_monitor(int monitor_ix, LIR_Opr dst)  { append(new LIR_Op1(lir_monaddr, LIR_OprFact::intConst(monitor_ix), dst)); }
2232   void unlock_object(LIR_Opr hdr, LIR_Opr obj, LIR_Opr lock, LIR_Opr scratch, CodeStub* stub);
2233   void lock_object(LIR_Opr hdr, LIR_Opr obj, LIR_Opr lock, LIR_Opr scratch, CodeStub* stub, CodeEmitInfo* info);
2234 
2235   void set_24bit_fpu()                                               { append(new LIR_Op0(lir_24bit_FPU )); }
2236   void restore_fpu()                                                 { append(new LIR_Op0(lir_reset_FPU )); }
2237   void breakpoint()                                                  { append(new LIR_Op0(lir_breakpoint)); }
2238 
2239   void arraycopy(LIR_Opr src, LIR_Opr src_pos, LIR_Opr dst, LIR_Opr dst_pos, LIR_Opr length, LIR_Opr tmp, ciArrayKlass* expected_type, int flags, CodeEmitInfo* info) { append(new LIR_OpArrayCopy(src, src_pos, dst, dst_pos, length, tmp, expected_type, flags, info)); }
2240 
2241   void update_crc32(LIR_Opr crc, LIR_Opr val, LIR_Opr res)  { append(new LIR_OpUpdateCRC32(crc, val, res)); }
2242 
2243   void fpop_raw()                                { append(new LIR_Op0(lir_fpop_raw)); }
2244 
2245   void instanceof(LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check, CodeEmitInfo* info_for_patch, ciMethod* profiled_method, int profiled_bci);
2246   void store_check(LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception, ciMethod* profiled_method, int profiled_bci);
2247 
2248   void checkcast (LIR_Opr result, LIR_Opr object, ciKlass* klass,
2249                   LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check,
2250                   CodeEmitInfo* info_for_exception, CodeEmitInfo* info_for_patch, CodeStub* stub,
2251                   ciMethod* profiled_method, int profiled_bci);
2252   // MethodData* profiling
2253   void profile_call(ciMethod* method, int bci, ciMethod* callee, LIR_Opr mdo, LIR_Opr recv, LIR_Opr t1, ciKlass* cha_klass) {
2254     append(new LIR_OpProfileCall(method, bci, callee, mdo, recv, t1, cha_klass));
2255   }
2256   void profile_type(LIR_Address* mdp, LIR_Opr obj, ciKlass* exact_klass, intptr_t current_klass, LIR_Opr tmp, bool not_null, bool no_conflict) {




 871 class    LIR_OpTypeCheck;
 872 class    LIR_OpCompareAndSwap;
 873 class    LIR_OpProfileCall;
 874 class    LIR_OpProfileType;
 875 #ifdef ASSERT
 876 class    LIR_OpAssert;
 877 #endif
 878 
 879 // LIR operation codes
 880 enum LIR_Code {
 881     lir_none
 882   , begin_op0
 883       , lir_word_align
 884       , lir_label
 885       , lir_nop
 886       , lir_backwardbranch_target
 887       , lir_std_entry
 888       , lir_osr_entry
 889       , lir_build_frame
 890       , lir_fpop_raw


 891       , lir_breakpoint
 892       , lir_rtcall
 893       , lir_membar
 894       , lir_membar_acquire
 895       , lir_membar_release
 896       , lir_membar_loadload
 897       , lir_membar_storestore
 898       , lir_membar_loadstore
 899       , lir_membar_storeload
 900       , lir_get_thread
 901       , lir_on_spin_wait
 902   , end_op0
 903   , begin_op1
 904       , lir_fxch
 905       , lir_fld

 906       , lir_push
 907       , lir_pop
 908       , lir_null_check
 909       , lir_return
 910       , lir_leal
 911       , lir_branch
 912       , lir_cond_float_branch
 913       , lir_move
 914       , lir_convert
 915       , lir_alloc_object
 916       , lir_monaddr
 917       , lir_roundfp
 918       , lir_safepoint
 919       , lir_pack64
 920       , lir_unpack64
 921       , lir_unwind
 922   , end_op1
 923   , begin_op2
 924       , lir_cmp
 925       , lir_cmp_l2i


2212   void shift_left(LIR_Opr value, int count, LIR_Opr dst)       { shift_left(value, LIR_OprFact::intConst(count), dst, LIR_OprFact::illegalOpr); }
2213   void shift_right(LIR_Opr value, int count, LIR_Opr dst)      { shift_right(value, LIR_OprFact::intConst(count), dst, LIR_OprFact::illegalOpr); }
2214   void unsigned_shift_right(LIR_Opr value, int count, LIR_Opr dst) { unsigned_shift_right(value, LIR_OprFact::intConst(count), dst, LIR_OprFact::illegalOpr); }
2215 
2216   void lcmp2int(LIR_Opr left, LIR_Opr right, LIR_Opr dst)        { append(new LIR_Op2(lir_cmp_l2i,  left, right, dst)); }
2217   void fcmp2int(LIR_Opr left, LIR_Opr right, LIR_Opr dst, bool is_unordered_less);
2218 
2219   void call_runtime_leaf(address routine, LIR_Opr tmp, LIR_Opr result, LIR_OprList* arguments) {
2220     append(new LIR_OpRTCall(routine, tmp, result, arguments));
2221   }
2222 
2223   void call_runtime(address routine, LIR_Opr tmp, LIR_Opr result,
2224                     LIR_OprList* arguments, CodeEmitInfo* info) {
2225     append(new LIR_OpRTCall(routine, tmp, result, arguments, info));
2226   }
2227 
2228   void load_stack_address_monitor(int monitor_ix, LIR_Opr dst)  { append(new LIR_Op1(lir_monaddr, LIR_OprFact::intConst(monitor_ix), dst)); }
2229   void unlock_object(LIR_Opr hdr, LIR_Opr obj, LIR_Opr lock, LIR_Opr scratch, CodeStub* stub);
2230   void lock_object(LIR_Opr hdr, LIR_Opr obj, LIR_Opr lock, LIR_Opr scratch, CodeStub* stub, CodeEmitInfo* info);
2231 


2232   void breakpoint()                                                  { append(new LIR_Op0(lir_breakpoint)); }
2233 
2234   void arraycopy(LIR_Opr src, LIR_Opr src_pos, LIR_Opr dst, LIR_Opr dst_pos, LIR_Opr length, LIR_Opr tmp, ciArrayKlass* expected_type, int flags, CodeEmitInfo* info) { append(new LIR_OpArrayCopy(src, src_pos, dst, dst_pos, length, tmp, expected_type, flags, info)); }
2235 
2236   void update_crc32(LIR_Opr crc, LIR_Opr val, LIR_Opr res)  { append(new LIR_OpUpdateCRC32(crc, val, res)); }
2237 
2238   void fpop_raw()                                { append(new LIR_Op0(lir_fpop_raw)); }
2239 
2240   void instanceof(LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check, CodeEmitInfo* info_for_patch, ciMethod* profiled_method, int profiled_bci);
2241   void store_check(LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception, ciMethod* profiled_method, int profiled_bci);
2242 
2243   void checkcast (LIR_Opr result, LIR_Opr object, ciKlass* klass,
2244                   LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check,
2245                   CodeEmitInfo* info_for_exception, CodeEmitInfo* info_for_patch, CodeStub* stub,
2246                   ciMethod* profiled_method, int profiled_bci);
2247   // MethodData* profiling
2248   void profile_call(ciMethod* method, int bci, ciMethod* callee, LIR_Opr mdo, LIR_Opr recv, LIR_Opr t1, ciKlass* cha_klass) {
2249     append(new LIR_OpProfileCall(method, bci, callee, mdo, recv, t1, cha_klass));
2250   }
2251   void profile_type(LIR_Address* mdp, LIR_Opr obj, ciKlass* exact_klass, intptr_t current_klass, LIR_Opr tmp, bool not_null, bool no_conflict) {


< prev index next >