hotspot/src/share/vm/c1/c1_IR.cpp
changeset 38177 b0c9cb06506b
parent 38033 996ce936543f
child 39219 1b33aa56ed18
equal deleted inserted replaced
38175:4e2bff1a5467 38177:b0c9cb06506b
   458   int        _num_loops;           // total number of loops
   458   int        _num_loops;           // total number of loops
   459   bool       _iterative_dominators;// method requires iterative computation of dominatiors
   459   bool       _iterative_dominators;// method requires iterative computation of dominatiors
   460 
   460 
   461   BlockList* _linear_scan_order;   // the resulting list of blocks in correct order
   461   BlockList* _linear_scan_order;   // the resulting list of blocks in correct order
   462 
   462 
   463   BitMap     _visited_blocks;      // used for recursive processing of blocks
   463   ResourceBitMap _visited_blocks;   // used for recursive processing of blocks
   464   BitMap     _active_blocks;       // used for recursive processing of blocks
   464   ResourceBitMap _active_blocks;    // used for recursive processing of blocks
   465   BitMap     _dominator_blocks;    // temproary BitMap used for computation of dominator
   465   ResourceBitMap _dominator_blocks; // temproary BitMap used for computation of dominator
   466   intArray   _forward_branches;    // number of incoming forward branches for each block
   466   intArray       _forward_branches; // number of incoming forward branches for each block
   467   BlockList  _loop_end_blocks;     // list of all loop end blocks collected during count_edges
   467   BlockList      _loop_end_blocks;  // list of all loop end blocks collected during count_edges
   468   BitMap2D   _loop_map;            // two-dimensional bit set: a bit is set if a block is contained in a loop
   468   BitMap2D       _loop_map;         // two-dimensional bit set: a bit is set if a block is contained in a loop
   469   BlockList  _work_list;           // temporary list (used in mark_loops and compute_order)
   469   BlockList      _work_list;        // temporary list (used in mark_loops and compute_order)
   470   BlockList  _loop_headers;
   470   BlockList      _loop_headers;
   471 
   471 
   472   Compilation* _compilation;
   472   Compilation* _compilation;
   473 
   473 
   474   // accessors for _visited_blocks and _active_blocks
   474   // accessors for _visited_blocks and _active_blocks
   475   void init_visited()                     { _active_blocks.clear(); _visited_blocks.clear(); }
   475   void init_visited()                     { _active_blocks.clear(); _visited_blocks.clear(); }
   533   _dominator_blocks(_max_block_id),
   533   _dominator_blocks(_max_block_id),
   534   _forward_branches(_max_block_id, _max_block_id, 0),
   534   _forward_branches(_max_block_id, _max_block_id, 0),
   535   _loop_end_blocks(8),
   535   _loop_end_blocks(8),
   536   _work_list(8),
   536   _work_list(8),
   537   _linear_scan_order(NULL), // initialized later with correct size
   537   _linear_scan_order(NULL), // initialized later with correct size
   538   _loop_map(0, 0),          // initialized later with correct size
   538   _loop_map(0),             // initialized later with correct size
   539   _compilation(c)
   539   _compilation(c)
   540 {
   540 {
   541   TRACE_LINEAR_SCAN(2, tty->print_cr("***** computing linear-scan block order"));
   541   TRACE_LINEAR_SCAN(2, tty->print_cr("***** computing linear-scan block order"));
   542 
   542 
   543   init_visited();
   543   init_visited();