src/share/vm/opto/phaseX.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6934604 Sdiff src/share/vm/opto

src/share/vm/opto/phaseX.cpp

Print this page




 865     for ( int i = 0; i < _verify_window_size; i++ ) {
 866       _verify_window[i] = NULL;
 867     }
 868   }
 869 #endif
 870 
 871 #ifdef ASSERT
 872   Node* prev = NULL;
 873   uint rep_cnt = 0;
 874 #endif
 875   uint loop_count = 0;
 876 
 877   // Pull from worklist; transform node;
 878   // If node has changed: update edge info and put uses on worklist.
 879   while( _worklist.size() ) {
 880     if (C->check_node_count(NodeLimitFudgeFactor * 2,
 881                             "out of nodes optimizing method")) {
 882       return;
 883     }
 884     Node *n  = _worklist.pop();
 885     if (++loop_count >= K * C->unique()) {
 886       debug_only(n->dump(4);)
 887       assert(false, "infinite loop in PhaseIterGVN::optimize");
 888       C->record_method_not_compilable("infinite loop in PhaseIterGVN::optimize");
 889       return;
 890     }
 891 #ifdef ASSERT
 892     if (n == prev) {
 893       if (++rep_cnt > 3) {
 894         n->dump(4);
 895         assert(false, "loop in Ideal transformation");
 896       }
 897     } else {
 898       rep_cnt = 0;
 899     }
 900     prev = n;
 901 #endif
 902     if (TraceIterativeGVN && Verbose) {
 903       tty->print("  Pop ");
 904       NOT_PRODUCT( n->dump(); )
 905       debug_only(if( (num_processed++ % 100) == 0 ) _worklist.print_set();)




 865     for ( int i = 0; i < _verify_window_size; i++ ) {
 866       _verify_window[i] = NULL;
 867     }
 868   }
 869 #endif
 870 
 871 #ifdef ASSERT
 872   Node* prev = NULL;
 873   uint rep_cnt = 0;
 874 #endif
 875   uint loop_count = 0;
 876 
 877   // Pull from worklist; transform node;
 878   // If node has changed: update edge info and put uses on worklist.
 879   while( _worklist.size() ) {
 880     if (C->check_node_count(NodeLimitFudgeFactor * 2,
 881                             "out of nodes optimizing method")) {
 882       return;
 883     }
 884     Node *n  = _worklist.pop();
 885     if (++loop_count >= K * C->live_nodes()) {
 886       debug_only(n->dump(4);)
 887       assert(false, "infinite loop in PhaseIterGVN::optimize");
 888       C->record_method_not_compilable("infinite loop in PhaseIterGVN::optimize");
 889       return;
 890     }
 891 #ifdef ASSERT
 892     if (n == prev) {
 893       if (++rep_cnt > 3) {
 894         n->dump(4);
 895         assert(false, "loop in Ideal transformation");
 896       }
 897     } else {
 898       rep_cnt = 0;
 899     }
 900     prev = n;
 901 #endif
 902     if (TraceIterativeGVN && Verbose) {
 903       tty->print("  Pop ");
 904       NOT_PRODUCT( n->dump(); )
 905       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