@@ -18,6 +18,8 @@ typedef struct _PyLegacyEventHandler {
18
18
int event ;
19
19
} _PyLegacyEventHandler ;
20
20
21
+ #define _PyLegacyEventHandler_CAST (op ) ((_PyLegacyEventHandler *)(op))
22
+
21
23
#ifdef Py_GIL_DISABLED
22
24
#define LOCK_SETUP () PyMutex_Lock(&_PyRuntime.ceval.sys_trace_profile_mutex);
23
25
#define UNLOCK_SETUP () PyMutex_Unlock(&_PyRuntime.ceval.sys_trace_profile_mutex);
@@ -56,49 +58,54 @@ call_profile_func(_PyLegacyEventHandler *self, PyObject *arg)
56
58
57
59
static PyObject *
58
60
sys_profile_start (
59
- _PyLegacyEventHandler * self , PyObject * const * args ,
61
+ PyObject * callable , PyObject * const * args ,
60
62
size_t nargsf , PyObject * kwnames
61
63
) {
64
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST (callable );
62
65
assert (kwnames == NULL );
63
66
assert (PyVectorcall_NARGS (nargsf ) == 2 );
64
67
return call_profile_func (self , Py_None );
65
68
}
66
69
67
70
static PyObject *
68
71
sys_profile_throw (
69
- _PyLegacyEventHandler * self , PyObject * const * args ,
72
+ PyObject * callable , PyObject * const * args ,
70
73
size_t nargsf , PyObject * kwnames
71
74
) {
75
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST (callable );
72
76
assert (kwnames == NULL );
73
77
assert (PyVectorcall_NARGS (nargsf ) == 3 );
74
78
return call_profile_func (self , Py_None );
75
79
}
76
80
77
81
static PyObject *
78
82
sys_profile_return (
79
- _PyLegacyEventHandler * self , PyObject * const * args ,
83
+ PyObject * callable , PyObject * const * args ,
80
84
size_t nargsf , PyObject * kwnames
81
85
) {
86
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST (callable );
82
87
assert (kwnames == NULL );
83
88
assert (PyVectorcall_NARGS (nargsf ) == 3 );
84
89
return call_profile_func (self , args [2 ]);
85
90
}
86
91
87
92
static PyObject *
88
93
sys_profile_unwind (
89
- _PyLegacyEventHandler * self , PyObject * const * args ,
94
+ PyObject * callable , PyObject * const * args ,
90
95
size_t nargsf , PyObject * kwnames
91
96
) {
97
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST (callable );
92
98
assert (kwnames == NULL );
93
99
assert (PyVectorcall_NARGS (nargsf ) == 3 );
94
- return call_profile_func (self , NULL );
100
+ return call_profile_func (self , NULL );
95
101
}
96
102
97
103
static PyObject *
98
104
sys_profile_call_or_return (
99
- _PyLegacyEventHandler * self , PyObject * const * args ,
105
+ PyObject * op , PyObject * const * args ,
100
106
size_t nargsf , PyObject * kwnames
101
107
) {
108
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST (op );
102
109
assert (kwnames == NULL );
103
110
assert (PyVectorcall_NARGS (nargsf ) == 4 );
104
111
PyObject * callable = args [2 ];
@@ -188,7 +195,7 @@ sys_trace_exception_func(
188
195
PyObject * callable , PyObject * const * args ,
189
196
size_t nargsf , PyObject * kwnames
190
197
) {
191
- _PyLegacyEventHandler * self = ( _PyLegacyEventHandler * ) callable ;
198
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST ( callable ) ;
192
199
assert (kwnames == NULL );
193
200
assert (PyVectorcall_NARGS (nargsf ) == 3 );
194
201
PyObject * exc = args [2 ];
@@ -213,7 +220,7 @@ sys_trace_start(
213
220
PyObject * callable , PyObject * const * args ,
214
221
size_t nargsf , PyObject * kwnames
215
222
) {
216
- _PyLegacyEventHandler * self = ( _PyLegacyEventHandler * ) callable ;
223
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST ( callable ) ;
217
224
assert (kwnames == NULL );
218
225
assert (PyVectorcall_NARGS (nargsf ) == 2 );
219
226
return call_trace_func (self , Py_None );
@@ -224,7 +231,7 @@ sys_trace_throw(
224
231
PyObject * callable , PyObject * const * args ,
225
232
size_t nargsf , PyObject * kwnames
226
233
) {
227
- _PyLegacyEventHandler * self = ( _PyLegacyEventHandler * ) callable ;
234
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST ( callable ) ;
228
235
assert (kwnames == NULL );
229
236
assert (PyVectorcall_NARGS (nargsf ) == 3 );
230
237
return call_trace_func (self , Py_None );
@@ -235,7 +242,7 @@ sys_trace_unwind(
235
242
PyObject * callable , PyObject * const * args ,
236
243
size_t nargsf , PyObject * kwnames
237
244
) {
238
- _PyLegacyEventHandler * self = ( _PyLegacyEventHandler * )<
9E12
/span>callable ;
245
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST ( callable ) ;
239
246
assert (kwnames == NULL );
240
247
assert (PyVectorcall_NARGS (nargsf ) == 3 );
241
248
return call_trace_func (self , NULL );
@@ -246,7 +253,7 @@ sys_trace_return(
246
253
PyObject * callable , PyObject * const * args ,
247
254
size_t nargsf , PyObject * kwnames
248
255
) {
249
- _PyLegacyEventHandler * self = ( _PyLegacyEventHandler * ) callable ;
256
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST ( callable ) ;
250
257
assert (!PyErr_Occurred ());
251
258
assert (kwnames == NULL );
252
259
assert (PyVectorcall_NARGS (nargsf ) == 3 );
@@ -261,7 +268,7 @@ sys_trace_yield(
261
268
PyObject * callable , PyObject * const * args ,
262
269
size_t nargsf , PyObject * kwnames
263
270
) {
264
- _PyLegacyEventHandler * self = ( _PyLegacyEventHandler * ) callable ;
271
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST ( callable ) ;
265
272
assert (kwnames == NULL );
266
273
assert (PyVectorcall_NARGS (nargsf ) == 3 );
267
274
return call_trace_func (self , args [2 ]);
@@ -272,7 +279,7 @@ sys_trace_instruction_func(
272
279
PyObject * callable , PyObject * const * args ,
273
280
size_t nargsf , PyObject * kwnames
274
281
) {
275
- _PyLegacyEventHandler * self = ( _PyLegacyEventHandler * ) callable ;
282
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST ( callable ) ;
276
283
assert (kwnames == NULL );
277
284
assert (PyVectorcall_NARGS (nargsf ) == 2 );
278
285
PyFrameObject * frame = PyEval_GetFrame ();
@@ -325,7 +332,7 @@ sys_trace_line_func(
325
332
PyObject * callable , PyObject * const * args ,
326
333
size_t nargsf , PyObject * kwnames
327
334
) {
328
- _PyLegacyEventHandler * self = ( _PyLegacyEventHandler * ) callable ;
335
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST ( callable ) ;
329
336
assert (kwnames == NULL );
330
337
PyThreadState * tstate = _PyThreadState_GET ();
331
338
if (tstate -> c_tracefunc == NULL ) {
@@ -352,7 +359,7 @@ sys_trace_jump_func(
352
359
PyObject * callable , PyObject * const * args ,
353
360
size_t nargsf , PyObject * kwnames
354
361
) {
355
- _PyLegacyEventHandler * self = ( _PyLegacyEventHandler * ) callable ;
362
+ _PyLegacyEventHandler * self = _PyLegacyEventHandler_CAST ( callable ) ;
356
363
assert (kwnames == NULL );
357
364
PyThreadState * tstate = _PyThreadState_GET ();
358
365
if (tstate -> c_tracefunc == NULL ) {
@@ -439,38 +446,40 @@ setup_profile(PyThreadState *tstate, Py_tracefunc func, PyObject *arg, PyObject
439
446
if (!tstate -> interp -> sys_profile_initialized ) {
440
447
tstate -> interp -> sys_profile_initialized = true;
441
448
if (set_callbacks (PY_MONITORING_SYS_PROFILE_ID ,
442
- (vectorcallfunc )sys_profile_start , PyTrace_CALL ,
443
- PY_MONITORING_EVENT_PY_START , PY_MONITORING_EVENT_PY_RESUME )) {
449
+ sys_profile_start , PyTrace_CALL ,
450
+ PY_MONITORING_EVENT_PY_START ,
451
+ PY_MONITORING_EVENT_PY_RESUME )) {
444
452
return -1 ;
445
453
}
446
454
if (set_callbacks (PY_MONITORING_SYS_PROFILE_ID ,
447
- ( vectorcallfunc ) sys_profile_throw , PyTrace_CALL ,
448
- PY_MONITORING_EVENT_PY_THROW , -1 )) {
455
+ sys_profile_throw , PyTrace_CALL ,
456
+ PY_MONITORING_EVENT_PY_THROW , -1 )) {
449
457
return -1 ;
450
458
}
451
459
if (set_callbacks (PY_MONITORING_SYS_PROFILE_ID ,
452
- (vectorcallfunc )sys_profile_return , PyTrace_RETURN ,
453
- PY_MONITORING_EVENT_PY_RETURN , PY_MONITORING_EVENT_PY_YIELD )) {
460
+ sys_profile_return , PyTrace_RETURN ,
461
+ PY_MONITORING_EVENT_PY_RETURN ,
462
+ PY_MONITORING_EVENT_PY_YIELD )) {
454
463
return -1 ;
455
464
}
456
465
if (set_callbacks (PY_MONITORING_SYS_PROFILE_ID ,
457
- ( vectorcallfunc ) sys_profile_unwind , PyTrace_RETURN ,
458
- PY_MONITORING_EVENT_PY_UNWIND , -1 )) {
466
+ sys_profile_unwind , PyTrace_RETURN ,
467
+ PY_MONITORING_EVENT_PY_UNWIND , -1 )) {
459
468
return -1 ;
460
469
}
461
470
if (set_callbacks (PY_MONITORING_SYS_PROFILE_ID ,
462
- ( vectorcallfunc ) sys_profile_call_or_return , PyTrace_C_CALL ,
463
- PY_MONITORING_EVENT_CALL , -1 )) {
471
+ sys_profile_call_or_return , PyTrace_C_CALL ,
472
+ PY_MONITORING_EVENT_CALL , -1 )) {
464
473
return -1 ;
465
474
}
466
475
if (set_callbacks (PY_MONITORING_SYS_PROFILE_ID ,
467
- ( vectorcallfunc ) sys_profile_call_or_return , PyTrace_C_RETURN ,
468
- PY_MONITORING_EVENT_C_RETURN , -1 )) {
476
+ sys_profile_call_or_return , PyTrace_C_RETURN ,
477
+ PY_MONITORING_EVENT_C_RETURN , -1 )) {
469
478
return -1 ;
470
479
}
471
480
if (set_callbacks (PY_MONITORING_SYS_PROFILE_ID ,
472
- ( vectorcallfunc ) sys_profile_call_or_return , PyTrace_C_EXCEPTION ,
473
- PY_MONITORING_EVENT_C_RAISE , -1 )) {
481
+ sys_profile_call_or_return , PyTrace_C_EXCEPTION ,
482
+ PY_MONITORING_EVENT_C_RAISE , -1 )) {
474
483
return -1 ;
475
484
}
476
485
}
0 commit comments