hotspot/src/share/vm/c1/c1_CFGPrinter.hpp
changeset 46526 519f1fbec7af
parent 36302 23a79c43ba92
equal deleted inserted replaced
46525:3a5c833a43de 46526:519f1fbec7af
    37 class Interval;
    37 class Interval;
    38 
    38 
    39 typedef GrowableArray<Interval*> IntervalList;
    39 typedef GrowableArray<Interval*> IntervalList;
    40 
    40 
    41 class CFGPrinter : public AllStatic {
    41 class CFGPrinter : public AllStatic {
    42 private:
       
    43   static CFGPrinterOutput* _output;
       
    44 public:
    42 public:
    45   static CFGPrinterOutput* output() { assert(_output != NULL, ""); return _output; }
       
    46 
       
    47 
       
    48   static void print_compilation(Compilation* compilation);
    43   static void print_compilation(Compilation* compilation);
    49   static void print_cfg(BlockList* blocks, const char* name, bool do_print_HIR, bool do_print_LIR);
    44   static void print_cfg(BlockList* blocks, const char* name, bool do_print_HIR, bool do_print_LIR);
    50   static void print_cfg(IR* blocks, const char* name, bool do_print_HIR, bool do_print_LIR);
    45   static void print_cfg(IR* blocks, const char* name, bool do_print_HIR, bool do_print_LIR);
    51   static void print_intervals(IntervalList* intervals, const char* name);
    46   static void print_intervals(IntervalList* intervals, const char* name);
    52 };
    47 };
    53 
    48 
       
    49 class CFGPrinterOutput : public CHeapObj<mtCompiler> {
       
    50  private:
       
    51   outputStream* _output;
       
    52 
       
    53   Compilation*  _compilation;
       
    54   bool _do_print_HIR;
       
    55   bool _do_print_LIR;
       
    56 
       
    57   class PrintBlockClosure: public BlockClosure {
       
    58     void block_do(BlockBegin* block) { if (block != NULL) Compilation::current()->cfg_printer_output()->print_block(block); }
       
    59   };
       
    60 
       
    61   outputStream* output() { assert(_output != NULL, ""); return _output; }
       
    62 
       
    63   void inc_indent();
       
    64   void dec_indent();
       
    65   void print(const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
       
    66   void print_begin(const char* tag);
       
    67   void print_end(const char* tag);
       
    68 
       
    69   char* method_name(ciMethod* method, bool short_name = false);
       
    70 
       
    71  public:
       
    72   CFGPrinterOutput(Compilation* compilation);
       
    73 
       
    74   void set_print_flags(bool do_print_HIR, bool do_print_LIR) { _do_print_HIR = do_print_HIR; _do_print_LIR = do_print_LIR; }
       
    75 
       
    76   void print_compilation();
       
    77   void print_intervals(IntervalList* intervals, const char* name);
       
    78 
       
    79   void print_state(BlockBegin* block);
       
    80   void print_operand(Value instr);
       
    81   void print_HIR(Value instr);
       
    82   void print_HIR(BlockBegin* block);
       
    83   void print_LIR(BlockBegin* block);
       
    84   void print_block(BlockBegin* block);
       
    85   void print_cfg(BlockList* blocks, const char* name);
       
    86   void print_cfg(IR* blocks, const char* name);
       
    87 };
       
    88 
    54 #endif
    89 #endif
    55 
    90 
    56 #endif // SHARE_VM_C1_C1_CFGPRINTER_HPP
    91 #endif // SHARE_VM_C1_C1_CFGPRINTER_HPP