1.1 --- a/src/cpu/ppc/vm/ppc.ad Mon Jan 06 11:02:21 2014 +0100 1.2 +++ b/src/cpu/ppc/vm/ppc.ad Tue Jan 07 17:24:59 2014 +0100 1.3 @@ -634,7 +634,6 @@ 1.4 R31_H, R31 1.5 ); 1.6 1.7 -// 64 bit registers used excluding r19. 1.8 // Used to hold the TOC to avoid collisions with expanded DynamicCall 1.9 // which uses r19 as inline cache internally and expanded LeafCall which uses 1.10 // r2, r11 and r12 internally. 1.11 @@ -1421,13 +1420,11 @@ 1.12 1.13 // Optimized version for most common case. 1.14 if (UsePower6SchedulerPPC64 && 1.15 - !method_is_frameless && Assembler::is_simm((int)(-(_abi(lr) + offset)), 16) && 1.16 + !method_is_frameless && Assembler::is_simm((int)(-offset), 16) && 1.17 !(false /* ConstantsALot TODO: PPC port*/)) { 1.18 ___(or) mr(callers_sp, R1_SP); 1.19 - ___(addi) addi(R1_SP, R1_SP, -offset); 1.20 - ___stop; // Emulator won't recognize dependency. 1.21 - ___(std) std(return_pc, _abi(lr) + offset, R1_SP); 1.22 - ___(std) std(callers_sp, 0, R1_SP); 1.23 + ___(std) std(return_pc, _abi(lr), R1_SP); 1.24 + ___(stdu) stdu(R1_SP, -offset, R1_SP); 1.25 return; 1.26 } 1.27 1.28 @@ -1472,6 +1469,7 @@ 1.29 } 1.30 #undef ___ 1.31 #undef ___stop 1.32 +#undef ___advance 1.33 1.34 uint MachPrologNode::size(PhaseRegAlloc *ra_) const { 1.35 // Variable size. determine dynamically. 1.36 @@ -2853,7 +2851,7 @@ 1.37 // StoreStore barrier conditionally. 1.38 __ lwz(R0, 0, $releaseFieldAddr$$Register); 1.39 __ cmpwi(CCR0, R0, 0); 1.40 - __ beq_predict_taken(CCR0, skip_release); 1.41 + __ beq_predict_taken(CCR0, skip_storestore); 1.42 #endif 1.43 __ li(R0, 0); 1.44 __ membar(Assembler::StoreStore); 1.45 @@ -3518,8 +3516,9 @@ 1.46 #endif 1.47 // If fails should store backlink before unextending. 1.48 1.49 - if (ra_->C->env()->failing()) 1.50 + if (ra_->C->env()->failing()) { 1.51 return; 1.52 + } 1.53 %} 1.54 1.55 // Second node of expanded dynamic call - the call. 1.56 @@ -3940,11 +3939,6 @@ 1.57 // long branch? Not required. 1.58 ins_attrib ins_short_branch(0); 1.59 1.60 -// This instruction does implicit checks at the given machine-instruction offset 1.61 -// (optional attribute). 1.62 -ins_attrib ins_implicit_check_offset(-1); // TODO: PPC port 1.63 - 1.64 -ins_attrib ins_implicit_check_follows_matched_true_path(true); 1.65 ins_attrib ins_is_TrapBasedCheckNode(true); 1.66 1.67 // Number of constants.