comparison src/share/vm/opto/phase.cpp @ 23471:70649f10b88c

8129847: Compiling methods generated by Nashorn triggers high memory usage in C2 Summary: Add a new compiler phase, PhaseRenumberLive, that renumbers live nodes. Reviewed-by: kvn, thartmann, vlivanov, shade
author zmajo
date Tue, 15 Dec 2015 09:46:51 +0100
parents 9df0d8f65fea
children b5f3a471e646
comparison
equal deleted inserted replaced
23469:c1679cc87ba0 23471:70649f10b88c
65 65
66 // Subtimers for _t_optimizer 66 // Subtimers for _t_optimizer
67 elapsedTimer Phase::_t_iterGVN; 67 elapsedTimer Phase::_t_iterGVN;
68 elapsedTimer Phase::_t_iterGVN2; 68 elapsedTimer Phase::_t_iterGVN2;
69 elapsedTimer Phase::_t_incrInline; 69 elapsedTimer Phase::_t_incrInline;
70 elapsedTimer Phase::_t_renumberLive;
71
70 72
71 // Subtimers for _t_registerAllocation 73 // Subtimers for _t_registerAllocation
72 elapsedTimer Phase::_t_ctorChaitin; 74 elapsedTimer Phase::_t_ctorChaitin;
73 elapsedTimer Phase::_t_buildIFGphysical; 75 elapsedTimer Phase::_t_buildIFGphysical;
74 elapsedTimer Phase::_t_computeLive; 76 elapsedTimer Phase::_t_computeLive;
113 tty->print_cr (" connection graph: %3.3f sec", Phase::_t_connectionGraph.seconds()); 115 tty->print_cr (" connection graph: %3.3f sec", Phase::_t_connectionGraph.seconds());
114 tty->print_cr (" macroEliminate : %3.3f sec", Phase::_t_macroEliminate.seconds()); 116 tty->print_cr (" macroEliminate : %3.3f sec", Phase::_t_macroEliminate.seconds());
115 } 117 }
116 tty->print_cr (" iterGVN : %3.3f sec", Phase::_t_iterGVN.seconds()); 118 tty->print_cr (" iterGVN : %3.3f sec", Phase::_t_iterGVN.seconds());
117 tty->print_cr (" incrInline : %3.3f sec", Phase::_t_incrInline.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());
118 tty->print_cr (" idealLoop : %3.3f sec", Phase::_t_idealLoop.seconds()); 121 tty->print_cr (" idealLoop : %3.3f sec", Phase::_t_idealLoop.seconds());
119 tty->print_cr (" idealLoopVerify: %3.3f sec", Phase::_t_idealLoopVerify.seconds()); 122 tty->print_cr (" idealLoopVerify: %3.3f sec", Phase::_t_idealLoopVerify.seconds());
120 tty->print_cr (" ccp : %3.3f sec", Phase::_t_ccp.seconds()); 123 tty->print_cr (" ccp : %3.3f sec", Phase::_t_ccp.seconds());
121 tty->print_cr (" iterGVN2 : %3.3f sec", Phase::_t_iterGVN2.seconds()); 124 tty->print_cr (" iterGVN2 : %3.3f sec", Phase::_t_iterGVN2.seconds());
122 tty->print_cr (" macroExpand : %3.3f sec", Phase::_t_macroExpand.seconds()); 125 tty->print_cr (" macroExpand : %3.3f sec", Phase::_t_macroExpand.seconds());
123 tty->print_cr (" graphReshape : %3.3f sec", Phase::_t_graphReshaping.seconds()); 126 tty->print_cr (" graphReshape : %3.3f sec", Phase::_t_graphReshaping.seconds());
124 double optimizer_subtotal = Phase::_t_iterGVN.seconds() + Phase::_t_iterGVN2.seconds() + 127 double optimizer_subtotal = Phase::_t_iterGVN.seconds() + Phase::_t_iterGVN2.seconds() + Phase::_t_renumberLive.seconds() +
125 Phase::_t_escapeAnalysis.seconds() + Phase::_t_macroEliminate.seconds() + 128 Phase::_t_escapeAnalysis.seconds() + Phase::_t_macroEliminate.seconds() +
126 Phase::_t_idealLoop.seconds() + Phase::_t_ccp.seconds() + 129 Phase::_t_idealLoop.seconds() + Phase::_t_ccp.seconds() +
127 Phase::_t_macroExpand.seconds() + Phase::_t_graphReshaping.seconds(); 130 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)); 131 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); 132 tty->print_cr (" subtotal : %3.3f sec, %3.2f %%", optimizer_subtotal, percent_of_optimizer);