LLVM
22.0.0git
lib
XRay
BlockPrinter.cpp
Go to the documentation of this file.
1
//===- BlockPrinter.cpp - FDR Block Pretty Printer Implementation --------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
#include "
llvm/XRay/BlockPrinter.h
"
9
10
namespace
llvm
{
11
namespace
xray
{
12
13
Error
BlockPrinter::visit
(
BufferExtents
&R) {
14
OS <<
"\n[New Block]\n"
;
15
CurrentState = State::Preamble;
16
return
RP.visit(R);
17
}
18
19
// Preamble printing.
20
Error
BlockPrinter::visit
(
NewBufferRecord
&R) {
21
if
(CurrentState == State::Start)
22
OS <<
"\n[New Block]\n"
;
23
24
OS <<
"Preamble: \n"
;
25
CurrentState = State::Preamble;
26
return
RP.visit(R);
27
}
28
29
Error
BlockPrinter::visit
(
WallclockRecord
&R) {
30
CurrentState = State::Preamble;
31
return
RP.visit(R);
32
}
33
34
Error
BlockPrinter::visit
(
PIDRecord
&R) {
35
CurrentState = State::Preamble;
36
return
RP.visit(R);
37
}
38
39
// Metadata printing.
40
Error
BlockPrinter::visit
(
NewCPUIDRecord
&R) {
41
if
(CurrentState == State::Preamble)
42
OS <<
"\nBody:\n"
;
43
if
(CurrentState == State::Function)
44
OS <<
"\nMetadata: "
;
45
CurrentState = State::Metadata;
46
OS <<
" "
;
47
auto
E
= RP.visit(R);
48
return
E
;
49
}
50
51
Error
BlockPrinter::visit
(
TSCWrapRecord
&R) {
52
if
(CurrentState == State::Function)
53
OS <<
"\nMetadata:"
;
54
CurrentState = State::Metadata;
55
OS <<
" "
;
56
auto
E
= RP.visit(R);
57
return
E
;
58
}
59
60
// Custom events will be rendered like "function" events.
61
Error
BlockPrinter::visit
(
CustomEventRecord
&R) {
62
if
(CurrentState == State::Metadata)
63
OS <<
"\n"
;
64
CurrentState = State::CustomEvent;
65
OS <<
"* "
;
66
auto
E
= RP.visit(R);
67
return
E
;
68
}
69
70
Error
BlockPrinter::visit
(
CustomEventRecordV5
&R) {
71
if
(CurrentState == State::Metadata)
72
OS <<
"\n"
;
73
CurrentState = State::CustomEvent;
74
OS <<
"* "
;
75
auto
E
= RP.visit(R);
76
return
E
;
77
}
78
79
Error
BlockPrinter::visit
(
TypedEventRecord
&R) {
80
if
(CurrentState == State::Metadata)
81
OS <<
"\n"
;
82
CurrentState = State::CustomEvent;
83
OS <<
"* "
;
84
auto
E
= RP.visit(R);
85
return
E
;
86
}
87
88
// Function call printing.
89
Error
BlockPrinter::visit
(
FunctionRecord
&R) {
90
if
(CurrentState == State::Metadata)
91
OS <<
"\n"
;
92
CurrentState = State::Function;
93
OS <<
"- "
;
94
auto
E
= RP.visit(R);
95
return
E
;
96
}
97
98
Error
BlockPrinter::visit
(
CallArgRecord
&R) {
99
CurrentState = State::Arg;
100
OS <<
" : "
;
101
auto
E
= RP.visit(R);
102
return
E
;
103
}
104
105
Error
BlockPrinter::visit
(
EndBufferRecord
&R) {
106
CurrentState = State::End;
107
OS <<
" *** "
;
108
auto
E
= RP.visit(R);
109
return
E
;
110
}
111
112
}
// namespace xray
113
}
// namespace llvm
BlockPrinter.h
E
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
llvm::Error
Lightweight error class with error context and mandatory checking.
Definition
Error.h:159
llvm::xray::BlockPrinter::visit
Error visit(BufferExtents &) override
Definition
BlockPrinter.cpp:13
llvm::xray::BufferExtents
Definition
FDRRecords.h:111
llvm::xray::CallArgRecord
Definition
FDRRecords.h:292
llvm::xray::CustomEventRecordV5
Definition
FDRRecords.h:236
llvm::xray::CustomEventRecord
Definition
FDRRecords.h:207
llvm::xray::EndBufferRecord
Definition
FDRRecords.h:360
llvm::xray::FunctionRecord
Definition
FDRRecords.h:373
llvm::xray::NewBufferRecord
Definition
FDRRecords.h:337
llvm::xray::NewCPUIDRecord
Definition
FDRRecords.h:159
llvm::xray::PIDRecord
Definition
FDRRecords.h:314
llvm::xray::TSCWrapRecord
Definition
FDRRecords.h:185
llvm::xray::TypedEventRecord
Definition
FDRRecords.h:263
llvm::xray::WallclockRecord
Definition
FDRRecords.h:134
llvm::xray
Definition
BlockIndexer.h:23
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition
AddressRanges.h:18
Generated on
for LLVM by
1.14.0