< prev index next >
src/share/vm/c1/c1_CFGPrinter.cpp
Print this page
*** 30,119 ****
#include "c1/c1_LinearScan.hpp"
#include "c1/c1_ValueStack.hpp"
#ifndef PRODUCT
-
- class CFGPrinterOutput : public CHeapObj<mtCompiler> {
- private:
- outputStream* _output;
-
- Compilation* _compilation;
- bool _do_print_HIR;
- bool _do_print_LIR;
-
- class PrintBlockClosure: public BlockClosure {
- void block_do(BlockBegin* block) { if (block != NULL) CFGPrinter::output()->print_block(block); }
- };
-
-
- outputStream* output() { assert(_output != NULL, ""); return _output; }
-
- void inc_indent();
- void dec_indent();
- void print(const char* format, ...) ATTRIBUTE_PRINTF(2, 3);
- void print_begin(const char* tag);
- void print_end(const char* tag);
-
- char* method_name(ciMethod* method, bool short_name = false);
-
- public:
- CFGPrinterOutput();
-
- void set_compilation(Compilation* compilation) { _compilation = compilation; }
- void set_print_flags(bool do_print_HIR, bool do_print_LIR) { _do_print_HIR = do_print_HIR; _do_print_LIR = do_print_LIR; }
-
- void print_compilation();
- void print_intervals(IntervalList* intervals, const char* name);
-
- void print_state(BlockBegin* block);
- void print_operand(Value instr);
- void print_HIR(Value instr);
- void print_HIR(BlockBegin* block);
- void print_LIR(BlockBegin* block);
- void print_block(BlockBegin* block);
- void print_cfg(BlockList* blocks, const char* name);
- void print_cfg(IR* blocks, const char* name);
- };
-
- CFGPrinterOutput* CFGPrinter::_output = NULL;
-
-
-
-
void CFGPrinter::print_compilation(Compilation* compilation) {
! if (_output == NULL) {
! _output = new CFGPrinterOutput();
! }
! output()->set_compilation(compilation);
! output()->print_compilation();
}
void CFGPrinter::print_cfg(BlockList* blocks, const char* name, bool do_print_HIR, bool do_print_LIR) {
! output()->set_print_flags(do_print_HIR, do_print_LIR);
! output()->print_cfg(blocks, name);
}
void CFGPrinter::print_cfg(IR* blocks, const char* name, bool do_print_HIR, bool do_print_LIR) {
! output()->set_print_flags(do_print_HIR, do_print_LIR);
! output()->print_cfg(blocks, name);
}
-
void CFGPrinter::print_intervals(IntervalList* intervals, const char* name) {
! output()->print_intervals(intervals, name);
}
!
! CFGPrinterOutput::CFGPrinterOutput()
! : _output(new(ResourceObj::C_HEAP, mtCompiler) fileStream("output.cfg"))
{
}
-
-
void CFGPrinterOutput::inc_indent() {
output()->inc();
output()->inc();
}
--- 30,74 ----
#include "c1/c1_LinearScan.hpp"
#include "c1/c1_ValueStack.hpp"
#ifndef PRODUCT
void CFGPrinter::print_compilation(Compilation* compilation) {
! CFGPrinterOutput* output = compilation->cfg_printer_output();
! output->print_compilation();
}
void CFGPrinter::print_cfg(BlockList* blocks, const char* name, bool do_print_HIR, bool do_print_LIR) {
! CFGPrinterOutput* output = Compilation::current()->cfg_printer_output();
! output->set_print_flags(do_print_HIR, do_print_LIR);
! output->print_cfg(blocks, name);
}
void CFGPrinter::print_cfg(IR* blocks, const char* name, bool do_print_HIR, bool do_print_LIR) {
! CFGPrinterOutput* output = Compilation::current()->cfg_printer_output();
! output->set_print_flags(do_print_HIR, do_print_LIR);
! output->print_cfg(blocks, name);
}
void CFGPrinter::print_intervals(IntervalList* intervals, const char* name) {
! CFGPrinterOutput* output = Compilation::current()->cfg_printer_output();
! output->print_intervals(intervals, name);
}
! CFGPrinterOutput::CFGPrinterOutput(Compilation* compilation)
! : _output(NULL),
! _compilation(compilation),
! _do_print_HIR(false),
! _do_print_LIR(false)
{
+ char file_name[O_BUFLEN];
+ jio_snprintf(file_name, sizeof(file_name), "output_tid" UINTX_FORMAT "_pid%u.cfg",
+ os::current_thread_id(), os::current_process_id());
+ _output = new(ResourceObj::C_HEAP, mtCompiler) fileStream(file_name, "at");
}
void CFGPrinterOutput::inc_indent() {
output()->inc();
output()->inc();
}
< prev index next >