< prev index next > src/hotspot/cpu/ppc/ppc.ad
Print this page
// _complete_monitor_unlocking_Java for the case where crx is 'NE'.
%}
ins_pipe(pipe_class_compare);
%}
- instruct cmpFastLockLightweight(flagsRegCR0 crx, iRegPdst oop, iRegPdst box, iRegPdst tmp1, iRegPdst tmp2, flagsRegCR1 cr1) %{
- predicate(LockingMode == LM_LIGHTWEIGHT);
+ instruct cmpFastLockLightweight(flagsRegCR0 crx, iRegPdst oop, iRegPdst box, iRegPdst tmp1, iRegPdst tmp2) %{
+ predicate(LockingMode == LM_LIGHTWEIGHT && !UseObjectMonitorTable);
match(Set crx (FastLock oop box));
- effect(TEMP tmp1, TEMP tmp2, KILL cr1);
+ effect(TEMP tmp1, TEMP tmp2);
format %{ "FASTLOCK $oop, $box, $tmp1, $tmp2" %}
ins_encode %{
__ fast_lock_lightweight($crx$$CondRegister, $oop$$Register, $box$$Register,
- $tmp1$$Register, $tmp2$$Register, /*tmp3*/ R0);
+ $tmp1$$Register, $tmp2$$Register, noreg /*tmp3*/);
+ // If locking was successful, crx should indicate 'EQ'.
+ // The compiler generates a branch to the runtime call to
+ // _complete_monitor_locking_Java for the case where crx is 'NE'.
+ %}
+ ins_pipe(pipe_class_compare);
+ %}
+
+ instruct cmpFastLockMonitorTable(flagsRegCR0 crx, iRegPdst oop, iRegPdst box, iRegPdst tmp1, iRegPdst tmp2, iRegPdst tmp3, flagsRegCR1 cr1) %{
+ predicate(LockingMode == LM_LIGHTWEIGHT && UseObjectMonitorTable);
+ match(Set crx (FastLock oop box));
+ effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, KILL cr1);
+
+ format %{ "FASTLOCK $oop, $box, $tmp1, $tmp2, $tmp3" %}
+ ins_encode %{
+ __ fast_lock_lightweight($crx$$CondRegister, $oop$$Register, $box$$Register,
+ $tmp1$$Register, $tmp2$$Register, $tmp3$$Register);
// If locking was successful, crx should indicate 'EQ'.
// The compiler generates a branch to the runtime call to
// _complete_monitor_locking_Java for the case where crx is 'NE'.
%}
ins_pipe(pipe_class_compare);
< prev index next >