• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===- xray-converter.h - XRay Trace Conversion ---------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // Defines the TraceConverter class for turning binary traces into
11 // human-readable text and vice versa.
12 //
13 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_TOOLS_LLVM_XRAY_XRAY_CONVERTER_H
15 #define LLVM_TOOLS_LLVM_XRAY_XRAY_CONVERTER_H
16 
17 #include "func-id-helper.h"
18 #include "llvm/XRay/Trace.h"
19 #include "llvm/XRay/XRayRecord.h"
20 
21 namespace llvm {
22 namespace xray {
23 
24 class TraceConverter {
25   FuncIdConversionHelper &FuncIdHelper;
26   bool Symbolize;
27 
28 public:
29   TraceConverter(FuncIdConversionHelper &FuncIdHelper, bool Symbolize = false)
FuncIdHelper(FuncIdHelper)30       : FuncIdHelper(FuncIdHelper), Symbolize(Symbolize) {}
31 
32   void exportAsYAML(const Trace &Records, raw_ostream &OS);
33   void exportAsRAWv1(const Trace &Records, raw_ostream &OS);
34 
35   /// For this conversion, the Function records within each thread are expected
36   /// to be in sorted TSC order. The trace event format encodes stack traces, so
37   /// the linear history is essential for correct output.
38   void exportAsChromeTraceEventFormat(const Trace &Records, raw_ostream &OS);
39 };
40 
41 } // namespace xray
42 } // namespace llvm
43 
44 #endif // LLVM_TOOLS_LLVM_XRAY_XRAY_CONVERTER_H
45