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