@@ -688,6 +688,12 @@ gc_mark_enqueue_no_buffer(PyObject *op, gc_mark_args_t *args)
688
688
return 0 ;
689
689
}
690
690
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
+
691
697
static int
692
698
gc_mark_enqueue_buffer (PyObject * op , gc_mark_args_t * args )
693
699
{
@@ -701,6 +707,12 @@ gc_mark_enqueue_buffer(PyObject *op, gc_mark_args_t *args)
701
707
}
702
708
}
703
709
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
+
704
716
// Called when we find an object that needs to be marked alive (either from a
705
717
// root or from calling tp_traverse).
706
718
static int
@@ -986,12 +998,12 @@ update_refs(const mi_heap_t *heap, const mi_heap_area_t *area,
986
998
}
987
999
988
1000
static int
989
- visit_clear_unreachable (PyObject * op , _PyObjectStack * stack )
1001
+ visit_clear_unreachable (PyObject * op , void * stack )
990
1002
{
991
1003
if (gc_is_unreachable (op )) {
992
1004
_PyObject_ASSERT (op , _PyObject_GC_IS_TRACKED (op ));
993
1005
gc_clear_unreachable (op );
994
- return _PyObjectStack_Push (stack , op );
1006
+ return _PyObjectStack_Push (( _PyObjectStack * ) stack , op );
995
1007
}
996
1008
return 0 ;
997
1009
}
@@ -1003,7 +1015,7 @@ mark_reachable(PyObject *op)
1003
1015
_PyObjectStack stack = { NULL };
1004
1016
do {
1005
1017
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 ) {
1007
1019
_PyObjectStack_Clear (& stack );
1008
1020
return -1 ;
1009
1021
}
@@ -1273,7 +1285,7 @@ gc_propagate_alive_prefetch(gc_mark_args_t *args)
1273
1285
return -1 ;
1274
1286
}
1275
1287
}
1276
- else if (traverse (op , ( visitproc ) & gc_mark_enqueue_buffer , args ) < 0 ) {
1288
+ else if (traverse (op , gc_mark_enqueue_buffer_visitproc , args ) < 0 ) {
1277
1289
return -1 ;
1278
1290
}
1279
1291
}
@@ -1294,7 +1306,7 @@ gc_propagate_alive(gc_mark_args_t *args)
1294
1306
assert (_PyObject_GC_IS_TRACKED (op ));
1295
1307
assert (gc_is_alive (op ));
1296
1308
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 ) {
1298
1310
return -1 ;
1299
1311
}
1300
1312
}
@@ -1751,9 +1763,7 @@ handle_resurrected_objects(struct collection_state *state)
1751
1763
op -> ob_ref_local -= 1 ;
1752
1764
1753
1765
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 );
1757
1767
}
1758
1768
1759
1769
// Find resurrected objects
0 commit comments