1011 idx = next; // until find a fixed-point
1012 next = lookup(idx);
1013 }
1014 return next;
1015 }
1016
1017 //------------------------------Union------------------------------------------
1018 // union 2 sets together.
1019 void UnionFind::Union( uint idx1, uint idx2 ) {
1020 uint src = Find(idx1);
1021 uint dst = Find(idx2);
1022 assert( src, "" );
1023 assert( dst, "" );
1024 assert( src < _max, "oob" );
1025 assert( dst < _max, "oob" );
1026 assert( src < dst, "always union smaller" );
1027 map(dst,src);
1028 }
1029
1030 #ifndef PRODUCT
1031 static void edge_dump(GrowableArray<CFGEdge *> *edges) {
1032 tty->print_cr("---- Edges ----");
1033 for (int i = 0; i < edges->length(); i++) {
1034 CFGEdge *e = edges->at(i);
1035 if (e != NULL) {
1036 edges->at(i)->dump();
1037 }
1038 }
1039 }
1040
1041 static void trace_dump(Trace *traces[], int count) {
1042 tty->print_cr("---- Traces ----");
1043 for (int i = 0; i < count; i++) {
1044 Trace *tr = traces[i];
1045 if (tr != NULL) {
1046 tr->dump();
1047 }
1048 }
1049 }
1050
1051 void Trace::dump( ) const {
1052 tty->print_cr("Trace (freq %f)", first_block()->_freq);
1053 for (Block *b = first_block(); b != NULL; b = next(b)) {
1054 tty->print(" B%d", b->_pre_order);
1055 if (b->head()->is_Loop()) {
1056 tty->print(" (L%d)", b->compute_loop_alignment());
1057 }
1058 if (b->has_loop_alignment()) {
1059 tty->print(" (T%d)", b->code_alignment());
1060 }
1061 }
|
1011 idx = next; // until find a fixed-point
1012 next = lookup(idx);
1013 }
1014 return next;
1015 }
1016
1017 //------------------------------Union------------------------------------------
1018 // union 2 sets together.
1019 void UnionFind::Union( uint idx1, uint idx2 ) {
1020 uint src = Find(idx1);
1021 uint dst = Find(idx2);
1022 assert( src, "" );
1023 assert( dst, "" );
1024 assert( src < _max, "oob" );
1025 assert( dst < _max, "oob" );
1026 assert( src < dst, "always union smaller" );
1027 map(dst,src);
1028 }
1029
1030 #ifndef PRODUCT
1031 void edge_dump(GrowableArray<CFGEdge *> *edges) {
1032 tty->print_cr("---- Edges ----");
1033 for (int i = 0; i < edges->length(); i++) {
1034 CFGEdge *e = edges->at(i);
1035 if (e != NULL) {
1036 edges->at(i)->dump();
1037 }
1038 }
1039 }
1040
1041 void trace_dump(Trace *traces[], int count) {
1042 tty->print_cr("---- Traces ----");
1043 for (int i = 0; i < count; i++) {
1044 Trace *tr = traces[i];
1045 if (tr != NULL) {
1046 tr->dump();
1047 }
1048 }
1049 }
1050
1051 void Trace::dump( ) const {
1052 tty->print_cr("Trace (freq %f)", first_block()->_freq);
1053 for (Block *b = first_block(); b != NULL; b = next(b)) {
1054 tty->print(" B%d", b->_pre_order);
1055 if (b->head()->is_Loop()) {
1056 tty->print(" (L%d)", b->compute_loop_alignment());
1057 }
1058 if (b->has_loop_alignment()) {
1059 tty->print(" (T%d)", b->code_alignment());
1060 }
1061 }
|