| Index: src/compiler/graph-visualizer.cc | 
| diff --git a/src/compiler/graph-visualizer.cc b/src/compiler/graph-visualizer.cc | 
| index 20ebabe2c081a1ef6f82c35841e33f52bc02115d..abdd1c9210af029455a1c9936794f5470f9524c5 100644 | 
| --- a/src/compiler/graph-visualizer.cc | 
| +++ b/src/compiler/graph-visualizer.cc | 
| @@ -24,6 +24,34 @@ namespace v8 { | 
| namespace internal { | 
| namespace compiler { | 
|  | 
| + | 
| +FILE* OpenVisualizerLogFile(CompilationInfo* info, const char* phase, | 
| +                            const char* suffix, const char* mode) { | 
| +  EmbeddedVector<char, 256> filename; | 
| +  SmartArrayPointer<char> function_name; | 
| +  if (!info->shared_info().is_null()) { | 
| +    function_name = info->shared_info()->DebugName()->ToCString(); | 
| +    if (strlen(function_name.get()) > 0) { | 
| +      SNPrintF(filename, "turbo-%s", function_name.get()); | 
| +    } else { | 
| +      SNPrintF(filename, "turbo-%p", static_cast<void*>(info)); | 
| +    } | 
| +  } else { | 
| +    SNPrintF(filename, "turbo-none-%s", phase); | 
| +  } | 
| +  std::replace(filename.start(), filename.start() + filename.length(), ' ', | 
| +               '_'); | 
| + | 
| +  EmbeddedVector<char, 256> full_filename; | 
| +  if (phase == NULL) { | 
| +    SNPrintF(full_filename, "%s.%s", filename.start(), suffix); | 
| +  } else { | 
| +    SNPrintF(full_filename, "%s-%s.%s", filename.start(), phase, suffix); | 
| +  } | 
| +  return base::OS::FOpen(full_filename.start(), mode); | 
| +} | 
| + | 
| + | 
| static int SafeId(Node* node) { return node == NULL ? -1 : node->id(); } | 
| static const char* SafeMnemonic(Node* node) { | 
| return node == NULL ? "null" : node->op()->mnemonic(); | 
|  |