@@ -688,6 +688,12 @@ gc_mark_enqueue_no_buffer(PyObject *op, gc_mark_args_t *args)
688688 return 0 ;
689689}
690690
691+ static inline int
692+ gc_mark_enqueue_no_buffer_visitproc (PyObject * op , void * args )
693+ {
694+ return gc_mark_enqueue_no_buffer (op , (gc_mark_args_t * )args );
695+ }
696+
691697static int
692698gc_mark_enqueue_buffer (PyObject * op , gc_mark_args_t * args )
693699{
@@ -701,6 +707,12 @@ gc_mark_enqueue_buffer(PyObject *op, gc_mark_args_t *args)
701707 }
702708}
703709
710+ static inline int
711+ gc_mark_enqueue_buffer_visitproc (PyObject * op , void * args )
712+ {
713+ return gc_mark_enqueue_buffer (op , (gc_mark_args_t * )args );
714+ }
715+
704716// Called when we find an object that needs to be marked alive (either from a
705717// root or from calling tp_traverse).
706718static int
@@ -986,12 +998,12 @@ update_refs(const mi_heap_t *heap, const mi_heap_area_t *area,
986998}
987999
9881000static int
989- visit_clear_unreachable (PyObject * op , _PyObjectStack * stack )
1001+ visit_clear_unreachable (PyObject * op , void * stack )
9901002{
9911003 if (gc_is_unreachable (op )) {
9921004 _PyObject_ASSERT (op , _PyObject_GC_IS_TRACKED (op ));
9931005 gc_clear_unreachable (op );
994- return _PyObjectStack_Push (stack , op );
1006+ return _PyObjectStack_Push (( _PyObjectStack * ) stack , op );
9951007 }
9961008 return 0 ;
9971009}
@@ -1003,7 +1015,7 @@ mark_reachable(PyObject *op)
10031015 _PyObjectStack stack = { NULL };
10041016 do {
10051017 traverseproc traverse = Py_TYPE (op )-> tp_traverse ;
1006- if (traverse (op , ( visitproc ) & visit_clear_unreachable , & stack ) < 0 ) {
1018+ if (traverse (op , visit_clear_unreachable , & stack ) < 0 ) {
10071019 _PyObjectStack_Clear (& stack );
10081020 return -1 ;
10091021 }
@@ -1273,7 +1285,7 @@ gc_propagate_alive_prefetch(gc_mark_args_t *args)
12731285 return -1 ;
12741286 }
12751287 }
1276- else if (traverse (op , ( visitproc ) & gc_mark_enqueue_buffer , args ) < 0 ) {
1288+ else if (traverse (op , gc_mark_enqueue_buffer_visitproc , args ) < 0 ) {
12771289 return -1 ;
12781290 }
12791291 }
@@ -1294,7 +1306,7 @@ gc_propagate_alive(gc_mark_args_t *args)
12941306 assert (_PyObject_GC_IS_TRACKED (op ));
12951307 assert (gc_is_alive (op ));
12961308 traverseproc traverse = Py_TYPE (op )-> tp_traverse ;
1297- if (traverse (op , ( visitproc ) & gc_mark_enqueue_no_buffer , args ) < 0 ) {
1309+ if (traverse (op , gc_mark_enqueue_no_buffer_visitproc , args ) < 0 ) {
12981310 return -1 ;
12991311 }
13001312 }
@@ -1751,9 +1763,7 @@ handle_resurrected_objects(struct collection_state *state)
17511763 op -> ob_ref_local -= 1 ;
17521764
17531765 traverseproc traverse = Py_TYPE (op )-> tp_traverse ;
1754- (void ) traverse (op ,
1755- (visitproc )visit_decref_unreachable ,
1756- NULL );
1766+ (void )traverse (op , visit_decref_unreachable , NULL );
17571767 }
17581768
17591769 // Find resurrected objects
0 commit comments