src/share/vm/c1/c1_LIR.hpp

Print this page




 849 
 850 // LIR operation codes
 851 enum LIR_Code {
 852     lir_none
 853   , begin_op0
 854       , lir_word_align
 855       , lir_label
 856       , lir_nop
 857       , lir_backwardbranch_target
 858       , lir_std_entry
 859       , lir_osr_entry
 860       , lir_build_frame
 861       , lir_fpop_raw
 862       , lir_24bit_FPU
 863       , lir_reset_FPU
 864       , lir_breakpoint
 865       , lir_rtcall
 866       , lir_membar
 867       , lir_membar_acquire
 868       , lir_membar_release




 869       , lir_get_thread
 870   , end_op0
 871   , begin_op1
 872       , lir_fxch
 873       , lir_fld
 874       , lir_ffree
 875       , lir_push
 876       , lir_pop
 877       , lir_null_check
 878       , lir_return
 879       , lir_leal
 880       , lir_neg
 881       , lir_branch
 882       , lir_cond_float_branch
 883       , lir_move
 884       , lir_prefetchr
 885       , lir_prefetchw
 886       , lir_convert
 887       , lir_alloc_object
 888       , lir_monaddr


1901     append(new LIR_OpJavaCall(lir_static_call, method, LIR_OprFact::illegalOpr, result, dest, arguments, info));
1902   }
1903   void call_icvirtual(ciMethod* method, LIR_Opr receiver, LIR_Opr result,
1904                       address dest, LIR_OprList* arguments, CodeEmitInfo* info) {
1905     append(new LIR_OpJavaCall(lir_icvirtual_call, method, receiver, result, dest, arguments, info));
1906   }
1907   void call_virtual(ciMethod* method, LIR_Opr receiver, LIR_Opr result,
1908                     intptr_t vtable_offset, LIR_OprList* arguments, CodeEmitInfo* info) {
1909     append(new LIR_OpJavaCall(lir_virtual_call, method, receiver, result, vtable_offset, arguments, info));
1910   }
1911   void call_dynamic(ciMethod* method, LIR_Opr receiver, LIR_Opr result,
1912                     address dest, LIR_OprList* arguments, CodeEmitInfo* info) {
1913     append(new LIR_OpJavaCall(lir_dynamic_call, method, receiver, result, dest, arguments, info));
1914   }
1915 
1916   void get_thread(LIR_Opr result)                { append(new LIR_Op0(lir_get_thread, result)); }
1917   void word_align()                              { append(new LIR_Op0(lir_word_align)); }
1918   void membar()                                  { append(new LIR_Op0(lir_membar)); }
1919   void membar_acquire()                          { append(new LIR_Op0(lir_membar_acquire)); }
1920   void membar_release()                          { append(new LIR_Op0(lir_membar_release)); }




1921 
1922   void nop()                                     { append(new LIR_Op0(lir_nop)); }
1923   void build_frame()                             { append(new LIR_Op0(lir_build_frame)); }
1924 
1925   void std_entry(LIR_Opr receiver)               { append(new LIR_Op0(lir_std_entry, receiver)); }
1926   void osr_entry(LIR_Opr osrPointer)             { append(new LIR_Op0(lir_osr_entry, osrPointer)); }
1927 
1928   void branch_destination(Label* lbl)            { append(new LIR_OpLabel(lbl)); }
1929 
1930   void negate(LIR_Opr from, LIR_Opr to)          { append(new LIR_Op1(lir_neg, from, to)); }
1931   void leal(LIR_Opr from, LIR_Opr result_reg)    { append(new LIR_Op1(lir_leal, from, result_reg)); }
1932 
1933   // result is a stack location for old backend and vreg for UseLinearScan
1934   // stack_loc_temp is an illegal register for old backend
1935   void roundfp(LIR_Opr reg, LIR_Opr stack_loc_temp, LIR_Opr result) { append(new LIR_OpRoundFP(reg, stack_loc_temp, result)); }
1936   void unaligned_move(LIR_Address* src, LIR_Opr dst) { append(new LIR_Op1(lir_move, LIR_OprFact::address(src), dst, dst->type(), lir_patch_none, NULL, lir_move_unaligned)); }
1937   void unaligned_move(LIR_Opr src, LIR_Address* dst) { append(new LIR_Op1(lir_move, src, LIR_OprFact::address(dst), src->type(), lir_patch_none, NULL, lir_move_unaligned)); }
1938   void unaligned_move(LIR_Opr src, LIR_Opr dst) { append(new LIR_Op1(lir_move, src, dst, dst->type(), lir_patch_none, NULL, lir_move_unaligned)); }
1939   void move(LIR_Opr src, LIR_Opr dst, CodeEmitInfo* info = NULL) { append(new LIR_Op1(lir_move, src, dst, dst->type(), lir_patch_none, info)); }
1940   void move(LIR_Address* src, LIR_Opr dst, CodeEmitInfo* info = NULL) { append(new LIR_Op1(lir_move, LIR_OprFact::address(src), dst, src->type(), lir_patch_none, info)); }




 849 
 850 // LIR operation codes
 851 enum LIR_Code {
 852     lir_none
 853   , begin_op0
 854       , lir_word_align
 855       , lir_label
 856       , lir_nop
 857       , lir_backwardbranch_target
 858       , lir_std_entry
 859       , lir_osr_entry
 860       , lir_build_frame
 861       , lir_fpop_raw
 862       , lir_24bit_FPU
 863       , lir_reset_FPU
 864       , lir_breakpoint
 865       , lir_rtcall
 866       , lir_membar
 867       , lir_membar_acquire
 868       , lir_membar_release
 869       , lir_membar_loadload
 870       , lir_membar_storestore
 871       , lir_membar_loadstore
 872       , lir_membar_storeload
 873       , lir_get_thread
 874   , end_op0
 875   , begin_op1
 876       , lir_fxch
 877       , lir_fld
 878       , lir_ffree
 879       , lir_push
 880       , lir_pop
 881       , lir_null_check
 882       , lir_return
 883       , lir_leal
 884       , lir_neg
 885       , lir_branch
 886       , lir_cond_float_branch
 887       , lir_move
 888       , lir_prefetchr
 889       , lir_prefetchw
 890       , lir_convert
 891       , lir_alloc_object
 892       , lir_monaddr


1905     append(new LIR_OpJavaCall(lir_static_call, method, LIR_OprFact::illegalOpr, result, dest, arguments, info));
1906   }
1907   void call_icvirtual(ciMethod* method, LIR_Opr receiver, LIR_Opr result,
1908                       address dest, LIR_OprList* arguments, CodeEmitInfo* info) {
1909     append(new LIR_OpJavaCall(lir_icvirtual_call, method, receiver, result, dest, arguments, info));
1910   }
1911   void call_virtual(ciMethod* method, LIR_Opr receiver, LIR_Opr result,
1912                     intptr_t vtable_offset, LIR_OprList* arguments, CodeEmitInfo* info) {
1913     append(new LIR_OpJavaCall(lir_virtual_call, method, receiver, result, vtable_offset, arguments, info));
1914   }
1915   void call_dynamic(ciMethod* method, LIR_Opr receiver, LIR_Opr result,
1916                     address dest, LIR_OprList* arguments, CodeEmitInfo* info) {
1917     append(new LIR_OpJavaCall(lir_dynamic_call, method, receiver, result, dest, arguments, info));
1918   }
1919 
1920   void get_thread(LIR_Opr result)                { append(new LIR_Op0(lir_get_thread, result)); }
1921   void word_align()                              { append(new LIR_Op0(lir_word_align)); }
1922   void membar()                                  { append(new LIR_Op0(lir_membar)); }
1923   void membar_acquire()                          { append(new LIR_Op0(lir_membar_acquire)); }
1924   void membar_release()                          { append(new LIR_Op0(lir_membar_release)); }
1925   void membar_loadload()                         { append(new LIR_Op0(lir_membar_loadload)); }
1926   void membar_storestore()                       { append(new LIR_Op0(lir_membar_storestore)); }
1927   void membar_loadstore()                        { append(new LIR_Op0(lir_membar_loadstore)); }
1928   void membar_storeload()                        { append(new LIR_Op0(lir_membar_storeload)); }
1929 
1930   void nop()                                     { append(new LIR_Op0(lir_nop)); }
1931   void build_frame()                             { append(new LIR_Op0(lir_build_frame)); }
1932 
1933   void std_entry(LIR_Opr receiver)               { append(new LIR_Op0(lir_std_entry, receiver)); }
1934   void osr_entry(LIR_Opr osrPointer)             { append(new LIR_Op0(lir_osr_entry, osrPointer)); }
1935 
1936   void branch_destination(Label* lbl)            { append(new LIR_OpLabel(lbl)); }
1937 
1938   void negate(LIR_Opr from, LIR_Opr to)          { append(new LIR_Op1(lir_neg, from, to)); }
1939   void leal(LIR_Opr from, LIR_Opr result_reg)    { append(new LIR_Op1(lir_leal, from, result_reg)); }
1940 
1941   // result is a stack location for old backend and vreg for UseLinearScan
1942   // stack_loc_temp is an illegal register for old backend
1943   void roundfp(LIR_Opr reg, LIR_Opr stack_loc_temp, LIR_Opr result) { append(new LIR_OpRoundFP(reg, stack_loc_temp, result)); }
1944   void unaligned_move(LIR_Address* src, LIR_Opr dst) { append(new LIR_Op1(lir_move, LIR_OprFact::address(src), dst, dst->type(), lir_patch_none, NULL, lir_move_unaligned)); }
1945   void unaligned_move(LIR_Opr src, LIR_Address* dst) { append(new LIR_Op1(lir_move, src, LIR_OprFact::address(dst), src->type(), lir_patch_none, NULL, lir_move_unaligned)); }
1946   void unaligned_move(LIR_Opr src, LIR_Opr dst) { append(new LIR_Op1(lir_move, src, dst, dst->type(), lir_patch_none, NULL, lir_move_unaligned)); }
1947   void move(LIR_Opr src, LIR_Opr dst, CodeEmitInfo* info = NULL) { append(new LIR_Op1(lir_move, src, dst, dst->type(), lir_patch_none, info)); }
1948   void move(LIR_Address* src, LIR_Opr dst, CodeEmitInfo* info = NULL) { append(new LIR_Op1(lir_move, LIR_OprFact::address(src), dst, src->type(), lir_patch_none, info)); }