Request for reviews (S): 6991188: C2 Crashes while compiling method

Tom Rodriguez tom.rodriguez at oracle.com
Tue Nov 2 16:59:12 PDT 2010


On Nov 2, 2010, at 4:42 PM, Vladimir Kozlov wrote:

> Thanks, Tom
> 
> Tom Rodriguez wrote:
>> Typo:
>> +     // Possible infinit build_connection_graph loop.
> 
> Fixed.
> 
>> Why 10?  How many passes does it normally take? 
> 
> Normally only 1-2 passes depending on graph complexity. In the bug test - 2, in JBB I saw 3 once.
> 
>> Could this process only the nodes which changed or does it really need to reprocess every node?
> 
> Only AddP, LoadP and StoreP (and narrow variants) are reprocessed. All other nodes are marked in vectSet _processed. There is check at the beginning of build_connection_graph().
> I thought about using a separate worklist in new iterating code and populate it only with A/L/S nodes but I don't think it will help much.
> And we need to reprocess all A/L/S nodes since we don't know which nodes will be affected by one change (the chain through deferred edges could be long and split/merge through Phis).

Sounds and looks good.

tom

> 
> Thanks,
> Vladimir
> 
>> tom
>> On Nov 2, 2010, at 3:27 PM, Vladimir Kozlov wrote:
>>> http://cr.openjdk.java.net/~kvn/6991188/webrev.00
>>> 
>>> Fixed 6991188: C2 Crashes while compiling method
>>> 
>>> Construction of Connection Graph during EA relied on
>>> DU relation corresponds to nodes index so that def
>>> nodes processed before their uses. Move EA after
>>> IGVN (for 6966411 fix broke that. Because of that
>>> not all Graph edges will be created leading to
>>> incorrect EA results and incorrect Ideal graph.
>>> 
>>> Walk over interesting nodes (AddP, LoadP, StoreP)
>>> several times until no new edges are created.
>>> Set limit on iterations.
>>> 
>>> Tested with assert in iterations bailout code and
>>> calls to PhaseIdealLoop::verify() (removed from
>>> final changes). Passed JPRT, full CTW, nsk.
>>> 



More information about the hotspot-compiler-dev mailing list