< prev index next >

src/share/vm/opto/block.hpp

Print this page

        

*** 35,44 **** --- 35,45 ---- class CFGLoop; class MachCallNode; class Matcher; class RootNode; class VectorSet; + class PhaseChaitin; struct Tarjan; //------------------------------Block_Array------------------------------------ // Map dense integer indices to Blocks. Uses classic doubling-array trick. // Abstractly provides an infinite array of Block*'s, initialized to NULL.
*** 381,390 **** --- 382,397 ---- uint _number_of_blocks; // Arena for the blocks to be stored in Arena* _block_arena; + // Info used for scheduling + PhaseChaitin* _regalloc; + + // Register pressure heuristic used? + bool _scheduling_for_pressure; + // The matcher for this compilation Matcher& _matcher; // Map nodes to owning basic block Block_Array _node_to_block_mapping;
*** 431,446 **** // Pick a block between early and late that is a cheaper alternative // to late. Helper for schedule_late. Block* hoist_to_cheaper_block(Block* LCA, Block* early, Node* self); ! bool schedule_local(Block* block, GrowableArray<int>& ready_cnt, VectorSet& next_call); void set_next_call(Block* block, Node* n, VectorSet& next_call); void needed_for_next_call(Block* block, Node* this_call, VectorSet& next_call); // Perform basic-block local scheduling ! Node* select(Block* block, Node_List& worklist, GrowableArray<int>& ready_cnt, VectorSet& next_call, uint sched_slot); // Schedule a call next in the block uint sched_call(Block* block, uint node_cnt, Node_List& worklist, GrowableArray<int>& ready_cnt, MachCallNode* mcall, VectorSet& next_call); // Cleanup if any code lands between a Call and his Catch --- 438,455 ---- // Pick a block between early and late that is a cheaper alternative // to late. Helper for schedule_late. Block* hoist_to_cheaper_block(Block* LCA, Block* early, Node* self); ! bool schedule_local(Block* block, GrowableArray<int>& ready_cnt, VectorSet& next_call, intptr_t* recacl_pressure_nodes); void set_next_call(Block* block, Node* n, VectorSet& next_call); void needed_for_next_call(Block* block, Node* this_call, VectorSet& next_call); // Perform basic-block local scheduling ! Node* select(Block* block, Node_List& worklist, GrowableArray<int>& ready_cnt, VectorSet& next_call, uint sched_slot, ! intptr_t* recacl_pressure_nodes); ! void adjust_register_pressure(Node* n, Block* block, intptr_t *recalc_pressure_nodes, bool finalize_mode); // Schedule a call next in the block uint sched_call(Block* block, uint node_cnt, Node_List& worklist, GrowableArray<int>& ready_cnt, MachCallNode* mcall, VectorSet& next_call); // Cleanup if any code lands between a Call and his Catch
< prev index next >