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

Vladimir Kozlov vladimir.kozlov at
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.
     _collecting = false;
     return false;


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:
>> 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:
>>> 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