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());