src/share/vm/opto/domgraph.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/opto/domgraph.cpp
src/share/vm/opto/domgraph.cpp
Print this page
*** 395,406 ****
int i;
for( i= C->unique()-1; i>=0; i-- )
ntarjan[i]._control = NULL;
// Store the DFS order for the main loop
uint *dfsorder = NEW_RESOURCE_ARRAY(uint,C->unique()+1);
! memset(dfsorder, max_uint, (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);
--- 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, 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 ****
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;
NTarjan *vx = &ntarjan[b];
NTarjan *u = vx->EVAL();
if( u->_semi < w->_semi )
w->_semi = u->_semi;
}
--- 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 == 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