| Index: src/compiler/pipeline.cc
|
| diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc
|
| index f050c9b4c0825b163eabf07b7a40adbdac399b4d..438f10459524b33113a439c942e0434097f1fdc2 100644
|
| --- a/src/compiler/pipeline.cc
|
| +++ b/src/compiler/pipeline.cc
|
| @@ -4,7 +4,6 @@
|
|
|
| #include "src/compiler/pipeline.h"
|
|
|
| -#include <fstream> // NOLINT(readability/streams)
|
| #include <sstream>
|
|
|
| #include "src/base/platform/elapsed-timer.h"
|
| @@ -98,10 +97,19 @@ static inline bool VerifyGraphs() {
|
| }
|
|
|
|
|
| -struct TurboCfgFile : public std::ofstream {
|
| - explicit TurboCfgFile(Isolate* isolate)
|
| - : std::ofstream(isolate->GetTurboCfgFileName(), std::ios_base::app) {}
|
| -};
|
| +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);
|
| +}
|
|
|
|
|
| void Pipeline::VerifyAndPrintGraph(
|
| @@ -150,6 +158,24 @@ 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,
|
| @@ -208,7 +234,7 @@ Handle<Code> Pipeline::GenerateCode() {
|
| << "Begin compiling method "
|
| << info()->function()->debug_name()->ToCString().get()
|
| << " using Turbofan" << std::endl;
|
| - TurboCfgFile(isolate()) << AsC1VCompilation(info());
|
| + PrintCompilationStart();
|
| }
|
|
|
| ZonePool zone_pool(isolate());
|
| @@ -461,8 +487,8 @@ Handle<Code> Pipeline::GenerateCode(ZonePool* zone_pool, Linkage* linkage,
|
| OFStream os(stdout);
|
| os << "----- Instruction sequence before register allocation -----\n"
|
| << sequence;
|
| - TurboCfgFile(isolate())
|
| - << AsC1V("CodeGen", schedule, source_positions, &sequence);
|
| + PrintScheduleAndInstructions("CodeGen", schedule, source_positions,
|
| + &sequence);
|
| }
|
|
|
| // Allocate registers.
|
| @@ -481,7 +507,7 @@ Handle<Code> Pipeline::GenerateCode(ZonePool* zone_pool, Linkage* linkage,
|
| return Handle<Code>::null();
|
| }
|
| if (FLAG_trace_turbo) {
|
| - TurboCfgFile(isolate()) << AsC1VAllocator("CodeGen", &allocator);
|
| + PrintAllocator("CodeGen", &allocator);
|
| }
|
| }
|
|
|
|
|