Reviewers: Benedikt Meurer,

Message:
Committed patchset #1 (id:1) manually as 24821 (tree was closed).

Description:
Revert "Simplify TurboFan's c1visualizer file handling."

This reverts r24819, it broke the build on Mac due to header incompatibilities.

[email protected]

Committed: https://code.google.com/p/v8/source/detail?r=24821

Please review this at https://codereview.chromium.org/672873002/

Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+57, -17 lines):
  M src/compiler/pipeline.h
  M src/compiler/pipeline.cc
  M src/isolate.h
  M src/isolate.cc


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);
     }
   }

Index: src/compiler/pipeline.h
diff --git a/src/compiler/pipeline.h b/src/compiler/pipeline.h
index cf4fa5e1d74cd93d62bd1c5355a280f34decef3a..87c22a6aeba25fbc5e481a7e218efb9f4f2d6ad8 100644
--- a/src/compiler/pipeline.h
+++ b/src/compiler/pipeline.h
@@ -5,6 +5,8 @@
 #ifndef V8_COMPILER_PIPELINE_H_
 #define V8_COMPILER_PIPELINE_H_

+#include <fstream>  // NOLINT(readability/streams)
+
 #include "src/v8.h"

 #include "src/compiler.h"
@@ -51,6 +53,12 @@ class Pipeline {
   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(ZonePool* zone_pool, Linkage* linkage, Graph* graph,
Index: src/isolate.cc
diff --git a/src/isolate.cc b/src/isolate.cc
index 152c936b98cef04789b17e826b97d439ef672315..6caaf19c8a4ffed90ff61db56faf0fe5bb1ec563 100644
--- a/src/isolate.cc
+++ b/src/isolate.cc
@@ -1951,8 +1951,12 @@ bool Isolate::Init(Deserializer* des) {
   if (!create_heap_objects) Assembler::QuietNaN(heap_.nan_value());

   if (FLAG_trace_turbo) {
-    // Create an empty file.
-    std::ofstream(GetTurboCfgFileName(), std::ios_base::trunc);
+    // 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);
   }

   // If we are deserializing, log non-function code objects and compiled
@@ -2368,11 +2372,13 @@ BasicBlockProfiler* Isolate::GetOrCreateBasicBlockProfiler() {
 }


-std::string Isolate::GetTurboCfgFileName() {
-  return FLAG_trace_turbo_cfg_file == NULL
-             ? "turbo-" + std::to_string(base::OS::GetCurrentProcessId()) +
-                   "-" + std::to_string(id()) + ".cfg"
-             : FLAG_trace_turbo_cfg_file;
+void Isolate::GetTurboCfgFileName(Vector<char> filename) {
+  if (FLAG_trace_turbo_cfg_file == NULL) {
+    SNPrintF(filename, "turbo-%d-%d.cfg", base::OS::GetCurrentProcessId(),
+             id());
+  } else {
+    StrNCpy(filename, FLAG_trace_turbo_cfg_file, filename.length());
+  }
 }


Index: src/isolate.h
diff --git a/src/isolate.h b/src/isolate.h
index 854bce462537b8833936c221d6b00d744f6c9264..55d139c57a02ae8b7ce9bc48de8790ed345d52d6 100644
--- a/src/isolate.h
+++ b/src/isolate.h
@@ -1098,7 +1098,7 @@ class Isolate {

   static Isolate* NewForTesting() { return new Isolate(false); }

-  std::string GetTurboCfgFileName();
+  void GetTurboCfgFileName(Vector<char> buffer);

  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.

Reply via email to