diff --git a/src/array.c b/src/array.c index b809ee7d284b9c591ca6f6d525ceff5dbfc0fc11..2bd6c2f4db324c51402d54f56a9237f0d0f9f48c 100644 --- a/src/array.c +++ b/src/array.c @@ -2795,7 +2795,7 @@ void check_all_arrays(void) #endif /* PIKE_DEBUG */ -PMOD_EXPORT void visit_array (struct array *a, int action) +PMOD_EXPORT void visit_array (struct array *a, int action, void *extra) { switch (action) { #ifdef PIKE_DEBUG diff --git a/src/array.h b/src/array.h index 090757a039302a4bb3b6b703f42610950af76d0e..b296628af70bb1e4974ae77a423af8826f84b622 100644 --- a/src/array.h +++ b/src/array.h @@ -199,7 +199,7 @@ void array_replace(struct array *a, PMOD_EXPORT void check_array(struct array *a); void check_all_arrays(void); #endif -PMOD_EXPORT void visit_array (struct array *a, int action); +PMOD_EXPORT void visit_array (struct array *a, int action, void *extra); void gc_mark_array_as_referenced(struct array *a); void real_gc_cycle_check_array(struct array *a, int weak); unsigned gc_touch_all_arrays(void); diff --git a/src/gc.c b/src/gc.c index e9db3382f2113d27174b04a3aa13b6188eda9af6..79531037032f1bb2d36b626e0f67823964cac620 100644 --- a/src/gc.c +++ b/src/gc.c @@ -4412,16 +4412,16 @@ PMOD_EXPORT visit_thing_fn *const visit_fn_from_type[MAX_TYPE + 1] = { (visit_thing_fn *) (ptrdiff_t) -1, (visit_thing_fn *) (ptrdiff_t) -1, (visit_thing_fn *) (ptrdiff_t) -1, - (visit_thing_fn *) &visit_array, - (visit_thing_fn *) &visit_mapping, - (visit_thing_fn *) &visit_multiset, - (visit_thing_fn *) &visit_object, + &visit_array, + &visit_mapping, + &visit_multiset, + &visit_object, /* visit_function must be called with a whole svalue, so it's not * included here. */ (visit_thing_fn *) (ptrdiff_t) -1, - (visit_thing_fn *) &visit_program, - (visit_thing_fn *) &visit_string, - (visit_thing_fn *) &visit_type, + &visit_program, + &visit_string, + &visit_type, }; PMOD_EXPORT TYPE_T type_from_visit_fn (visit_thing_fn *fn) diff --git a/src/mapping.c b/src/mapping.c index 2b9e3e5167793e0e688ad5107aeb204c94aee48e..1a5c7a790d64e66cdec34777b7a79ce20a5738bb 100644 --- a/src/mapping.c +++ b/src/mapping.c @@ -2470,7 +2470,7 @@ void check_all_mappings(void) #endif static void visit_mapping_data (struct mapping_data *md, int action, - struct mapping *UNUSED(m)) + void *extra) { switch (action) { #ifdef PIKE_DEBUG @@ -2500,7 +2500,7 @@ static void visit_mapping_data (struct mapping_data *md, int action, } } -PMOD_EXPORT void visit_mapping (struct mapping *m, int action) +PMOD_EXPORT void visit_mapping (struct mapping *m, int action, void *extra) { switch (action) { #ifdef PIKE_DEBUG @@ -2516,7 +2516,7 @@ PMOD_EXPORT void visit_mapping (struct mapping *m, int action) } visit_ref (m->data, REF_TYPE_INTERNAL, - (visit_thing_fn *) &visit_mapping_data, m); + (visit_thing_fn *) &visit_mapping_data, extra); } #ifdef MAPPING_SIZE_DEBUG diff --git a/src/mapping.h b/src/mapping.h index cdd15dc40267840063437eb8161091b7131c265c..b1574de7254e3839f26307dba29485ae0a7768d4 100644 --- a/src/mapping.h +++ b/src/mapping.h @@ -375,7 +375,7 @@ PMOD_EXPORT INT32 mapping_generation(struct mapping *m); void check_mapping(const struct mapping *m); void check_all_mappings(void); #endif -PMOD_EXPORT void visit_mapping (struct mapping *m, int action); +PMOD_EXPORT void visit_mapping (struct mapping *m, int action, void *extra); void gc_mark_mapping_as_referenced(struct mapping *m); void real_gc_cycle_check_mapping(struct mapping *m, int weak); unsigned gc_touch_all_mappings(void); diff --git a/src/multiset.c b/src/multiset.c index 9f1008e41cde62cd916c877f769756579f8e9161..8520d8df8cc720450e9601288eec41387da5a45a 100644 --- a/src/multiset.c +++ b/src/multiset.c @@ -3483,7 +3483,7 @@ PMOD_EXPORT ptrdiff_t multiset_get_nth (struct multiset *l, size_t n) #define GC_MSD_GOT_NODE_REFS GC_USER_3 static void visit_multiset_data (struct multiset_data *msd, int action, - struct multiset *UNUSED(l)) + void *extra) { switch (action) { #ifdef PIKE_DEBUG @@ -3524,7 +3524,7 @@ static void visit_multiset_data (struct multiset_data *msd, int action, } } -PMOD_EXPORT void visit_multiset (struct multiset *l, int action) +PMOD_EXPORT void visit_multiset (struct multiset *l, int action, void *extra) { switch (action) { #ifdef PIKE_DEBUG @@ -3540,7 +3540,7 @@ PMOD_EXPORT void visit_multiset (struct multiset *l, int action) } visit_ref (l->msd, REF_TYPE_INTERNAL, - (visit_thing_fn *) &visit_multiset_data, l); + (visit_thing_fn *) &visit_multiset_data, extra); } unsigned gc_touch_all_multisets (void) diff --git a/src/multiset.h b/src/multiset.h index 06c84270d0c0db14e84b7f3ccc7a5d0f2f107f67..8bc79635704b380a89872bc67ee24651c6c8e221 100644 --- a/src/multiset.h +++ b/src/multiset.h @@ -402,7 +402,7 @@ struct multiset *copy_multiset_recursively (struct multiset *l, struct mapping *p); PMOD_EXPORT ptrdiff_t multiset_get_nth (struct multiset *l, size_t n); -PMOD_EXPORT void visit_multiset (struct multiset *l, int action); +PMOD_EXPORT void visit_multiset (struct multiset *l, int action, void *extra); unsigned gc_touch_all_multisets (void); void gc_check_all_multisets (void); void gc_mark_multiset_as_referenced (struct multiset *l); diff --git a/src/object.c b/src/object.c index 667d21de507a0fdac1463a41c0e4735ba6dd0adc..5f6b6f5477ff4a98eae39223792e7f008eb142b6 100644 --- a/src/object.c +++ b/src/object.c @@ -2083,7 +2083,7 @@ PMOD_EXPORT struct array *object_types(struct object *o, int inherit_number) } -PMOD_EXPORT void visit_object (struct object *o, int action) +PMOD_EXPORT void visit_object (struct object *o, int action, void *extra) { struct program *p = o->prog; diff --git a/src/object.h b/src/object.h index d75d636bd9449f500506171ec46be3f79576564e..0498e02b881b0e56d993c93650945ba294f1b7e9 100644 --- a/src/object.h +++ b/src/object.h @@ -133,7 +133,7 @@ PMOD_EXPORT int object_equal_p(struct object *a, struct object *b, struct proces PMOD_EXPORT struct array *object_indices(struct object *o, int inherit_level); PMOD_EXPORT struct array *object_values(struct object *o, int inherit_level); PMOD_EXPORT struct array *object_types(struct object *o, int inherit_level); -PMOD_EXPORT void visit_object (struct object *o, int action); +PMOD_EXPORT void visit_object (struct object *o, int action, void *extra); PMOD_EXPORT void visit_function (const struct svalue *s, int ref_type); PMOD_EXPORT void gc_mark_object_as_referenced(struct object *o); PMOD_EXPORT void real_gc_cycle_check_object(struct object *o, int weak); diff --git a/src/pike_types.c b/src/pike_types.c index 86ce2b3fca093c212e23b1183da449183d6fca98..d881417608e6ee666e724f58e3aa982393e40d42 100644 --- a/src/pike_types.c +++ b/src/pike_types.c @@ -8911,7 +8911,7 @@ PMOD_EXPORT void *find_type(struct pike_type *t, return NULL; } -PMOD_EXPORT void visit_type (struct pike_type *t, int action) +PMOD_EXPORT void visit_type (struct pike_type *t, int action, void *extra) { switch (action) { #ifdef PIKE_DEBUG diff --git a/src/pike_types.h b/src/pike_types.h index b9b6e9fd93d8c12c1cc01b6ac93df6fd9612f0e7..43af1c9c23567ba84258bb55a3305fb24e4d0d22 100644 --- a/src/pike_types.h +++ b/src/pike_types.h @@ -294,7 +294,7 @@ void cleanup_pike_types(void); void cleanup_pike_type_table(void); PMOD_EXPORT void *find_type(struct pike_type *t, void *(*cb)(struct pike_type *)); -PMOD_EXPORT void visit_type (struct pike_type *t, int action); +PMOD_EXPORT void visit_type (struct pike_type *t, int action, void *extra); void gc_mark_type_as_referenced(struct pike_type *t); void gc_check_type (struct pike_type *t); void gc_check_all_types (void); diff --git a/src/program.c b/src/program.c index f1c7cf9d1c24220e636c3437c922e0ce0b0ca865..3c2c25b948b1241d9658e38bb5f931a0bd9d456f 100644 --- a/src/program.c +++ b/src/program.c @@ -11027,7 +11027,7 @@ void cleanup_program(void) } -PMOD_EXPORT void visit_program (struct program *p, int action) +PMOD_EXPORT void visit_program (struct program *p, int action, void *extra) { switch (action) { #ifdef PIKE_DEBUG diff --git a/src/program.h b/src/program.h index d6984479e80a789138282d248b4a4c2d5f24a44e..d8bd48bab7196e7319a6685e29eee5f6bb4a3d57 100644 --- a/src/program.h +++ b/src/program.h @@ -1029,7 +1029,7 @@ void check_all_programs(void); void placeholder_index(INT32 args); void init_program(void); void cleanup_program(void); -PMOD_EXPORT void visit_program (struct program *p, int action); +PMOD_EXPORT void visit_program (struct program *p, int action, void *extra); void gc_mark_program_as_referenced(struct program *p); void real_gc_cycle_check_program(struct program *p, int weak); unsigned gc_touch_all_programs(void); diff --git a/src/stralloc.c b/src/stralloc.c index 6679a8c7159a618cf124eb7a6f78ea8f3d4913af..f6f28de660d205f596a2190db5dbceb68d262c94 100644 --- a/src/stralloc.c +++ b/src/stralloc.c @@ -2271,7 +2271,7 @@ void count_memory_in_strings(size_t *num, size_t *size) size[0]=size_; } -PMOD_EXPORT void visit_string (struct pike_string *s, int action) +PMOD_EXPORT void visit_string (struct pike_string *s, int action, void *extra) { switch (action) { #ifdef PIKE_DEBUG diff --git a/src/stralloc.h b/src/stralloc.h index fa2e000ed17a08e7462dee33253530b2b53fb164..0c728b6b0b73c63239d585d1814a67ff1c9ff92f 100644 --- a/src/stralloc.h +++ b/src/stralloc.h @@ -377,7 +377,7 @@ void init_shared_string_table(void); void cleanup_shared_string_table(void); void count_memory_in_short_pike_strings(size_t *num, size_t *size); void count_memory_in_strings(size_t *num, size_t *size); -PMOD_EXPORT void visit_string (struct pike_string *s, int action); +PMOD_EXPORT void visit_string (struct pike_string *s, int action, void *extra); void gc_mark_string_as_referenced (struct pike_string *s); unsigned gc_touch_all_strings(void); void gc_mark_all_strings(void);