< 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 >