Mercurial > hg > truffle
comparison src/share/vm/opto/phase.cpp @ 5948:ee138854b3a6
7147744: CTW: assert(false) failed: infinite EA connection graph build
Summary: rewrote Connection graph construction code in EA to reduce time spent there.
Reviewed-by: never
author | kvn |
---|---|
date | Mon, 12 Mar 2012 10:46:47 -0700 |
parents | 3763ca6579b7 |
children | 6f3fd5150b67 |
comparison
equal
deleted
inserted
replaced
5933:fde683df4c27 | 5948:ee138854b3a6 |
---|---|
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()); |