src/share/vm/opto/buildOopMap.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
JDK-8022284 Cdiff src/share/vm/opto/buildOopMap.cpp
src/share/vm/opto/buildOopMap.cpp
Print this page
*** 424,441 ****
if (UseCISCSpill && root->req() > 1) {
fp = root->in(1)->in(TypeFunc::FramePtr);
}
memset( live, 0, cfg->_num_blocks * (max_reg_ints<<LogBytesPerInt) );
// Push preds onto worklist
! for( uint i=1; i<root->req(); i++ )
! worklist->push(cfg->_bbs[root->in(i)->_idx]);
// ZKM.jar includes tiny infinite loops which are unreached from below.
// If we missed any blocks, we'll retry here after pushing all missed
// blocks on the worklist. Normally this outer loop never trips more
// than once.
! while( 1 ) {
while( worklist->size() ) { // Standard worklist algorithm
Block *b = worklist->rpop();
// Copy first successor into my tmp_live space
--- 424,443 ----
if (UseCISCSpill && root->req() > 1) {
fp = root->in(1)->in(TypeFunc::FramePtr);
}
memset( live, 0, cfg->_num_blocks * (max_reg_ints<<LogBytesPerInt) );
// Push preds onto worklist
! for (uint i = 1; i < root->req(); i++) {
! Block* block = cfg->get_block_for_node(root->in(i));
! worklist->push(block);
! }
// ZKM.jar includes tiny infinite loops which are unreached from below.
// If we missed any blocks, we'll retry here after pushing all missed
// blocks on the worklist. Normally this outer loop never trips more
// than once.
! while (1) {
while( worklist->size() ) { // Standard worklist algorithm
Block *b = worklist->rpop();
// Copy first successor into my tmp_live space
*** 535,546 ****
if( l<max_reg_ints ) { // Change!
// Copy in new value
for( l=0; l<max_reg_ints; l++ )
old_live[l] = tmp_live[l];
// Push preds onto worklist
! for( l=1; l<(int)b->num_preds(); l++ )
! worklist->push(cfg->_bbs[b->pred(l)->_idx]);
}
}
// Scan for any missing safepoints. Happens to infinite loops
// ala ZKM.jar
--- 537,550 ----
if( l<max_reg_ints ) { // Change!
// Copy in new value
for( l=0; l<max_reg_ints; l++ )
old_live[l] = tmp_live[l];
// Push preds onto worklist
! for (l = 1; l < (int)b->num_preds(); l++) {
! Block* block = cfg->get_block_for_node(b->pred(l));
! worklist->push(block);
! }
}
}
// Scan for any missing safepoints. Happens to infinite loops
// ala ZKM.jar
*** 627,640 ****
// If this block has a visited predecessor AND that predecessor has this
// last block as his only undone child, we can move the OopFlow from the
// pred to this block. Otherwise we have to grab a new OopFlow.
OopFlow *flow = NULL; // Flag for finding optimized flow
Block *pred = (Block*)0xdeadbeef;
- uint j;
// Scan this block's preds to find a done predecessor
! for( j=1; j<b->num_preds(); j++ ) {
! Block *p = _cfg->_bbs[b->pred(j)->_idx];
OopFlow *p_flow = flows[p->_pre_order];
if( p_flow ) { // Predecessor is done
assert( p_flow->_b == p, "cross check" );
pred = p; // Record some predecessor
// If all successors of p are done except for 'b', then we can carry
--- 631,643 ----
// If this block has a visited predecessor AND that predecessor has this
// last block as his only undone child, we can move the OopFlow from the
// pred to this block. Otherwise we have to grab a new OopFlow.
OopFlow *flow = NULL; // Flag for finding optimized flow
Block *pred = (Block*)0xdeadbeef;
// Scan this block's preds to find a done predecessor
! for (uint j = 1; j < b->num_preds(); j++) {
! Block* p = _cfg->get_block_for_node(b->pred(j));
OopFlow *p_flow = flows[p->_pre_order];
if( p_flow ) { // Predecessor is done
assert( p_flow->_b == p, "cross check" );
pred = p; // Record some predecessor
// If all successors of p are done except for 'b', then we can carry
src/share/vm/opto/buildOopMap.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File