RFR: 8144484: assert(no_dead_loop) failed: dead loop detected

Rahul Raghavan rahul.v.raghavan at oracle.com
Thu Feb 2 16:59:22 UTC 2017


Hi,

Thank you Vladimir for the review comments.
Understood your point and agree that for the reported scenario 
bailing out early and delaying the optimization should be the fix.

Please review updated <webrev.02> - http://cr.openjdk.java.net/~rraghavan/8144484/webrev.02/

Confirmed no issues with testing 
(8144484 test, jprt -testset hotspot; so far no issues with RBT Pre-integration testing in progress )

Thanks,
Rahul

> -----Original Message-----
> From: Vladimir Kozlov
> Sent: Wednesday, February 01, 2017 2:32 PM
> To: hotspot-compiler-dev at openjdk.java.net
> Subject: Re: RFR: 8144484: assert(no_dead_loop) failed: dead loop detected
> 
> On 2/1/17 12:19 AM, Vladimir Kozlov wrote:
> > Sorry, I don't like this fix.
> >
> > Based on your evaluation one control path is dead (top) and it will be optimized out later. It was unfortunate that Phi
> > node was processed first. Change graph (split through MergeMem) is dangerous in this state of graph.
> >
> > I would suggest to bailout early:
> >
> > 1886   if (progress == NULL && can_reshape && type() == Type::MEMORY) {
> > 1887     // see if this phi should be sliced
> > 1888     uint merge_width = 0;
> > 1889     bool saw_self = false;
> > 1890     for( uint i=1; i<req(); ++i ) {// For all paths in
> > 1891       Node *ii = in(i);
> >
> > +          // TOP inputs should not be counted as safe inputs because if the
> > +          // Phi references itself through all other inputs then splitting the
> > +          // Phi through memory merges would create dead loop at later stage.
> > +          if (ii == top) {
> > +            return top; // Delay optimization until graph is cleaned.
> 
> Sorry, wrong return value. Should be return NULL;
> 
> > +          }
> >
> > 1892       if (ii->is_MergeMem()) {
> > 1893         MergeMemNode* n = ii->as_MergeMem();
> >
> > Thanks,
> > Vladimir
> >


More information about the hotspot-compiler-dev mailing list