47 elapsedTimer Phase::_t_matcher;
48 elapsedTimer Phase::_t_registerAllocation;
49 elapsedTimer Phase::_t_output;
50
51 #ifndef PRODUCT
52 elapsedTimer Phase::_t_graphReshaping;
53 elapsedTimer Phase::_t_scheduler;
54 elapsedTimer Phase::_t_blockOrdering;
55 elapsedTimer Phase::_t_macroEliminate;
56 elapsedTimer Phase::_t_macroExpand;
57 elapsedTimer Phase::_t_peephole;
58 elapsedTimer Phase::_t_codeGeneration;
59 elapsedTimer Phase::_t_registerMethod;
60 elapsedTimer Phase::_t_temporaryTimer1;
61 elapsedTimer Phase::_t_temporaryTimer2;
62 elapsedTimer Phase::_t_idealLoopVerify;
63
64 // Subtimers for _t_optimizer
65 elapsedTimer Phase::_t_iterGVN;
66 elapsedTimer Phase::_t_iterGVN2;
67
68 // Subtimers for _t_registerAllocation
69 elapsedTimer Phase::_t_ctorChaitin;
70 elapsedTimer Phase::_t_buildIFGphysical;
71 elapsedTimer Phase::_t_computeLive;
72 elapsedTimer Phase::_t_regAllocSplit;
73 elapsedTimer Phase::_t_postAllocCopyRemoval;
74 elapsedTimer Phase::_t_fixupSpills;
75
76 // Subtimers for _t_output
77 elapsedTimer Phase::_t_instrSched;
78 elapsedTimer Phase::_t_buildOopMaps;
79 #endif
80
81 //------------------------------Phase------------------------------------------
82 Phase::Phase( PhaseNumber pnum ) : _pnum(pnum), C( pnum == Compiler ? NULL : Compile::current()) {
83 // Poll for requests from shutdown mechanism to quiesce compiler (4448539, 4448544).
84 // This is an effective place to poll, since the compiler is full of phases.
85 // In particular, every inlining site uses a recursively created Parse phase.
86 CompileBroker::maybe_block();
93
94 void Phase::print_timers() {
95 tty->print_cr ("Accumulated compiler times:");
96 tty->print_cr ("---------------------------");
97 tty->print_cr (" Total compilation: %3.3f sec.", Phase::_t_totalCompilation.seconds());
98 tty->print (" method compilation : %3.3f sec", Phase::_t_methodCompilation.seconds());
99 tty->print ("/%d bytes",_total_bytes_compiled);
100 tty->print_cr (" (%3.0f bytes per sec) ", Phase::_total_bytes_compiled / Phase::_t_methodCompilation.seconds());
101 tty->print_cr (" stub compilation : %3.3f sec.", Phase::_t_stubCompilation.seconds());
102 tty->print_cr (" Phases:");
103 tty->print_cr (" parse : %3.3f sec", Phase::_t_parser.seconds());
104 tty->print_cr (" optimizer : %3.3f sec", Phase::_t_optimizer.seconds());
105 if( Verbose || WizardMode ) {
106 if (DoEscapeAnalysis) {
107 // EA is part of Optimizer.
108 tty->print_cr (" escape analysis: %3.3f sec", Phase::_t_escapeAnalysis.seconds());
109 tty->print_cr (" connection graph: %3.3f sec", Phase::_t_connectionGraph.seconds());
110 tty->print_cr (" macroEliminate : %3.3f sec", Phase::_t_macroEliminate.seconds());
111 }
112 tty->print_cr (" iterGVN : %3.3f sec", Phase::_t_iterGVN.seconds());
113 tty->print_cr (" idealLoop : %3.3f sec", Phase::_t_idealLoop.seconds());
114 tty->print_cr (" idealLoopVerify: %3.3f sec", Phase::_t_idealLoopVerify.seconds());
115 tty->print_cr (" ccp : %3.3f sec", Phase::_t_ccp.seconds());
116 tty->print_cr (" iterGVN2 : %3.3f sec", Phase::_t_iterGVN2.seconds());
117 tty->print_cr (" macroExpand : %3.3f sec", Phase::_t_macroExpand.seconds());
118 tty->print_cr (" graphReshape : %3.3f sec", Phase::_t_graphReshaping.seconds());
119 double optimizer_subtotal = Phase::_t_iterGVN.seconds() + Phase::_t_iterGVN2.seconds() +
120 Phase::_t_escapeAnalysis.seconds() + Phase::_t_macroEliminate.seconds() +
121 Phase::_t_idealLoop.seconds() + Phase::_t_ccp.seconds() +
122 Phase::_t_macroExpand.seconds() + Phase::_t_graphReshaping.seconds();
123 double percent_of_optimizer = ((optimizer_subtotal == 0.0) ? 0.0 : (optimizer_subtotal / Phase::_t_optimizer.seconds() * 100.0));
124 tty->print_cr (" subtotal : %3.3f sec, %3.2f %%", optimizer_subtotal, percent_of_optimizer);
125 }
126 tty->print_cr (" matcher : %3.3f sec", Phase::_t_matcher.seconds());
127 tty->print_cr (" scheduler : %3.3f sec", Phase::_t_scheduler.seconds());
128 tty->print_cr (" regalloc : %3.3f sec", Phase::_t_registerAllocation.seconds());
129 if( Verbose || WizardMode ) {
130 tty->print_cr (" ctorChaitin : %3.3f sec", Phase::_t_ctorChaitin.seconds());
131 tty->print_cr (" buildIFG : %3.3f sec", Phase::_t_buildIFGphysical.seconds());
132 tty->print_cr (" computeLive : %3.3f sec", Phase::_t_computeLive.seconds());
|
47 elapsedTimer Phase::_t_matcher;
48 elapsedTimer Phase::_t_registerAllocation;
49 elapsedTimer Phase::_t_output;
50
51 #ifndef PRODUCT
52 elapsedTimer Phase::_t_graphReshaping;
53 elapsedTimer Phase::_t_scheduler;
54 elapsedTimer Phase::_t_blockOrdering;
55 elapsedTimer Phase::_t_macroEliminate;
56 elapsedTimer Phase::_t_macroExpand;
57 elapsedTimer Phase::_t_peephole;
58 elapsedTimer Phase::_t_codeGeneration;
59 elapsedTimer Phase::_t_registerMethod;
60 elapsedTimer Phase::_t_temporaryTimer1;
61 elapsedTimer Phase::_t_temporaryTimer2;
62 elapsedTimer Phase::_t_idealLoopVerify;
63
64 // Subtimers for _t_optimizer
65 elapsedTimer Phase::_t_iterGVN;
66 elapsedTimer Phase::_t_iterGVN2;
67 elapsedTimer Phase::_t_incrInline;
68
69 // Subtimers for _t_registerAllocation
70 elapsedTimer Phase::_t_ctorChaitin;
71 elapsedTimer Phase::_t_buildIFGphysical;
72 elapsedTimer Phase::_t_computeLive;
73 elapsedTimer Phase::_t_regAllocSplit;
74 elapsedTimer Phase::_t_postAllocCopyRemoval;
75 elapsedTimer Phase::_t_fixupSpills;
76
77 // Subtimers for _t_output
78 elapsedTimer Phase::_t_instrSched;
79 elapsedTimer Phase::_t_buildOopMaps;
80 #endif
81
82 //------------------------------Phase------------------------------------------
83 Phase::Phase( PhaseNumber pnum ) : _pnum(pnum), C( pnum == Compiler ? NULL : Compile::current()) {
84 // Poll for requests from shutdown mechanism to quiesce compiler (4448539, 4448544).
85 // This is an effective place to poll, since the compiler is full of phases.
86 // In particular, every inlining site uses a recursively created Parse phase.
87 CompileBroker::maybe_block();
94
95 void Phase::print_timers() {
96 tty->print_cr ("Accumulated compiler times:");
97 tty->print_cr ("---------------------------");
98 tty->print_cr (" Total compilation: %3.3f sec.", Phase::_t_totalCompilation.seconds());
99 tty->print (" method compilation : %3.3f sec", Phase::_t_methodCompilation.seconds());
100 tty->print ("/%d bytes",_total_bytes_compiled);
101 tty->print_cr (" (%3.0f bytes per sec) ", Phase::_total_bytes_compiled / Phase::_t_methodCompilation.seconds());
102 tty->print_cr (" stub compilation : %3.3f sec.", Phase::_t_stubCompilation.seconds());
103 tty->print_cr (" Phases:");
104 tty->print_cr (" parse : %3.3f sec", Phase::_t_parser.seconds());
105 tty->print_cr (" optimizer : %3.3f sec", Phase::_t_optimizer.seconds());
106 if( Verbose || WizardMode ) {
107 if (DoEscapeAnalysis) {
108 // EA is part of Optimizer.
109 tty->print_cr (" escape analysis: %3.3f sec", Phase::_t_escapeAnalysis.seconds());
110 tty->print_cr (" connection graph: %3.3f sec", Phase::_t_connectionGraph.seconds());
111 tty->print_cr (" macroEliminate : %3.3f sec", Phase::_t_macroEliminate.seconds());
112 }
113 tty->print_cr (" iterGVN : %3.3f sec", Phase::_t_iterGVN.seconds());
114 tty->print_cr (" incrInline : %3.3f sec", Phase::_t_incrInline.seconds());
115 tty->print_cr (" idealLoop : %3.3f sec", Phase::_t_idealLoop.seconds());
116 tty->print_cr (" idealLoopVerify: %3.3f sec", Phase::_t_idealLoopVerify.seconds());
117 tty->print_cr (" ccp : %3.3f sec", Phase::_t_ccp.seconds());
118 tty->print_cr (" iterGVN2 : %3.3f sec", Phase::_t_iterGVN2.seconds());
119 tty->print_cr (" macroExpand : %3.3f sec", Phase::_t_macroExpand.seconds());
120 tty->print_cr (" graphReshape : %3.3f sec", Phase::_t_graphReshaping.seconds());
121 double optimizer_subtotal = Phase::_t_iterGVN.seconds() + Phase::_t_iterGVN2.seconds() +
122 Phase::_t_escapeAnalysis.seconds() + Phase::_t_macroEliminate.seconds() +
123 Phase::_t_idealLoop.seconds() + Phase::_t_ccp.seconds() +
124 Phase::_t_macroExpand.seconds() + Phase::_t_graphReshaping.seconds();
125 double percent_of_optimizer = ((optimizer_subtotal == 0.0) ? 0.0 : (optimizer_subtotal / Phase::_t_optimizer.seconds() * 100.0));
126 tty->print_cr (" subtotal : %3.3f sec, %3.2f %%", optimizer_subtotal, percent_of_optimizer);
127 }
128 tty->print_cr (" matcher : %3.3f sec", Phase::_t_matcher.seconds());
129 tty->print_cr (" scheduler : %3.3f sec", Phase::_t_scheduler.seconds());
130 tty->print_cr (" regalloc : %3.3f sec", Phase::_t_registerAllocation.seconds());
131 if( Verbose || WizardMode ) {
132 tty->print_cr (" ctorChaitin : %3.3f sec", Phase::_t_ctorChaitin.seconds());
133 tty->print_cr (" buildIFG : %3.3f sec", Phase::_t_buildIFGphysical.seconds());
134 tty->print_cr (" computeLive : %3.3f sec", Phase::_t_computeLive.seconds());
|