Chromium Code Reviews| Index: src/compiler/pipeline.cc |
| diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc |
| index 7da2fb543c9d32c77bad75e558ac262d942b20ce..71af5b85471ea45ce33cec0ddf8a53c57a918111 100644 |
| --- a/src/compiler/pipeline.cc |
| +++ b/src/compiler/pipeline.cc |
| @@ -90,13 +90,21 @@ static inline bool VerifyGraphs() { |
| } |
| +void Pipeline::PrintCompilationStart() { |
| + FILE* turbo_cfg_file = base::OS::FOpen("turbo.cfg", "a+"); |
|
Benedikt Meurer
2014/10/13 04:02:12
Please use std::ofstream here.
Jarin
2014/10/13 07:35:53
Done.
|
| + OFStream turbo_cfg_of(turbo_cfg_file); |
| + turbo_cfg_of << AsC1VCompilation(info()); |
| + fclose(turbo_cfg_file); |
| +} |
| + |
| + |
| void Pipeline::VerifyAndPrintGraph(Graph* graph, const char* phase) { |
| if (FLAG_trace_turbo) { |
| char buffer[256]; |
| Vector<char> filename(buffer, sizeof(buffer)); |
| + SmartArrayPointer<char> functionname; |
| if (!info_->shared_info().is_null()) { |
| - SmartArrayPointer<char> functionname = |
| - info_->shared_info()->DebugName()->ToCString(); |
| + functionname = info_->shared_info()->DebugName()->ToCString(); |
| if (strlen(functionname.get()) > 0) { |
| SNPrintF(filename, "turbo-%s-%s", functionname.get(), phase); |
| } else { |
| @@ -132,6 +140,25 @@ void Pipeline::VerifyAndPrintGraph(Graph* graph, const char* phase) { |
| } |
| +void Pipeline::PrintScheduleAndInstructions( |
| + const char* phase, const Schedule* schedule, |
| + const InstructionSequence* instructions) { |
| + FILE* turbo_cfg_file = base::OS::FOpen("turbo.cfg", "a+"); |
|
Benedikt Meurer
2014/10/13 04:02:12
Please use std::ofstream here.
Jarin
2014/10/13 07:35:52
Done.
|
| + OFStream turbo_cfg_of(turbo_cfg_file); |
| + turbo_cfg_of << AsC1V(phase, schedule, instructions); |
| + fclose(turbo_cfg_file); |
| +} |
| + |
| + |
| +void Pipeline::PrintAllocator(const char* phase, |
| + const RegisterAllocator* allocator) { |
| + FILE* turbo_cfg_file = base::OS::FOpen("turbo.cfg", "a+"); |
|
Benedikt Meurer
2014/10/13 04:02:12
Please use std::ofstream here.
Jarin
2014/10/13 07:35:53
Done.
|
| + OFStream turbo_cfg_of(turbo_cfg_file); |
| + turbo_cfg_of << AsC1VAllocator(phase, allocator); |
| + fclose(turbo_cfg_file); |
| +} |
| + |
| + |
| class AstGraphBuilderWithPositions : public AstGraphBuilder { |
| public: |
| explicit AstGraphBuilderWithPositions(CompilationInfo* info, JSGraph* jsgraph, |
| @@ -188,6 +215,7 @@ Handle<Code> Pipeline::GenerateCode() { |
| << "Begin compiling method " |
| << info()->function()->debug_name()->ToCString().get() |
| << " using Turbofan" << std::endl; |
| + PrintCompilationStart(); |
| } |
| // Build the graph. |
| @@ -405,6 +433,7 @@ Handle<Code> Pipeline::GenerateCode(Linkage* linkage, Graph* graph, |
| OFStream os(stdout); |
| os << "----- Instruction sequence before register allocation -----\n" |
| << sequence; |
| + PrintScheduleAndInstructions("CodeGen", schedule, &sequence); |
| } |
| // Allocate registers. |
| @@ -419,6 +448,9 @@ Handle<Code> Pipeline::GenerateCode(Linkage* linkage, Graph* graph, |
| linkage->info()->AbortOptimization(kNotEnoughVirtualRegistersRegalloc); |
| return Handle<Code>::null(); |
| } |
| + if (FLAG_trace_turbo) { |
| + PrintAllocator("CodeGen", &allocator); |
| + } |
| } |
| if (FLAG_trace_turbo) { |