diff options
Diffstat (limited to 'chromium/v8/src/diagnostics/code-tracer.h')
| -rw-r--r-- | chromium/v8/src/diagnostics/code-tracer.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/chromium/v8/src/diagnostics/code-tracer.h b/chromium/v8/src/diagnostics/code-tracer.h index a9f276bf448..194d3cbe667 100644 --- a/chromium/v8/src/diagnostics/code-tracer.h +++ b/chromium/v8/src/diagnostics/code-tracer.h @@ -5,9 +5,11 @@ #ifndef V8_DIAGNOSTICS_CODE_TRACER_H_ #define V8_DIAGNOSTICS_CODE_TRACER_H_ +#include "src/base/optional.h" #include "src/common/globals.h" #include "src/flags/flags.h" #include "src/utils/allocation.h" +#include "src/utils/ostreams.h" #include "src/utils/utils.h" #include "src/utils/vector.h" @@ -45,6 +47,28 @@ class CodeTracer final : public Malloced { CodeTracer* tracer_; }; + class StreamScope : public Scope { + public: + explicit StreamScope(CodeTracer* tracer) : Scope(tracer) { + FILE* file = this->file(); + if (file == stdout) { + stdout_stream_.emplace(); + } else { + file_stream_.emplace(file); + } + } + + std::ostream& stream() { + if (stdout_stream_.has_value()) return stdout_stream_.value(); + return file_stream_.value(); + } + + private: + // Exactly one of these two will be initialized. + base::Optional<StdoutStream> stdout_stream_; + base::Optional<OFStream> file_stream_; + }; + void OpenFile() { if (!ShouldRedirect()) { return; |
