345 uint DFS( Tarjan *tarjan ); |
345 uint DFS( Tarjan *tarjan ); |
346 |
346 |
347 // Helper function to insert a node into a block |
347 // Helper function to insert a node into a block |
348 void schedule_node_into_block( Node *n, Block *b ); |
348 void schedule_node_into_block( Node *n, Block *b ); |
349 |
349 |
|
350 void replace_block_proj_ctrl( Node *n ); |
|
351 |
350 // Set the basic block for pinned Nodes |
352 // Set the basic block for pinned Nodes |
351 void schedule_pinned_nodes( VectorSet &visited ); |
353 void schedule_pinned_nodes( VectorSet &visited ); |
352 |
354 |
353 // I'll need a few machine-specific GotoNodes. Clone from this one. |
355 // I'll need a few machine-specific GotoNodes. Clone from this one. |
354 MachNode *_goto; |
356 MachNode *_goto; |
605 |
607 |
606 // Return the block that follows "b" in the trace. |
608 // Return the block that follows "b" in the trace. |
607 Block * next(Block *b) const { return _next_list[b->_pre_order]; } |
609 Block * next(Block *b) const { return _next_list[b->_pre_order]; } |
608 void set_next(Block *b, Block *n) const { _next_list[b->_pre_order] = n; } |
610 void set_next(Block *b, Block *n) const { _next_list[b->_pre_order] = n; } |
609 |
611 |
610 // Return the block that preceeds "b" in the trace. |
612 // Return the block that precedes "b" in the trace. |
611 Block * prev(Block *b) const { return _prev_list[b->_pre_order]; } |
613 Block * prev(Block *b) const { return _prev_list[b->_pre_order]; } |
612 void set_prev(Block *b, Block *p) const { _prev_list[b->_pre_order] = p; } |
614 void set_prev(Block *b, Block *p) const { _prev_list[b->_pre_order] = p; } |
613 |
615 |
614 // We've discovered a loop in this trace. Reset last to be "b", and first as |
616 // We've discovered a loop in this trace. Reset last to be "b", and first as |
615 // the block following "b |
617 // the block following "b |