1 /* |
1 /* |
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
37 elapsedTimer Phase::_t_stubCompilation; |
37 elapsedTimer Phase::_t_stubCompilation; |
38 #endif |
38 #endif |
39 |
39 |
40 // The next timers used for LogCompilation |
40 // The next timers used for LogCompilation |
41 elapsedTimer Phase::_t_parser; |
41 elapsedTimer Phase::_t_parser; |
42 elapsedTimer Phase::_t_escapeAnalysis; |
|
43 elapsedTimer Phase::_t_optimizer; |
42 elapsedTimer Phase::_t_optimizer; |
|
43 elapsedTimer Phase::_t_escapeAnalysis; |
|
44 elapsedTimer Phase::_t_connectionGraph; |
44 elapsedTimer Phase::_t_idealLoop; |
45 elapsedTimer Phase::_t_idealLoop; |
45 elapsedTimer Phase::_t_ccp; |
46 elapsedTimer Phase::_t_ccp; |
46 elapsedTimer Phase::_t_matcher; |
47 elapsedTimer Phase::_t_matcher; |
47 elapsedTimer Phase::_t_registerAllocation; |
48 elapsedTimer Phase::_t_registerAllocation; |
48 elapsedTimer Phase::_t_output; |
49 elapsedTimer Phase::_t_output; |
49 |
50 |
50 #ifndef PRODUCT |
51 #ifndef PRODUCT |
51 elapsedTimer Phase::_t_graphReshaping; |
52 elapsedTimer Phase::_t_graphReshaping; |
52 elapsedTimer Phase::_t_scheduler; |
53 elapsedTimer Phase::_t_scheduler; |
53 elapsedTimer Phase::_t_blockOrdering; |
54 elapsedTimer Phase::_t_blockOrdering; |
|
55 elapsedTimer Phase::_t_macroEliminate; |
54 elapsedTimer Phase::_t_macroExpand; |
56 elapsedTimer Phase::_t_macroExpand; |
55 elapsedTimer Phase::_t_peephole; |
57 elapsedTimer Phase::_t_peephole; |
56 elapsedTimer Phase::_t_codeGeneration; |
58 elapsedTimer Phase::_t_codeGeneration; |
57 elapsedTimer Phase::_t_registerMethod; |
59 elapsedTimer Phase::_t_registerMethod; |
58 elapsedTimer Phase::_t_temporaryTimer1; |
60 elapsedTimer Phase::_t_temporaryTimer1; |
102 tty->print_cr (" optimizer : %3.3f sec", Phase::_t_optimizer.seconds()); |
104 tty->print_cr (" optimizer : %3.3f sec", Phase::_t_optimizer.seconds()); |
103 if( Verbose || WizardMode ) { |
105 if( Verbose || WizardMode ) { |
104 if (DoEscapeAnalysis) { |
106 if (DoEscapeAnalysis) { |
105 // EA is part of Optimizer. |
107 // EA is part of Optimizer. |
106 tty->print_cr (" escape analysis: %3.3f sec", Phase::_t_escapeAnalysis.seconds()); |
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()); |
107 } |
111 } |
108 tty->print_cr (" iterGVN : %3.3f sec", Phase::_t_iterGVN.seconds()); |
112 tty->print_cr (" iterGVN : %3.3f sec", Phase::_t_iterGVN.seconds()); |
109 tty->print_cr (" idealLoop : %3.3f sec", Phase::_t_idealLoop.seconds()); |
113 tty->print_cr (" idealLoop : %3.3f sec", Phase::_t_idealLoop.seconds()); |
110 tty->print_cr (" idealLoopVerify: %3.3f sec", Phase::_t_idealLoopVerify.seconds()); |
114 tty->print_cr (" idealLoopVerify: %3.3f sec", Phase::_t_idealLoopVerify.seconds()); |
111 tty->print_cr (" ccp : %3.3f sec", Phase::_t_ccp.seconds()); |
115 tty->print_cr (" ccp : %3.3f sec", Phase::_t_ccp.seconds()); |
112 tty->print_cr (" iterGVN2 : %3.3f sec", Phase::_t_iterGVN2.seconds()); |
116 tty->print_cr (" iterGVN2 : %3.3f sec", Phase::_t_iterGVN2.seconds()); |
113 tty->print_cr (" macroExpand : %3.3f sec", Phase::_t_macroExpand.seconds()); |
117 tty->print_cr (" macroExpand : %3.3f sec", Phase::_t_macroExpand.seconds()); |
114 tty->print_cr (" graphReshape : %3.3f sec", Phase::_t_graphReshaping.seconds()); |
118 tty->print_cr (" graphReshape : %3.3f sec", Phase::_t_graphReshaping.seconds()); |
115 double optimizer_subtotal = Phase::_t_iterGVN.seconds() + |
119 double optimizer_subtotal = Phase::_t_iterGVN.seconds() + Phase::_t_iterGVN2.seconds() + |
|
120 Phase::_t_escapeAnalysis.seconds() + Phase::_t_macroEliminate.seconds() + |
116 Phase::_t_idealLoop.seconds() + Phase::_t_ccp.seconds() + |
121 Phase::_t_idealLoop.seconds() + Phase::_t_ccp.seconds() + |
117 Phase::_t_graphReshaping.seconds(); |
122 Phase::_t_macroExpand.seconds() + Phase::_t_graphReshaping.seconds(); |
118 double percent_of_optimizer = ((optimizer_subtotal == 0.0) ? 0.0 : (optimizer_subtotal / Phase::_t_optimizer.seconds() * 100.0)); |
123 double percent_of_optimizer = ((optimizer_subtotal == 0.0) ? 0.0 : (optimizer_subtotal / Phase::_t_optimizer.seconds() * 100.0)); |
119 tty->print_cr (" subtotal : %3.3f sec, %3.2f %%", optimizer_subtotal, percent_of_optimizer); |
124 tty->print_cr (" subtotal : %3.3f sec, %3.2f %%", optimizer_subtotal, percent_of_optimizer); |
120 } |
125 } |
121 tty->print_cr (" matcher : %3.3f sec", Phase::_t_matcher.seconds()); |
126 tty->print_cr (" matcher : %3.3f sec", Phase::_t_matcher.seconds()); |
122 tty->print_cr (" scheduler : %3.3f sec", Phase::_t_scheduler.seconds()); |
127 tty->print_cr (" scheduler : %3.3f sec", Phase::_t_scheduler.seconds()); |