src/share/vm/opto/domgraph.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/domgraph.cpp	Mon May  5 12:29:27 2014
--- new/src/share/vm/opto/domgraph.cpp	Mon May  5 12:29:26 2014

*** 395,406 **** --- 395,407 ---- int i; for( i= C->unique()-1; i>=0; i-- ) ntarjan[i]._control = NULL; // Store the DFS order for the main loop + const uint fill_value = (uint) -1; uint *dfsorder = NEW_RESOURCE_ARRAY(uint,C->unique()+1); ! memset(dfsorder, max_uint, (C->unique()+1) * sizeof(uint)); ! memset(dfsorder, fill_value, (C->unique()+1) * sizeof(uint)); // Tarjan's algorithm, almost verbatim: // Step 1: VectorSet visited(Thread::current()->resource_area()); int dfsnum = NTarjan::DFS( ntarjan, visited, this, dfsorder);
*** 417,427 **** --- 418,428 ---- Node *whead = w->_control; for( uint j=0; j < whead->req(); j++ ) { // For each predecessor if( whead->in(j) == NULL || !whead->in(j)->is_CFG() ) continue; // Only process control nodes uint b = dfsorder[whead->in(j)->_idx]; ! if(b == max_uint) continue; ! if(b == fill_value) continue; NTarjan *vx = &ntarjan[b]; NTarjan *u = vx->EVAL(); if( u->_semi < w->_semi ) w->_semi = u->_semi; }

src/share/vm/opto/domgraph.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File