src/share/vm/opto/gcm.cpp

changeset 1108
fbc12e71c476
parent 1063
7bb995fbd3c0
child 1116
fbde8ec322d0
     1.1 --- a/src/share/vm/opto/gcm.cpp	Thu Mar 26 14:39:39 2009 -0700
     1.2 +++ b/src/share/vm/opto/gcm.cpp	Thu Mar 26 15:04:55 2009 -0700
     1.3 @@ -1374,6 +1374,9 @@
     1.4    _root_loop->_freq = 1.0;
     1.5    _root_loop->scale_freq();
     1.6  
     1.7 +  // Save outmost loop frequency for LRG frequency threshold
     1.8 +  _outer_loop_freq = _root_loop->outer_loop_freq();
     1.9 +
    1.10    // force paths ending at uncommon traps to be infrequent
    1.11    if (!C->do_freq_based_layout()) {
    1.12      Block_List worklist;
    1.13 @@ -1898,6 +1901,7 @@
    1.14  // Do a top down traversal of loop tree (visit outer loops first.)
    1.15  void CFGLoop::scale_freq() {
    1.16    float loop_freq = _freq * trip_count();
    1.17 +  _freq = loop_freq;
    1.18    for (int i = 0; i < _members.length(); i++) {
    1.19      CFGElement* s = _members.at(i);
    1.20      float block_freq = s->_freq * loop_freq;
    1.21 @@ -1912,6 +1916,14 @@
    1.22    }
    1.23  }
    1.24  
    1.25 +// Frequency of outer loop
    1.26 +float CFGLoop::outer_loop_freq() const {
    1.27 +  if (_child != NULL) {
    1.28 +    return _child->_freq;
    1.29 +  }
    1.30 +  return _freq;
    1.31 +}
    1.32 +
    1.33  #ifndef PRODUCT
    1.34  //------------------------------dump_tree--------------------------------------
    1.35  void CFGLoop::dump_tree() const {

mercurial