From d05654633e43a162efd1ec6328e4d5e85e0a063d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Tue, 17 Jun 2014 16:12:18 +0200
Subject: [PATCH] GC: Clean up some of the visit_* API.

All the visit_*() functions now have all arguments.
---
 src/array.c      |  2 +-
 src/array.h      |  2 +-
 src/gc.c         | 14 +++++++-------
 src/mapping.c    |  6 +++---
 src/mapping.h    |  2 +-
 src/multiset.c   |  6 +++---
 src/multiset.h   |  2 +-
 src/object.c     |  2 +-
 src/object.h     |  2 +-
 src/pike_types.c |  2 +-
 src/pike_types.h |  2 +-
 src/program.c    |  2 +-
 src/program.h    |  2 +-
 src/stralloc.c   |  2 +-
 src/stralloc.h   |  2 +-
 15 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/src/array.c b/src/array.c
index b809ee7d28..2bd6c2f4db 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 090757a039..b296628af7 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 e9db3382f2..7953103703 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 2b9e3e5167..1a5c7a790d 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 cdd15dc402..b1574de725 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 9f1008e41c..8520d8df8c 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 06c84270d0..8bc7963570 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 667d21de50..5f6b6f5477 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 d75d636bd9..0498e02b88 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 86ce2b3fca..d881417608 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 b9b6e9fd93..43af1c9c23 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 f1c7cf9d1c..3c2c25b948 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 d6984479e8..d8bd48bab7 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 6679a8c715..f6f28de660 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 fa2e000ed1..0c728b6b0b 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);
-- 
GitLab