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