--- old/src/share/vm/opto/phaseX.cpp Fri Sep 16 12:22:58 2011 +++ new/src/share/vm/opto/phaseX.cpp Fri Sep 16 12:22:57 2011 @@ -864,6 +864,10 @@ // Pull from worklist; transform node; // If node has changed: update edge info and put uses on worklist. while( _worklist.size() ) { + if (C->check_node_count(NodeLimitFudgeFactor * 2, + "out of nodes optimizing method")) { + return; + } Node *n = _worklist.pop(); if (++loop_count >= K * C->unique()) { debug_only(n->dump(4);)