summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common.mk410
-rw-r--r--concurrent_set.c (renamed from ractor_safe_set.c)152
-rw-r--r--internal/concurrent_set.h21
-rw-r--r--internal/ractor_safe_set.h21
-rw-r--r--string.c26
5 files changed, 315 insertions, 315 deletions
diff --git a/common.mk b/common.mk
index 0c4428bef0..19e4b78b3e 100644
--- a/common.mk
+++ b/common.mk
@@ -151,7 +151,7 @@ COMMONOBJS = array.$(OBJEXT) \
proc.$(OBJEXT) \
process.$(OBJEXT) \
ractor.$(OBJEXT) \
- ractor_safe_set.$(OBJEXT) \
+ concurrent_set.$(OBJEXT) \
random.$(OBJEXT) \
range.$(OBJEXT) \
rational.$(OBJEXT) \
@@ -3867,6 +3867,209 @@ complex.$(OBJEXT): {$(VPATH)}vm_core.h
complex.$(OBJEXT): {$(VPATH)}vm_debug.h
complex.$(OBJEXT): {$(VPATH)}vm_opts.h
complex.$(OBJEXT): {$(VPATH)}vm_sync.h
+concurrent_set.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
+concurrent_set.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
+concurrent_set.$(OBJEXT): $(CCAN_DIR)/list/list.h
+concurrent_set.$(OBJEXT): $(CCAN_DIR)/str/str.h
+concurrent_set.$(OBJEXT): $(hdrdir)/ruby/ruby.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/array.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/compilers.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/gc.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/imemo.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/namespace.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/concurrent_set.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/serial.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/set_table.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/vm.h
+concurrent_set.$(OBJEXT): $(top_srcdir)/internal/warnings.h
+concurrent_set.$(OBJEXT): {$(VPATH)}assert.h
+concurrent_set.$(OBJEXT): {$(VPATH)}atomic.h
+concurrent_set.$(OBJEXT): {$(VPATH)}backward/2/assume.h
+concurrent_set.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
+concurrent_set.$(OBJEXT): {$(VPATH)}backward/2/bool.h
+concurrent_set.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
+concurrent_set.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
+concurrent_set.$(OBJEXT): {$(VPATH)}backward/2/limits.h
+concurrent_set.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
+concurrent_set.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
+concurrent_set.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
+concurrent_set.$(OBJEXT): {$(VPATH)}config.h
+concurrent_set.$(OBJEXT): {$(VPATH)}debug_counter.h
+concurrent_set.$(OBJEXT): {$(VPATH)}defines.h
+concurrent_set.$(OBJEXT): {$(VPATH)}encoding.h
+concurrent_set.$(OBJEXT): {$(VPATH)}id.h
+concurrent_set.$(OBJEXT): {$(VPATH)}id_table.h
+concurrent_set.$(OBJEXT): {$(VPATH)}intern.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/abi.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/anyargs.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/assume.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/const.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/error.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/format.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/cast.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/config.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/constant_p.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/robject.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/ctype.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/dllexport.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/dosish.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/error.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/eval.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/event.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/fl_type.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/gc.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/glob.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/globals.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/has/extension.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/has/feature.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/has/warning.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/array.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/class.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/error.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/file.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/io.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/load.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/object.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/process.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/random.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/range.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/re.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/select.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/string.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/time.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/interpreter.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/iterator.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/memory.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/method.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/module.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/newobj.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/scan_args.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/special_consts.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/static_assert.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/stdalign.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/stdbool.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/stdckdint.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/symbol.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/value.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/value_type.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/variable.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/warning_push.h
+concurrent_set.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
+concurrent_set.$(OBJEXT): {$(VPATH)}method.h
+concurrent_set.$(OBJEXT): {$(VPATH)}missing.h
+concurrent_set.$(OBJEXT): {$(VPATH)}node.h
+concurrent_set.$(OBJEXT): {$(VPATH)}onigmo.h
+concurrent_set.$(OBJEXT): {$(VPATH)}oniguruma.h
+concurrent_set.$(OBJEXT): {$(VPATH)}concurrent_set.c
+concurrent_set.$(OBJEXT): {$(VPATH)}ruby_assert.h
+concurrent_set.$(OBJEXT): {$(VPATH)}ruby_atomic.h
+concurrent_set.$(OBJEXT): {$(VPATH)}rubyparser.h
+concurrent_set.$(OBJEXT): {$(VPATH)}st.h
+concurrent_set.$(OBJEXT): {$(VPATH)}subst.h
+concurrent_set.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
+concurrent_set.$(OBJEXT): {$(VPATH)}thread_native.h
+concurrent_set.$(OBJEXT): {$(VPATH)}vm_core.h
+concurrent_set.$(OBJEXT): {$(VPATH)}vm_debug.h
+concurrent_set.$(OBJEXT): {$(VPATH)}vm_opts.h
+concurrent_set.$(OBJEXT): {$(VPATH)}vm_sync.h
cont.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
cont.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
cont.$(OBJEXT): $(CCAN_DIR)/list/list.h
@@ -14298,209 +14501,6 @@ ractor.$(OBJEXT): {$(VPATH)}vm_debug.h
ractor.$(OBJEXT): {$(VPATH)}vm_opts.h
ractor.$(OBJEXT): {$(VPATH)}vm_sync.h
ractor.$(OBJEXT): {$(VPATH)}yjit.h
-ractor_safe_set.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
-ractor_safe_set.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
-ractor_safe_set.$(OBJEXT): $(CCAN_DIR)/list/list.h
-ractor_safe_set.$(OBJEXT): $(CCAN_DIR)/str/str.h
-ractor_safe_set.$(OBJEXT): $(hdrdir)/ruby/ruby.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/array.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/compilers.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/gc.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/imemo.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/namespace.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/ractor_safe_set.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/serial.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/set_table.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/vm.h
-ractor_safe_set.$(OBJEXT): $(top_srcdir)/internal/warnings.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}assert.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}atomic.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}backward/2/assume.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}backward/2/bool.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}backward/2/limits.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}config.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}debug_counter.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}defines.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}encoding.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}id.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}id_table.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}intern.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/abi.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/anyargs.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/assume.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/const.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/error.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/format.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/cast.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/config.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/constant_p.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/robject.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/ctype.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/dllexport.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/dosish.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/error.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/eval.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/event.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/fl_type.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/gc.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/glob.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/globals.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/has/extension.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/has/feature.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/has/warning.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/array.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/class.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/error.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/file.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/io.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/load.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/object.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/process.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/random.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/range.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/re.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/select.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/string.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/time.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/interpreter.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/iterator.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/memory.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/method.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/module.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/newobj.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/scan_args.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/special_consts.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/static_assert.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/stdalign.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/stdbool.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/stdckdint.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/symbol.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/value.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/value_type.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/variable.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/warning_push.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}method.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}missing.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}node.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}onigmo.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}oniguruma.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}ractor_safe_set.c
-ractor_safe_set.$(OBJEXT): {$(VPATH)}ruby_assert.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}ruby_atomic.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}rubyparser.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}st.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}subst.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}thread_native.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}vm_core.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}vm_debug.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}vm_opts.h
-ractor_safe_set.$(OBJEXT): {$(VPATH)}vm_sync.h
random.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
random.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
random.$(OBJEXT): $(CCAN_DIR)/list/list.h
@@ -18343,7 +18343,7 @@ string.$(OBJEXT): $(top_srcdir)/internal/namespace.h
string.$(OBJEXT): $(top_srcdir)/internal/numeric.h
string.$(OBJEXT): $(top_srcdir)/internal/object.h
string.$(OBJEXT): $(top_srcdir)/internal/proc.h
-string.$(OBJEXT): $(top_srcdir)/internal/ractor_safe_set.h
+string.$(OBJEXT): $(top_srcdir)/internal/concurrent_set.h
string.$(OBJEXT): $(top_srcdir)/internal/re.h
string.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
string.$(OBJEXT): $(top_srcdir)/internal/serial.h
diff --git a/ractor_safe_set.c b/concurrent_set.c
index c97a673fdc..dac6e9ce39 100644
--- a/ractor_safe_set.c
+++ b/concurrent_set.c
@@ -1,74 +1,74 @@
#include "internal.h"
#include "internal/gc.h"
-#include "internal/ractor_safe_set.h"
+#include "internal/concurrent_set.h"
#include "ruby_atomic.h"
#include "ruby/atomic.h"
#include "vm_sync.h"
-enum ractor_safe_set_special_values {
- RACTOR_SAFE_TABLE_EMPTY,
- RACTOR_SAFE_TABLE_DELETED,
- RACTOR_SAFE_TABLE_MOVED,
- RACTOR_SAFE_TABLE_SPECIAL_VALUE_COUNT
+enum concurrent_set_special_values {
+ CONCURRENT_SET_EMPTY,
+ CONCURRENT_SET_DELETED,
+ CONCURRENT_SET_MOVED,
+ CONCURRENT_SET_SPECIAL_VALUE_COUNT
};
-struct ractor_safe_set_entry {
+struct concurrent_set_entry {
VALUE hash;
VALUE key;
};
-struct ractor_safe_set {
+struct concurrent_set {
rb_atomic_t size;
unsigned int capacity;
unsigned int deleted_entries;
- struct rb_ractor_safe_set_funcs *funcs;
- struct ractor_safe_set_entry *entries;
+ struct rb_concurrent_set_funcs *funcs;
+ struct concurrent_set_entry *entries;
};
static void
-ractor_safe_set_free(void *ptr)
+concurrent_set_free(void *ptr)
{
- struct ractor_safe_set *set = ptr;
+ struct concurrent_set *set = ptr;
xfree(set->entries);
}
static size_t
-ractor_safe_set_size(const void *ptr)
+concurrent_set_size(const void *ptr)
{
- const struct ractor_safe_set *set = ptr;
- return sizeof(struct ractor_safe_set) +
- (set->capacity * sizeof(struct ractor_safe_set_entry));
+ const struct concurrent_set *set = ptr;
+ return sizeof(struct concurrent_set) +
+ (set->capacity * sizeof(struct concurrent_set_entry));
}
-static const rb_data_type_t ractor_safe_set_type = {
- .wrap_struct_name = "VM/ractor_safe_set",
+static const rb_data_type_t concurrent_set_type = {
+ .wrap_struct_name = "VM/concurrent_set",
.function = {
.dmark = NULL,
- .dfree = ractor_safe_set_free,
- .dsize = ractor_safe_set_size,
+ .dfree = concurrent_set_free,
+ .dsize = concurrent_set_size,
},
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
};
VALUE
-rb_ractor_safe_set_new(struct rb_ractor_safe_set_funcs *funcs, int capacity)
+rb_concurrent_set_new(struct rb_concurrent_set_funcs *funcs, int capacity)
{
- struct ractor_safe_set *set;
- VALUE obj = TypedData_Make_Struct(0, struct ractor_safe_set, &ractor_safe_set_type, set);
+ struct concurrent_set *set;
+ VALUE obj = TypedData_Make_Struct(0, struct concurrent_set, &concurrent_set_type, set);
set->funcs = funcs;
- set->entries = ZALLOC_N(struct ractor_safe_set_entry, capacity);
+ set->entries = ZALLOC_N(struct concurrent_set_entry, capacity);
set->capacity = capacity;
return obj;
}
-struct ractor_safe_set_probe {
+struct concurrent_set_probe {
int idx;
int d;
int mask;
};
static int
-ractor_safe_set_probe_start(struct ractor_safe_set_probe *probe, struct ractor_safe_set *set, VALUE hash)
+concurrent_set_probe_start(struct concurrent_set_probe *probe, struct concurrent_set *set, VALUE hash)
{
RUBY_ASSERT((set->capacity & (set->capacity - 1)) == 0);
probe->d = 0;
@@ -78,7 +78,7 @@ ractor_safe_set_probe_start(struct ractor_safe_set_probe *probe, struct ractor_s
}
static int
-ractor_safe_set_probe_next(struct ractor_safe_set_probe *probe)
+concurrent_set_probe_next(struct concurrent_set_probe *probe)
{
probe->d++;
probe->idx = (probe->idx + probe->d) & probe->mask;
@@ -86,20 +86,20 @@ ractor_safe_set_probe_next(struct ractor_safe_set_probe *probe)
}
static void
-ractor_safe_set_try_resize_without_locking(VALUE old_set_obj, VALUE *set_obj_ptr)
+concurrent_set_try_resize_without_locking(VALUE old_set_obj, VALUE *set_obj_ptr)
{
// Check if another thread has already resized.
if (RUBY_ATOMIC_VALUE_LOAD(*set_obj_ptr) != old_set_obj) {
return;
}
- struct ractor_safe_set *old_set = RTYPEDDATA_GET_DATA(old_set_obj);
+ struct concurrent_set *old_set = RTYPEDDATA_GET_DATA(old_set_obj);
// This may overcount by up to the number of threads concurrently attempting to insert
// GC may also happen between now and the set being rebuilt
int expected_size = RUBY_ATOMIC_LOAD(old_set->size) - old_set->deleted_entries;
- struct ractor_safe_set_entry *old_entries = old_set->entries;
+ struct concurrent_set_entry *old_entries = old_set->entries;
int old_capacity = old_set->capacity;
int new_capacity = old_capacity * 2;
if (new_capacity > expected_size * 8) {
@@ -110,15 +110,15 @@ ractor_safe_set_try_resize_without_locking(VALUE old_set_obj, VALUE *set_obj_ptr
}
// May cause GC and therefore deletes, so must hapen first.
- VALUE new_set_obj = rb_ractor_safe_set_new(old_set->funcs, new_capacity);
- struct ractor_safe_set *new_set = RTYPEDDATA_GET_DATA(new_set_obj);
+ VALUE new_set_obj = rb_concurrent_set_new(old_set->funcs, new_capacity);
+ struct concurrent_set *new_set = RTYPEDDATA_GET_DATA(new_set_obj);
for (int i = 0; i < old_capacity; i++) {
- struct ractor_safe_set_entry *entry = &old_entries[i];
- VALUE key = RUBY_ATOMIC_VALUE_EXCHANGE(entry->key, RACTOR_SAFE_TABLE_MOVED);
- RUBY_ASSERT(key != RACTOR_SAFE_TABLE_MOVED);
+ struct concurrent_set_entry *entry = &old_entries[i];
+ VALUE key = RUBY_ATOMIC_VALUE_EXCHANGE(entry->key, CONCURRENT_SET_MOVED);
+ RUBY_ASSERT(key != CONCURRENT_SET_MOVED);
- if (key < RACTOR_SAFE_TABLE_SPECIAL_VALUE_COUNT) continue;
+ if (key < CONCURRENT_SET_SPECIAL_VALUE_COUNT) continue;
if (rb_objspace_garbage_object_p(key)) continue;
VALUE hash = RUBY_ATOMIC_VALUE_LOAD(entry->hash);
@@ -130,13 +130,13 @@ ractor_safe_set_try_resize_without_locking(VALUE old_set_obj, VALUE *set_obj_ptr
RUBY_ASSERT(hash == old_set->funcs->hash(key));
// Insert key into new_set.
- struct ractor_safe_set_probe probe;
- int idx = ractor_safe_set_probe_start(&probe, new_set, hash);
+ struct concurrent_set_probe probe;
+ int idx = concurrent_set_probe_start(&probe, new_set, hash);
while (true) {
- struct ractor_safe_set_entry *entry = &new_set->entries[idx];
+ struct concurrent_set_entry *entry = &new_set->entries[idx];
- if (entry->key == RACTOR_SAFE_TABLE_EMPTY) {
+ if (entry->key == CONCURRENT_SET_EMPTY) {
new_set->size++;
RUBY_ASSERT(new_set->size < new_set->capacity / 2);
@@ -147,10 +147,10 @@ ractor_safe_set_try_resize_without_locking(VALUE old_set_obj, VALUE *set_obj_ptr
break;
}
else {
- RUBY_ASSERT(entry->key >= RACTOR_SAFE_TABLE_SPECIAL_VALUE_COUNT);
+ RUBY_ASSERT(entry->key >= CONCURRENT_SET_SPECIAL_VALUE_COUNT);
}
- idx = ractor_safe_set_probe_next(&probe);
+ idx = concurrent_set_probe_next(&probe);
}
}
@@ -160,17 +160,17 @@ ractor_safe_set_try_resize_without_locking(VALUE old_set_obj, VALUE *set_obj_ptr
}
static void
-ractor_safe_set_try_resize(VALUE old_set_obj, VALUE *set_obj_ptr)
+concurrent_set_try_resize(VALUE old_set_obj, VALUE *set_obj_ptr)
{
RB_VM_LOCKING() {
- ractor_safe_set_try_resize_without_locking(old_set_obj, set_obj_ptr);
+ concurrent_set_try_resize_without_locking(old_set_obj, set_obj_ptr);
}
}
VALUE
-rb_ractor_safe_set_find_or_insert(VALUE *set_obj_ptr, VALUE key, void *data)
+rb_concurrent_set_find_or_insert(VALUE *set_obj_ptr, VALUE key, void *data)
{
- RUBY_ASSERT(key >= RACTOR_SAFE_TABLE_SPECIAL_VALUE_COUNT);
+ RUBY_ASSERT(key >= CONCURRENT_SET_SPECIAL_VALUE_COUNT);
bool inserting = false;
VALUE set_obj;
@@ -178,18 +178,18 @@ rb_ractor_safe_set_find_or_insert(VALUE *set_obj_ptr, VALUE key, void *data)
retry:
set_obj = RUBY_ATOMIC_VALUE_LOAD(*set_obj_ptr);
RUBY_ASSERT(set_obj);
- struct ractor_safe_set *set = RTYPEDDATA_GET_DATA(set_obj);
+ struct concurrent_set *set = RTYPEDDATA_GET_DATA(set_obj);
- struct ractor_safe_set_probe probe;
+ struct concurrent_set_probe probe;
VALUE hash = set->funcs->hash(key);
- int idx = ractor_safe_set_probe_start(&probe, set, hash);
+ int idx = concurrent_set_probe_start(&probe, set, hash);
while (true) {
- struct ractor_safe_set_entry *entry = &set->entries[idx];
+ struct concurrent_set_entry *entry = &set->entries[idx];
VALUE curr_key = RUBY_ATOMIC_VALUE_LOAD(entry->key);
switch (curr_key) {
- case RACTOR_SAFE_TABLE_EMPTY: {
+ case CONCURRENT_SET_EMPTY: {
// Not in set
if (!inserting) {
key = set->funcs->create(key, data);
@@ -200,13 +200,13 @@ rb_ractor_safe_set_find_or_insert(VALUE *set_obj_ptr, VALUE key, void *data)
rb_atomic_t prev_size = RUBY_ATOMIC_FETCH_ADD(set->size, 1);
if (UNLIKELY(prev_size > set->capacity / 2)) {
- ractor_safe_set_try_resize(set_obj, set_obj_ptr);
+ concurrent_set_try_resize(set_obj, set_obj_ptr);
goto retry;
}
- curr_key = RUBY_ATOMIC_VALUE_CAS(entry->key, RACTOR_SAFE_TABLE_EMPTY, key);
- if (curr_key == RACTOR_SAFE_TABLE_EMPTY) {
+ curr_key = RUBY_ATOMIC_VALUE_CAS(entry->key, CONCURRENT_SET_EMPTY, key);
+ if (curr_key == CONCURRENT_SET_EMPTY) {
RUBY_ATOMIC_VALUE_SET(entry->hash, hash);
RB_GC_GUARD(set_obj);
@@ -220,9 +220,9 @@ rb_ractor_safe_set_find_or_insert(VALUE *set_obj_ptr, VALUE key, void *data)
continue;
}
}
- case RACTOR_SAFE_TABLE_DELETED:
+ case CONCURRENT_SET_DELETED:
break;
- case RACTOR_SAFE_TABLE_MOVED:
+ case CONCURRENT_SET_MOVED:
// Wait
RB_VM_LOCKING();
@@ -234,7 +234,7 @@ rb_ractor_safe_set_find_or_insert(VALUE *set_obj_ptr, VALUE key, void *data)
if (UNLIKELY(rb_objspace_garbage_object_p(curr_key))) {
// This is a weakref set, so after marking but before sweeping is complete we may find a matching garbage object.
// Skip it and mark it as deleted.
- RUBY_ATOMIC_VALUE_CAS(entry->key, curr_key, RACTOR_SAFE_TABLE_DELETED);
+ RUBY_ATOMIC_VALUE_CAS(entry->key, curr_key, CONCURRENT_SET_DELETED);
// Fall through and continue our search.
}
@@ -248,66 +248,66 @@ rb_ractor_safe_set_find_or_insert(VALUE *set_obj_ptr, VALUE key, void *data)
}
}
- idx = ractor_safe_set_probe_next(&probe);
+ idx = concurrent_set_probe_next(&probe);
}
}
VALUE
-rb_ractor_safe_set_delete_by_identity(VALUE set_obj, VALUE key)
+rb_concurrent_set_delete_by_identity(VALUE set_obj, VALUE key)
{
// Assume locking and barrier (which there is no assert for).
ASSERT_vm_locking();
- struct ractor_safe_set *set = RTYPEDDATA_GET_DATA(set_obj);
+ struct concurrent_set *set = RTYPEDDATA_GET_DATA(set_obj);
VALUE hash = set->funcs->hash(key);
- struct ractor_safe_set_probe probe;
- int idx = ractor_safe_set_probe_start(&probe, set, hash);
+ struct concurrent_set_probe probe;
+ int idx = concurrent_set_probe_start(&probe, set, hash);
while (true) {
- struct ractor_safe_set_entry *entry = &set->entries[idx];
+ struct concurrent_set_entry *entry = &set->entries[idx];
VALUE curr_key = RUBY_ATOMIC_VALUE_LOAD(entry->key);
switch (curr_key) {
- case RACTOR_SAFE_TABLE_EMPTY:
+ case CONCURRENT_SET_EMPTY:
// We didn't find our entry to delete.
return 0;
- case RACTOR_SAFE_TABLE_DELETED:
+ case CONCURRENT_SET_DELETED:
break;
- case RACTOR_SAFE_TABLE_MOVED:
- rb_bug("rb_ractor_safe_set_delete_by_identity: moved entry");
+ case CONCURRENT_SET_MOVED:
+ rb_bug("rb_concurrent_set_delete_by_identity: moved entry");
break;
default:
if (key == curr_key) {
- entry->key = RACTOR_SAFE_TABLE_DELETED;
+ entry->key = CONCURRENT_SET_DELETED;
set->deleted_entries++;
return curr_key;
}
break;
}
- idx = ractor_safe_set_probe_next(&probe);
+ idx = concurrent_set_probe_next(&probe);
}
}
void
-rb_ractor_safe_set_foreach_with_replace(VALUE set_obj, int (*callback)(VALUE *key, void *data), void *data)
+rb_concurrent_set_foreach_with_replace(VALUE set_obj, int (*callback)(VALUE *key, void *data), void *data)
{
// Assume locking and barrier (which there is no assert for).
ASSERT_vm_locking();
- struct ractor_safe_set *set = RTYPEDDATA_GET_DATA(set_obj);
+ struct concurrent_set *set = RTYPEDDATA_GET_DATA(set_obj);
for (unsigned int i = 0; i < set->capacity; i++) {
VALUE key = set->entries[i].key;
switch (key) {
- case RACTOR_SAFE_TABLE_EMPTY:
- case RACTOR_SAFE_TABLE_DELETED:
+ case CONCURRENT_SET_EMPTY:
+ case CONCURRENT_SET_DELETED:
continue;
- case RACTOR_SAFE_TABLE_MOVED:
- rb_bug("rb_ractor_safe_set_foreach_with_replace: moved entry");
+ case CONCURRENT_SET_MOVED:
+ rb_bug("rb_concurrent_set_foreach_with_replace: moved entry");
break;
default: {
int ret = callback(&set->entries[i].key, data);
@@ -315,7 +315,7 @@ rb_ractor_safe_set_foreach_with_replace(VALUE set_obj, int (*callback)(VALUE *ke
case ST_STOP:
return;
case ST_DELETE:
- set->entries[i].key = RACTOR_SAFE_TABLE_DELETED;
+ set->entries[i].key = CONCURRENT_SET_DELETED;
break;
}
break;
diff --git a/internal/concurrent_set.h b/internal/concurrent_set.h
new file mode 100644
index 0000000000..3000fc31bf
--- /dev/null
+++ b/internal/concurrent_set.h
@@ -0,0 +1,21 @@
+#ifndef RUBY_RACTOR_SAFE_TABLE_H
+#define RUBY_RACTOR_SAFE_TABLE_H
+
+#include "ruby/ruby.h"
+
+typedef VALUE (*rb_concurrent_set_hash_func)(VALUE key);
+typedef bool (*rb_concurrent_set_cmp_func)(VALUE a, VALUE b);
+typedef VALUE (*rb_concurrent_set_create_func)(VALUE key, void *data);
+
+struct rb_concurrent_set_funcs {
+ rb_concurrent_set_hash_func hash;
+ rb_concurrent_set_cmp_func cmp;
+ rb_concurrent_set_create_func create;
+};
+
+VALUE rb_concurrent_set_new(struct rb_concurrent_set_funcs *funcs, int capacity);
+VALUE rb_concurrent_set_find_or_insert(VALUE *set_obj_ptr, VALUE key, void *data);
+VALUE rb_concurrent_set_delete_by_identity(VALUE set_obj, VALUE key);
+void rb_concurrent_set_foreach_with_replace(VALUE set_obj, int (*callback)(VALUE *key, void *data), void *data);
+
+#endif
diff --git a/internal/ractor_safe_set.h b/internal/ractor_safe_set.h
deleted file mode 100644
index 6875af170a..0000000000
--- a/internal/ractor_safe_set.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef RUBY_RACTOR_SAFE_TABLE_H
-#define RUBY_RACTOR_SAFE_TABLE_H
-
-#include "ruby/ruby.h"
-
-typedef VALUE (*rb_ractor_safe_set_hash_func)(VALUE key);
-typedef bool (*rb_ractor_safe_set_cmp_func)(VALUE a, VALUE b);
-typedef VALUE (*rb_ractor_safe_set_create_func)(VALUE key, void *data);
-
-struct rb_ractor_safe_set_funcs {
- rb_ractor_safe_set_hash_func hash;
- rb_ractor_safe_set_cmp_func cmp;
- rb_ractor_safe_set_create_func create;
-};
-
-VALUE rb_ractor_safe_set_new(struct rb_ractor_safe_set_funcs *funcs, int capacity);
-VALUE rb_ractor_safe_set_find_or_insert(VALUE *set_obj_ptr, VALUE key, void *data);
-VALUE rb_ractor_safe_set_delete_by_identity(VALUE set_obj, VALUE key);
-void rb_ractor_safe_set_foreach_with_replace(VALUE set_obj, int (*callback)(VALUE *key, void *data), void *data);
-
-#endif
diff --git a/string.c b/string.c
index c911a65f7c..8daf9f1c1b 100644
--- a/string.c
+++ b/string.c
@@ -35,7 +35,7 @@
#include "internal/numeric.h"
#include "internal/object.h"
#include "internal/proc.h"
-#include "internal/ractor_safe_set.h"
+#include "internal/concurrent_set.h"
#include "internal/re.h"
#include "internal/sanitizers.h"
#include "internal/string.h"
@@ -440,7 +440,7 @@ rb_fstring(VALUE str)
static VALUE fstring_table_obj;
static VALUE
-fstring_ractor_safe_set_hash(VALUE str)
+fstring_concurrent_set_hash(VALUE str)
{
#ifdef PRECOMPUTED_FAKESTR_HASH
st_index_t h;
@@ -460,7 +460,7 @@ fstring_ractor_safe_set_hash(VALUE str)
}
static bool
-fstring_ractor_safe_set_cmp(VALUE a, VALUE b)
+fstring_concurrent_set_cmp(VALUE a, VALUE b)
{
long alen, blen;
const char *aptr, *bptr;
@@ -481,7 +481,7 @@ struct fstr_create_arg {
};
static VALUE
-fstring_ractor_safe_set_create(VALUE str, void *data)
+fstring_concurrent_set_create(VALUE str, void *data)
{
struct fstr_create_arg *arg = data;
@@ -548,16 +548,16 @@ fstring_ractor_safe_set_create(VALUE str, void *data)
return str;
}
-static struct rb_ractor_safe_set_funcs fstring_ractor_safe_set_funcs = {
- .hash = fstring_ractor_safe_set_hash,
- .cmp = fstring_ractor_safe_set_cmp,
- .create = fstring_ractor_safe_set_create,
+static struct rb_concurrent_set_funcs fstring_concurrent_set_funcs = {
+ .hash = fstring_concurrent_set_hash,
+ .cmp = fstring_concurrent_set_cmp,
+ .create = fstring_concurrent_set_create,
};
void
Init_fstring_table(void)
{
- fstring_table_obj = rb_ractor_safe_set_new(&fstring_ractor_safe_set_funcs, 8192);
+ fstring_table_obj = rb_concurrent_set_new(&fstring_concurrent_set_funcs, 8192);
rb_gc_register_address(&fstring_table_obj);
}
@@ -577,7 +577,7 @@ register_fstring(VALUE str, bool copy, bool force_precompute_hash)
}
#endif
- VALUE result = rb_ractor_safe_set_find_or_insert(&fstring_table_obj, str, &args);
+ VALUE result = rb_concurrent_set_find_or_insert(&fstring_table_obj, str, &args);
RUBY_ASSERT(!rb_objspace_garbage_object_p(result));
RUBY_ASSERT(RB_TYPE_P(result, T_STRING));
@@ -602,7 +602,7 @@ rb_gc_free_fstring(VALUE obj)
// Assume locking and barrier (which there is no assert for)
ASSERT_vm_locking();
- rb_ractor_safe_set_delete_by_identity(fstring_table_obj, obj);
+ rb_concurrent_set_delete_by_identity(fstring_table_obj, obj);
RB_DEBUG_COUNTER_INC(obj_str_fstr);
@@ -613,7 +613,7 @@ void
rb_fstring_foreach_with_replace(int (*callback)(VALUE *str, void *data), void *data)
{
if (fstring_table_obj) {
- rb_ractor_safe_set_foreach_with_replace(fstring_table_obj, callback, data);
+ rb_concurrent_set_foreach_with_replace(fstring_table_obj, callback, data);
}
}
@@ -12718,7 +12718,7 @@ Init_String(void)
{
rb_cString = rb_define_class("String", rb_cObject);
- rb_ractor_safe_set_foreach_with_replace(fstring_table_obj, fstring_set_class_i, NULL);
+ rb_concurrent_set_foreach_with_replace(fstring_table_obj, fstring_set_class_i, NULL);
rb_include_module(rb_cString, rb_mComparable);
rb_define_alloc_func(rb_cString, empty_str_alloc);