Request for reviews (XS): 6826960: C2 Sparc: assert(bb->_nodes[_bb_end]->is_Proj(), "skipping projections after expected call")

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Tue Apr 7 09:56:14 PDT 2009


Thanks, Christian

The first '0' instruction in a block is a Region node.
So Halt node is '1' if it is alone in a separate Block.
The new condition (>1) causes execution of the last
'else' body which increment _bb_end:

2273       // Set _bb_end to point after last schedulable inst.
2274       _bb_end++;

As result _bb_end == 2 which corresponds to the comment you pointed.

Vladimir

Christian Thalinger wrote:
> On Mon, 2009-04-06 at 17:09 -0700, Vladimir Kozlov wrote:
>> http://cr.openjdk.java.net/~kvn/6826960/webrev.00
>>
>> Fixed 6826960: C2 Sparc: assert(bb->_nodes[_bb_end]->is_Proj(),"skipping projections after expected call")
>>
>> Problem:
>> Scheduling code expects Halt nodes only after uncommon_trap calls.
>> The fix for 6823453 generates Halt nodes for unreachable paths
>> after allocations. Such Halt nodes are placed in separate blocks.
>>
>> Solution:
>> Add the check when a Halt node is placed in a separate block.
> 
> The comment right before the if says:
> 
> "_bb_end points just after last schedulable inst."
> 
> Does _bb_end point to instruction 0 if there is no schedulable
> instruction in that BB?  If yes, then the change looks good.
> 
> -- Christian
> 



More information about the hotspot-compiler-dev mailing list