Revision: 24840
Author: [email protected]
Date: Thu Oct 23 11:56:26 2014 UTC
Log: Reland 'Simplify TurboFan's c1visualizer file handling.'
This is r24819 plus some tiny fixes to make the Mac toolchain happy.
[email protected]
Review URL: https://codereview.chromium.org/676673002
https://code.google.com/p/v8/source/detail?r=24840
Modified:
/branches/bleeding_edge/src/compiler/pipeline.cc
/branches/bleeding_edge/src/compiler/pipeline.h
/branches/bleeding_edge/src/isolate.cc
/branches/bleeding_edge/src/isolate.h
=======================================
--- /branches/bleeding_edge/src/compiler/pipeline.cc Thu Oct 23 09:14:35
2014 UTC
+++ /branches/bleeding_edge/src/compiler/pipeline.cc Thu Oct 23 11:56:26
2014 UTC
@@ -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 @@
}
-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(
@@ -106,24 +100,6 @@
FLAG_turbo_types && !untyped ? Verifier::TYPED :
Verifier::UNTYPED);
}
}
-
-
-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 {
@@ -190,7 +166,8 @@
<< "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 @@
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 @@
return Handle<Code>::null();
}
if (FLAG_trace_turbo) {
- PrintAllocator("CodeGen", &allocator);
+ TurboCfgFile tcf(isolate());
+ tcf << AsC1VAllocator("CodeGen", &allocator);
}
}
=======================================
--- /branches/bleeding_edge/src/compiler/pipeline.h Thu Oct 23 09:14:35
2014 UTC
+++ /branches/bleeding_edge/src/compiler/pipeline.h Thu Oct 23 11:56:26
2014 UTC
@@ -5,8 +5,6 @@
#ifndef V8_COMPILER_PIPELINE_H_
#define V8_COMPILER_PIPELINE_H_
-#include <fstream> // NOLINT(readability/streams)
-
#include "src/v8.h"
#include "src/compiler.h"
@@ -54,12 +52,6 @@
Zone* zone() { return info_->zone(); }
Schedule* ComputeSchedule(ZonePool* zone_pool, Graph* graph);
- void OpenTurboCfgFile(std::ofstream* stream);
- void PrintCompilationStart();
- void PrintScheduleAndInstructions(const char* phase, const Schedule*
schedule,
- const SourcePositionTable* positions,
- const InstructionSequence*
instructions);
- void PrintAllocator(const char* phase, const RegisterAllocator*
allocator);
void VerifyAndPrintGraph(Graph* graph, const char* phase,
bool untyped = false);
Handle<Code> GenerateCode(PipelineStatistics* pipeline_statistics,
=======================================
--- /branches/bleeding_edge/src/isolate.cc Thu Oct 23 09:14:35 2014 UTC
+++ /branches/bleeding_edge/src/isolate.cc Thu Oct 23 11:56:26 2014 UTC
@@ -6,6 +6,7 @@
#include <fstream> // NOLINT(readability/streams)
#include <iostream> // NOLINT(readability/streams)
+#include <sstream>
#include "src/v8.h"
@@ -1955,12 +1956,8 @@
if (!create_heap_objects) Assembler::QuietNaN(heap_.nan_value());
if (FLAG_trace_turbo) {
- // Erase the file.
- char buffer[512];
- Vector<char> filename(buffer, sizeof(buffer));
- GetTurboCfgFileName(filename);
- std::ofstream turbo_cfg_stream(filename.start(),
- std::fstream::out |
std::fstream::trunc);
+ // Create an empty file.
+ std::ofstream(GetTurboCfgFileName().c_str(), std::ios_base::trunc);
}
// If we are deserializing, log non-function code objects and compiled
@@ -2377,12 +2374,13 @@
}
-void Isolate::GetTurboCfgFileName(Vector<char> filename) {
+std::string Isolate::GetTurboCfgFileName() {
if (FLAG_trace_turbo_cfg_file == NULL) {
- SNPrintF(filename, "turbo-%d-%d.cfg", base::OS::GetCurrentProcessId(),
- id());
+ std::ostringstream os;
+ os << "turbo-" << base::OS::GetCurrentProcessId() << "-" << id()
<< ".cfg";
+ return os.str();
} else {
- StrNCpy(filename, FLAG_trace_turbo_cfg_file, filename.length());
+ return FLAG_trace_turbo_cfg_file;
}
}
=======================================
--- /branches/bleeding_edge/src/isolate.h Thu Oct 23 09:14:35 2014 UTC
+++ /branches/bleeding_edge/src/isolate.h Thu Oct 23 11:56:26 2014 UTC
@@ -1099,7 +1099,7 @@
static Isolate* NewForTesting() { return new Isolate(false); }
- void GetTurboCfgFileName(Vector<char> buffer);
+ std::string GetTurboCfgFileName();
private:
explicit Isolate(bool enable_serializer);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.