351
352 // Examine block's code shape to predict if it is not commonly executed.
353 bool has_uncommon_code() const;
354
355 #ifndef PRODUCT
356 // Debugging print of basic block
357 void dump_bidx(const Block* orig, outputStream* st = tty) const;
358 void dump_pred(const PhaseCFG* cfg, Block* orig, outputStream* st = tty) const;
359 void dump_head(const PhaseCFG* cfg, outputStream* st = tty) const;
360 void dump() const;
361 void dump(const PhaseCFG* cfg) const;
362 #endif
363 };
364
365
366 //------------------------------PhaseCFG---------------------------------------
367 // Build an array of Basic Block pointers, one per Node.
368 class PhaseCFG : public Phase {
369 friend class VMStructs;
370 private:
371
372 // Root of whole program
373 RootNode* _root;
374
375 // The block containing the root node
376 Block* _root_block;
377
378 // List of basic blocks that are created during CFG creation
379 Block_List _blocks;
380
381 // Count of basic blocks
382 uint _number_of_blocks;
383
384 // Arena for the blocks to be stored in
385 Arena* _block_arena;
386
387 // Info used for scheduling
388 PhaseChaitin* _regalloc;
389
390 // Register pressure heuristic used?
391 bool _scheduling_for_pressure;
|
351
352 // Examine block's code shape to predict if it is not commonly executed.
353 bool has_uncommon_code() const;
354
355 #ifndef PRODUCT
356 // Debugging print of basic block
357 void dump_bidx(const Block* orig, outputStream* st = tty) const;
358 void dump_pred(const PhaseCFG* cfg, Block* orig, outputStream* st = tty) const;
359 void dump_head(const PhaseCFG* cfg, outputStream* st = tty) const;
360 void dump() const;
361 void dump(const PhaseCFG* cfg) const;
362 #endif
363 };
364
365
366 //------------------------------PhaseCFG---------------------------------------
367 // Build an array of Basic Block pointers, one per Node.
368 class PhaseCFG : public Phase {
369 friend class VMStructs;
370 private:
371 // Root of whole program
372 RootNode* _root;
373
374 // The block containing the root node
375 Block* _root_block;
376
377 // List of basic blocks that are created during CFG creation
378 Block_List _blocks;
379
380 // Count of basic blocks
381 uint _number_of_blocks;
382
383 // Arena for the blocks to be stored in
384 Arena* _block_arena;
385
386 // Info used for scheduling
387 PhaseChaitin* _regalloc;
388
389 // Register pressure heuristic used?
390 bool _scheduling_for_pressure;
|