comparison src/share/vm/opto/regmask.cpp @ 7636:a7114d3d712e

8005055: pass outputStream to more opto debug routines Summary: pass the output stream to node->dump() and everything reachable from there Reviewed-by: kvn Contributed-by: goetz.lindenmaier@sap.com
author kvn
date Tue, 22 Jan 2013 11:31:25 -0800
parents 8c92982cbbc4
children 2c673161698a
comparison
equal deleted inserted replaced
7619:46e60405583b 7636:a7114d3d712e
106 } 106 }
107 107
108 //------------------------------dump------------------------------------------- 108 //------------------------------dump-------------------------------------------
109 109
110 #ifndef PRODUCT 110 #ifndef PRODUCT
111 void OptoReg::dump( int r ) { 111 void OptoReg::dump(int r, outputStream *st) {
112 switch( r ) { 112 switch (r) {
113 case Special: tty->print("r---"); break; 113 case Special: st->print("r---"); break;
114 case Bad: tty->print("rBAD"); break; 114 case Bad: st->print("rBAD"); break;
115 default: 115 default:
116 if( r < _last_Mach_Reg ) tty->print(Matcher::regName[r]); 116 if (r < _last_Mach_Reg) st->print(Matcher::regName[r]);
117 else tty->print("rS%d",r); 117 else st->print("rS%d",r);
118 break; 118 break;
119 } 119 }
120 } 120 }
121 #endif 121 #endif
122 122
402 return sum; 402 return sum;
403 } 403 }
404 404
405 #ifndef PRODUCT 405 #ifndef PRODUCT
406 //------------------------------print------------------------------------------ 406 //------------------------------print------------------------------------------
407 void RegMask::dump( ) const { 407 void RegMask::dump(outputStream *st) const {
408 tty->print("["); 408 st->print("[");
409 RegMask rm = *this; // Structure copy into local temp 409 RegMask rm = *this; // Structure copy into local temp
410 410
411 OptoReg::Name start = rm.find_first_elem(); // Get a register 411 OptoReg::Name start = rm.find_first_elem(); // Get a register
412 if( OptoReg::is_valid(start) ) { // Check for empty mask 412 if (OptoReg::is_valid(start)) { // Check for empty mask
413 rm.Remove(start); // Yank from mask 413 rm.Remove(start); // Yank from mask
414 OptoReg::dump(start); // Print register 414 OptoReg::dump(start, st); // Print register
415 OptoReg::Name last = start; 415 OptoReg::Name last = start;
416 416
417 // Now I have printed an initial register. 417 // Now I have printed an initial register.
418 // Print adjacent registers as "rX-rZ" instead of "rX,rY,rZ". 418 // Print adjacent registers as "rX-rZ" instead of "rX,rY,rZ".
419 // Begin looping over the remaining registers. 419 // Begin looping over the remaining registers.
420 while( 1 ) { // 420 while (1) { //
421 OptoReg::Name reg = rm.find_first_elem(); // Get a register 421 OptoReg::Name reg = rm.find_first_elem(); // Get a register
422 if( !OptoReg::is_valid(reg) ) 422 if (!OptoReg::is_valid(reg))
423 break; // Empty mask, end loop 423 break; // Empty mask, end loop
424 rm.Remove(reg); // Yank from mask 424 rm.Remove(reg); // Yank from mask
425 425
426 if( last+1 == reg ) { // See if they are adjacent 426 if (last+1 == reg) { // See if they are adjacent
427 // Adjacent registers just collect into long runs, no printing. 427 // Adjacent registers just collect into long runs, no printing.
428 last = reg; 428 last = reg;
429 } else { // Ending some kind of run 429 } else { // Ending some kind of run
430 if( start == last ) { // 1-register run; no special printing 430 if (start == last) { // 1-register run; no special printing
431 } else if( start+1 == last ) { 431 } else if (start+1 == last) {
432 tty->print(","); // 2-register run; print as "rX,rY" 432 st->print(","); // 2-register run; print as "rX,rY"
433 OptoReg::dump(last); 433 OptoReg::dump(last, st);
434 } else { // Multi-register run; print as "rX-rZ" 434 } else { // Multi-register run; print as "rX-rZ"
435 tty->print("-"); 435 st->print("-");
436 OptoReg::dump(last); 436 OptoReg::dump(last, st);
437 } 437 }
438 tty->print(","); // Seperate start of new run 438 st->print(","); // Seperate start of new run
439 start = last = reg; // Start a new register run 439 start = last = reg; // Start a new register run
440 OptoReg::dump(start); // Print register 440 OptoReg::dump(start, st); // Print register
441 } // End of if ending a register run or not 441 } // End of if ending a register run or not
442 } // End of while regmask not empty 442 } // End of while regmask not empty
443 443
444 if( start == last ) { // 1-register run; no special printing 444 if (start == last) { // 1-register run; no special printing
445 } else if( start+1 == last ) { 445 } else if (start+1 == last) {
446 tty->print(","); // 2-register run; print as "rX,rY" 446 st->print(","); // 2-register run; print as "rX,rY"
447 OptoReg::dump(last); 447 OptoReg::dump(last, st);
448 } else { // Multi-register run; print as "rX-rZ" 448 } else { // Multi-register run; print as "rX-rZ"
449 tty->print("-"); 449 st->print("-");
450 OptoReg::dump(last); 450 OptoReg::dump(last, st);
451 } 451 }
452 if( rm.is_AllStack() ) tty->print("..."); 452 if (rm.is_AllStack()) st->print("...");
453 } 453 }
454 tty->print("]"); 454 st->print("]");
455 } 455 }
456 #endif 456 #endif