2378 TracePhase tp("peephole", &timers[_t_peephole]); 2379 PhasePeephole peep( _regalloc, cfg); 2380 peep.do_transform(); 2381 } 2382 2383 // Do late expand if CPU requires this. 2384 if (Matcher::require_postalloc_expand) { 2385 TracePhase tp("postalloc_expand", &timers[_t_postalloc_expand]); 2386 cfg.postalloc_expand(_regalloc); 2387 } 2388 2389 // Convert Nodes to instruction bits in a buffer 2390 { 2391 TraceTime tp("output", &timers[_t_output], CITime); 2392 Output(); 2393 } 2394 2395 print_method(PHASE_FINAL_CODE); 2396 2397 // He's dead, Jim. 2398 _cfg = (PhaseCFG*)0xdeadbeef; 2399 _regalloc = (PhaseChaitin*)0xdeadbeef; 2400 } 2401 2402 2403 //------------------------------dump_asm--------------------------------------- 2404 // Dump formatted assembly 2405 #ifndef PRODUCT 2406 void Compile::dump_asm(int *pcs, uint pc_limit) { 2407 bool cut_short = false; 2408 tty->print_cr("#"); 2409 tty->print("# "); _tf->dump(); tty->cr(); 2410 tty->print_cr("#"); 2411 2412 // For all blocks 2413 int pc = 0x0; // Program counter 2414 char starts_bundle = ' '; 2415 _regalloc->dump_frame(); 2416 2417 Node *n = NULL; 2418 for (uint i = 0; i < _cfg->number_of_blocks(); i++) { 2419 if (VMThread::should_terminate()) { | 2378 TracePhase tp("peephole", &timers[_t_peephole]); 2379 PhasePeephole peep( _regalloc, cfg); 2380 peep.do_transform(); 2381 } 2382 2383 // Do late expand if CPU requires this. 2384 if (Matcher::require_postalloc_expand) { 2385 TracePhase tp("postalloc_expand", &timers[_t_postalloc_expand]); 2386 cfg.postalloc_expand(_regalloc); 2387 } 2388 2389 // Convert Nodes to instruction bits in a buffer 2390 { 2391 TraceTime tp("output", &timers[_t_output], CITime); 2392 Output(); 2393 } 2394 2395 print_method(PHASE_FINAL_CODE); 2396 2397 // He's dead, Jim. 2398 _cfg = (PhaseCFG*)(uintptr_t)0xdeadbeef; 2399 _regalloc = (PhaseChaitin*)(uintptr_t)0xdeadbeef; 2400 } 2401 2402 2403 //------------------------------dump_asm--------------------------------------- 2404 // Dump formatted assembly 2405 #ifndef PRODUCT 2406 void Compile::dump_asm(int *pcs, uint pc_limit) { 2407 bool cut_short = false; 2408 tty->print_cr("#"); 2409 tty->print("# "); _tf->dump(); tty->cr(); 2410 tty->print_cr("#"); 2411 2412 // For all blocks 2413 int pc = 0x0; // Program counter 2414 char starts_bundle = ' '; 2415 _regalloc->dump_frame(); 2416 2417 Node *n = NULL; 2418 for (uint i = 0; i < _cfg->number_of_blocks(); i++) { 2419 if (VMThread::should_terminate()) { |