Branch data Line data Source code
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 : 0 : _tracemalloc_is_tracing(PyObject *module, PyObject *Py_UNUSED(ignored))
25 : : {
26 : 0 : 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 : 0 : _tracemalloc_clear_traces(PyObject *module, PyObject *Py_UNUSED(ignored))
43 : : {
44 : 0 : 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 : 0 : _tracemalloc__get_traces(PyObject *module, PyObject *Py_UNUSED(ignored))
66 : : {
67 : 0 : 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 : 0 : _tracemalloc_start(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
100 : : {
101 : 0 : PyObject *return_value = NULL;
102 : 0 : int nframe = 1;
103 : :
104 [ # # # # : 0 : if (!_PyArg_CheckPositional("start", nargs, 0, 1)) {
# # ]
105 : 0 : goto exit;
106 : : }
107 [ # # ]: 0 : if (nargs < 1) {
108 : 0 : goto skip_optional;
109 : : }
110 : 0 : nframe = _PyLong_AsInt(args[0]);
111 [ # # # # ]: 0 : if (nframe == -1 && PyErr_Occurred()) {
112 : 0 : goto exit;
113 : : }
114 : 0 : skip_optional:
115 : 0 : return_value = _tracemalloc_start_impl(module, nframe);
116 : :
117 : 0 : exit:
118 : 0 : 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 : 0 : _tracemalloc_stop(PyObject *module, PyObject *Py_UNUSED(ignored))
137 : : {
138 : 0 : 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 : 0 : _tracemalloc_get_traceback_limit(PyObject *module, PyObject *Py_UNUSED(ignored))
158 : : {
159 : 0 : 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 : 0 : _tracemalloc_get_tracemalloc_memory(PyObject *module, PyObject *Py_UNUSED(ignored))
178 : : {
179 : 0 : 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 : 0 : _tracemalloc_get_traced_memory(PyObject *module, PyObject *Py_UNUSED(ignored))
198 : : {
199 : 0 : 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 : 0 : _tracemalloc_reset_peak(PyObject *module, PyObject *Py_UNUSED(ignored))
218 : : {
219 : 0 : return _tracemalloc_reset_peak_impl(module);
220 : : }
221 : : /*[clinic end generated code: output=44e3f8553aae2535 input=a9049054013a1b77]*/
|