From 824ff48adcd47497b8e2993be5144de0e09a4f66 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Fri, 15 Dec 2023 14:49:45 -0500 Subject: [PATCH] Move internal ST functions to internal/st.h st_replace and st_init_existing_table_with_size are functions used internally in Ruby and should not be publicly visible. --- common.mk | 6 ++++++ hash.c | 5 +++-- include/ruby/st.h | 4 ---- internal/st.h | 11 +++++++++++ object.c | 1 + st.c | 1 + 6 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 internal/st.h diff --git a/common.mk b/common.mk index 83f10f7a58bb72..1220ed5f726d3f 100644 --- a/common.mk +++ b/common.mk @@ -7655,6 +7655,7 @@ hash.$(OBJEXT): $(top_srcdir)/internal/imemo.h hash.$(OBJEXT): $(top_srcdir)/internal/object.h hash.$(OBJEXT): $(top_srcdir)/internal/proc.h hash.$(OBJEXT): $(top_srcdir)/internal/serial.h +hash.$(OBJEXT): $(top_srcdir)/internal/st.h hash.$(OBJEXT): $(top_srcdir)/internal/static_assert.h hash.$(OBJEXT): $(top_srcdir)/internal/string.h hash.$(OBJEXT): $(top_srcdir)/internal/symbol.h @@ -7844,6 +7845,7 @@ hash.$(OBJEXT): {$(VPATH)}internal/module.h hash.$(OBJEXT): {$(VPATH)}internal/newobj.h hash.$(OBJEXT): {$(VPATH)}internal/scan_args.h hash.$(OBJEXT): {$(VPATH)}internal/special_consts.h +hash.$(OBJEXT): {$(VPATH)}internal/st.h hash.$(OBJEXT): {$(VPATH)}internal/static_assert.h hash.$(OBJEXT): {$(VPATH)}internal/stdalign.h hash.$(OBJEXT): {$(VPATH)}internal/stdbool.h @@ -10914,6 +10916,7 @@ object.$(OBJEXT): $(top_srcdir)/internal/inits.h object.$(OBJEXT): $(top_srcdir)/internal/numeric.h object.$(OBJEXT): $(top_srcdir)/internal/object.h object.$(OBJEXT): $(top_srcdir)/internal/serial.h +object.$(OBJEXT): $(top_srcdir)/internal/st.h object.$(OBJEXT): $(top_srcdir)/internal/static_assert.h object.$(OBJEXT): $(top_srcdir)/internal/string.h object.$(OBJEXT): $(top_srcdir)/internal/struct.h @@ -11081,6 +11084,7 @@ object.$(OBJEXT): {$(VPATH)}internal/module.h object.$(OBJEXT): {$(VPATH)}internal/newobj.h object.$(OBJEXT): {$(VPATH)}internal/scan_args.h object.$(OBJEXT): {$(VPATH)}internal/special_consts.h +object.$(OBJEXT): {$(VPATH)}internal/st.h object.$(OBJEXT): {$(VPATH)}internal/static_assert.h object.$(OBJEXT): {$(VPATH)}internal/stdalign.h object.$(OBJEXT): {$(VPATH)}internal/stdbool.h @@ -16799,6 +16803,7 @@ st.$(OBJEXT): $(top_srcdir)/internal/bits.h st.$(OBJEXT): $(top_srcdir)/internal/compilers.h st.$(OBJEXT): $(top_srcdir)/internal/hash.h st.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h +st.$(OBJEXT): $(top_srcdir)/internal/st.h st.$(OBJEXT): $(top_srcdir)/internal/static_assert.h st.$(OBJEXT): $(top_srcdir)/internal/warnings.h st.$(OBJEXT): {$(VPATH)}assert.h @@ -16945,6 +16950,7 @@ st.$(OBJEXT): {$(VPATH)}internal/module.h st.$(OBJEXT): {$(VPATH)}internal/newobj.h st.$(OBJEXT): {$(VPATH)}internal/scan_args.h st.$(OBJEXT): {$(VPATH)}internal/special_consts.h +st.$(OBJEXT): {$(VPATH)}internal/st.h st.$(OBJEXT): {$(VPATH)}internal/static_assert.h st.$(OBJEXT): {$(VPATH)}internal/stdalign.h st.$(OBJEXT): {$(VPATH)}internal/stdbool.h diff --git a/hash.c b/hash.c index 78e9d9a2d60c8b..75637c3b03fb47 100644 --- a/hash.c +++ b/hash.c @@ -35,6 +35,7 @@ #include "internal/hash.h" #include "internal/object.h" #include "internal/proc.h" +#include "internal/st.h" #include "internal/symbol.h" #include "internal/thread.h" #include "internal/time.h" @@ -757,7 +758,7 @@ ar_force_convert_table(VALUE hash, const char *file, int line) // make st st_table tab; st_table *new_tab = &tab; - rb_st_init_existing_table_with_size(new_tab, &objhash, size); + st_init_existing_table_with_size(new_tab, &objhash, size); ar_each_key(ar, bound, ar_each_key_insert, NULL, new_tab, hashes); hash_ar_free_and_clear_table(hash); RHASH_ST_TABLE_SET(hash, new_tab); @@ -1530,7 +1531,7 @@ hash_copy(VALUE ret, VALUE hash) } else { st_table *tab = RHASH_ST_TABLE(ret); - rb_st_init_existing_table_with_size(tab, &objhash, RHASH_AR_TABLE_SIZE(hash)); + st_init_existing_table_with_size(tab, &objhash, RHASH_AR_TABLE_SIZE(hash)); int bound = RHASH_AR_TABLE_BOUND(hash); for (int i = 0; i < bound; i++) { diff --git a/include/ruby/st.h b/include/ruby/st.h index ba69c066c926a1..f35ab436037237 100644 --- a/include/ruby/st.h +++ b/include/ruby/st.h @@ -104,8 +104,6 @@ st_table *rb_st_init_table(const struct st_hash_type *); #define st_init_table rb_st_init_table st_table *rb_st_init_table_with_size(const struct st_hash_type *, st_index_t); #define st_init_table_with_size rb_st_init_table_with_size -st_table *rb_st_init_existing_table_with_size(st_table *tab, const struct st_hash_type *type, st_index_t size); -#define st_init_existing_table_with_size rb_st_init_existing_table_with_size st_table *rb_st_init_numtable(void); #define st_init_numtable rb_st_init_numtable st_table *rb_st_init_numtable_with_size(st_index_t); @@ -162,8 +160,6 @@ void rb_st_cleanup_safe(st_table *, st_data_t); #define st_cleanup_safe rb_st_cleanup_safe void rb_st_clear(st_table *); #define st_clear rb_st_clear -st_table *rb_st_replace(st_table *new_tab, st_table *old_tab); -#define st_replace rb_st_replace st_table *rb_st_copy(st_table *); #define st_copy rb_st_copy CONSTFUNC(int rb_st_numcmp(st_data_t, st_data_t)); diff --git a/internal/st.h b/internal/st.h new file mode 100644 index 00000000000000..a26b224505e644 --- /dev/null +++ b/internal/st.h @@ -0,0 +1,11 @@ +#ifndef INTERNAL_ST_H +#define INTERNAL_ST_H + +#include "include/ruby/st.h" + +st_table *rb_st_replace(st_table *new_tab, st_table *old_tab); +#define st_replace rb_st_replace +st_table *rb_st_init_existing_table_with_size(st_table *tab, const struct st_hash_type *type, st_index_t size); +#define st_init_existing_table_with_size rb_st_init_existing_table_with_size + +#endif diff --git a/object.c b/object.c index cde1d7b1d6beed..9a5a8fbe8a8f9b 100644 --- a/object.c +++ b/object.c @@ -31,6 +31,7 @@ #include "internal/object.h" #include "internal/struct.h" #include "internal/string.h" +#include "internal/st.h" #include "internal/symbol.h" #include "internal/variable.h" #include "variable.h" diff --git a/st.c b/st.c index b921b1bf3ba5af..33a05c3c4a37f3 100644 --- a/st.c +++ b/st.c @@ -108,6 +108,7 @@ #include "internal/bits.h" #include "internal/hash.h" #include "internal/sanitizers.h" +#include "internal/st.h" #endif #include