113,128c113,134 < @@ -110,6 +110,7 @@ < tty->print_cr (" Compute Liveness: %7.3f s", timers[_t_computeLive].seconds()); < tty->print_cr (" Regalloc Split: %7.3f s", timers[_t_regAllocSplit].seconds()); < tty->print_cr (" Postalloc Copy Rem: %7.3f s", timers[_t_postAllocCopyRemoval].seconds()); < + tty->print_cr (" Merge multidefs: %7.3f s", timers[_t_mergeMultidefs].seconds()); < tty->print_cr (" Fixup Spills: %7.3f s", timers[_t_fixupSpills].seconds()); < tty->print_cr (" Compact: %7.3f s", timers[_t_chaitinCompact].seconds()); < tty->print_cr (" Coalesce 1: %7.3f s", timers[_t_chaitinCoalesce1].seconds()); < @@ -126,6 +127,7 @@ < timers[_t_computeLive].seconds() + < timers[_t_regAllocSplit].seconds() + < timers[_t_postAllocCopyRemoval].seconds() + < + timers[_t_mergeMultidefs].seconds() + < timers[_t_fixupSpills].seconds() + < timers[_t_chaitinCompact].seconds() + < timers[_t_chaitinCoalesce1].seconds() + --- > @@ -74,6 +74,7 @@ > elapsedTimer Phase::_t_computeLive; > elapsedTimer Phase::_t_regAllocSplit; > elapsedTimer Phase::_t_postAllocCopyRemoval; > +elapsedTimer Phase::_t_mergeMultidefs; > elapsedTimer Phase::_t_fixupSpills; > > // Subtimers for _t_output > @@ -136,11 +137,12 @@ > tty->print_cr (" computeLive : %3.3f sec", Phase::_t_computeLive.seconds()); > tty->print_cr (" regAllocSplit : %3.3f sec", Phase::_t_regAllocSplit.seconds()); > tty->print_cr (" postAllocCopyRemoval: %3.3f sec", Phase::_t_postAllocCopyRemoval.seconds()); > + tty->print_cr (" mergeMultidefs: %3.3f sec", Phase::_t_mergeMultidefs.seconds()); > tty->print_cr (" fixupSpills : %3.3f sec", Phase::_t_fixupSpills.seconds()); > double regalloc_subtotal = Phase::_t_ctorChaitin.seconds() + > Phase::_t_buildIFGphysical.seconds() + Phase::_t_computeLive.seconds() + > Phase::_t_regAllocSplit.seconds() + Phase::_t_fixupSpills.seconds() + > - Phase::_t_postAllocCopyRemoval.seconds(); > + Phase::_t_postAllocCopyRemoval.seconds() + Phase::_t_mergeMultidefs.seconds(); > double percent_of_regalloc = ((regalloc_subtotal == 0.0) ? 0.0 : (regalloc_subtotal / Phase::_t_registerAllocation.seconds() * 100.0)); > tty->print_cr (" subtotal : %3.3f sec, %3.2f %%", regalloc_subtotal, percent_of_regalloc); > } 132,139c138,145 < @@ -88,6 +88,7 @@ < _t_computeLive, < _t_regAllocSplit, < _t_postAllocCopyRemoval, < + _t_mergeMultidefs, < _t_fixupSpills, < _t_chaitinCompact, < _t_chaitinCoalesce1, --- > @@ -109,6 +109,7 @@ > static elapsedTimer _t_computeLive; > static elapsedTimer _t_regAllocSplit; > static elapsedTimer _t_postAllocCopyRemoval; > + static elapsedTimer _t_mergeMultidefs; > static elapsedTimer _t_fixupSpills; > > // Subtimers for _t_output 178c184 < + Compile::TracePhase tp("mergeMultidefs", &timers[_t_mergeMultidefs]); --- > + NOT_PRODUCT( Compile::TracePhase t3("mergeMultidefs", &_t_mergeMultidefs, TimeCompiler); ) 223c229 < + merge = new MachMergeNode(def); --- > + merge = new (C) MachMergeNode(def);