1 /*[clinic input]
2 preserve
3 [clinic start generated code]*/
4
5 #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
6 # include "pycore_gc.h" // PyGC_Head
7 # include "pycore_runtime.h" // _Py_ID()
8 #endif
9
10
11 PyDoc_STRVAR(_tracemalloc_is_tracing__doc__,
12 "is_tracing($module, /)\n"
13 "--\n"
14 "\n"
15 "Return True if the tracemalloc module is tracing Python memory allocations.");
16
17 #define _TRACEMALLOC_IS_TRACING_METHODDEF \
18 {"is_tracing", (PyCFunction)_tracemalloc_is_tracing, METH_NOARGS, _tracemalloc_is_tracing__doc__},
19
20 static PyObject *
21 _tracemalloc_is_tracing_impl(PyObject *module);
22
23 static PyObject *
24 _tracemalloc_is_tracing(PyObject *module, PyObject *Py_UNUSED(ignored))
25 {
26 return _tracemalloc_is_tracing_impl(module);
27 }
28
29 PyDoc_STRVAR(_tracemalloc_clear_traces__doc__,
30 "clear_traces($module, /)\n"
31 "--\n"
32 "\n"
33 "Clear traces of memory blocks allocated by Python.");
34
35 #define _TRACEMALLOC_CLEAR_TRACES_METHODDEF \
36 {"clear_traces", (PyCFunction)_tracemalloc_clear_traces, METH_NOARGS, _tracemalloc_clear_traces__doc__},
37
38 static PyObject *
39 _tracemalloc_clear_traces_impl(PyObject *module);
40
41 static PyObject *
42 _tracemalloc_clear_traces(PyObject *module, PyObject *Py_UNUSED(ignored))
43 {
44 return _tracemalloc_clear_traces_impl(module);
45 }
46
47 PyDoc_STRVAR(_tracemalloc__get_traces__doc__,
48 "_get_traces($module, /)\n"
49 "--\n"
50 "\n"
51 "Get traces of all memory blocks allocated by Python.\n"
52 "\n"
53 "Return a list of (size: int, traceback: tuple) tuples.\n"
54 "traceback is a tuple of (filename: str, lineno: int) tuples.\n"
55 "\n"
56 "Return an empty list if the tracemalloc module is disabled.");
57
58 #define _TRACEMALLOC__GET_TRACES_METHODDEF \
59 {"_get_traces", (PyCFunction)_tracemalloc__get_traces, METH_NOARGS, _tracemalloc__get_traces__doc__},
60
61 static PyObject *
62 _tracemalloc__get_traces_impl(PyObject *module);
63
64 static PyObject *
65 _tracemalloc__get_traces(PyObject *module, PyObject *Py_UNUSED(ignored))
66 {
67 return _tracemalloc__get_traces_impl(module);
68 }
69
70 PyDoc_STRVAR(_tracemalloc__get_object_traceback__doc__,
71 "_get_object_traceback($module, obj, /)\n"
72 "--\n"
73 "\n"
74 "Get the traceback where the Python object obj was allocated.\n"
75 "\n"
76 "Return a tuple of (filename: str, lineno: int) tuples.\n"
77 "Return None if the tracemalloc module is disabled or did not\n"
78 "trace the allocation of the object.");
79
80 #define _TRACEMALLOC__GET_OBJECT_TRACEBACK_METHODDEF \
81 {"_get_object_traceback", (PyCFunction)_tracemalloc__get_object_traceback, METH_O, _tracemalloc__get_object_traceback__doc__},
82
83 PyDoc_STRVAR(_tracemalloc_start__doc__,
84 "start($module, nframe=1, /)\n"
85 "--\n"
86 "\n"
87 "Start tracing Python memory allocations.\n"
88 "\n"
89 "Also set the maximum number of frames stored in the traceback of a\n"
90 "trace to nframe.");
91
92 #define _TRACEMALLOC_START_METHODDEF \
93 {"start", _PyCFunction_CAST(_tracemalloc_start), METH_FASTCALL, _tracemalloc_start__doc__},
94
95 static PyObject *
96 _tracemalloc_start_impl(PyObject *module, int nframe);
97
98 static PyObject *
99 _tracemalloc_start(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
100 {
101 PyObject *return_value = NULL;
102 int nframe = 1;
103
104 if (!_PyArg_CheckPositional("start", nargs, 0, 1)) {
105 goto exit;
106 }
107 if (nargs < 1) {
108 goto skip_optional;
109 }
110 nframe = _PyLong_AsInt(args[0]);
111 if (nframe == -1 && PyErr_Occurred()) {
112 goto exit;
113 }
114 skip_optional:
115 return_value = _tracemalloc_start_impl(module, nframe);
116
117 exit:
118 return return_value;
119 }
120
121 PyDoc_STRVAR(_tracemalloc_stop__doc__,
122 "stop($module, /)\n"
123 "--\n"
124 "\n"
125 "Stop tracing Python memory allocations.\n"
126 "\n"
127 "Also clear traces of memory blocks allocated by Python.");
128
129 #define _TRACEMALLOC_STOP_METHODDEF \
130 {"stop", (PyCFunction)_tracemalloc_stop, METH_NOARGS, _tracemalloc_stop__doc__},
131
132 static PyObject *
133 _tracemalloc_stop_impl(PyObject *module);
134
135 static PyObject *
136 _tracemalloc_stop(PyObject *module, PyObject *Py_UNUSED(ignored))
137 {
138 return _tracemalloc_stop_impl(module);
139 }
140
141 PyDoc_STRVAR(_tracemalloc_get_traceback_limit__doc__,
142 "get_traceback_limit($module, /)\n"
143 "--\n"
144 "\n"
145 "Get the maximum number of frames stored in the traceback of a trace.\n"
146 "\n"
147 "By default, a trace of an allocated memory block only stores\n"
148 "the most recent frame: the limit is 1.");
149
150 #define _TRACEMALLOC_GET_TRACEBACK_LIMIT_METHODDEF \
151 {"get_traceback_limit", (PyCFunction)_tracemalloc_get_traceback_limit, METH_NOARGS, _tracemalloc_get_traceback_limit__doc__},
152
153 static PyObject *
154 _tracemalloc_get_traceback_limit_impl(PyObject *module);
155
156 static PyObject *
157 _tracemalloc_get_traceback_limit(PyObject *module, PyObject *Py_UNUSED(ignored))
158 {
159 return _tracemalloc_get_traceback_limit_impl(module);
160 }
161
162 PyDoc_STRVAR(_tracemalloc_get_tracemalloc_memory__doc__,
163 "get_tracemalloc_memory($module, /)\n"
164 "--\n"
165 "\n"
166 "Get the memory usage in bytes of the tracemalloc module.\n"
167 "\n"
168 "This memory is used internally to trace memory allocations.");
169
170 #define _TRACEMALLOC_GET_TRACEMALLOC_MEMORY_METHODDEF \
171 {"get_tracemalloc_memory", (PyCFunction)_tracemalloc_get_tracemalloc_memory, METH_NOARGS, _tracemalloc_get_tracemalloc_memory__doc__},
172
173 static PyObject *
174 _tracemalloc_get_tracemalloc_memory_impl(PyObject *module);
175
176 static PyObject *
177 _tracemalloc_get_tracemalloc_memory(PyObject *module, PyObject *Py_UNUSED(ignored))
178 {
179 return _tracemalloc_get_tracemalloc_memory_impl(module);
180 }
181
182 PyDoc_STRVAR(_tracemalloc_get_traced_memory__doc__,
183 "get_traced_memory($module, /)\n"
184 "--\n"
185 "\n"
186 "Get the current size and peak size of memory blocks traced by tracemalloc.\n"
187 "\n"
188 "Returns a tuple: (current: int, peak: int).");
189
190 #define _TRACEMALLOC_GET_TRACED_MEMORY_METHODDEF \
191 {"get_traced_memory", (PyCFunction)_tracemalloc_get_traced_memory, METH_NOARGS, _tracemalloc_get_traced_memory__doc__},
192
193 static PyObject *
194 _tracemalloc_get_traced_memory_impl(PyObject *module);
195
196 static PyObject *
197 _tracemalloc_get_traced_memory(PyObject *module, PyObject *Py_UNUSED(ignored))
198 {
199 return _tracemalloc_get_traced_memory_impl(module);
200 }
201
202 PyDoc_STRVAR(_tracemalloc_reset_peak__doc__,
203 "reset_peak($module, /)\n"
204 "--\n"
205 "\n"
206 "Set the peak size of memory blocks traced by tracemalloc to the current size.\n"
207 "\n"
208 "Do nothing if the tracemalloc module is not tracing memory allocations.");
209
210 #define _TRACEMALLOC_RESET_PEAK_METHODDEF \
211 {"reset_peak", (PyCFunction)_tracemalloc_reset_peak, METH_NOARGS, _tracemalloc_reset_peak__doc__},
212
213 static PyObject *
214 _tracemalloc_reset_peak_impl(PyObject *module);
215
216 static PyObject *
217 _tracemalloc_reset_peak(PyObject *module, PyObject *Py_UNUSED(ignored))
218 {
219 return _tracemalloc_reset_peak_impl(module);
220 }
221 /*[clinic end generated code: output=44e3f8553aae2535 input=a9049054013a1b77]*/