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 |