Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/loopnode.cpp @ 1083:8b22f86d1740
6901572: JVM 1.6.16 crash on loops: assert(has_node(i),"")
Summary: Skip the secondary induction variable handling if it is dead
Reviewed-by: never, kvn
author | cfang |
---|---|
date | Wed, 02 Dec 2009 13:29:00 -0800 |
parents | 046932b72aa2 |
children | b2b6a9bf6238 |
comparison
equal
deleted
inserted
replaced
1082:facbc74580c3 | 1083:8b22f86d1740 |
---|---|
1277 // Look for induction variables | 1277 // Look for induction variables |
1278 | 1278 |
1279 // Visit all children, looking for Phis | 1279 // Visit all children, looking for Phis |
1280 for (DUIterator i = cl->outs(); cl->has_out(i); i++) { | 1280 for (DUIterator i = cl->outs(); cl->has_out(i); i++) { |
1281 Node *out = cl->out(i); | 1281 Node *out = cl->out(i); |
1282 if (!out->is_Phi() || out == phi) continue; // Looking for other phis | 1282 // Look for other phis (secondary IVs). Skip dead ones |
1283 if (!out->is_Phi() || out == phi || !phase->has_node(out)) continue; | |
1283 PhiNode* phi2 = out->as_Phi(); | 1284 PhiNode* phi2 = out->as_Phi(); |
1284 Node *incr2 = phi2->in( LoopNode::LoopBackControl ); | 1285 Node *incr2 = phi2->in( LoopNode::LoopBackControl ); |
1285 // Look for induction variables of the form: X += constant | 1286 // Look for induction variables of the form: X += constant |
1286 if( phi2->region() != _head || | 1287 if( phi2->region() != _head || |
1287 incr2->req() != 3 || | 1288 incr2->req() != 3 || |