1428 }
1429 _regalloc = NULL;
1430
1431 // If we inserted any instructions between a Call and his CatchNode,
1432 // clone the instructions on all paths below the Catch.
1433 for (uint i = 0; i < number_of_blocks(); i++) {
1434 Block* block = get_block(i);
1435 call_catch_cleanup(block);
1436 }
1437
1438 #ifndef PRODUCT
1439 if (trace_opto_pipelining()) {
1440 tty->print("\n---- After GlobalCodeMotion ----\n");
1441 for (uint i = 0; i < number_of_blocks(); i++) {
1442 Block* block = get_block(i);
1443 block->dump();
1444 }
1445 }
1446 #endif
1447 // Dead.
1448 _node_latency = (GrowableArray<uint> *)0xdeadbeef;
1449 }
1450
1451 bool PhaseCFG::do_global_code_motion() {
1452
1453 build_dominator_tree();
1454 if (C->failing()) {
1455 return false;
1456 }
1457
1458 NOT_PRODUCT( C->verify_graph_edges(); )
1459
1460 estimate_block_frequency();
1461
1462 global_code_motion();
1463
1464 if (C->failing()) {
1465 return false;
1466 }
1467
1468 return true;
|
1428 }
1429 _regalloc = NULL;
1430
1431 // If we inserted any instructions between a Call and his CatchNode,
1432 // clone the instructions on all paths below the Catch.
1433 for (uint i = 0; i < number_of_blocks(); i++) {
1434 Block* block = get_block(i);
1435 call_catch_cleanup(block);
1436 }
1437
1438 #ifndef PRODUCT
1439 if (trace_opto_pipelining()) {
1440 tty->print("\n---- After GlobalCodeMotion ----\n");
1441 for (uint i = 0; i < number_of_blocks(); i++) {
1442 Block* block = get_block(i);
1443 block->dump();
1444 }
1445 }
1446 #endif
1447 // Dead.
1448 _node_latency = (GrowableArray<uint> *)(uintptr_t)0xdeadbeef;
1449 }
1450
1451 bool PhaseCFG::do_global_code_motion() {
1452
1453 build_dominator_tree();
1454 if (C->failing()) {
1455 return false;
1456 }
1457
1458 NOT_PRODUCT( C->verify_graph_edges(); )
1459
1460 estimate_block_frequency();
1461
1462 global_code_motion();
1463
1464 if (C->failing()) {
1465 return false;
1466 }
1467
1468 return true;
|