src/share/vm/opto/phaseX.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/phaseX.cpp Tue Sep 28 18:04:11 2010
--- new/src/share/vm/opto/phaseX.cpp Tue Sep 28 18:04:11 2010
*** 842,855 ****
--- 842,875 ----
_verify_window[i] = NULL;
}
}
#endif
+ #ifdef ASSERT
+ Node* prev = NULL;
+ uint rep_cnt = 0;
+ uint loop_count = 0;
+ #endif
// Pull from worklist; transform node;
// If node has changed: update edge info and put uses on worklist.
while( _worklist.size() ) {
Node *n = _worklist.pop();
+ #ifdef ASSERT
+ if (++loop_count >= K * C->unique()) {
+ n->dump(4);
+ assert(false, "infinite loop in PhaseIterGVN::optimize");
+ }
+ 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(); )
debug_only(if( (num_processed++ % 100) == 0 ) _worklist.print_set();)
}
src/share/vm/opto/phaseX.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File