Merge

Sat, 12 Oct 2013 01:29:27 +0000

author
adlertz
date
Sat, 12 Oct 2013 01:29:27 +0000
changeset 5918
dd2cf1d1248b
parent 5915
8b80b262e501
parent 5917
2348b2726e1d
child 5920
ed2c74787eb5

Merge

     1.1 --- a/src/share/vm/opto/chaitin.hpp	Fri Oct 11 10:14:02 2013 -0700
     1.2 +++ b/src/share/vm/opto/chaitin.hpp	Sat Oct 12 01:29:27 2013 +0000
     1.3 @@ -52,6 +52,7 @@
     1.4  class LRG : public ResourceObj {
     1.5    friend class VMStructs;
     1.6  public:
     1.7 +  static const uint AllStack_size = 0xFFFFF; // This mask size is used to tell that the mask of this LRG supports stack positions
     1.8    enum { SPILL_REG=29999 };     // Register number of a spilled LRG
     1.9  
    1.10    double _cost;                 // 2 for loads/1 for stores times block freq
    1.11 @@ -80,14 +81,21 @@
    1.12  private:
    1.13    uint _eff_degree;             // Effective degree: Sum of neighbors _num_regs
    1.14  public:
    1.15 -  int degree() const { assert( _degree_valid, "" ); return _eff_degree; }
    1.16 +  int degree() const { assert( _degree_valid , "" ); return _eff_degree; }
    1.17    // Degree starts not valid and any change to the IFG neighbor
    1.18    // set makes it not valid.
    1.19 -  void set_degree( uint degree ) { _eff_degree = degree; debug_only(_degree_valid = 1;) }
    1.20 +  void set_degree( uint degree ) {
    1.21 +    _eff_degree = degree;
    1.22 +    debug_only(_degree_valid = 1;)
    1.23 +    assert(!_mask.is_AllStack() || (_mask.is_AllStack() && lo_degree()), "_eff_degree can't be bigger than AllStack_size - _num_regs if the mask supports stack registers");
    1.24 +  }
    1.25    // Made a change that hammered degree
    1.26    void invalid_degree() { debug_only(_degree_valid=0;) }
    1.27    // Incrementally modify degree.  If it was correct, it should remain correct
    1.28 -  void inc_degree( uint mod ) { _eff_degree += mod; }
    1.29 +  void inc_degree( uint mod ) {
    1.30 +    _eff_degree += mod;
    1.31 +    assert(!_mask.is_AllStack() || (_mask.is_AllStack() && lo_degree()), "_eff_degree can't be bigger than AllStack_size - _num_regs if the mask supports stack registers");
    1.32 +  }
    1.33    // Compute the degree between 2 live ranges
    1.34    int compute_degree( LRG &l ) const;
    1.35  
    1.36 @@ -95,9 +103,9 @@
    1.37    RegMask _mask;                // Allowed registers for this LRG
    1.38    uint _mask_size;              // cache of _mask.Size();
    1.39  public:
    1.40 -  int compute_mask_size() const { return _mask.is_AllStack() ? 65535 : _mask.Size(); }
    1.41 +  int compute_mask_size() const { return _mask.is_AllStack() ? AllStack_size : _mask.Size(); }
    1.42    void set_mask_size( int size ) {
    1.43 -    assert((size == 65535) || (size == (int)_mask.Size()), "");
    1.44 +    assert((size == (int)AllStack_size) || (size == (int)_mask.Size()), "");
    1.45      _mask_size = size;
    1.46  #ifdef ASSERT
    1.47      _msize_valid=1;
     2.1 --- a/src/share/vm/opto/ifg.cpp	Fri Oct 11 10:14:02 2013 -0700
     2.2 +++ b/src/share/vm/opto/ifg.cpp	Sat Oct 12 01:29:27 2013 +0000
     2.3 @@ -677,7 +677,7 @@
     2.4              } else {            // Common case: size 1 bound removal
     2.5                if( lrg.mask().Member(r_reg) ) {
     2.6                  lrg.Remove(r_reg);
     2.7 -                lrg.set_mask_size(lrg.mask().is_AllStack() ? 65535:old_size-1);
     2.8 +                lrg.set_mask_size(lrg.mask().is_AllStack() ? LRG::AllStack_size : old_size - 1);
     2.9                }
    2.10              }
    2.11              // If 'l' goes completely dry, it must spill.

mercurial