equal
deleted
inserted
replaced
376 { |
376 { |
377 ResourceMark rm; |
377 ResourceMark rm; |
378 // I'll need a few machine-specific GotoNodes. Make an Ideal GotoNode, |
378 // I'll need a few machine-specific GotoNodes. Make an Ideal GotoNode, |
379 // then Match it into a machine-specific Node. Then clone the machine |
379 // then Match it into a machine-specific Node. Then clone the machine |
380 // Node on demand. |
380 // Node on demand. |
381 Node *x = new (C, 1) GotoNode(NULL); |
381 Node *x = new (C) GotoNode(NULL); |
382 x->init_req(0, x); |
382 x->init_req(0, x); |
383 _goto = m.match_tree(x); |
383 _goto = m.match_tree(x); |
384 assert(_goto != NULL, ""); |
384 assert(_goto != NULL, ""); |
385 _goto->set_req(0,_goto); |
385 _goto->set_req(0,_goto); |
386 |
386 |
430 p = p->in(0); // Move control forward |
430 p = p->in(0); // Move control forward |
431 } while( !p->is_block_proj() && |
431 } while( !p->is_block_proj() && |
432 !p->is_block_start() ); |
432 !p->is_block_start() ); |
433 // Make the block begin with one of Region or StartNode. |
433 // Make the block begin with one of Region or StartNode. |
434 if( !p->is_block_start() ) { |
434 if( !p->is_block_start() ) { |
435 RegionNode *r = new (C, 2) RegionNode( 2 ); |
435 RegionNode *r = new (C) RegionNode( 2 ); |
436 r->init_req(1, p); // Insert RegionNode in the way |
436 r->init_req(1, p); // Insert RegionNode in the way |
437 proj->set_req(0, r); // Insert RegionNode in the way |
437 proj->set_req(0, r); // Insert RegionNode in the way |
438 p = r; |
438 p = r; |
439 } |
439 } |
440 // 'p' now points to the start of this basic block |
440 // 'p' now points to the start of this basic block |
506 // surrounding blocks. |
506 // surrounding blocks. |
507 float freq = in->_freq * in->succ_prob(succ_no); |
507 float freq = in->_freq * in->succ_prob(succ_no); |
508 // get ProjNode corresponding to the succ_no'th successor of the in block |
508 // get ProjNode corresponding to the succ_no'th successor of the in block |
509 ProjNode* proj = in->_nodes[in->_nodes.size() - in->_num_succs + succ_no]->as_Proj(); |
509 ProjNode* proj = in->_nodes[in->_nodes.size() - in->_num_succs + succ_no]->as_Proj(); |
510 // create region for basic block |
510 // create region for basic block |
511 RegionNode* region = new (C, 2) RegionNode(2); |
511 RegionNode* region = new (C) RegionNode(2); |
512 region->init_req(1, proj); |
512 region->init_req(1, proj); |
513 // setup corresponding basic block |
513 // setup corresponding basic block |
514 Block* block = new (_bbs._arena) Block(_bbs._arena, region); |
514 Block* block = new (_bbs._arena) Block(_bbs._arena, region); |
515 _bbs.map(region->_idx, block); |
515 _bbs.map(region->_idx, block); |
516 C->regalloc()->set_bad(region->_idx); |
516 C->regalloc()->set_bad(region->_idx); |