# HG changeset patch # User kvn # Date 1207013856 25200 # Node ID 5734cddd944b6ad50df624ddd5d84ad78ef4e8f7 # Parent 717d75d80a30be2a9a8807bcb5c9ce77907e60aa 6682236: C2 hits ideal nodes limit during IGVN optimization with EA Summary: missing check in LoadNode::Ideal() causes infinite generation of a value Phi. Reviewed-by: jrose, never diff -r 717d75d80a30 -r 5734cddd944b hotspot/src/share/vm/opto/memnode.cpp --- a/hotspot/src/share/vm/opto/memnode.cpp Mon Mar 31 16:22:52 2008 -0700 +++ b/hotspot/src/share/vm/opto/memnode.cpp Mon Mar 31 18:37:36 2008 -0700 @@ -1122,6 +1122,12 @@ } // Split through Phi (see original code in loopopts.cpp). assert(phase->C->have_alias_type(addr_t), "instance should have alias type"); + + // Do nothing here if Identity will find a value + // (to avoid infinite chain of value phis generation). + if ( !phase->eqv(this, this->Identity(phase)) ) + return NULL; + const Type* this_type = this->bottom_type(); int this_index = phase->C->get_alias_index(addr_t); int this_offset = addr_t->offset();