Index: src/compiler/pipeline.cc |
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc |
index 609de0670b16d6795c323efae90afa8f3ff7b7db..3b337444b6ca7b8c98663f5a167d0b64787ab430 100644 |
--- a/src/compiler/pipeline.cc |
+++ b/src/compiler/pipeline.cc |
@@ -2,6 +2,9 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "src/compiler/pipeline.h" |
+ |
+#include <fstream> // NOLINT(readability/streams) |
#include <sstream> |
#include "src/base/platform/elapsed-timer.h" |
@@ -20,7 +23,6 @@ |
#include "src/compiler/js-typed-lowering.h" |
#include "src/compiler/machine-operator-reducer.h" |
#include "src/compiler/phi-reducer.h" |
-#include "src/compiler/pipeline.h" |
#include "src/compiler/pipeline-statistics.h" |
#include "src/compiler/register-allocator.h" |
#include "src/compiler/schedule.h" |
@@ -47,19 +49,11 @@ static inline bool VerifyGraphs() { |
} |
-void Pipeline::PrintCompilationStart() { |
- std::ofstream turbo_cfg_stream; |
- OpenTurboCfgFile(&turbo_cfg_stream); |
- turbo_cfg_stream << AsC1VCompilation(info()); |
-} |
- |
- |
-void Pipeline::OpenTurboCfgFile(std::ofstream* stream) { |
- char buffer[512]; |
- Vector<char> filename(buffer, sizeof(buffer)); |
- isolate()->GetTurboCfgFileName(filename); |
- stream->open(filename.start(), std::fstream::out | std::fstream::app); |
-} |
+struct TurboCfgFile : public std::ofstream { |
+ explicit TurboCfgFile(Isolate* isolate) |
+ : std::ofstream(isolate->GetTurboCfgFileName().c_str(), |
+ std::ios_base::app) {} |
+}; |
void Pipeline::VerifyAndPrintGraph( |
@@ -108,24 +102,6 @@ void Pipeline::VerifyAndPrintGraph( |
} |
-void Pipeline::PrintScheduleAndInstructions( |
- const char* phase, const Schedule* schedule, |
- const SourcePositionTable* positions, |
- const InstructionSequence* instructions) { |
- std::ofstream turbo_cfg_stream; |
- OpenTurboCfgFile(&turbo_cfg_stream); |
- turbo_cfg_stream << AsC1V(phase, schedule, positions, instructions); |
-} |
- |
- |
-void Pipeline::PrintAllocator(const char* phase, |
- const RegisterAllocator* allocator) { |
- std::ofstream turbo_cfg_stream; |
- OpenTurboCfgFile(&turbo_cfg_stream); |
- turbo_cfg_stream << AsC1VAllocator(phase, allocator); |
-} |
- |
- |
class AstGraphBuilderWithPositions : public AstGraphBuilder { |
public: |
explicit AstGraphBuilderWithPositions(Zone* local_zone, CompilationInfo* info, |
@@ -190,7 +166,8 @@ Handle<Code> Pipeline::GenerateCode() { |
<< "Begin compiling method " |
<< info()->function()->debug_name()->ToCString().get() |
<< " using Turbofan" << std::endl; |
- PrintCompilationStart(); |
+ TurboCfgFile tcf(isolate()); |
+ tcf << AsC1VCompilation(info()); |
} |
// Build the graph. |
@@ -448,8 +425,8 @@ Handle<Code> Pipeline::GenerateCode(PipelineStatistics* pipeline_statistics, |
OFStream os(stdout); |
os << "----- Instruction sequence before register allocation -----\n" |
<< sequence; |
- PrintScheduleAndInstructions("CodeGen", schedule, source_positions, |
- &sequence); |
+ TurboCfgFile tcf(isolate()); |
+ tcf << AsC1V("CodeGen", schedule, source_positions, &sequence); |
} |
// Allocate registers. |
@@ -468,7 +445,8 @@ Handle<Code> Pipeline::GenerateCode(PipelineStatistics* pipeline_statistics, |
return Handle<Code>::null(); |
} |
if (FLAG_trace_turbo) { |
- PrintAllocator("CodeGen", &allocator); |
+ TurboCfgFile tcf(isolate()); |
+ tcf << AsC1VAllocator("CodeGen", &allocator); |
} |
} |