comparison src/share/vm/opto/block.cpp @ 628:7bb995fbd3c0

Merge
author trims
date Thu, 12 Mar 2009 18:16:36 -0700
parents 0fbdb4381b99 98cb887364d3
children acba6af809c8
comparison
equal deleted inserted replaced
580:ce2272390558 628:7bb995fbd3c0
179 179
180 return not_empty; 180 return not_empty;
181 } 181 }
182 182
183 //------------------------------has_uncommon_code------------------------------ 183 //------------------------------has_uncommon_code------------------------------
184 // Return true if the block's code implies that it is not likely to be 184 // Return true if the block's code implies that it is likely to be
185 // executed infrequently. Check to see if the block ends in a Halt or 185 // executed infrequently. Check to see if the block ends in a Halt or
186 // a low probability call. 186 // a low probability call.
187 bool Block::has_uncommon_code() const { 187 bool Block::has_uncommon_code() const {
188 Node* en = end(); 188 Node* en = end();
189 189
907 !(b->head()->is_Loop() && n->is_Phi()) && 907 !(b->head()->is_Loop() && n->is_Phi()) &&
908 // See (+++) comment in reg_split.cpp 908 // See (+++) comment in reg_split.cpp
909 !(n->jvms() != NULL && n->jvms()->is_monitor_use(k)) ) { 909 !(n->jvms() != NULL && n->jvms()->is_monitor_use(k)) ) {
910 assert( b->find_node(def) < j, "uses must follow definitions" ); 910 assert( b->find_node(def) < j, "uses must follow definitions" );
911 } 911 }
912 if( def->is_SafePointScalarObject() ) {
913 assert(_bbs[def->_idx] == b, "SafePointScalarObject Node should be at the same block as its SafePoint node");
914 assert(_bbs[def->_idx] == _bbs[def->in(0)->_idx], "SafePointScalarObject Node should be at the same block as its control edge");
915 }
912 } 916 }
913 } 917 }
914 } 918 }
915 919
916 j = b->end_idx(); 920 j = b->end_idx();
1305 union_traces(targ_trace, src_trace); 1309 union_traces(targ_trace, src_trace);
1306 } 1310 }
1307 } 1311 }
1308 } else if (e->state() == CFGEdge::open) { 1312 } else if (e->state() == CFGEdge::open) {
1309 // Append traces, even without a fall-thru connection. 1313 // Append traces, even without a fall-thru connection.
1310 // But leave root entry at the begining of the block list. 1314 // But leave root entry at the beginning of the block list.
1311 if (targ_trace != trace(_cfg._broot)) { 1315 if (targ_trace != trace(_cfg._broot)) {
1312 e->set_state(CFGEdge::connected); 1316 e->set_state(CFGEdge::connected);
1313 src_trace->append(targ_trace); 1317 src_trace->append(targ_trace);
1314 union_traces(src_trace, targ_trace); 1318 union_traces(src_trace, targ_trace);
1315 } 1319 }
1428 break_loop_after(b); 1432 break_loop_after(b);
1429 } 1433 }
1430 } 1434 }
1431 1435
1432 // Backbranch to the top of a trace 1436 // Backbranch to the top of a trace
1433 // Scroll foward through the trace from the targ_block. If we find 1437 // Scroll forward through the trace from the targ_block. If we find
1434 // a loop head before another loop top, use the the loop head alignment. 1438 // a loop head before another loop top, use the the loop head alignment.
1435 for (Block *b = targ_block; b != NULL; b = next(b)) { 1439 for (Block *b = targ_block; b != NULL; b = next(b)) {
1436 if (b->has_loop_alignment()) { 1440 if (b->has_loop_alignment()) {
1437 break; 1441 break;
1438 } 1442 }