LLVM: include/llvm/ProfileData/CtxInstrContextNode.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58#ifndef LLVM_PROFILEDATA_CTXINSTRCONTEXTNODE_H
59#define LLVM_PROFILEDATA_CTXINSTRCONTEXTNODE_H
60
61#include <stdint.h>
62#include <stdlib.h>
63
64namespace llvm {
67
69 const GUID Guid;
73
74public:
77 : Guid(Guid), Next(Next), NumCounters(NumCounters),
78 NumCallsites(NumCallsites) {}
79
85
86
89 return reinterpret_cast<uint64_t *>(addr_after);
90 }
91
94
98
99
103
107
110
112
114};
115
116
117
118
119
120
121
122
123
124
125
126
127
128#define CTXPROF_FUNCTION_DATA(PTRDECL, CONTEXT_PTR, VOLATILE_PTRDECL, \
129 MUTEXDECL) \
130 PTRDECL(FunctionData, Next) \
131 VOLATILE_PTRDECL(void, EntryAddress) \
132 CONTEXT_PTR \
133 VOLATILE_PTRDECL(ContextNode, FlatCtx) \
134 MUTEXDECL(Mutex)
135
136
137
138
139
141public:
147
150 size_t BufferSize) = 0;
152
154};
155}
156}
157#endif
Definition CtxInstrContextNode.h:68
size_t size() const
Definition CtxInstrContextNode.h:111
ContextNode(GUID Guid, uint32_t NumCounters, uint32_t NumCallsites, ContextNode *Next=nullptr)
Definition CtxInstrContextNode.h:75
uint64_t entrycount() const
Definition CtxInstrContextNode.h:113
uint64_t * counters()
Definition CtxInstrContextNode.h:87
GUID guid() const
Definition CtxInstrContextNode.h:108
const uint64_t * counters() const
Definition CtxInstrContextNode.h:95
static size_t getAllocSize(uint32_t NumCounters, uint32_t NumCallsites)
Definition CtxInstrContextNode.h:80
uint32_t callsites_size() const
Definition CtxInstrContextNode.h:93
ContextNode *const * subContexts() const
Definition CtxInstrContextNode.h:104
ContextNode ** subContexts()
Definition CtxInstrContextNode.h:100
ContextNode * next() const
Definition CtxInstrContextNode.h:109
uint32_t counters_size() const
Definition CtxInstrContextNode.h:92
Abstraction for the parameter passed to __llvm_ctx_profile_fetch.
Definition CtxInstrContextNode.h:140
virtual void writeFlat(ctx_profile::GUID Guid, const uint64_t *Buffer, size_t BufferSize)=0
virtual void startFlatSection()=0
virtual void endContextSection()=0
virtual void writeContextual(const ctx_profile::ContextNode &RootNode, const ctx_profile::ContextNode *Unhandled, uint64_t TotalRootEntryCount)=0
virtual void endFlatSection()=0
virtual void startContextSection()=0
virtual ~ProfileWriter()=default
uint64_t GUID
Definition CtxInstrContextNode.h:66
This is an optimization pass for GlobalISel generic memory operations.