LLVM
22.0.0git
lib
XRay
RecordPrinter.cpp
Go to the documentation of this file.
1
//===- RecordPrinter.cpp - FDR Record Printer -----------------------------===//
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/RecordPrinter.h
"
9
10
#include "
llvm/Support/FormatVariadic.h
"
11
12
namespace
llvm
{
13
namespace
xray
{
14
15
Error
RecordPrinter::visit
(
BufferExtents
&R) {
16
OS <<
formatv
(
"<Buffer: size = {0} bytes>"
, R.size()) << Delim;
17
return
Error::success
();
18
}
19
20
Error
RecordPrinter::visit
(
WallclockRecord
&R) {
21
OS <<
formatv
(
"<Wall Time: seconds = {0}.{1,0+6}>"
, R.seconds(), R.nanos())
22
<< Delim;
23
return
Error::success
();
24
}
25
26
Error
RecordPrinter::visit
(
NewCPUIDRecord
&R) {
27
OS <<
formatv
(
"<CPU: id = {0}, tsc = {1}>"
, R.cpuid(), R.tsc()) << Delim;
28
return
Error::success
();
29
}
30
31
Error
RecordPrinter::visit
(
TSCWrapRecord
&R) {
32
OS <<
formatv
(
"<TSC Wrap: base = {0}>"
, R.tsc()) << Delim;
33
return
Error::success
();
34
}
35
36
Error
RecordPrinter::visit
(
CustomEventRecord
&R) {
37
OS <<
formatv
(
38
"<Custom Event: tsc = {0}, cpu = {1}, size = {2}, data = '{3}'>"
,
39
R.tsc(), R.cpu(), R.size(), R.data())
40
<< Delim;
41
return
Error::success
();
42
}
43
44
Error
RecordPrinter::visit
(
CustomEventRecordV5
&R) {
45
OS <<
formatv
(
"<Custom Event: delta = +{0}, size = {1}, data = '{2}'>"
,
46
R.delta(), R.size(), R.data())
47
<< Delim;
48
return
Error::success
();
49
}
50
51
Error
RecordPrinter::visit
(
TypedEventRecord
&R) {
52
OS <<
formatv
(
53
"<Typed Event: delta = +{0}, type = {1}, size = {2}, data = '{3}'"
,
54
R.delta(), R.eventType(), R.size(), R.data())
55
<< Delim;
56
return
Error::success
();
57
}
58
59
Error
RecordPrinter::visit
(
CallArgRecord
&R) {
60
OS <<
formatv
(
"<Call Argument: data = {0} (hex = {0:x})>"
, R.arg()) << Delim;
61
return
Error::success
();
62
}
63
64
Error
RecordPrinter::visit
(
PIDRecord
&R) {
65
OS <<
formatv
(
"<PID: {0}>"
, R.pid()) << Delim;
66
return
Error::success
();
67
}
68
69
Error
RecordPrinter::visit
(
NewBufferRecord
&R) {
70
OS <<
formatv
(
"<Thread ID: {0}>"
, R.tid()) << Delim;
71
return
Error::success
();
72
}
73
74
Error
RecordPrinter::visit
(
EndBufferRecord
&R) {
75
OS <<
"<End of Buffer>"
<< Delim;
76
return
Error::success
();
77
}
78
79
Error
RecordPrinter::visit
(
FunctionRecord
&R) {
80
// FIXME: Support symbolization here?
81
switch
(R.recordType()) {
82
case
RecordTypes::ENTER
:
83
OS <<
formatv
(
"<Function Enter: #{0} delta = +{1}>"
, R.functionId(),
84
R.delta());
85
break
;
86
case
RecordTypes::ENTER_ARG
:
87
OS <<
formatv
(
"<Function Enter With Arg: #{0} delta = +{1}>"
,
88
R.functionId(), R.delta());
89
break
;
90
case
RecordTypes::EXIT
:
91
OS <<
formatv
(
"<Function Exit: #{0} delta = +{1}>"
, R.functionId(),
92
R.delta());
93
break
;
94
case
RecordTypes::TAIL_EXIT
:
95
OS <<
formatv
(
"<Function Tail Exit: #{0} delta = +{1}>"
, R.functionId(),
96
R.delta());
97
break
;
98
case
RecordTypes::CUSTOM_EVENT
:
99
case
RecordTypes::TYPED_EVENT
:
100
// TODO: Flag as a bug?
101
break
;
102
}
103
OS << Delim;
104
return
Error::success
();
105
}
106
107
}
// namespace xray
108
}
// namespace llvm
FormatVariadic.h
RecordPrinter.h
llvm::Error
Lightweight error class with error context and mandatory checking.
Definition
Error.h:159
llvm::Error::success
static ErrorSuccess success()
Create a success value.
Definition
Error.h:336
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::RecordPrinter::visit
Error visit(BufferExtents &) override
Definition
RecordPrinter.cpp:15
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::xray::RecordTypes::ENTER
@ ENTER
Definition
XRayRecord.h:58
llvm::xray::RecordTypes::CUSTOM_EVENT
@ CUSTOM_EVENT
Definition
XRayRecord.h:62
llvm::xray::RecordTypes::ENTER_ARG
@ ENTER_ARG
Definition
XRayRecord.h:61
llvm::xray::RecordTypes::EXIT
@ EXIT
Definition
XRayRecord.h:59
llvm::xray::RecordTypes::TAIL_EXIT
@ TAIL_EXIT
Definition
XRayRecord.h:60
llvm::xray::RecordTypes::TYPED_EVENT
@ TYPED_EVENT
Definition
XRayRecord.h:63
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition
AddressRanges.h:18
llvm::formatv
auto formatv(bool Validate, const char *Fmt, Ts &&...Vals)
Definition
FormatVariadic.h:253
Generated on
for LLVM by
1.14.0