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?
|
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 // ciEnv for retrieving flags
372 ciEnv* _ciEnv;
373
374 // Root of whole program
375 RootNode* _root;
376
377 // The block containing the root node
378 Block* _root_block;
379
380 // List of basic blocks that are created during CFG creation
381 Block_List _blocks;
382
383 // Count of basic blocks
384 uint _number_of_blocks;
385
386 // Arena for the blocks to be stored in
387 Arena* _block_arena;
388
389 // Info used for scheduling
390 PhaseChaitin* _regalloc;
391
392 // Register pressure heuristic used?
|