< prev index next >

src/hotspot/cpu/arm/arm.ad

Print this page
rev 52777 : 8214512: ARM32: Jtreg test compiler/c2/Test8062950.java fails on ARM
Summary: fix assertion failures with -XX:-OptoBiasInlining
Reviewed-by: duke
Contributed-by: nick.gasson@arm.com

*** 8943,8963 **** // inlined locking and unlocking instruct cmpFastLock(flagsRegP pcc, iRegP object, iRegP box, iRegP scratch2, iRegP scratch ) %{ match(Set pcc (FastLock object box)); effect(TEMP scratch, TEMP scratch2); ! ins_cost(100); format %{ "FASTLOCK $object, $box; KILL $scratch, $scratch2" %} ins_encode %{ __ fast_lock($object$$Register, $box$$Register, $scratch$$Register, $scratch2$$Register); %} ins_pipe(long_memory_op); %} instruct cmpFastUnlock(flagsRegP pcc, iRegP object, iRegP box, iRegP scratch2, iRegP scratch ) %{ match(Set pcc (FastUnlock object box)); effect(TEMP scratch, TEMP scratch2); ins_cost(100); --- 8943,8979 ---- // inlined locking and unlocking instruct cmpFastLock(flagsRegP pcc, iRegP object, iRegP box, iRegP scratch2, iRegP scratch ) %{ match(Set pcc (FastLock object box)); + predicate(!(UseBiasedLocking && !UseOptoBiasInlining)); effect(TEMP scratch, TEMP scratch2); ! ins_cost(DEFAULT_COST*3); format %{ "FASTLOCK $object, $box; KILL $scratch, $scratch2" %} ins_encode %{ __ fast_lock($object$$Register, $box$$Register, $scratch$$Register, $scratch2$$Register); %} ins_pipe(long_memory_op); %} + instruct cmpFastLock_noBiasInline(flagsRegP pcc, iRegP object, iRegP box, iRegP scratch2, + iRegP scratch, iRegP scratch3) %{ + match(Set pcc (FastLock object box)); + predicate(UseBiasedLocking && !UseOptoBiasInlining); + + effect(TEMP scratch, TEMP scratch2, TEMP scratch3); + ins_cost(DEFAULT_COST*5); + + format %{ "FASTLOCK $object, $box; KILL $scratch, $scratch2, $scratch3" %} + ins_encode %{ + __ fast_lock($object$$Register, $box$$Register, $scratch$$Register, $scratch2$$Register, $scratch3$$Register); + %} + ins_pipe(long_memory_op); + %} + instruct cmpFastUnlock(flagsRegP pcc, iRegP object, iRegP box, iRegP scratch2, iRegP scratch ) %{ match(Set pcc (FastUnlock object box)); effect(TEMP scratch, TEMP scratch2); ins_cost(100);
< prev index next >