diff -r 57e7e1d3ade8 -r 55892792936f hotspot/src/share/vm/opto/block.hpp --- a/hotspot/src/share/vm/opto/block.hpp Wed Sep 16 20:33:16 2015 +0200 +++ b/hotspot/src/share/vm/opto/block.hpp Wed Sep 16 13:16:17 2015 -0700 @@ -37,6 +37,7 @@ class Matcher; class RootNode; class VectorSet; +class PhaseChaitin; struct Tarjan; //------------------------------Block_Array------------------------------------ @@ -383,6 +384,12 @@ // 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; @@ -433,12 +440,14 @@ // to late. Helper for schedule_late. Block* hoist_to_cheaper_block(Block* LCA, Block* early, Node* self); - bool schedule_local(Block* block, GrowableArray& ready_cnt, VectorSet& next_call); + bool schedule_local(Block* block, GrowableArray& 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& ready_cnt, VectorSet& next_call, uint sched_slot); + Node* select(Block* block, Node_List& worklist, GrowableArray& 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& ready_cnt, MachCallNode* mcall, VectorSet& next_call);