Request for reviews (S): 6991188: C2 Crashes while compiling method
Vladimir Kozlov
vladimir.kozlov at oracle.com
Fri Nov 5 14:02:25 PDT 2010
I had next assert when I tested these changes but I removed it from final version. I can put it back and also add number of Ideal nodes as reference.
if (iterations >= CG_BUILD_ITER_LIMIT) {
+ assert(false, "infinit build_connection_graph loop");
// Retry compilation without escape analysis.
C->record_failure(C2Compiler::retry_no_escape_analysis());
_collecting = false;
return false;
Thanks,
Vladimir
Tom Rodriguez wrote:
> Should we do something more than retry without EA if it takes more iterations than we expect? Maybe an assert(false in debug mode? Otherwise it looks good.
>
> tom
>
> On Nov 4, 2010, at 3:24 PM, Vladimir Kozlov wrote:
>
>> http://cr.openjdk.java.net/~kvn/6991188/webrev.01
>>
>> I updated changes based on comments and found issues.
>> Use separate worklist in new loop code since cg_worklist
>> does not have Store and Call nodes (they are UnknownType).
>> Call node should not be marked processed since their
>> arguments may need more then one pass to add all edges.
>> Reuse GrowableArray worklist instead of creating few new.
>>
>> Thanks,
>> Vladimir
>>
>> 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