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 {