hotspot/src/share/vm/opto/chaitin.hpp
changeset 22914 0712db174bbb
parent 22912 a8c042dca573
child 24425 53764d2358f9
equal deleted inserted replaced
22913:d80017962061 22914:0712db174bbb
    32 #include "opto/live.hpp"
    32 #include "opto/live.hpp"
    33 #include "opto/matcher.hpp"
    33 #include "opto/matcher.hpp"
    34 #include "opto/phase.hpp"
    34 #include "opto/phase.hpp"
    35 #include "opto/regalloc.hpp"
    35 #include "opto/regalloc.hpp"
    36 #include "opto/regmask.hpp"
    36 #include "opto/regmask.hpp"
       
    37 #include "opto/machnode.hpp"
    37 
    38 
    38 class LoopTree;
    39 class LoopTree;
    39 class MachCallNode;
       
    40 class MachSafePointNode;
       
    41 class Matcher;
    40 class Matcher;
    42 class PhaseCFG;
    41 class PhaseCFG;
    43 class PhaseLive;
    42 class PhaseLive;
    44 class PhaseRegAlloc;
    43 class PhaseRegAlloc;
    45 class   PhaseChaitin;
    44 class   PhaseChaitin;
   422   uint _lo_stk_degree;          // Head of lo-stk-degree LRGs list
   421   uint _lo_stk_degree;          // Head of lo-stk-degree LRGs list
   423   uint _hi_degree;              // Head of hi-degree LRGs list
   422   uint _hi_degree;              // Head of hi-degree LRGs list
   424   uint _simplified;             // Linked list head of simplified LRGs
   423   uint _simplified;             // Linked list head of simplified LRGs
   425 
   424 
   426   // Helper functions for Split()
   425   // Helper functions for Split()
   427   uint split_DEF( Node *def, Block *b, int loc, uint max, Node **Reachblock, Node **debug_defs, GrowableArray<uint> splits, int slidx );
   426   uint split_DEF(Node *def, Block *b, int loc, uint max, Node **Reachblock, Node **debug_defs, GrowableArray<uint> splits, int slidx );
   428   uint split_USE( Node *def, Block *b, Node *use, uint useidx, uint max, bool def_down, bool cisc_sp, GrowableArray<uint> splits, int slidx );
   427   uint split_USE(MachSpillCopyNode::SpillType spill_type, Node *def, Block *b, Node *use, uint useidx, uint max, bool def_down, bool cisc_sp, GrowableArray<uint> splits, int slidx );
   429 
   428 
   430   //------------------------------clone_projs------------------------------------
   429   //------------------------------clone_projs------------------------------------
   431   // After cloning some rematerialized instruction, clone any MachProj's that
   430   // After cloning some rematerialized instruction, clone any MachProj's that
   432   // follow it.  Example: Intel zero is XOR, kills flags.  Sparc FP constants
   431   // follow it.  Example: Intel zero is XOR, kills flags.  Sparc FP constants
   433   // use G3 as an address temp.
   432   // use G3 as an address temp.
   445 
   444 
   446   Node *split_Rematerialize(Node *def, Block *b, uint insidx, uint &maxlrg, GrowableArray<uint> splits,
   445   Node *split_Rematerialize(Node *def, Block *b, uint insidx, uint &maxlrg, GrowableArray<uint> splits,
   447                             int slidx, uint *lrg2reach, Node **Reachblock, bool walkThru);
   446                             int slidx, uint *lrg2reach, Node **Reachblock, bool walkThru);
   448   // True if lidx is used before any real register is def'd in the block
   447   // True if lidx is used before any real register is def'd in the block
   449   bool prompt_use( Block *b, uint lidx );
   448   bool prompt_use( Block *b, uint lidx );
   450   Node *get_spillcopy_wide( Node *def, Node *use, uint uidx );
   449   Node *get_spillcopy_wide(MachSpillCopyNode::SpillType spill_type, Node *def, Node *use, uint uidx );
   451   // Insert the spill at chosen location.  Skip over any intervening Proj's or
   450   // Insert the spill at chosen location.  Skip over any intervening Proj's or
   452   // Phis.  Skip over a CatchNode and projs, inserting in the fall-through block
   451   // Phis.  Skip over a CatchNode and projs, inserting in the fall-through block
   453   // instead.  Update high-pressure indices.  Create a new live range.
   452   // instead.  Update high-pressure indices.  Create a new live range.
   454   void insert_proj( Block *b, uint i, Node *spill, uint maxlrg );
   453   void insert_proj( Block *b, uint i, Node *spill, uint maxlrg );
   455 
   454