Mercurial > hg > graal-jvmci-8
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 } |