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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
// This file contains the fallback implementations of YTAlloc-specific stuff.
// These implementations are annotated with Y_WEAK to ensure that if the actual YTAlloc
// is available at the link time, the latter is preferred over the fallback.
#include "ytalloc.h"
#include <util/system/compiler.h>
#include <util/system/yassert.h>
#include <cstdlib>
namespace NYT::NYTAlloc {
////////////////////////////////////////////////////////////////////////////////
Y_WEAK void* Allocate(size_t size)
{
return ::malloc(size);
}
Y_WEAK void* AllocatePageAligned(size_t size)
{
#if defined(_win_)
return ::_aligned_malloc(size, PageSize);
#elif defined(_darwin_) || !defined(_musl_)
return ::valloc(size);
#else
return ::memalign(PageSize, size);
#endif
}
Y_WEAK void* AllocateSmall(size_t rank)
{
return ::malloc(SmallRankToSize[rank]);
}
Y_WEAK void Free(void* ptr)
{
::free(ptr);
}
Y_WEAK void FreeNonNull(void* ptr)
{
Y_ASSERT(ptr);
::free(ptr);
}
Y_WEAK size_t GetAllocationSize(const void* /*ptr*/)
{
return 0;
}
Y_WEAK size_t GetAllocationSize(size_t size)
{
return size;
}
////////////////////////////////////////////////////////////////////////////////
Y_WEAK void SetCurrentMemoryZone(EMemoryZone /*zone*/)
{ }
Y_WEAK EMemoryZone GetCurrentMemoryZone()
{
return EMemoryZone::Normal;
}
Y_WEAK EMemoryZone GetAllocationMemoryZone(const void* /*ptr*/)
{
return EMemoryZone::Normal;
}
////////////////////////////////////////////////////////////////////////////////
Y_WEAK void SetCurrentFiberId(TFiberId /*id*/)
{ }
Y_WEAK TFiberId GetCurrentFiberId()
{
return 0;
}
////////////////////////////////////////////////////////////////////////////////
Y_WEAK void EnableLogging(TLogHandler /*logHandler*/)
{ }
////////////////////////////////////////////////////////////////////////////////
Y_WEAK void SetBacktraceProvider(TBacktraceProvider /*provider*/)
{ }
Y_WEAK void SetBacktraceFormatter(TBacktraceFormatter /*formatter*/)
{ }
////////////////////////////////////////////////////////////////////////////////
Y_WEAK void EnableStockpile()
{ }
Y_WEAK void SetStockpileInterval(TDuration /*value*/)
{ }
Y_WEAK void SetStockpileThreadCount(int /*value*/)
{ }
Y_WEAK void SetStockpileSize(size_t /*value*/)
{ }
Y_WEAK void SetLargeUnreclaimableCoeff(double /*value*/)
{ }
Y_WEAK void SetMinLargeUnreclaimableBytes(size_t /*value*/)
{ }
Y_WEAK void SetMaxLargeUnreclaimableBytes(size_t /*value*/)
{ }
Y_WEAK void SetTimingEventThreshold(TDuration /*value*/)
{ }
Y_WEAK void SetAllocationProfilingEnabled(bool /*value*/)
{ }
Y_WEAK void SetAllocationProfilingSamplingRate(double /*rate*/)
{ }
Y_WEAK void SetSmallArenaAllocationProfilingEnabled(size_t /*rank*/, bool /*value*/)
{ }
Y_WEAK void SetLargeArenaAllocationProfilingEnabled(size_t /*rank*/, bool /*value*/)
{ }
Y_WEAK void SetProfilingBacktraceDepth(int /*depth*/)
{ }
Y_WEAK void SetMinProfilingBytesUsedToReport(size_t /*size*/)
{ }
Y_WEAK void SetEnableEagerMemoryRelease(bool /*value*/)
{ }
Y_WEAK void SetEnableMadvisePopulate(bool /*value*/)
{ }
////////////////////////////////////////////////////////////////////////////////
Y_WEAK TEnumIndexedVector<ETotalCounter, ssize_t> GetTotalAllocationCounters()
{
return {};
}
Y_WEAK TEnumIndexedVector<ESmallCounter, ssize_t> GetSmallAllocationCounters()
{
return {};
}
Y_WEAK TEnumIndexedVector<ELargeCounter, ssize_t> GetLargeAllocationCounters()
{
return {};
}
Y_WEAK std::array<TEnumIndexedVector<ESmallArenaCounter, ssize_t>, SmallRankCount> GetSmallArenaAllocationCounters()
{
return {};
}
Y_WEAK std::array<TEnumIndexedVector<ELargeArenaCounter, ssize_t>, LargeRankCount> GetLargeArenaAllocationCounters()
{
return {};
}
Y_WEAK TEnumIndexedVector<EHugeCounter, ssize_t> GetHugeAllocationCounters()
{
return {};
}
Y_WEAK TEnumIndexedVector<ESystemCounter, ssize_t> GetSystemAllocationCounters()
{
return {};
}
Y_WEAK TEnumIndexedVector<EUndumpableCounter, ssize_t> GetUndumpableAllocationCounters()
{
return {};
}
Y_WEAK TEnumIndexedVector<ETimingEventType, TTimingEventCounters> GetTimingEventCounters()
{
return {};
}
////////////////////////////////////////////////////////////////////////////////
Y_WEAK std::vector<TProfiledAllocation> GetProfiledAllocationStatistics()
{
return {};
}
////////////////////////////////////////////////////////////////////////////////
} // namespace NYT::NYTAlloc
|