src/share/vm/opto/live.cpp
Print this page
*** 132,142 ****
// Inner loop: blocks that picked up new live-out values to be propagated
while (_worklist->size()) {
Block* block = _worklist->pop();
IndexSet *delta = getset(block);
! assert( delta->count(), "missing delta set" );
// Add new-live-in to predecessors live-out sets
for (uint l = 1; l < block->num_preds(); l++) {
Block* predecessor = _cfg.get_block_for_node(block->pred(l));
add_liveout(predecessor, delta, first_pass);
--- 132,142 ----
// Inner loop: blocks that picked up new live-out values to be propagated
while (_worklist->size()) {
Block* block = _worklist->pop();
IndexSet *delta = getset(block);
! assert( !delta->is_empty(), "missing delta set" );
// Add new-live-in to predecessors live-out sets
for (uint l = 1; l < block->num_preds(); l++) {
Block* predecessor = _cfg.get_block_for_node(block->pred(l));
add_liveout(predecessor, delta, first_pass);
*** 185,202 ****
// is always from thread local storage.
IndexSet *PhaseLive::getfreeset( ) {
IndexSet *f = _free_IndexSet;
if( !f ) {
f = new IndexSet;
! // f->set_arena(Thread::current()->resource_area());
! f->initialize(_maxlrg, Thread::current()->resource_area());
} else {
// Pull from free list
_free_IndexSet = f->next();
! //f->_cnt = 0; // Reset to empty
! // f->set_arena(Thread::current()->resource_area());
! f->initialize(_maxlrg, Thread::current()->resource_area());
}
return f;
}
// Free an IndexSet from a block.
--- 185,199 ----
// is always from thread local storage.
IndexSet *PhaseLive::getfreeset( ) {
IndexSet *f = _free_IndexSet;
if( !f ) {
f = new IndexSet;
! f->initialize(_maxlrg);
} else {
// Pull from free list
_free_IndexSet = f->next();
! f->initialize(_maxlrg);
}
return f;
}
// Free an IndexSet from a block.
*** 236,246 ****
if( live->insert(r) && // If actually inserted...
!defs->member( r ) ) // and not defined locally
delta->insert(r); // Then add to live-in set
}
! if( delta->count() ) { // If actually added things
_deltas[p->_pre_order-1] = delta; // Flag as on worklist now
if( !on_worklist && // Not on worklist?
first_pass.test(p->_pre_order) )
_worklist->push(p); // Actually go on worklist if already 1st pass
} else { // Nothing there; just free it
--- 233,243 ----
if( live->insert(r) && // If actually inserted...
!defs->member( r ) ) // and not defined locally
delta->insert(r); // Then add to live-in set
}
! if( !delta->is_empty() ) { // If actually added things
_deltas[p->_pre_order-1] = delta; // Flag as on worklist now
if( !on_worklist && // Not on worklist?
first_pass.test(p->_pre_order) )
_worklist->push(p); // Actually go on worklist if already 1st pass
} else { // Nothing there; just free it