hotspot/src/cpu/ppc/vm/ppc.ad
changeset 22867 309bcf262a19
parent 22865 3b8857d7b3cc
child 22874 9918cae8623d
--- a/hotspot/src/cpu/ppc/vm/ppc.ad	Mon Jan 06 11:02:21 2014 +0100
+++ b/hotspot/src/cpu/ppc/vm/ppc.ad	Tue Jan 07 17:24:59 2014 +0100
@@ -634,7 +634,6 @@
   R31_H, R31
 );
 
-// 64 bit registers used excluding r19.
 // Used to hold the TOC to avoid collisions with expanded DynamicCall
 // which uses r19 as inline cache internally and expanded LeafCall which uses
 // r2, r11 and r12 internally.
@@ -1421,13 +1420,11 @@
 
   // Optimized version for most common case.
   if (UsePower6SchedulerPPC64 &&
-      !method_is_frameless && Assembler::is_simm((int)(-(_abi(lr) + offset)), 16) &&
+      !method_is_frameless && Assembler::is_simm((int)(-offset), 16) &&
       !(false /* ConstantsALot TODO: PPC port*/)) {
     ___(or) mr(callers_sp, R1_SP);
-    ___(addi) addi(R1_SP, R1_SP, -offset);
-    ___stop; // Emulator won't recognize dependency.
-    ___(std) std(return_pc, _abi(lr) + offset, R1_SP);
-    ___(std) std(callers_sp, 0, R1_SP);
+    ___(std) std(return_pc, _abi(lr), R1_SP);
+    ___(stdu) stdu(R1_SP, -offset, R1_SP);
     return;
   }
 
@@ -1472,6 +1469,7 @@
 }
 #undef ___
 #undef ___stop
+#undef ___advance
 
 uint MachPrologNode::size(PhaseRegAlloc *ra_) const {
   // Variable size. determine dynamically.
@@ -2853,7 +2851,7 @@
     // StoreStore barrier conditionally.
     __ lwz(R0, 0, $releaseFieldAddr$$Register);
     __ cmpwi(CCR0, R0, 0);
-    __ beq_predict_taken(CCR0, skip_release);
+    __ beq_predict_taken(CCR0, skip_storestore);
 #endif
     __ li(R0, 0);
     __ membar(Assembler::StoreStore);
@@ -3518,8 +3516,9 @@
 #endif
     // If fails should store backlink before unextending.
 
-    if (ra_->C->env()->failing())
+    if (ra_->C->env()->failing()) {
       return;
+    }
   %}
 
   // Second node of expanded dynamic call - the call.
@@ -3940,11 +3939,6 @@
 // long branch? Not required.
 ins_attrib ins_short_branch(0);
 
-// This instruction does implicit checks at the given machine-instruction offset
-// (optional attribute).
-ins_attrib ins_implicit_check_offset(-1);  // TODO: PPC port
-
-ins_attrib ins_implicit_check_follows_matched_true_path(true);
 ins_attrib ins_is_TrapBasedCheckNode(true);
 
 // Number of constants.