src/share/vm/opto/block.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/block.cpp Tue Jul 26 19:26:55 2011
--- new/src/share/vm/opto/block.cpp Tue Jul 26 19:26:55 2011
*** 163,173 ****
--- 163,173 ----
int success_result = completely_empty;
int end_idx = _nodes.size()-1;
// Check for ending goto
! if ((end_idx > 0) && (_nodes[end_idx]->is_Goto())) {
! if ((end_idx > 0) && (_nodes[end_idx]->is_MachGoto())) {
success_result = empty_with_goto;
end_idx--;
}
// Unreachable blocks are considered empty
*** 195,209 ****
--- 195,209 ----
// executed infrequently. Check to see if the block ends in a Halt or
// a low probability call.
bool Block::has_uncommon_code() const {
Node* en = end();
! if (en->is_Goto())
! if (en->is_MachGoto())
en = en->in(0);
if (en->is_Catch())
en = en->in(0);
! if (en->is_Proj() && en->in(0)->is_MachCall()) {
! if (en->is_MachProj() && en->in(0)->is_MachCall()) {
MachCallNode* call = en->in(0)->as_MachCall();
if (call->cnt() != COUNT_UNKNOWN && call->cnt() <= PROB_UNLIKELY_MAG(4)) {
// This is true for slow-path stubs like new_{instance,array},
// slow_arraycopy, complete_monitor_locking, uncommon_trap.
// The magic number corresponds to the probability of an uncommon_trap,
*** 943,954 ****
--- 943,954 ----
j = b->end_idx();
Node *bp = (Node*)b->_nodes[b->_nodes.size()-1]->is_block_proj();
assert( bp, "last instruction must be a block proj" );
assert( bp == b->_nodes[j], "wrong number of successors for this block" );
if( bp->is_Catch() ) {
! while( b->_nodes[--j]->Opcode() == Op_MachProj ) ;
! assert( b->_nodes[j]->is_Call(), "CatchProj must follow call" );
! while( b->_nodes[--j]->is_MachProj() ) ;
! assert( b->_nodes[j]->is_MachCall(), "CatchProj must follow call" );
}
else if( bp->is_Mach() && bp->as_Mach()->ideal_Opcode() == Op_If ) {
assert( b->_num_succs == 2, "Conditional branch must have two targets");
}
}
src/share/vm/opto/block.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File