65 bool bailed_out() const { return compilation()->bailed_out(); }
66
67 // code emission patterns and accessors
68 void check_codespace();
69 bool needs_icache(ciMethod* method) const;
70
71 // returns offset of icache check
72 int check_icache();
73
74 void jobject2reg(jobject o, Register reg);
75 void jobject2reg_with_patching(Register reg, CodeEmitInfo* info);
76
77 void emit_stubs(CodeStubList* stub_list);
78
79 // addresses
80 Address as_Address(LIR_Address* addr);
81 Address as_Address_lo(LIR_Address* addr);
82 Address as_Address_hi(LIR_Address* addr);
83
84 // debug information
85 void add_call_info(int pc_offset, CodeEmitInfo* cinfo, bool is_method_handle_invoke = false);
86 void add_debug_info_for_branch(CodeEmitInfo* info);
87 void add_debug_info_for_div0(int pc_offset, CodeEmitInfo* cinfo);
88 void add_debug_info_for_div0_here(CodeEmitInfo* info);
89 void add_debug_info_for_null_check(int pc_offset, CodeEmitInfo* cinfo);
90 void add_debug_info_for_null_check_here(CodeEmitInfo* info);
91
92 void set_24bit_FPU();
93 void reset_FPU();
94 void fpop();
95 void fxch(int i);
96 void fld(int i);
97 void ffree(int i);
98
99 void breakpoint();
100 void push(LIR_Opr opr);
101 void pop(LIR_Opr opr);
102
103 // patching
104 void append_patching_stub(PatchingStub* stub);
105 void patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info);
192 void emit_delay(LIR_OpDelay* op);
193
194 void arith_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest, CodeEmitInfo* info, bool pop_fpu_stack);
195 void arithmetic_idiv(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr temp, LIR_Opr result, CodeEmitInfo* info);
196 void intrinsic_op(LIR_Code code, LIR_Opr value, LIR_Opr unused, LIR_Opr dest, LIR_Op* op);
197
198 void logic_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest);
199
200 void roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack);
201 void move_op(LIR_Opr src, LIR_Opr result, BasicType type,
202 LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool unaligned);
203 void volatile_move_op(LIR_Opr src, LIR_Opr result, BasicType type, CodeEmitInfo* info);
204 void comp_mem_op(LIR_Opr src, LIR_Opr result, BasicType type, CodeEmitInfo* info); // info set for null exceptions
205 void comp_fl2i(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr result, LIR_Op2* op);
206 void cmove(LIR_Condition code, LIR_Opr left, LIR_Opr right, LIR_Opr result);
207
208 void call( LIR_OpJavaCall* op, relocInfo::relocType rtype);
209 void ic_call( LIR_OpJavaCall* op);
210 void vtable_call( LIR_OpJavaCall* op);
211
212 // JSR 292
213 void preserve_SP(LIR_OpJavaCall* op);
214 void restore_SP( LIR_OpJavaCall* op);
215
216 void osr_entry();
217
218 void build_frame();
219
220 void throw_op(LIR_Opr exceptionPC, LIR_Opr exceptionOop, CodeEmitInfo* info, bool unwind);
221 void monitor_address(int monitor_ix, LIR_Opr dst);
222
223 void align_backward_branch_target();
224 void align_call(LIR_Code code);
225
226 void negate(LIR_Opr left, LIR_Opr dest);
227 void leal(LIR_Opr left, LIR_Opr dest);
228
229 void rt_call(LIR_Opr result, address dest, const LIR_OprList* args, LIR_Opr tmp, CodeEmitInfo* info);
230
231 void membar();
232 void membar_acquire();
233 void membar_release();
234 void get_thread(LIR_Opr result);
235
|
65 bool bailed_out() const { return compilation()->bailed_out(); }
66
67 // code emission patterns and accessors
68 void check_codespace();
69 bool needs_icache(ciMethod* method) const;
70
71 // returns offset of icache check
72 int check_icache();
73
74 void jobject2reg(jobject o, Register reg);
75 void jobject2reg_with_patching(Register reg, CodeEmitInfo* info);
76
77 void emit_stubs(CodeStubList* stub_list);
78
79 // addresses
80 Address as_Address(LIR_Address* addr);
81 Address as_Address_lo(LIR_Address* addr);
82 Address as_Address_hi(LIR_Address* addr);
83
84 // debug information
85 void add_call_info(int pc_offset, CodeEmitInfo* cinfo);
86 void add_debug_info_for_branch(CodeEmitInfo* info);
87 void add_debug_info_for_div0(int pc_offset, CodeEmitInfo* cinfo);
88 void add_debug_info_for_div0_here(CodeEmitInfo* info);
89 void add_debug_info_for_null_check(int pc_offset, CodeEmitInfo* cinfo);
90 void add_debug_info_for_null_check_here(CodeEmitInfo* info);
91
92 void set_24bit_FPU();
93 void reset_FPU();
94 void fpop();
95 void fxch(int i);
96 void fld(int i);
97 void ffree(int i);
98
99 void breakpoint();
100 void push(LIR_Opr opr);
101 void pop(LIR_Opr opr);
102
103 // patching
104 void append_patching_stub(PatchingStub* stub);
105 void patching_epilog(PatchingStub* patch, LIR_PatchCode patch_code, Register obj, CodeEmitInfo* info);
192 void emit_delay(LIR_OpDelay* op);
193
194 void arith_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest, CodeEmitInfo* info, bool pop_fpu_stack);
195 void arithmetic_idiv(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr temp, LIR_Opr result, CodeEmitInfo* info);
196 void intrinsic_op(LIR_Code code, LIR_Opr value, LIR_Opr unused, LIR_Opr dest, LIR_Op* op);
197
198 void logic_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest);
199
200 void roundfp_op(LIR_Opr src, LIR_Opr tmp, LIR_Opr dest, bool pop_fpu_stack);
201 void move_op(LIR_Opr src, LIR_Opr result, BasicType type,
202 LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, bool unaligned);
203 void volatile_move_op(LIR_Opr src, LIR_Opr result, BasicType type, CodeEmitInfo* info);
204 void comp_mem_op(LIR_Opr src, LIR_Opr result, BasicType type, CodeEmitInfo* info); // info set for null exceptions
205 void comp_fl2i(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr result, LIR_Op2* op);
206 void cmove(LIR_Condition code, LIR_Opr left, LIR_Opr right, LIR_Opr result);
207
208 void call( LIR_OpJavaCall* op, relocInfo::relocType rtype);
209 void ic_call( LIR_OpJavaCall* op);
210 void vtable_call( LIR_OpJavaCall* op);
211
212 void osr_entry();
213
214 void build_frame();
215
216 void throw_op(LIR_Opr exceptionPC, LIR_Opr exceptionOop, CodeEmitInfo* info, bool unwind);
217 void monitor_address(int monitor_ix, LIR_Opr dst);
218
219 void align_backward_branch_target();
220 void align_call(LIR_Code code);
221
222 void negate(LIR_Opr left, LIR_Opr dest);
223 void leal(LIR_Opr left, LIR_Opr dest);
224
225 void rt_call(LIR_Opr result, address dest, const LIR_OprList* args, LIR_Opr tmp, CodeEmitInfo* info);
226
227 void membar();
228 void membar_acquire();
229 void membar_release();
230 void get_thread(LIR_Opr result);
231
|