< prev index next >

src/hotspot/cpu/ppc/ppc.ad

Print this page
@@ -12091,19 +12091,35 @@
      // _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 >