< prev index next > src/hotspot/cpu/x86/x86_32.ad
Print this page
C2_MacroAssembler _masm(&cbuf);
int framesize = C->output()->frame_size_in_bytes();
int bangsize = C->output()->bang_size_in_bytes();
- __ verified_entry(framesize, C->output()->need_stack_bang(bangsize)?bangsize:0, C->in_24_bit_fp_mode(), C->stub_function() != NULL);
+ int max_monitors = C->method() != NULL ? C->max_monitors() : 0;
+ __ verified_entry(framesize, C->output()->need_stack_bang(bangsize)?bangsize:0, C->in_24_bit_fp_mode(), C->stub_function() != NULL, max_monitors);
C->output()->set_frame_complete(cbuf.insts_size());
if (C->has_mach_constant_base_node()) {
// NOTE: We set the table base offset here because users might be
ins_pipe( pipe_jmp );
%}
// inlined locking and unlocking
- instruct cmpFastLockRTM(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eDXRegI scr, rRegI cx1, rRegI cx2) %{
+ instruct cmpFastLockRTM(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eDXRegI scr, rRegI cx1, rRegI cx2, eRegP thread) %{
predicate(Compile::current()->use_rtm());
match(Set cr (FastLock object box));
- effect(TEMP tmp, TEMP scr, TEMP cx1, TEMP cx2, USE_KILL box);
+ effect(TEMP tmp, TEMP scr, TEMP cx1, TEMP cx2, USE_KILL box, TEMP thread);
ins_cost(300);
format %{ "FASTLOCK $object,$box\t! kills $box,$tmp,$scr,$cx1,$cx2" %}
ins_encode %{
+ __ get_thread($thread$$Register);
__ fast_lock($object$$Register, $box$$Register, $tmp$$Register,
- $scr$$Register, $cx1$$Register, $cx2$$Register,
+ $scr$$Register, $cx1$$Register, $cx2$$Register, $thread$$Register,
_rtm_counters, _stack_rtm_counters,
((Method*)(ra_->C->method()->constant_encoding()))->method_data(),
true, ra_->C->profile_rtm());
%}
ins_pipe(pipe_slow);
%}
- instruct cmpFastLock(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eRegP scr) %{
+ instruct cmpFastLock(eFlagsReg cr, eRegP object, eBXRegP box, eAXRegI tmp, eRegP scr, eRegP thread) %{
predicate(!Compile::current()->use_rtm());
match(Set cr (FastLock object box));
- effect(TEMP tmp, TEMP scr, USE_KILL box);
+ effect(TEMP tmp, TEMP scr, USE_KILL box, TEMP thread);
ins_cost(300);
format %{ "FASTLOCK $object,$box\t! kills $box,$tmp,$scr" %}
ins_encode %{
+ __ get_thread($thread$$Register);
__ fast_lock($object$$Register, $box$$Register, $tmp$$Register,
- $scr$$Register, noreg, noreg, NULL, NULL, NULL, false, false);
+ $scr$$Register, noreg, noreg, $thread$$Register, NULL, NULL, NULL, false, false);
%}
ins_pipe(pipe_slow);
%}
instruct cmpFastUnlock(eFlagsReg cr, eRegP object, eAXRegP box, eRegP tmp ) %{
< prev index next >