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.