6916062: assert(_inserts <= _insert_limit,"hash table overflow") in NodeHash::hash_insert

Missing check for not empty worklist when puting memory node back on worklist and expecting address type update.

Reviewed-by: never
This commit is contained in:
Vladimir Kozlov 2010-09-30 18:31:45 -07:00
parent 8309071a08
commit 7cc55737b6
2 changed files with 25 additions and 1 deletions

View file

@ -844,10 +844,33 @@ void PhaseIterGVN::optimize() {
}
#endif
#ifdef ASSERT
Node* prev = NULL;
uint rep_cnt = 0;
#endif
uint loop_count = 0;
// Pull from worklist; transform node;
// If node has changed: update edge info and put uses on worklist.
while( _worklist.size() ) {
Node *n = _worklist.pop();
if (++loop_count >= K * C->unique()) {
debug_only(n->dump(4);)
assert(false, "infinite loop in PhaseIterGVN::optimize");
C->record_method_not_compilable("infinite loop in PhaseIterGVN::optimize");
return;
}
#ifdef ASSERT
if (n == prev) {
if (++rep_cnt > 3) {
n->dump(4);
assert(false, "loop in Ideal transformation");
}
} else {
rep_cnt = 0;
}
prev = n;
#endif
if (TraceIterativeGVN && Verbose) {
tty->print(" Pop ");
NOT_PRODUCT( n->dump(); )