src/share/vm/c1/c1_LIRAssembler.hpp

Print this page
rev 4136 : 7153771: array bound check elimination for c1
Summary: when possible optimize out array bound checks, inserting predicates when needed.
Reviewed-by:


 193   void emit_op2(LIR_Op2* op);
 194   void emit_op3(LIR_Op3* op);
 195   void emit_opBranch(LIR_OpBranch* op);
 196   void emit_opLabel(LIR_OpLabel* op);
 197   void emit_arraycopy(LIR_OpArrayCopy* op);
 198   void emit_opConvert(LIR_OpConvert* op);
 199   void emit_alloc_obj(LIR_OpAllocObj* op);
 200   void emit_alloc_array(LIR_OpAllocArray* op);
 201   void emit_opTypeCheck(LIR_OpTypeCheck* op);
 202   void emit_typecheck_helper(LIR_OpTypeCheck *op, Label* success, Label* failure, Label* obj_is_null);
 203   void emit_compare_and_swap(LIR_OpCompareAndSwap* op);
 204   void emit_lock(LIR_OpLock* op);
 205   void emit_call(LIR_OpJavaCall* op);
 206   void emit_rtcall(LIR_OpRTCall* op);
 207   void emit_profile_call(LIR_OpProfileCall* op);
 208   void emit_delay(LIR_OpDelay* op);
 209 
 210   void arith_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest, CodeEmitInfo* info, bool pop_fpu_stack);
 211   void arithmetic_idiv(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr temp, LIR_Opr result, CodeEmitInfo* info);
 212   void intrinsic_op(LIR_Code code, LIR_Opr value, LIR_Opr unused, LIR_Opr dest, LIR_Op* op);

 213 
 214   void logic_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest);
 215 
 216   void roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack);
 217   void move_op(LIR_Opr src, LIR_Opr result, BasicType type,
 218                LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool unaligned, bool wide);
 219   void volatile_move_op(LIR_Opr src, LIR_Opr result, BasicType type, CodeEmitInfo* info);
 220   void comp_mem_op(LIR_Opr src, LIR_Opr result, BasicType type, CodeEmitInfo* info);  // info set for null exceptions
 221   void comp_fl2i(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr result, LIR_Op2* op);
 222   void cmove(LIR_Condition code, LIR_Opr left, LIR_Opr right, LIR_Opr result, BasicType type);
 223 
 224   void call(        LIR_OpJavaCall* op, relocInfo::relocType rtype);
 225   void ic_call(     LIR_OpJavaCall* op);
 226   void vtable_call( LIR_OpJavaCall* op);
 227 
 228   void osr_entry();
 229 
 230   void build_frame();
 231 
 232   void throw_op(LIR_Opr exceptionPC, LIR_Opr exceptionOop, CodeEmitInfo* info);




 193   void emit_op2(LIR_Op2* op);
 194   void emit_op3(LIR_Op3* op);
 195   void emit_opBranch(LIR_OpBranch* op);
 196   void emit_opLabel(LIR_OpLabel* op);
 197   void emit_arraycopy(LIR_OpArrayCopy* op);
 198   void emit_opConvert(LIR_OpConvert* op);
 199   void emit_alloc_obj(LIR_OpAllocObj* op);
 200   void emit_alloc_array(LIR_OpAllocArray* op);
 201   void emit_opTypeCheck(LIR_OpTypeCheck* op);
 202   void emit_typecheck_helper(LIR_OpTypeCheck *op, Label* success, Label* failure, Label* obj_is_null);
 203   void emit_compare_and_swap(LIR_OpCompareAndSwap* op);
 204   void emit_lock(LIR_OpLock* op);
 205   void emit_call(LIR_OpJavaCall* op);
 206   void emit_rtcall(LIR_OpRTCall* op);
 207   void emit_profile_call(LIR_OpProfileCall* op);
 208   void emit_delay(LIR_OpDelay* op);
 209 
 210   void arith_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest, CodeEmitInfo* info, bool pop_fpu_stack);
 211   void arithmetic_idiv(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr temp, LIR_Opr result, CodeEmitInfo* info);
 212   void intrinsic_op(LIR_Code code, LIR_Opr value, LIR_Opr unused, LIR_Opr dest, LIR_Op* op);
 213   NOT_PRODUCT(void emit_assert(LIR_OpAssert* op);)
 214 
 215   void logic_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest);
 216 
 217   void roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack);
 218   void move_op(LIR_Opr src, LIR_Opr result, BasicType type,
 219                LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool unaligned, bool wide);
 220   void volatile_move_op(LIR_Opr src, LIR_Opr result, BasicType type, CodeEmitInfo* info);
 221   void comp_mem_op(LIR_Opr src, LIR_Opr result, BasicType type, CodeEmitInfo* info);  // info set for null exceptions
 222   void comp_fl2i(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr result, LIR_Op2* op);
 223   void cmove(LIR_Condition code, LIR_Opr left, LIR_Opr right, LIR_Opr result, BasicType type);
 224 
 225   void call(        LIR_OpJavaCall* op, relocInfo::relocType rtype);
 226   void ic_call(     LIR_OpJavaCall* op);
 227   void vtable_call( LIR_OpJavaCall* op);
 228 
 229   void osr_entry();
 230 
 231   void build_frame();
 232 
 233   void throw_op(LIR_Opr exceptionPC, LIR_Opr exceptionOop, CodeEmitInfo* info);