src/cpu/ppc/vm/ppc.ad

changeset 6501
c668f307a4c0
parent 6499
ad3b94907eed
child 6508
c4178a748df9
     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.

mercurial