8011621: live_ranges_in_separate_class.patch

Reviewed-by: kvn, roland
This commit is contained in:
Niclas Adlertz 2013-04-16 10:08:41 +02:00 committed by Nils Eliasson
parent fbdab16d85
commit 09fdc18edc
21 changed files with 733 additions and 771 deletions

View file

@ -2127,22 +2127,19 @@ void Compile::Code_Gen() {
}
NOT_PRODUCT( verify_graph_edges(); )
PhaseChaitin regalloc(unique(),cfg,m);
PhaseChaitin regalloc(unique(), cfg, m);
_regalloc = &regalloc;
{
TracePhase t2("regalloc", &_t_registerAllocation, true);
// Perform any platform dependent preallocation actions. This is used,
// for example, to avoid taking an implicit null pointer exception
// using the frame pointer on win95.
_regalloc->pd_preallocate_hook();
// Perform register allocation. After Chaitin, use-def chains are
// no longer accurate (at spill code) and so must be ignored.
// Node->LRG->reg mappings are still accurate.
_regalloc->Register_Allocate();
// Bail out if the allocator builds too many nodes
if (failing()) return;
if (failing()) {
return;
}
}
// Prior to register allocation we kept empty basic blocks in case the
@ -2160,9 +2157,6 @@ void Compile::Code_Gen() {
cfg.fixup_flow();
}
// Perform any platform dependent postallocation verifications.
debug_only( _regalloc->pd_postallocate_verify_hook(); )
// Apply peephole optimizations
if( OptoPeephole ) {
NOT_PRODUCT( TracePhase t2("peephole", &_t_peephole, TimeCompiler); )