1 // Copyright 2016 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef V8_LIBPLATFORM_TRACING_TRACE_WRITER_H_ 6 #define V8_LIBPLATFORM_TRACING_TRACE_WRITER_H_ 7 8 #include "include/libplatform/v8-tracing.h" 9 10 namespace v8 { 11 namespace platform { 12 namespace tracing { 13 14 class Recorder; 15 16 class JSONTraceWriter : public TraceWriter { 17 public: 18 explicit JSONTraceWriter(std::ostream& stream); 19 JSONTraceWriter(std::ostream& stream, const std::string& tag); 20 ~JSONTraceWriter() override; 21 void AppendTraceEvent(TraceObject* trace_event) override; 22 void Flush() override; 23 24 private: 25 void AppendArgValue(uint8_t type, TraceObject::ArgValue value); 26 void AppendArgValue(v8::ConvertableToTraceFormat*); 27 28 std::ostream& stream_; 29 bool append_comma_ = false; 30 }; 31 32 #if defined(V8_ENABLE_SYSTEM_INSTRUMENTATION) 33 class SystemInstrumentationTraceWriter : public TraceWriter { 34 public: 35 SystemInstrumentationTraceWriter(); 36 ~SystemInstrumentationTraceWriter() override; 37 void AppendTraceEvent(TraceObject* trace_event) override; 38 void Flush() override; 39 40 private: 41 std::unique_ptr<Recorder> recorder_; 42 }; 43 #endif 44 45 } // namespace tracing 46 } // namespace platform 47 } // namespace v8 48 49 #endif // V8_LIBPLATFORM_TRACING_TRACE_WRITER_H_ 50