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