diff src/share/vm/opto/block.cpp @ 308:756b58154237

6611837: block frequency is zero Summary: insert_goto_at should set frequency for newly created blocks Reviewed-by: never
author rasbold
date Thu, 28 Aug 2008 10:22:12 -0700
parents a61af66fc99e
children 9ee9cf798b59
line wrap: on
line diff
--- a/src/share/vm/opto/block.cpp	Wed Aug 27 16:33:34 2008 -0700
+++ b/src/share/vm/opto/block.cpp	Thu Aug 28 10:22:12 2008 -0700
@@ -467,6 +467,10 @@
   // get successor block succ_no
   assert(succ_no < in->_num_succs, "illegal successor number");
   Block* out = in->_succs[succ_no];
+  // Compute frequency of the new block. Do this before inserting
+  // new block in case succ_prob() needs to infer the probability from
+  // surrounding blocks.
+  float freq = in->_freq * in->succ_prob(succ_no);
   // get ProjNode corresponding to the succ_no'th successor of the in block
   ProjNode* proj = in->_nodes[in->_nodes.size() - in->_num_succs + succ_no]->as_Proj();
   // create region for basic block
@@ -491,6 +495,8 @@
   }
   // remap predecessor's successor to new block
   in->_succs.map(succ_no, block);
+  // Set the frequency of the new block
+  block->_freq = freq;
   // add new basic block to basic block list
   _blocks.insert(block_no + 1, block);
   _num_blocks++;