summaryrefslogtreecommitdiff
path: root/ext/-test-
diff options
context:
space:
mode:
Diffstat (limited to 'ext/-test-')
-rw-r--r--ext/-test-/RUBY_ALIGNOF/depend1
-rw-r--r--ext/-test-/arith_seq/beg_len_step/depend1
-rw-r--r--ext/-test-/arith_seq/extract/depend1
-rw-r--r--ext/-test-/array/concat/depend1
-rw-r--r--ext/-test-/array/resize/depend1
-rw-r--r--ext/-test-/asan/asan.c24
-rw-r--r--ext/-test-/asan/extconf.rb2
-rw-r--r--ext/-test-/bignum/depend7
-rw-r--r--ext/-test-/bug-14834/depend1
-rw-r--r--ext/-test-/bug-3571/depend1
-rw-r--r--ext/-test-/bug-5832/depend1
-rw-r--r--ext/-test-/bug_reporter/depend1
-rw-r--r--ext/-test-/class/depend2
-rw-r--r--ext/-test-/debug/depend3
-rw-r--r--ext/-test-/debug/profile_frames.c21
-rw-r--r--ext/-test-/dln/empty/depend1
-rw-r--r--ext/-test-/enumerator_kw/depend1
-rw-r--r--ext/-test-/exception/depend4
-rw-r--r--ext/-test-/fatal/depend322
-rw-r--r--ext/-test-/fatal/extconf.rb3
-rw-r--r--ext/-test-/fatal/init.c10
-rw-r--r--ext/-test-/fatal/invalid.c28
-rw-r--r--ext/-test-/fatal/rb_fatal.c3
-rw-r--r--ext/-test-/file/depend175
-rw-r--r--ext/-test-/file/newline_conv.c73
-rw-r--r--ext/-test-/float/depend2
-rw-r--r--ext/-test-/funcall/depend1
-rw-r--r--ext/-test-/gvl/call_without_gvl/depend1
-rw-r--r--ext/-test-/hash/depend2
-rw-r--r--ext/-test-/integer/depend3
-rw-r--r--ext/-test-/iseq_load/depend1
-rw-r--r--ext/-test-/iter/depend3
-rw-r--r--ext/-test-/load/dot.dot/depend1
-rw-r--r--ext/-test-/load/protect/depend1
-rw-r--r--ext/-test-/load/resolve_symbol_resolver/extconf.rb1
-rw-r--r--ext/-test-/load/resolve_symbol_resolver/resolve_symbol_resolver.c55
-rw-r--r--ext/-test-/load/resolve_symbol_target/extconf.rb1
-rw-r--r--ext/-test-/load/resolve_symbol_target/resolve_symbol_target.c15
-rw-r--r--ext/-test-/load/resolve_symbol_target/resolve_symbol_target.def4
-rw-r--r--ext/-test-/load/resolve_symbol_target/resolve_symbol_target.h4
-rw-r--r--ext/-test-/load/stringify_symbols/extconf.rb1
-rw-r--r--ext/-test-/load/stringify_symbols/stringify_symbols.c29
-rw-r--r--ext/-test-/load/stringify_target/extconf.rb1
-rw-r--r--ext/-test-/load/stringify_target/stringify_target.c15
-rw-r--r--ext/-test-/load/stringify_target/stringify_target.def4
-rw-r--r--ext/-test-/load/stringify_target/stringify_target.h4
-rw-r--r--ext/-test-/marshal/compat/depend1
-rw-r--r--ext/-test-/marshal/internal_ivar/depend1
-rw-r--r--ext/-test-/marshal/usr/depend1
-rw-r--r--ext/-test-/memory_view/depend1
-rw-r--r--ext/-test-/memory_view/memory_view.c4
-rw-r--r--ext/-test-/method/depend2
-rw-r--r--ext/-test-/notimplement/depend1
-rw-r--r--ext/-test-/num2int/depend1
-rw-r--r--ext/-test-/path_to_class/depend1
-rw-r--r--ext/-test-/popen_deadlock/depend1
-rw-r--r--ext/-test-/postponed_job/depend1
-rw-r--r--ext/-test-/postponed_job/postponed_job.c131
-rw-r--r--ext/-test-/printf/depend1
-rw-r--r--ext/-test-/proc/depend3
-rw-r--r--ext/-test-/random/depend3
-rw-r--r--ext/-test-/rational/depend1
-rw-r--r--ext/-test-/rb_call_super_kw/depend1
-rw-r--r--ext/-test-/recursion/depend1
-rw-r--r--ext/-test-/regexp/depend2
-rw-r--r--ext/-test-/scan_args/depend1
-rw-r--r--ext/-test-/st/foreach/depend1
-rw-r--r--ext/-test-/st/numhash/depend1
-rw-r--r--ext/-test-/st/update/depend1
-rw-r--r--ext/-test-/string/chilled.c13
-rw-r--r--ext/-test-/string/cstr.c5
-rw-r--r--ext/-test-/string/depend180
-rw-r--r--ext/-test-/string/fstring.c18
-rw-r--r--ext/-test-/string/set_len.c10
-rw-r--r--ext/-test-/struct/data.c13
-rw-r--r--ext/-test-/struct/depend164
-rw-r--r--ext/-test-/struct/member.c2
-rw-r--r--ext/-test-/symbol/depend2
-rw-r--r--ext/-test-/thread/instrumentation/depend1
-rw-r--r--ext/-test-/thread/instrumentation/instrumentation.c206
-rw-r--r--ext/-test-/thread/lock_native_thread/extconf.rb2
-rw-r--r--ext/-test-/thread/lock_native_thread/lock_native_thread.c50
-rw-r--r--ext/-test-/thread_fd/depend1
-rw-r--r--ext/-test-/time/depend3
-rw-r--r--ext/-test-/tracepoint/depend2
-rw-r--r--ext/-test-/tracepoint/gc_hook.c4
-rw-r--r--ext/-test-/typeddata/depend1
-rw-r--r--ext/-test-/vm/depend1
-rw-r--r--ext/-test-/wait/depend1
89 files changed, 1602 insertions, 76 deletions
diff --git a/ext/-test-/RUBY_ALIGNOF/depend b/ext/-test-/RUBY_ALIGNOF/depend
index 3011b637e5..25364e55fb 100644
--- a/ext/-test-/RUBY_ALIGNOF/depend
+++ b/ext/-test-/RUBY_ALIGNOF/depend
@@ -147,6 +147,7 @@ c.o: $(hdrdir)/ruby/internal/special_consts.h
c.o: $(hdrdir)/ruby/internal/static_assert.h
c.o: $(hdrdir)/ruby/internal/stdalign.h
c.o: $(hdrdir)/ruby/internal/stdbool.h
+c.o: $(hdrdir)/ruby/internal/stdckdint.h
c.o: $(hdrdir)/ruby/internal/symbol.h
c.o: $(hdrdir)/ruby/internal/value.h
c.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/arith_seq/beg_len_step/depend b/ext/-test-/arith_seq/beg_len_step/depend
index dc807eaa99..702a0037a8 100644
--- a/ext/-test-/arith_seq/beg_len_step/depend
+++ b/ext/-test-/arith_seq/beg_len_step/depend
@@ -146,6 +146,7 @@ beg_len_step.o: $(hdrdir)/ruby/internal/special_consts.h
beg_len_step.o: $(hdrdir)/ruby/internal/static_assert.h
beg_len_step.o: $(hdrdir)/ruby/internal/stdalign.h
beg_len_step.o: $(hdrdir)/ruby/internal/stdbool.h
+beg_len_step.o: $(hdrdir)/ruby/internal/stdckdint.h
beg_len_step.o: $(hdrdir)/ruby/internal/symbol.h
beg_len_step.o: $(hdrdir)/ruby/internal/value.h
beg_len_step.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/arith_seq/extract/depend b/ext/-test-/arith_seq/extract/depend
index 231736b277..fdbd71dfbc 100644
--- a/ext/-test-/arith_seq/extract/depend
+++ b/ext/-test-/arith_seq/extract/depend
@@ -146,6 +146,7 @@ extract.o: $(hdrdir)/ruby/internal/special_consts.h
extract.o: $(hdrdir)/ruby/internal/static_assert.h
extract.o: $(hdrdir)/ruby/internal/stdalign.h
extract.o: $(hdrdir)/ruby/internal/stdbool.h
+extract.o: $(hdrdir)/ruby/internal/stdckdint.h
extract.o: $(hdrdir)/ruby/internal/symbol.h
extract.o: $(hdrdir)/ruby/internal/value.h
extract.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/array/concat/depend b/ext/-test-/array/concat/depend
index d66e7a540f..f2213a42ea 100644
--- a/ext/-test-/array/concat/depend
+++ b/ext/-test-/array/concat/depend
@@ -147,6 +147,7 @@ to_ary_concat.o: $(hdrdir)/ruby/internal/special_consts.h
to_ary_concat.o: $(hdrdir)/ruby/internal/static_assert.h
to_ary_concat.o: $(hdrdir)/ruby/internal/stdalign.h
to_ary_concat.o: $(hdrdir)/ruby/internal/stdbool.h
+to_ary_concat.o: $(hdrdir)/ruby/internal/stdckdint.h
to_ary_concat.o: $(hdrdir)/ruby/internal/symbol.h
to_ary_concat.o: $(hdrdir)/ruby/internal/value.h
to_ary_concat.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/array/resize/depend b/ext/-test-/array/resize/depend
index a9c02b3db2..f88a9d03c1 100644
--- a/ext/-test-/array/resize/depend
+++ b/ext/-test-/array/resize/depend
@@ -146,6 +146,7 @@ resize.o: $(hdrdir)/ruby/internal/special_consts.h
resize.o: $(hdrdir)/ruby/internal/static_assert.h
resize.o: $(hdrdir)/ruby/internal/stdalign.h
resize.o: $(hdrdir)/ruby/internal/stdbool.h
+resize.o: $(hdrdir)/ruby/internal/stdckdint.h
resize.o: $(hdrdir)/ruby/internal/symbol.h
resize.o: $(hdrdir)/ruby/internal/value.h
resize.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/asan/asan.c b/ext/-test-/asan/asan.c
new file mode 100644
index 0000000000..45b6253fda
--- /dev/null
+++ b/ext/-test-/asan/asan.c
@@ -0,0 +1,24 @@
+#include "ruby/ruby.h"
+
+static VALUE
+asan_enabled_p(VALUE self)
+{
+#if defined(__has_feature)
+ /* clang uses __has_feature for determining asan */
+ return __has_feature(address_sanitizer) ? Qtrue : Qfalse;
+#elif defined(__SANITIZE_ADDRESS__)
+ /* GCC sets __SANITIZE_ADDRESS__ for determining asan */
+ return Qtrue;
+#else
+ return Qfalse;
+#endif
+}
+
+void
+Init_asan(void)
+{
+ VALUE m = rb_define_module("Test");
+ VALUE c = rb_define_class_under(m, "ASAN", rb_cObject);
+ rb_define_singleton_method(c, "enabled?", asan_enabled_p, 0);
+}
+
diff --git a/ext/-test-/asan/extconf.rb b/ext/-test-/asan/extconf.rb
new file mode 100644
index 0000000000..ec02742b81
--- /dev/null
+++ b/ext/-test-/asan/extconf.rb
@@ -0,0 +1,2 @@
+require 'mkmf'
+create_makefile('-test-/asan')
diff --git a/ext/-test-/bignum/depend b/ext/-test-/bignum/depend
index d4392bb6a1..078915ab72 100644
--- a/ext/-test-/bignum/depend
+++ b/ext/-test-/bignum/depend
@@ -146,6 +146,7 @@ big2str.o: $(hdrdir)/ruby/internal/special_consts.h
big2str.o: $(hdrdir)/ruby/internal/static_assert.h
big2str.o: $(hdrdir)/ruby/internal/stdalign.h
big2str.o: $(hdrdir)/ruby/internal/stdbool.h
+big2str.o: $(hdrdir)/ruby/internal/stdckdint.h
big2str.o: $(hdrdir)/ruby/internal/symbol.h
big2str.o: $(hdrdir)/ruby/internal/value.h
big2str.o: $(hdrdir)/ruby/internal/value_type.h
@@ -305,6 +306,7 @@ bigzero.o: $(hdrdir)/ruby/internal/special_consts.h
bigzero.o: $(hdrdir)/ruby/internal/static_assert.h
bigzero.o: $(hdrdir)/ruby/internal/stdalign.h
bigzero.o: $(hdrdir)/ruby/internal/stdbool.h
+bigzero.o: $(hdrdir)/ruby/internal/stdckdint.h
bigzero.o: $(hdrdir)/ruby/internal/symbol.h
bigzero.o: $(hdrdir)/ruby/internal/value.h
bigzero.o: $(hdrdir)/ruby/internal/value_type.h
@@ -464,6 +466,7 @@ div.o: $(hdrdir)/ruby/internal/special_consts.h
div.o: $(hdrdir)/ruby/internal/static_assert.h
div.o: $(hdrdir)/ruby/internal/stdalign.h
div.o: $(hdrdir)/ruby/internal/stdbool.h
+div.o: $(hdrdir)/ruby/internal/stdckdint.h
div.o: $(hdrdir)/ruby/internal/symbol.h
div.o: $(hdrdir)/ruby/internal/value.h
div.o: $(hdrdir)/ruby/internal/value_type.h
@@ -624,6 +627,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -782,6 +786,7 @@ intpack.o: $(hdrdir)/ruby/internal/special_consts.h
intpack.o: $(hdrdir)/ruby/internal/static_assert.h
intpack.o: $(hdrdir)/ruby/internal/stdalign.h
intpack.o: $(hdrdir)/ruby/internal/stdbool.h
+intpack.o: $(hdrdir)/ruby/internal/stdckdint.h
intpack.o: $(hdrdir)/ruby/internal/symbol.h
intpack.o: $(hdrdir)/ruby/internal/value.h
intpack.o: $(hdrdir)/ruby/internal/value_type.h
@@ -941,6 +946,7 @@ mul.o: $(hdrdir)/ruby/internal/special_consts.h
mul.o: $(hdrdir)/ruby/internal/static_assert.h
mul.o: $(hdrdir)/ruby/internal/stdalign.h
mul.o: $(hdrdir)/ruby/internal/stdbool.h
+mul.o: $(hdrdir)/ruby/internal/stdckdint.h
mul.o: $(hdrdir)/ruby/internal/symbol.h
mul.o: $(hdrdir)/ruby/internal/value.h
mul.o: $(hdrdir)/ruby/internal/value_type.h
@@ -1100,6 +1106,7 @@ str2big.o: $(hdrdir)/ruby/internal/special_consts.h
str2big.o: $(hdrdir)/ruby/internal/static_assert.h
str2big.o: $(hdrdir)/ruby/internal/stdalign.h
str2big.o: $(hdrdir)/ruby/internal/stdbool.h
+str2big.o: $(hdrdir)/ruby/internal/stdckdint.h
str2big.o: $(hdrdir)/ruby/internal/symbol.h
str2big.o: $(hdrdir)/ruby/internal/value.h
str2big.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/bug-14834/depend b/ext/-test-/bug-14834/depend
index bf26a571aa..695094fa7a 100644
--- a/ext/-test-/bug-14834/depend
+++ b/ext/-test-/bug-14834/depend
@@ -147,6 +147,7 @@ bug-14384.o: $(hdrdir)/ruby/internal/special_consts.h
bug-14384.o: $(hdrdir)/ruby/internal/static_assert.h
bug-14384.o: $(hdrdir)/ruby/internal/stdalign.h
bug-14384.o: $(hdrdir)/ruby/internal/stdbool.h
+bug-14384.o: $(hdrdir)/ruby/internal/stdckdint.h
bug-14384.o: $(hdrdir)/ruby/internal/symbol.h
bug-14384.o: $(hdrdir)/ruby/internal/value.h
bug-14384.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/bug-3571/depend b/ext/-test-/bug-3571/depend
index 9105093b0d..84517a9c15 100644
--- a/ext/-test-/bug-3571/depend
+++ b/ext/-test-/bug-3571/depend
@@ -147,6 +147,7 @@ bug.o: $(hdrdir)/ruby/internal/special_consts.h
bug.o: $(hdrdir)/ruby/internal/static_assert.h
bug.o: $(hdrdir)/ruby/internal/stdalign.h
bug.o: $(hdrdir)/ruby/internal/stdbool.h
+bug.o: $(hdrdir)/ruby/internal/stdckdint.h
bug.o: $(hdrdir)/ruby/internal/symbol.h
bug.o: $(hdrdir)/ruby/internal/value.h
bug.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/bug-5832/depend b/ext/-test-/bug-5832/depend
index 9105093b0d..84517a9c15 100644
--- a/ext/-test-/bug-5832/depend
+++ b/ext/-test-/bug-5832/depend
@@ -147,6 +147,7 @@ bug.o: $(hdrdir)/ruby/internal/special_consts.h
bug.o: $(hdrdir)/ruby/internal/static_assert.h
bug.o: $(hdrdir)/ruby/internal/stdalign.h
bug.o: $(hdrdir)/ruby/internal/stdbool.h
+bug.o: $(hdrdir)/ruby/internal/stdckdint.h
bug.o: $(hdrdir)/ruby/internal/symbol.h
bug.o: $(hdrdir)/ruby/internal/value.h
bug.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/bug_reporter/depend b/ext/-test-/bug_reporter/depend
index 20882708d1..1c73234247 100644
--- a/ext/-test-/bug_reporter/depend
+++ b/ext/-test-/bug_reporter/depend
@@ -147,6 +147,7 @@ bug_reporter.o: $(hdrdir)/ruby/internal/special_consts.h
bug_reporter.o: $(hdrdir)/ruby/internal/static_assert.h
bug_reporter.o: $(hdrdir)/ruby/internal/stdalign.h
bug_reporter.o: $(hdrdir)/ruby/internal/stdbool.h
+bug_reporter.o: $(hdrdir)/ruby/internal/stdckdint.h
bug_reporter.o: $(hdrdir)/ruby/internal/symbol.h
bug_reporter.o: $(hdrdir)/ruby/internal/value.h
bug_reporter.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/class/depend b/ext/-test-/class/depend
index 0a805f815e..b0595fdc46 100644
--- a/ext/-test-/class/depend
+++ b/ext/-test-/class/depend
@@ -146,6 +146,7 @@ class2name.o: $(hdrdir)/ruby/internal/special_consts.h
class2name.o: $(hdrdir)/ruby/internal/static_assert.h
class2name.o: $(hdrdir)/ruby/internal/stdalign.h
class2name.o: $(hdrdir)/ruby/internal/stdbool.h
+class2name.o: $(hdrdir)/ruby/internal/stdckdint.h
class2name.o: $(hdrdir)/ruby/internal/symbol.h
class2name.o: $(hdrdir)/ruby/internal/value.h
class2name.o: $(hdrdir)/ruby/internal/value_type.h
@@ -305,6 +306,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/debug/depend b/ext/-test-/debug/depend
index 5feeea6d98..67e32c6aa6 100644
--- a/ext/-test-/debug/depend
+++ b/ext/-test-/debug/depend
@@ -147,6 +147,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -306,6 +307,7 @@ inspector.o: $(hdrdir)/ruby/internal/special_consts.h
inspector.o: $(hdrdir)/ruby/internal/static_assert.h
inspector.o: $(hdrdir)/ruby/internal/stdalign.h
inspector.o: $(hdrdir)/ruby/internal/stdbool.h
+inspector.o: $(hdrdir)/ruby/internal/stdckdint.h
inspector.o: $(hdrdir)/ruby/internal/symbol.h
inspector.o: $(hdrdir)/ruby/internal/value.h
inspector.o: $(hdrdir)/ruby/internal/value_type.h
@@ -465,6 +467,7 @@ profile_frames.o: $(hdrdir)/ruby/internal/special_consts.h
profile_frames.o: $(hdrdir)/ruby/internal/static_assert.h
profile_frames.o: $(hdrdir)/ruby/internal/stdalign.h
profile_frames.o: $(hdrdir)/ruby/internal/stdbool.h
+profile_frames.o: $(hdrdir)/ruby/internal/stdckdint.h
profile_frames.o: $(hdrdir)/ruby/internal/symbol.h
profile_frames.o: $(hdrdir)/ruby/internal/value.h
profile_frames.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/debug/profile_frames.c b/ext/-test-/debug/profile_frames.c
index d2bba7d183..f9a77a5a78 100644
--- a/ext/-test-/debug/profile_frames.c
+++ b/ext/-test-/debug/profile_frames.c
@@ -37,8 +37,29 @@ profile_frames(VALUE self, VALUE start_v, VALUE num_v)
return result;
}
+static VALUE
+profile_thread_frames(VALUE self, VALUE thread, VALUE start_v, VALUE num_v)
+{
+ int i, collected_size;
+ int start = NUM2INT(start_v);
+ int buff_size = NUM2INT(num_v);
+ VALUE buff[MAX_BUF_SIZE];
+ int lines[MAX_BUF_SIZE];
+ VALUE result = rb_ary_new();
+
+ if (buff_size > MAX_BUF_SIZE) rb_raise(rb_eRuntimeError, "too long buff_size");
+
+ collected_size = rb_profile_thread_frames(thread, start, buff_size, buff, lines);
+ for (i=0; i<collected_size; i++) {
+ rb_ary_push(result, rb_profile_frame_full_label(buff[i]));
+ }
+
+ return result;
+}
+
void
Init_profile_frames(VALUE klass)
{
rb_define_module_function(klass, "profile_frames", profile_frames, 2);
+ rb_define_module_function(klass, "profile_thread_frames", profile_thread_frames, 3);
}
diff --git a/ext/-test-/dln/empty/depend b/ext/-test-/dln/empty/depend
index a460159087..d3e606df57 100644
--- a/ext/-test-/dln/empty/depend
+++ b/ext/-test-/dln/empty/depend
@@ -147,6 +147,7 @@ empty.o: $(hdrdir)/ruby/internal/special_consts.h
empty.o: $(hdrdir)/ruby/internal/static_assert.h
empty.o: $(hdrdir)/ruby/internal/stdalign.h
empty.o: $(hdrdir)/ruby/internal/stdbool.h
+empty.o: $(hdrdir)/ruby/internal/stdckdint.h
empty.o: $(hdrdir)/ruby/internal/symbol.h
empty.o: $(hdrdir)/ruby/internal/value.h
empty.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/enumerator_kw/depend b/ext/-test-/enumerator_kw/depend
index 49ea495421..85daa55b53 100644
--- a/ext/-test-/enumerator_kw/depend
+++ b/ext/-test-/enumerator_kw/depend
@@ -147,6 +147,7 @@ enumerator_kw.o: $(hdrdir)/ruby/internal/special_consts.h
enumerator_kw.o: $(hdrdir)/ruby/internal/static_assert.h
enumerator_kw.o: $(hdrdir)/ruby/internal/stdalign.h
enumerator_kw.o: $(hdrdir)/ruby/internal/stdbool.h
+enumerator_kw.o: $(hdrdir)/ruby/internal/stdckdint.h
enumerator_kw.o: $(hdrdir)/ruby/internal/symbol.h
enumerator_kw.o: $(hdrdir)/ruby/internal/value.h
enumerator_kw.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/exception/depend b/ext/-test-/exception/depend
index 818b4c79df..7a0544b1e1 100644
--- a/ext/-test-/exception/depend
+++ b/ext/-test-/exception/depend
@@ -146,6 +146,7 @@ dataerror.o: $(hdrdir)/ruby/internal/special_consts.h
dataerror.o: $(hdrdir)/ruby/internal/static_assert.h
dataerror.o: $(hdrdir)/ruby/internal/stdalign.h
dataerror.o: $(hdrdir)/ruby/internal/stdbool.h
+dataerror.o: $(hdrdir)/ruby/internal/stdckdint.h
dataerror.o: $(hdrdir)/ruby/internal/symbol.h
dataerror.o: $(hdrdir)/ruby/internal/value.h
dataerror.o: $(hdrdir)/ruby/internal/value_type.h
@@ -315,6 +316,7 @@ enc_raise.o: $(hdrdir)/ruby/internal/special_consts.h
enc_raise.o: $(hdrdir)/ruby/internal/static_assert.h
enc_raise.o: $(hdrdir)/ruby/internal/stdalign.h
enc_raise.o: $(hdrdir)/ruby/internal/stdbool.h
+enc_raise.o: $(hdrdir)/ruby/internal/stdckdint.h
enc_raise.o: $(hdrdir)/ruby/internal/symbol.h
enc_raise.o: $(hdrdir)/ruby/internal/value.h
enc_raise.o: $(hdrdir)/ruby/internal/value_type.h
@@ -476,6 +478,7 @@ ensured.o: $(hdrdir)/ruby/internal/special_consts.h
ensured.o: $(hdrdir)/ruby/internal/static_assert.h
ensured.o: $(hdrdir)/ruby/internal/stdalign.h
ensured.o: $(hdrdir)/ruby/internal/stdbool.h
+ensured.o: $(hdrdir)/ruby/internal/stdckdint.h
ensured.o: $(hdrdir)/ruby/internal/symbol.h
ensured.o: $(hdrdir)/ruby/internal/value.h
ensured.o: $(hdrdir)/ruby/internal/value_type.h
@@ -635,6 +638,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/fatal/depend b/ext/-test-/fatal/depend
index 730a72e52a..36b0ad4205 100644
--- a/ext/-test-/fatal/depend
+++ b/ext/-test-/fatal/depend
@@ -1,4 +1,325 @@
# AUTOGENERATED DEPENDENCIES START
+
+init.o: $(RUBY_EXTCONF_H)
+init.o: $(arch_hdrdir)/ruby/config.h
+init.o: $(hdrdir)/ruby.h
+init.o: $(hdrdir)/ruby/assert.h
+init.o: $(hdrdir)/ruby/backward.h
+init.o: $(hdrdir)/ruby/backward/2/assume.h
+init.o: $(hdrdir)/ruby/backward/2/attributes.h
+init.o: $(hdrdir)/ruby/backward/2/bool.h
+init.o: $(hdrdir)/ruby/backward/2/inttypes.h
+init.o: $(hdrdir)/ruby/backward/2/limits.h
+init.o: $(hdrdir)/ruby/backward/2/long_long.h
+init.o: $(hdrdir)/ruby/backward/2/stdalign.h
+init.o: $(hdrdir)/ruby/backward/2/stdarg.h
+init.o: $(hdrdir)/ruby/defines.h
+init.o: $(hdrdir)/ruby/intern.h
+init.o: $(hdrdir)/ruby/internal/abi.h
+init.o: $(hdrdir)/ruby/internal/anyargs.h
+init.o: $(hdrdir)/ruby/internal/arithmetic.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/char.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/double.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/int.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/long.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/short.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h
+init.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h
+init.o: $(hdrdir)/ruby/internal/assume.h
+init.o: $(hdrdir)/ruby/internal/attr/alloc_size.h
+init.o: $(hdrdir)/ruby/internal/attr/artificial.h
+init.o: $(hdrdir)/ruby/internal/attr/cold.h
+init.o: $(hdrdir)/ruby/internal/attr/const.h
+init.o: $(hdrdir)/ruby/internal/attr/constexpr.h
+init.o: $(hdrdir)/ruby/internal/attr/deprecated.h
+init.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h
+init.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h
+init.o: $(hdrdir)/ruby/internal/attr/error.h
+init.o: $(hdrdir)/ruby/internal/attr/flag_enum.h
+init.o: $(hdrdir)/ruby/internal/attr/forceinline.h
+init.o: $(hdrdir)/ruby/internal/attr/format.h
+init.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h
+init.o: $(hdrdir)/ruby/internal/attr/noalias.h
+init.o: $(hdrdir)/ruby/internal/attr/nodiscard.h
+init.o: $(hdrdir)/ruby/internal/attr/noexcept.h
+init.o: $(hdrdir)/ruby/internal/attr/noinline.h
+init.o: $(hdrdir)/ruby/internal/attr/nonnull.h
+init.o: $(hdrdir)/ruby/internal/attr/noreturn.h
+init.o: $(hdrdir)/ruby/internal/attr/packed_struct.h
+init.o: $(hdrdir)/ruby/internal/attr/pure.h
+init.o: $(hdrdir)/ruby/internal/attr/restrict.h
+init.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h
+init.o: $(hdrdir)/ruby/internal/attr/warning.h
+init.o: $(hdrdir)/ruby/internal/attr/weakref.h
+init.o: $(hdrdir)/ruby/internal/cast.h
+init.o: $(hdrdir)/ruby/internal/compiler_is.h
+init.o: $(hdrdir)/ruby/internal/compiler_is/apple.h
+init.o: $(hdrdir)/ruby/internal/compiler_is/clang.h
+init.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h
+init.o: $(hdrdir)/ruby/internal/compiler_is/intel.h
+init.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h
+init.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h
+init.o: $(hdrdir)/ruby/internal/compiler_since.h
+init.o: $(hdrdir)/ruby/internal/config.h
+init.o: $(hdrdir)/ruby/internal/constant_p.h
+init.o: $(hdrdir)/ruby/internal/core.h
+init.o: $(hdrdir)/ruby/internal/core/rarray.h
+init.o: $(hdrdir)/ruby/internal/core/rbasic.h
+init.o: $(hdrdir)/ruby/internal/core/rbignum.h
+init.o: $(hdrdir)/ruby/internal/core/rclass.h
+init.o: $(hdrdir)/ruby/internal/core/rdata.h
+init.o: $(hdrdir)/ruby/internal/core/rfile.h
+init.o: $(hdrdir)/ruby/internal/core/rhash.h
+init.o: $(hdrdir)/ruby/internal/core/robject.h
+init.o: $(hdrdir)/ruby/internal/core/rregexp.h
+init.o: $(hdrdir)/ruby/internal/core/rstring.h
+init.o: $(hdrdir)/ruby/internal/core/rstruct.h
+init.o: $(hdrdir)/ruby/internal/core/rtypeddata.h
+init.o: $(hdrdir)/ruby/internal/ctype.h
+init.o: $(hdrdir)/ruby/internal/dllexport.h
+init.o: $(hdrdir)/ruby/internal/dosish.h
+init.o: $(hdrdir)/ruby/internal/error.h
+init.o: $(hdrdir)/ruby/internal/eval.h
+init.o: $(hdrdir)/ruby/internal/event.h
+init.o: $(hdrdir)/ruby/internal/fl_type.h
+init.o: $(hdrdir)/ruby/internal/gc.h
+init.o: $(hdrdir)/ruby/internal/glob.h
+init.o: $(hdrdir)/ruby/internal/globals.h
+init.o: $(hdrdir)/ruby/internal/has/attribute.h
+init.o: $(hdrdir)/ruby/internal/has/builtin.h
+init.o: $(hdrdir)/ruby/internal/has/c_attribute.h
+init.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h
+init.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h
+init.o: $(hdrdir)/ruby/internal/has/extension.h
+init.o: $(hdrdir)/ruby/internal/has/feature.h
+init.o: $(hdrdir)/ruby/internal/has/warning.h
+init.o: $(hdrdir)/ruby/internal/intern/array.h
+init.o: $(hdrdir)/ruby/internal/intern/bignum.h
+init.o: $(hdrdir)/ruby/internal/intern/class.h
+init.o: $(hdrdir)/ruby/internal/intern/compar.h
+init.o: $(hdrdir)/ruby/internal/intern/complex.h
+init.o: $(hdrdir)/ruby/internal/intern/cont.h
+init.o: $(hdrdir)/ruby/internal/intern/dir.h
+init.o: $(hdrdir)/ruby/internal/intern/enum.h
+init.o: $(hdrdir)/ruby/internal/intern/enumerator.h
+init.o: $(hdrdir)/ruby/internal/intern/error.h
+init.o: $(hdrdir)/ruby/internal/intern/eval.h
+init.o: $(hdrdir)/ruby/internal/intern/file.h
+init.o: $(hdrdir)/ruby/internal/intern/hash.h
+init.o: $(hdrdir)/ruby/internal/intern/io.h
+init.o: $(hdrdir)/ruby/internal/intern/load.h
+init.o: $(hdrdir)/ruby/internal/intern/marshal.h
+init.o: $(hdrdir)/ruby/internal/intern/numeric.h
+init.o: $(hdrdir)/ruby/internal/intern/object.h
+init.o: $(hdrdir)/ruby/internal/intern/parse.h
+init.o: $(hdrdir)/ruby/internal/intern/proc.h
+init.o: $(hdrdir)/ruby/internal/intern/process.h
+init.o: $(hdrdir)/ruby/internal/intern/random.h
+init.o: $(hdrdir)/ruby/internal/intern/range.h
+init.o: $(hdrdir)/ruby/internal/intern/rational.h
+init.o: $(hdrdir)/ruby/internal/intern/re.h
+init.o: $(hdrdir)/ruby/internal/intern/ruby.h
+init.o: $(hdrdir)/ruby/internal/intern/select.h
+init.o: $(hdrdir)/ruby/internal/intern/select/largesize.h
+init.o: $(hdrdir)/ruby/internal/intern/signal.h
+init.o: $(hdrdir)/ruby/internal/intern/sprintf.h
+init.o: $(hdrdir)/ruby/internal/intern/string.h
+init.o: $(hdrdir)/ruby/internal/intern/struct.h
+init.o: $(hdrdir)/ruby/internal/intern/thread.h
+init.o: $(hdrdir)/ruby/internal/intern/time.h
+init.o: $(hdrdir)/ruby/internal/intern/variable.h
+init.o: $(hdrdir)/ruby/internal/intern/vm.h
+init.o: $(hdrdir)/ruby/internal/interpreter.h
+init.o: $(hdrdir)/ruby/internal/iterator.h
+init.o: $(hdrdir)/ruby/internal/memory.h
+init.o: $(hdrdir)/ruby/internal/method.h
+init.o: $(hdrdir)/ruby/internal/module.h
+init.o: $(hdrdir)/ruby/internal/newobj.h
+init.o: $(hdrdir)/ruby/internal/scan_args.h
+init.o: $(hdrdir)/ruby/internal/special_consts.h
+init.o: $(hdrdir)/ruby/internal/static_assert.h
+init.o: $(hdrdir)/ruby/internal/stdalign.h
+init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
+init.o: $(hdrdir)/ruby/internal/symbol.h
+init.o: $(hdrdir)/ruby/internal/value.h
+init.o: $(hdrdir)/ruby/internal/value_type.h
+init.o: $(hdrdir)/ruby/internal/variable.h
+init.o: $(hdrdir)/ruby/internal/warning_push.h
+init.o: $(hdrdir)/ruby/internal/xmalloc.h
+init.o: $(hdrdir)/ruby/missing.h
+init.o: $(hdrdir)/ruby/ruby.h
+init.o: $(hdrdir)/ruby/st.h
+init.o: $(hdrdir)/ruby/subst.h
+init.o: init.c
+invalid.o: $(RUBY_EXTCONF_H)
+invalid.o: $(arch_hdrdir)/ruby/config.h
+invalid.o: $(hdrdir)/ruby.h
+invalid.o: $(hdrdir)/ruby/assert.h
+invalid.o: $(hdrdir)/ruby/backward.h
+invalid.o: $(hdrdir)/ruby/backward/2/assume.h
+invalid.o: $(hdrdir)/ruby/backward/2/attributes.h
+invalid.o: $(hdrdir)/ruby/backward/2/bool.h
+invalid.o: $(hdrdir)/ruby/backward/2/inttypes.h
+invalid.o: $(hdrdir)/ruby/backward/2/limits.h
+invalid.o: $(hdrdir)/ruby/backward/2/long_long.h
+invalid.o: $(hdrdir)/ruby/backward/2/stdalign.h
+invalid.o: $(hdrdir)/ruby/backward/2/stdarg.h
+invalid.o: $(hdrdir)/ruby/defines.h
+invalid.o: $(hdrdir)/ruby/intern.h
+invalid.o: $(hdrdir)/ruby/internal/abi.h
+invalid.o: $(hdrdir)/ruby/internal/anyargs.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/char.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/double.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/int.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/long.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/short.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h
+invalid.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h
+invalid.o: $(hdrdir)/ruby/internal/assume.h
+invalid.o: $(hdrdir)/ruby/internal/attr/alloc_size.h
+invalid.o: $(hdrdir)/ruby/internal/attr/artificial.h
+invalid.o: $(hdrdir)/ruby/internal/attr/cold.h
+invalid.o: $(hdrdir)/ruby/internal/attr/const.h
+invalid.o: $(hdrdir)/ruby/internal/attr/constexpr.h
+invalid.o: $(hdrdir)/ruby/internal/attr/deprecated.h
+invalid.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h
+invalid.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h
+invalid.o: $(hdrdir)/ruby/internal/attr/error.h
+invalid.o: $(hdrdir)/ruby/internal/attr/flag_enum.h
+invalid.o: $(hdrdir)/ruby/internal/attr/forceinline.h
+invalid.o: $(hdrdir)/ruby/internal/attr/format.h
+invalid.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h
+invalid.o: $(hdrdir)/ruby/internal/attr/noalias.h
+invalid.o: $(hdrdir)/ruby/internal/attr/nodiscard.h
+invalid.o: $(hdrdir)/ruby/internal/attr/noexcept.h
+invalid.o: $(hdrdir)/ruby/internal/attr/noinline.h
+invalid.o: $(hdrdir)/ruby/internal/attr/nonnull.h
+invalid.o: $(hdrdir)/ruby/internal/attr/noreturn.h
+invalid.o: $(hdrdir)/ruby/internal/attr/packed_struct.h
+invalid.o: $(hdrdir)/ruby/internal/attr/pure.h
+invalid.o: $(hdrdir)/ruby/internal/attr/restrict.h
+invalid.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h
+invalid.o: $(hdrdir)/ruby/internal/attr/warning.h
+invalid.o: $(hdrdir)/ruby/internal/attr/weakref.h
+invalid.o: $(hdrdir)/ruby/internal/cast.h
+invalid.o: $(hdrdir)/ruby/internal/compiler_is.h
+invalid.o: $(hdrdir)/ruby/internal/compiler_is/apple.h
+invalid.o: $(hdrdir)/ruby/internal/compiler_is/clang.h
+invalid.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h
+invalid.o: $(hdrdir)/ruby/internal/compiler_is/intel.h
+invalid.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h
+invalid.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h
+invalid.o: $(hdrdir)/ruby/internal/compiler_since.h
+invalid.o: $(hdrdir)/ruby/internal/config.h
+invalid.o: $(hdrdir)/ruby/internal/constant_p.h
+invalid.o: $(hdrdir)/ruby/internal/core.h
+invalid.o: $(hdrdir)/ruby/internal/core/rarray.h
+invalid.o: $(hdrdir)/ruby/internal/core/rbasic.h
+invalid.o: $(hdrdir)/ruby/internal/core/rbignum.h
+invalid.o: $(hdrdir)/ruby/internal/core/rclass.h
+invalid.o: $(hdrdir)/ruby/internal/core/rdata.h
+invalid.o: $(hdrdir)/ruby/internal/core/rfile.h
+invalid.o: $(hdrdir)/ruby/internal/core/rhash.h
+invalid.o: $(hdrdir)/ruby/internal/core/robject.h
+invalid.o: $(hdrdir)/ruby/internal/core/rregexp.h
+invalid.o: $(hdrdir)/ruby/internal/core/rstring.h
+invalid.o: $(hdrdir)/ruby/internal/core/rstruct.h
+invalid.o: $(hdrdir)/ruby/internal/core/rtypeddata.h
+invalid.o: $(hdrdir)/ruby/internal/ctype.h
+invalid.o: $(hdrdir)/ruby/internal/dllexport.h
+invalid.o: $(hdrdir)/ruby/internal/dosish.h
+invalid.o: $(hdrdir)/ruby/internal/error.h
+invalid.o: $(hdrdir)/ruby/internal/eval.h
+invalid.o: $(hdrdir)/ruby/internal/event.h
+invalid.o: $(hdrdir)/ruby/internal/fl_type.h
+invalid.o: $(hdrdir)/ruby/internal/gc.h
+invalid.o: $(hdrdir)/ruby/internal/glob.h
+invalid.o: $(hdrdir)/ruby/internal/globals.h
+invalid.o: $(hdrdir)/ruby/internal/has/attribute.h
+invalid.o: $(hdrdir)/ruby/internal/has/builtin.h
+invalid.o: $(hdrdir)/ruby/internal/has/c_attribute.h
+invalid.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h
+invalid.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h
+invalid.o: $(hdrdir)/ruby/internal/has/extension.h
+invalid.o: $(hdrdir)/ruby/internal/has/feature.h
+invalid.o: $(hdrdir)/ruby/internal/has/warning.h
+invalid.o: $(hdrdir)/ruby/internal/intern/array.h
+invalid.o: $(hdrdir)/ruby/internal/intern/bignum.h
+invalid.o: $(hdrdir)/ruby/internal/intern/class.h
+invalid.o: $(hdrdir)/ruby/internal/intern/compar.h
+invalid.o: $(hdrdir)/ruby/internal/intern/complex.h
+invalid.o: $(hdrdir)/ruby/internal/intern/cont.h
+invalid.o: $(hdrdir)/ruby/internal/intern/dir.h
+invalid.o: $(hdrdir)/ruby/internal/intern/enum.h
+invalid.o: $(hdrdir)/ruby/internal/intern/enumerator.h
+invalid.o: $(hdrdir)/ruby/internal/intern/error.h
+invalid.o: $(hdrdir)/ruby/internal/intern/eval.h
+invalid.o: $(hdrdir)/ruby/internal/intern/file.h
+invalid.o: $(hdrdir)/ruby/internal/intern/hash.h
+invalid.o: $(hdrdir)/ruby/internal/intern/io.h
+invalid.o: $(hdrdir)/ruby/internal/intern/load.h
+invalid.o: $(hdrdir)/ruby/internal/intern/marshal.h
+invalid.o: $(hdrdir)/ruby/internal/intern/numeric.h
+invalid.o: $(hdrdir)/ruby/internal/intern/object.h
+invalid.o: $(hdrdir)/ruby/internal/intern/parse.h
+invalid.o: $(hdrdir)/ruby/internal/intern/proc.h
+invalid.o: $(hdrdir)/ruby/internal/intern/process.h
+invalid.o: $(hdrdir)/ruby/internal/intern/random.h
+invalid.o: $(hdrdir)/ruby/internal/intern/range.h
+invalid.o: $(hdrdir)/ruby/internal/intern/rational.h
+invalid.o: $(hdrdir)/ruby/internal/intern/re.h
+invalid.o: $(hdrdir)/ruby/internal/intern/ruby.h
+invalid.o: $(hdrdir)/ruby/internal/intern/select.h
+invalid.o: $(hdrdir)/ruby/internal/intern/select/largesize.h
+invalid.o: $(hdrdir)/ruby/internal/intern/signal.h
+invalid.o: $(hdrdir)/ruby/internal/intern/sprintf.h
+invalid.o: $(hdrdir)/ruby/internal/intern/string.h
+invalid.o: $(hdrdir)/ruby/internal/intern/struct.h
+invalid.o: $(hdrdir)/ruby/internal/intern/thread.h
+invalid.o: $(hdrdir)/ruby/internal/intern/time.h
+invalid.o: $(hdrdir)/ruby/internal/intern/variable.h
+invalid.o: $(hdrdir)/ruby/internal/intern/vm.h
+invalid.o: $(hdrdir)/ruby/internal/interpreter.h
+invalid.o: $(hdrdir)/ruby/internal/iterator.h
+invalid.o: $(hdrdir)/ruby/internal/memory.h
+invalid.o: $(hdrdir)/ruby/internal/method.h
+invalid.o: $(hdrdir)/ruby/internal/module.h
+invalid.o: $(hdrdir)/ruby/internal/newobj.h
+invalid.o: $(hdrdir)/ruby/internal/scan_args.h
+invalid.o: $(hdrdir)/ruby/internal/special_consts.h
+invalid.o: $(hdrdir)/ruby/internal/static_assert.h
+invalid.o: $(hdrdir)/ruby/internal/stdalign.h
+invalid.o: $(hdrdir)/ruby/internal/stdbool.h
+invalid.o: $(hdrdir)/ruby/internal/stdckdint.h
+invalid.o: $(hdrdir)/ruby/internal/symbol.h
+invalid.o: $(hdrdir)/ruby/internal/value.h
+invalid.o: $(hdrdir)/ruby/internal/value_type.h
+invalid.o: $(hdrdir)/ruby/internal/variable.h
+invalid.o: $(hdrdir)/ruby/internal/warning_push.h
+invalid.o: $(hdrdir)/ruby/internal/xmalloc.h
+invalid.o: $(hdrdir)/ruby/missing.h
+invalid.o: $(hdrdir)/ruby/ruby.h
+invalid.o: $(hdrdir)/ruby/st.h
+invalid.o: $(hdrdir)/ruby/subst.h
+invalid.o: invalid.c
rb_fatal.o: $(RUBY_EXTCONF_H)
rb_fatal.o: $(arch_hdrdir)/ruby/config.h
rb_fatal.o: $(hdrdir)/ruby.h
@@ -147,6 +468,7 @@ rb_fatal.o: $(hdrdir)/ruby/internal/special_consts.h
rb_fatal.o: $(hdrdir)/ruby/internal/static_assert.h
rb_fatal.o: $(hdrdir)/ruby/internal/stdalign.h
rb_fatal.o: $(hdrdir)/ruby/internal/stdbool.h
+rb_fatal.o: $(hdrdir)/ruby/internal/stdckdint.h
rb_fatal.o: $(hdrdir)/ruby/internal/symbol.h
rb_fatal.o: $(hdrdir)/ruby/internal/value.h
rb_fatal.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/fatal/extconf.rb b/ext/-test-/fatal/extconf.rb
index d5849c0733..ca51178a18 100644
--- a/ext/-test-/fatal/extconf.rb
+++ b/ext/-test-/fatal/extconf.rb
@@ -1,2 +1,3 @@
# frozen_string_literal: false
-create_makefile("-test-/fatal/rb_fatal")
+require_relative "../auto_ext.rb"
+auto_ext
diff --git a/ext/-test-/fatal/init.c b/ext/-test-/fatal/init.c
new file mode 100644
index 0000000000..3b71708789
--- /dev/null
+++ b/ext/-test-/fatal/init.c
@@ -0,0 +1,10 @@
+#include "ruby.h"
+
+#define init(n) {void Init_##n(VALUE klass); Init_##n(klass);}
+
+void
+Init_fatal(void)
+{
+ VALUE klass = rb_define_module("Bug");
+ TEST_INIT_FUNCS(init);
+}
diff --git a/ext/-test-/fatal/invalid.c b/ext/-test-/fatal/invalid.c
new file mode 100644
index 0000000000..f0726edb52
--- /dev/null
+++ b/ext/-test-/fatal/invalid.c
@@ -0,0 +1,28 @@
+#include <ruby.h>
+
+#if SIZEOF_LONG == SIZEOF_VOIDP
+# define NUM2PTR(x) (void *)NUM2ULONG(x)
+#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
+# define NUM2PTR(x) (void *)NUM2ULL(x)
+#endif
+
+static VALUE
+invalid_call(VALUE obj, VALUE address)
+{
+ typedef VALUE (*func_type)(VALUE);
+
+ return (*(func_type)NUM2PTR(address))(obj);
+}
+
+static VALUE
+invalid_access(VALUE obj, VALUE address)
+{
+ return *(VALUE *)NUM2PTR(address) == obj ? Qtrue : Qfalse;
+}
+
+void
+Init_invalid(VALUE mBug)
+{
+ rb_define_singleton_method(mBug, "invalid_call", invalid_call, 1);
+ rb_define_singleton_method(mBug, "invalid_access", invalid_access, 1);
+}
diff --git a/ext/-test-/fatal/rb_fatal.c b/ext/-test-/fatal/rb_fatal.c
index eedbc51f8b..6c7bb89628 100644
--- a/ext/-test-/fatal/rb_fatal.c
+++ b/ext/-test-/fatal/rb_fatal.c
@@ -13,8 +13,7 @@ ruby_fatal(VALUE obj, VALUE msg)
}
void
-Init_rb_fatal(void)
+Init_rb_fatal(VALUE mBug)
{
- VALUE mBug = rb_define_module("Bug");
rb_define_singleton_method(mBug, "rb_fatal", ruby_fatal, 1);
}
diff --git a/ext/-test-/file/depend b/ext/-test-/file/depend
index 662136f1ba..e985f914b2 100644
--- a/ext/-test-/file/depend
+++ b/ext/-test-/file/depend
@@ -156,6 +156,7 @@ fs.o: $(hdrdir)/ruby/internal/special_consts.h
fs.o: $(hdrdir)/ruby/internal/static_assert.h
fs.o: $(hdrdir)/ruby/internal/stdalign.h
fs.o: $(hdrdir)/ruby/internal/stdbool.h
+fs.o: $(hdrdir)/ruby/internal/stdckdint.h
fs.o: $(hdrdir)/ruby/internal/symbol.h
fs.o: $(hdrdir)/ruby/internal/value.h
fs.o: $(hdrdir)/ruby/internal/value_type.h
@@ -318,6 +319,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -329,6 +331,178 @@ init.o: $(hdrdir)/ruby/ruby.h
init.o: $(hdrdir)/ruby/st.h
init.o: $(hdrdir)/ruby/subst.h
init.o: init.c
+newline_conv.o: $(RUBY_EXTCONF_H)
+newline_conv.o: $(arch_hdrdir)/ruby/config.h
+newline_conv.o: $(hdrdir)/ruby/assert.h
+newline_conv.o: $(hdrdir)/ruby/backward.h
+newline_conv.o: $(hdrdir)/ruby/backward/2/assume.h
+newline_conv.o: $(hdrdir)/ruby/backward/2/attributes.h
+newline_conv.o: $(hdrdir)/ruby/backward/2/bool.h
+newline_conv.o: $(hdrdir)/ruby/backward/2/inttypes.h
+newline_conv.o: $(hdrdir)/ruby/backward/2/limits.h
+newline_conv.o: $(hdrdir)/ruby/backward/2/long_long.h
+newline_conv.o: $(hdrdir)/ruby/backward/2/stdalign.h
+newline_conv.o: $(hdrdir)/ruby/backward/2/stdarg.h
+newline_conv.o: $(hdrdir)/ruby/defines.h
+newline_conv.o: $(hdrdir)/ruby/encoding.h
+newline_conv.o: $(hdrdir)/ruby/intern.h
+newline_conv.o: $(hdrdir)/ruby/internal/abi.h
+newline_conv.o: $(hdrdir)/ruby/internal/anyargs.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/char.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/double.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/int.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/long.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/short.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h
+newline_conv.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h
+newline_conv.o: $(hdrdir)/ruby/internal/assume.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/alloc_size.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/artificial.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/cold.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/const.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/constexpr.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/deprecated.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/error.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/flag_enum.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/forceinline.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/format.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/noalias.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/nodiscard.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/noexcept.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/noinline.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/nonnull.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/noreturn.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/packed_struct.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/pure.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/restrict.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/warning.h
+newline_conv.o: $(hdrdir)/ruby/internal/attr/weakref.h
+newline_conv.o: $(hdrdir)/ruby/internal/cast.h
+newline_conv.o: $(hdrdir)/ruby/internal/compiler_is.h
+newline_conv.o: $(hdrdir)/ruby/internal/compiler_is/apple.h
+newline_conv.o: $(hdrdir)/ruby/internal/compiler_is/clang.h
+newline_conv.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h
+newline_conv.o: $(hdrdir)/ruby/internal/compiler_is/intel.h
+newline_conv.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h
+newline_conv.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h
+newline_conv.o: $(hdrdir)/ruby/internal/compiler_since.h
+newline_conv.o: $(hdrdir)/ruby/internal/config.h
+newline_conv.o: $(hdrdir)/ruby/internal/constant_p.h
+newline_conv.o: $(hdrdir)/ruby/internal/core.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rarray.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rbasic.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rbignum.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rclass.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rdata.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rfile.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rhash.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/robject.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rregexp.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rstring.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rstruct.h
+newline_conv.o: $(hdrdir)/ruby/internal/core/rtypeddata.h
+newline_conv.o: $(hdrdir)/ruby/internal/ctype.h
+newline_conv.o: $(hdrdir)/ruby/internal/dllexport.h
+newline_conv.o: $(hdrdir)/ruby/internal/dosish.h
+newline_conv.o: $(hdrdir)/ruby/internal/encoding/coderange.h
+newline_conv.o: $(hdrdir)/ruby/internal/encoding/ctype.h
+newline_conv.o: $(hdrdir)/ruby/internal/encoding/encoding.h
+newline_conv.o: $(hdrdir)/ruby/internal/encoding/pathname.h
+newline_conv.o: $(hdrdir)/ruby/internal/encoding/re.h
+newline_conv.o: $(hdrdir)/ruby/internal/encoding/sprintf.h
+newline_conv.o: $(hdrdir)/ruby/internal/encoding/string.h
+newline_conv.o: $(hdrdir)/ruby/internal/encoding/symbol.h
+newline_conv.o: $(hdrdir)/ruby/internal/encoding/transcode.h
+newline_conv.o: $(hdrdir)/ruby/internal/error.h
+newline_conv.o: $(hdrdir)/ruby/internal/eval.h
+newline_conv.o: $(hdrdir)/ruby/internal/event.h
+newline_conv.o: $(hdrdir)/ruby/internal/fl_type.h
+newline_conv.o: $(hdrdir)/ruby/internal/gc.h
+newline_conv.o: $(hdrdir)/ruby/internal/glob.h
+newline_conv.o: $(hdrdir)/ruby/internal/globals.h
+newline_conv.o: $(hdrdir)/ruby/internal/has/attribute.h
+newline_conv.o: $(hdrdir)/ruby/internal/has/builtin.h
+newline_conv.o: $(hdrdir)/ruby/internal/has/c_attribute.h
+newline_conv.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h
+newline_conv.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h
+newline_conv.o: $(hdrdir)/ruby/internal/has/extension.h
+newline_conv.o: $(hdrdir)/ruby/internal/has/feature.h
+newline_conv.o: $(hdrdir)/ruby/internal/has/warning.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/array.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/bignum.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/class.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/compar.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/complex.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/cont.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/dir.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/enum.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/enumerator.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/error.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/eval.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/file.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/hash.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/io.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/load.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/marshal.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/numeric.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/object.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/parse.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/proc.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/process.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/random.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/range.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/rational.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/re.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/ruby.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/select.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/select/largesize.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/signal.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/sprintf.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/string.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/struct.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/thread.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/time.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/variable.h
+newline_conv.o: $(hdrdir)/ruby/internal/intern/vm.h
+newline_conv.o: $(hdrdir)/ruby/internal/interpreter.h
+newline_conv.o: $(hdrdir)/ruby/internal/iterator.h
+newline_conv.o: $(hdrdir)/ruby/internal/memory.h
+newline_conv.o: $(hdrdir)/ruby/internal/method.h
+newline_conv.o: $(hdrdir)/ruby/internal/module.h
+newline_conv.o: $(hdrdir)/ruby/internal/newobj.h
+newline_conv.o: $(hdrdir)/ruby/internal/scan_args.h
+newline_conv.o: $(hdrdir)/ruby/internal/special_consts.h
+newline_conv.o: $(hdrdir)/ruby/internal/static_assert.h
+newline_conv.o: $(hdrdir)/ruby/internal/stdalign.h
+newline_conv.o: $(hdrdir)/ruby/internal/stdbool.h
+newline_conv.o: $(hdrdir)/ruby/internal/stdckdint.h
+newline_conv.o: $(hdrdir)/ruby/internal/symbol.h
+newline_conv.o: $(hdrdir)/ruby/internal/value.h
+newline_conv.o: $(hdrdir)/ruby/internal/value_type.h
+newline_conv.o: $(hdrdir)/ruby/internal/variable.h
+newline_conv.o: $(hdrdir)/ruby/internal/warning_push.h
+newline_conv.o: $(hdrdir)/ruby/internal/xmalloc.h
+newline_conv.o: $(hdrdir)/ruby/io.h
+newline_conv.o: $(hdrdir)/ruby/missing.h
+newline_conv.o: $(hdrdir)/ruby/onigmo.h
+newline_conv.o: $(hdrdir)/ruby/oniguruma.h
+newline_conv.o: $(hdrdir)/ruby/ruby.h
+newline_conv.o: $(hdrdir)/ruby/st.h
+newline_conv.o: $(hdrdir)/ruby/subst.h
+newline_conv.o: newline_conv.c
stat.o: $(RUBY_EXTCONF_H)
stat.o: $(arch_hdrdir)/ruby/config.h
stat.o: $(hdrdir)/ruby/assert.h
@@ -486,6 +660,7 @@ stat.o: $(hdrdir)/ruby/internal/special_consts.h
stat.o: $(hdrdir)/ruby/internal/static_assert.h
stat.o: $(hdrdir)/ruby/internal/stdalign.h
stat.o: $(hdrdir)/ruby/internal/stdbool.h
+stat.o: $(hdrdir)/ruby/internal/stdckdint.h
stat.o: $(hdrdir)/ruby/internal/symbol.h
stat.o: $(hdrdir)/ruby/internal/value.h
stat.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/file/newline_conv.c b/ext/-test-/file/newline_conv.c
new file mode 100644
index 0000000000..2ac5aef801
--- /dev/null
+++ b/ext/-test-/file/newline_conv.c
@@ -0,0 +1,73 @@
+#include "ruby/ruby.h"
+#include "ruby/io.h"
+#include <fcntl.h>
+
+static VALUE
+open_with_rb_file_open(VALUE self, VALUE filename, VALUE read_or_write, VALUE binary_or_text)
+{
+ char fmode[3] = { 0 };
+ if (rb_sym2id(read_or_write) == rb_intern("read")) {
+ fmode[0] = 'r';
+ }
+ else if (rb_sym2id(read_or_write) == rb_intern("write")) {
+ fmode[0] = 'w';
+ }
+ else {
+ rb_raise(rb_eArgError, "read_or_write param must be :read or :write");
+ }
+
+ if (rb_sym2id(binary_or_text) == rb_intern("binary")) {
+ fmode[1] = 'b';
+ }
+ else if (rb_sym2id(binary_or_text) == rb_intern("text")) {
+
+ }
+ else {
+ rb_raise(rb_eArgError, "binary_or_text param must be :binary or :text");
+ }
+
+ return rb_file_open(StringValueCStr(filename), fmode);
+}
+
+static VALUE
+open_with_rb_io_fdopen(VALUE self, VALUE filename, VALUE read_or_write, VALUE binary_or_text)
+{
+ int omode = 0;
+ if (rb_sym2id(read_or_write) == rb_intern("read")) {
+ omode |= O_RDONLY;
+ }
+ else if (rb_sym2id(read_or_write) == rb_intern("write")) {
+ omode |= O_WRONLY;
+ }
+ else {
+ rb_raise(rb_eArgError, "read_or_write param must be :read or :write");
+ }
+
+ if (rb_sym2id(binary_or_text) == rb_intern("binary")) {
+#ifdef O_BINARY
+ omode |= O_BINARY;
+#endif
+ }
+ else if (rb_sym2id(binary_or_text) == rb_intern("text")) {
+
+ }
+ else {
+ rb_raise(rb_eArgError, "binary_or_text param must be :binary or :text");
+ }
+
+ int fd = rb_cloexec_open(StringValueCStr(filename), omode, 0);
+ if (fd < 0) {
+ rb_raise(rb_eIOError, "failed to open the file");
+ }
+
+ rb_update_max_fd(fd);
+ return rb_io_fdopen(fd, omode, StringValueCStr(filename));
+}
+
+void
+Init_newline_conv(VALUE module)
+{
+ VALUE newline_conv = rb_define_module_under(module, "NewlineConv");
+ rb_define_module_function(newline_conv, "rb_file_open", open_with_rb_file_open, 3);
+ rb_define_module_function(newline_conv, "rb_io_fdopen", open_with_rb_io_fdopen, 3);
+}
diff --git a/ext/-test-/float/depend b/ext/-test-/float/depend
index 9580a0416c..3e34818d5f 100644
--- a/ext/-test-/float/depend
+++ b/ext/-test-/float/depend
@@ -150,6 +150,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -309,6 +310,7 @@ nextafter.o: $(hdrdir)/ruby/internal/special_consts.h
nextafter.o: $(hdrdir)/ruby/internal/static_assert.h
nextafter.o: $(hdrdir)/ruby/internal/stdalign.h
nextafter.o: $(hdrdir)/ruby/internal/stdbool.h
+nextafter.o: $(hdrdir)/ruby/internal/stdckdint.h
nextafter.o: $(hdrdir)/ruby/internal/symbol.h
nextafter.o: $(hdrdir)/ruby/internal/value.h
nextafter.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/funcall/depend b/ext/-test-/funcall/depend
index 6719e4e676..a5a30873ac 100644
--- a/ext/-test-/funcall/depend
+++ b/ext/-test-/funcall/depend
@@ -147,6 +147,7 @@ funcall.o: $(hdrdir)/ruby/internal/special_consts.h
funcall.o: $(hdrdir)/ruby/internal/static_assert.h
funcall.o: $(hdrdir)/ruby/internal/stdalign.h
funcall.o: $(hdrdir)/ruby/internal/stdbool.h
+funcall.o: $(hdrdir)/ruby/internal/stdckdint.h
funcall.o: $(hdrdir)/ruby/internal/symbol.h
funcall.o: $(hdrdir)/ruby/internal/value.h
funcall.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/gvl/call_without_gvl/depend b/ext/-test-/gvl/call_without_gvl/depend
index a4987a65ca..6463d4527d 100644
--- a/ext/-test-/gvl/call_without_gvl/depend
+++ b/ext/-test-/gvl/call_without_gvl/depend
@@ -146,6 +146,7 @@ call_without_gvl.o: $(hdrdir)/ruby/internal/special_consts.h
call_without_gvl.o: $(hdrdir)/ruby/internal/static_assert.h
call_without_gvl.o: $(hdrdir)/ruby/internal/stdalign.h
call_without_gvl.o: $(hdrdir)/ruby/internal/stdbool.h
+call_without_gvl.o: $(hdrdir)/ruby/internal/stdckdint.h
call_without_gvl.o: $(hdrdir)/ruby/internal/symbol.h
call_without_gvl.o: $(hdrdir)/ruby/internal/value.h
call_without_gvl.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/hash/depend b/ext/-test-/hash/depend
index 58d9a6247e..4bc4bfcdd6 100644
--- a/ext/-test-/hash/depend
+++ b/ext/-test-/hash/depend
@@ -147,6 +147,7 @@ delete.o: $(hdrdir)/ruby/internal/special_consts.h
delete.o: $(hdrdir)/ruby/internal/static_assert.h
delete.o: $(hdrdir)/ruby/internal/stdalign.h
delete.o: $(hdrdir)/ruby/internal/stdbool.h
+delete.o: $(hdrdir)/ruby/internal/stdckdint.h
delete.o: $(hdrdir)/ruby/internal/symbol.h
delete.o: $(hdrdir)/ruby/internal/value.h
delete.o: $(hdrdir)/ruby/internal/value_type.h
@@ -306,6 +307,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/integer/depend b/ext/-test-/integer/depend
index b68a68ce73..d89965e3d9 100644
--- a/ext/-test-/integer/depend
+++ b/ext/-test-/integer/depend
@@ -147,6 +147,7 @@ core_ext.o: $(hdrdir)/ruby/internal/special_consts.h
core_ext.o: $(hdrdir)/ruby/internal/static_assert.h
core_ext.o: $(hdrdir)/ruby/internal/stdalign.h
core_ext.o: $(hdrdir)/ruby/internal/stdbool.h
+core_ext.o: $(hdrdir)/ruby/internal/stdckdint.h
core_ext.o: $(hdrdir)/ruby/internal/symbol.h
core_ext.o: $(hdrdir)/ruby/internal/value.h
core_ext.o: $(hdrdir)/ruby/internal/value_type.h
@@ -314,6 +315,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -473,6 +475,7 @@ my_integer.o: $(hdrdir)/ruby/internal/special_consts.h
my_integer.o: $(hdrdir)/ruby/internal/static_assert.h
my_integer.o: $(hdrdir)/ruby/internal/stdalign.h
my_integer.o: $(hdrdir)/ruby/internal/stdbool.h
+my_integer.o: $(hdrdir)/ruby/internal/stdckdint.h
my_integer.o: $(hdrdir)/ruby/internal/symbol.h
my_integer.o: $(hdrdir)/ruby/internal/value.h
my_integer.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/iseq_load/depend b/ext/-test-/iseq_load/depend
index 30deb6e039..fd07b3199c 100644
--- a/ext/-test-/iseq_load/depend
+++ b/ext/-test-/iseq_load/depend
@@ -147,6 +147,7 @@ iseq_load.o: $(hdrdir)/ruby/internal/special_consts.h
iseq_load.o: $(hdrdir)/ruby/internal/static_assert.h
iseq_load.o: $(hdrdir)/ruby/internal/stdalign.h
iseq_load.o: $(hdrdir)/ruby/internal/stdbool.h
+iseq_load.o: $(hdrdir)/ruby/internal/stdckdint.h
iseq_load.o: $(hdrdir)/ruby/internal/symbol.h
iseq_load.o: $(hdrdir)/ruby/internal/value.h
iseq_load.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/iter/depend b/ext/-test-/iter/depend
index 077a283532..cff4b1bb43 100644
--- a/ext/-test-/iter/depend
+++ b/ext/-test-/iter/depend
@@ -147,6 +147,7 @@ break.o: $(hdrdir)/ruby/internal/special_consts.h
break.o: $(hdrdir)/ruby/internal/static_assert.h
break.o: $(hdrdir)/ruby/internal/stdalign.h
break.o: $(hdrdir)/ruby/internal/stdbool.h
+break.o: $(hdrdir)/ruby/internal/stdckdint.h
break.o: $(hdrdir)/ruby/internal/symbol.h
break.o: $(hdrdir)/ruby/internal/value.h
break.o: $(hdrdir)/ruby/internal/value_type.h
@@ -306,6 +307,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -465,6 +467,7 @@ yield.o: $(hdrdir)/ruby/internal/special_consts.h
yield.o: $(hdrdir)/ruby/internal/static_assert.h
yield.o: $(hdrdir)/ruby/internal/stdalign.h
yield.o: $(hdrdir)/ruby/internal/stdbool.h
+yield.o: $(hdrdir)/ruby/internal/stdckdint.h
yield.o: $(hdrdir)/ruby/internal/symbol.h
yield.o: $(hdrdir)/ruby/internal/value.h
yield.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/load/dot.dot/depend b/ext/-test-/load/dot.dot/depend
index be835d3ea5..f9be79e957 100644
--- a/ext/-test-/load/dot.dot/depend
+++ b/ext/-test-/load/dot.dot/depend
@@ -147,6 +147,7 @@ dot.dot.o: $(hdrdir)/ruby/internal/special_consts.h
dot.dot.o: $(hdrdir)/ruby/internal/static_assert.h
dot.dot.o: $(hdrdir)/ruby/internal/stdalign.h
dot.dot.o: $(hdrdir)/ruby/internal/stdbool.h
+dot.dot.o: $(hdrdir)/ruby/internal/stdckdint.h
dot.dot.o: $(hdrdir)/ruby/internal/symbol.h
dot.dot.o: $(hdrdir)/ruby/internal/value.h
dot.dot.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/load/protect/depend b/ext/-test-/load/protect/depend
index 57cf029901..324c17237a 100644
--- a/ext/-test-/load/protect/depend
+++ b/ext/-test-/load/protect/depend
@@ -147,6 +147,7 @@ protect.o: $(hdrdir)/ruby/internal/special_consts.h
protect.o: $(hdrdir)/ruby/internal/static_assert.h
protect.o: $(hdrdir)/ruby/internal/stdalign.h
protect.o: $(hdrdir)/ruby/internal/stdbool.h
+protect.o: $(hdrdir)/ruby/internal/stdckdint.h
protect.o: $(hdrdir)/ruby/internal/symbol.h
protect.o: $(hdrdir)/ruby/internal/value.h
protect.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/load/resolve_symbol_resolver/extconf.rb b/ext/-test-/load/resolve_symbol_resolver/extconf.rb
new file mode 100644
index 0000000000..2299efcfd3
--- /dev/null
+++ b/ext/-test-/load/resolve_symbol_resolver/extconf.rb
@@ -0,0 +1 @@
+create_makefile('-test-/load/resolve_symbol_resolver')
diff --git a/ext/-test-/load/resolve_symbol_resolver/resolve_symbol_resolver.c b/ext/-test-/load/resolve_symbol_resolver/resolve_symbol_resolver.c
new file mode 100644
index 0000000000..a856319cfb
--- /dev/null
+++ b/ext/-test-/load/resolve_symbol_resolver/resolve_symbol_resolver.c
@@ -0,0 +1,55 @@
+#include <ruby.h>
+#include "ruby/internal/intern/load.h"
+
+typedef VALUE(*target_func)(VALUE);
+
+static target_func rst_any_method;
+
+VALUE
+rsr_any_method(VALUE klass)
+{
+ return rst_any_method((VALUE)NULL);
+}
+
+VALUE
+rsr_try_resolve_fname(VALUE klass)
+{
+ target_func rst_something_missing =
+ (target_func) rb_ext_resolve_symbol("-test-/load/resolve_symbol_missing", "rst_any_method");
+ if (rst_something_missing == NULL) {
+ // This should be done in Init_*, so the error is LoadError
+ rb_raise(rb_eLoadError, "symbol not found: missing fname");
+ }
+ return Qtrue;
+}
+
+VALUE
+rsr_try_resolve_sname(VALUE klass)
+{
+ target_func rst_something_missing =
+ (target_func)rb_ext_resolve_symbol("-test-/load/resolve_symbol_target", "rst_something_missing");
+ if (rst_something_missing == NULL) {
+ // This should be done in Init_*, so the error is LoadError
+ rb_raise(rb_eLoadError, "symbol not found: missing sname");
+ }
+ return Qtrue;
+}
+
+void
+Init_resolve_symbol_resolver(void)
+{
+ /*
+ * Resolving symbols at the head of Init_ because it raises LoadError (in cases).
+ * If the module and methods are defined before raising LoadError, retrying `require "this.so"` will
+ * cause re-defining those methods (and will be warned).
+ */
+ rst_any_method = (target_func)rb_ext_resolve_symbol("-test-/load/resolve_symbol_target", "rst_any_method");
+ if (rst_any_method == NULL) {
+ rb_raise(rb_eLoadError, "resolve_symbol_target is not loaded");
+ }
+
+ VALUE mod = rb_define_module("ResolveSymbolResolver");
+ rb_define_singleton_method(mod, "any_method", rsr_any_method, 0);
+ rb_define_singleton_method(mod, "try_resolve_fname", rsr_try_resolve_fname, 0);
+ rb_define_singleton_method(mod, "try_resolve_sname", rsr_try_resolve_sname, 0);
+}
diff --git a/ext/-test-/load/resolve_symbol_target/extconf.rb b/ext/-test-/load/resolve_symbol_target/extconf.rb
new file mode 100644
index 0000000000..b5a99ca7f1
--- /dev/null
+++ b/ext/-test-/load/resolve_symbol_target/extconf.rb
@@ -0,0 +1 @@
+create_makefile('-test-/load/resolve_symbol_target')
diff --git a/ext/-test-/load/resolve_symbol_target/resolve_symbol_target.c b/ext/-test-/load/resolve_symbol_target/resolve_symbol_target.c
new file mode 100644
index 0000000000..b5bc9e8ee0
--- /dev/null
+++ b/ext/-test-/load/resolve_symbol_target/resolve_symbol_target.c
@@ -0,0 +1,15 @@
+#include <ruby.h>
+#include "resolve_symbol_target.h"
+
+VALUE
+rst_any_method(VALUE klass)
+{
+ return rb_str_new_cstr("from target");
+}
+
+void
+Init_resolve_symbol_target(void)
+{
+ VALUE mod = rb_define_module("ResolveSymbolTarget");
+ rb_define_singleton_method(mod, "any_method", rst_any_method, 0);
+}
diff --git a/ext/-test-/load/resolve_symbol_target/resolve_symbol_target.def b/ext/-test-/load/resolve_symbol_target/resolve_symbol_target.def
new file mode 100644
index 0000000000..c2ed3610fe
--- /dev/null
+++ b/ext/-test-/load/resolve_symbol_target/resolve_symbol_target.def
@@ -0,0 +1,4 @@
+LIBRARY resolve_symbol_target
+EXPORTS
+ Init_resolve_symbol_target
+ rst_any_method
diff --git a/ext/-test-/load/resolve_symbol_target/resolve_symbol_target.h b/ext/-test-/load/resolve_symbol_target/resolve_symbol_target.h
new file mode 100644
index 0000000000..847dcb7dd3
--- /dev/null
+++ b/ext/-test-/load/resolve_symbol_target/resolve_symbol_target.h
@@ -0,0 +1,4 @@
+#include <ruby.h>
+#include "ruby/internal/dllexport.h"
+
+RUBY_FUNC_EXPORTED VALUE rst_any_method(VALUE);
diff --git a/ext/-test-/load/stringify_symbols/extconf.rb b/ext/-test-/load/stringify_symbols/extconf.rb
new file mode 100644
index 0000000000..ac39c15f09
--- /dev/null
+++ b/ext/-test-/load/stringify_symbols/extconf.rb
@@ -0,0 +1 @@
+create_makefile('-test-/load/stringify_symbols')
diff --git a/ext/-test-/load/stringify_symbols/stringify_symbols.c b/ext/-test-/load/stringify_symbols/stringify_symbols.c
new file mode 100644
index 0000000000..11a5ee3bc5
--- /dev/null
+++ b/ext/-test-/load/stringify_symbols/stringify_symbols.c
@@ -0,0 +1,29 @@
+#include <ruby.h>
+#include "ruby/internal/intern/load.h"
+#include "ruby/util.h"
+
+#if SIZEOF_INTPTR_T == SIZEOF_LONG_LONG
+# define UINTPTR2NUM ULL2NUM
+#elif SIZEOF_INTPTR_T == SIZEOF_LONG
+# define UINTPTR2NUM ULONG2NUM
+#else
+# define UINTPTR2NUM UINT2NUM
+#endif
+
+static VALUE
+stringify_symbol(VALUE klass, VALUE fname, VALUE sname)
+{
+ void *ptr = rb_ext_resolve_symbol(StringValueCStr(fname), StringValueCStr(sname));
+ if (ptr == NULL) {
+ return Qnil;
+ }
+ uintptr_t uintptr = (uintptr_t)ptr;
+ return UINTPTR2NUM(uintptr);
+}
+
+void
+Init_stringify_symbols(void)
+{
+ VALUE mod = rb_define_module("StringifySymbols");
+ rb_define_singleton_method(mod, "stringify_symbol", stringify_symbol, 2);
+}
diff --git a/ext/-test-/load/stringify_target/extconf.rb b/ext/-test-/load/stringify_target/extconf.rb
new file mode 100644
index 0000000000..4aa201cb09
--- /dev/null
+++ b/ext/-test-/load/stringify_target/extconf.rb
@@ -0,0 +1 @@
+create_makefile('-test-/load/stringify_target')
diff --git a/ext/-test-/load/stringify_target/stringify_target.c b/ext/-test-/load/stringify_target/stringify_target.c
new file mode 100644
index 0000000000..ce09b8fd77
--- /dev/null
+++ b/ext/-test-/load/stringify_target/stringify_target.c
@@ -0,0 +1,15 @@
+#include <ruby.h>
+#include "stringify_target.h"
+
+VALUE
+stt_any_method(VALUE klass)
+{
+ return rb_str_new_cstr("from target");
+}
+
+void
+Init_stringify_target(void)
+{
+ VALUE mod = rb_define_module("StringifyTarget");
+ rb_define_singleton_method(mod, "any_method", stt_any_method, 0);
+}
diff --git a/ext/-test-/load/stringify_target/stringify_target.def b/ext/-test-/load/stringify_target/stringify_target.def
new file mode 100644
index 0000000000..89c2b762de
--- /dev/null
+++ b/ext/-test-/load/stringify_target/stringify_target.def
@@ -0,0 +1,4 @@
+LIBRARY stringify_target
+EXPORTS
+ Init_stringify_target
+ stt_any_method
diff --git a/ext/-test-/load/stringify_target/stringify_target.h b/ext/-test-/load/stringify_target/stringify_target.h
new file mode 100644
index 0000000000..d95fb65d7c
--- /dev/null
+++ b/ext/-test-/load/stringify_target/stringify_target.h
@@ -0,0 +1,4 @@
+#include <ruby.h>
+#include "ruby/internal/dllexport.h"
+
+RUBY_FUNC_EXPORTED VALUE stt_any_method(VALUE);
diff --git a/ext/-test-/marshal/compat/depend b/ext/-test-/marshal/compat/depend
index ff675ccabb..8bcd9f8b5e 100644
--- a/ext/-test-/marshal/compat/depend
+++ b/ext/-test-/marshal/compat/depend
@@ -147,6 +147,7 @@ usrcompat.o: $(hdrdir)/ruby/internal/special_consts.h
usrcompat.o: $(hdrdir)/ruby/internal/static_assert.h
usrcompat.o: $(hdrdir)/ruby/internal/stdalign.h
usrcompat.o: $(hdrdir)/ruby/internal/stdbool.h
+usrcompat.o: $(hdrdir)/ruby/internal/stdckdint.h
usrcompat.o: $(hdrdir)/ruby/internal/symbol.h
usrcompat.o: $(hdrdir)/ruby/internal/value.h
usrcompat.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/marshal/internal_ivar/depend b/ext/-test-/marshal/internal_ivar/depend
index 4fe36834d8..f8be031efc 100644
--- a/ext/-test-/marshal/internal_ivar/depend
+++ b/ext/-test-/marshal/internal_ivar/depend
@@ -147,6 +147,7 @@ internal_ivar.o: $(hdrdir)/ruby/internal/special_consts.h
internal_ivar.o: $(hdrdir)/ruby/internal/static_assert.h
internal_ivar.o: $(hdrdir)/ruby/internal/stdalign.h
internal_ivar.o: $(hdrdir)/ruby/internal/stdbool.h
+internal_ivar.o: $(hdrdir)/ruby/internal/stdckdint.h
internal_ivar.o: $(hdrdir)/ruby/internal/symbol.h
internal_ivar.o: $(hdrdir)/ruby/internal/value.h
internal_ivar.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/marshal/usr/depend b/ext/-test-/marshal/usr/depend
index 1d56cc8202..09e8207d3a 100644
--- a/ext/-test-/marshal/usr/depend
+++ b/ext/-test-/marshal/usr/depend
@@ -147,6 +147,7 @@ usrmarshal.o: $(hdrdir)/ruby/internal/special_consts.h
usrmarshal.o: $(hdrdir)/ruby/internal/static_assert.h
usrmarshal.o: $(hdrdir)/ruby/internal/stdalign.h
usrmarshal.o: $(hdrdir)/ruby/internal/stdbool.h
+usrmarshal.o: $(hdrdir)/ruby/internal/stdckdint.h
usrmarshal.o: $(hdrdir)/ruby/internal/symbol.h
usrmarshal.o: $(hdrdir)/ruby/internal/value.h
usrmarshal.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/memory_view/depend b/ext/-test-/memory_view/depend
index c9ef06a15c..0c92fc1236 100644
--- a/ext/-test-/memory_view/depend
+++ b/ext/-test-/memory_view/depend
@@ -147,6 +147,7 @@ memory_view.o: $(hdrdir)/ruby/internal/special_consts.h
memory_view.o: $(hdrdir)/ruby/internal/static_assert.h
memory_view.o: $(hdrdir)/ruby/internal/stdalign.h
memory_view.o: $(hdrdir)/ruby/internal/stdbool.h
+memory_view.o: $(hdrdir)/ruby/internal/stdckdint.h
memory_view.o: $(hdrdir)/ruby/internal/symbol.h
memory_view.o: $(hdrdir)/ruby/internal/value.h
memory_view.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/memory_view/memory_view.c b/ext/-test-/memory_view/memory_view.c
index c1df0353cf..63f0beb81e 100644
--- a/ext/-test-/memory_view/memory_view.c
+++ b/ext/-test-/memory_view/memory_view.c
@@ -313,8 +313,8 @@ mdview_get_memory_view(VALUE obj, rb_memory_view_t *view, int flags)
static bool
mdview_release_memory_view(VALUE obj, rb_memory_view_t *view)
{
- if (view->shape) xfree((void *)view->shape);
- if (view->strides) xfree((void *)view->strides);
+ xfree((void *)view->shape);
+ xfree((void *)view->strides);
return true;
}
diff --git a/ext/-test-/method/depend b/ext/-test-/method/depend
index dbf513f48f..dce2a815a4 100644
--- a/ext/-test-/method/depend
+++ b/ext/-test-/method/depend
@@ -147,6 +147,7 @@ arity.o: $(hdrdir)/ruby/internal/special_consts.h
arity.o: $(hdrdir)/ruby/internal/static_assert.h
arity.o: $(hdrdir)/ruby/internal/stdalign.h
arity.o: $(hdrdir)/ruby/internal/stdbool.h
+arity.o: $(hdrdir)/ruby/internal/stdckdint.h
arity.o: $(hdrdir)/ruby/internal/symbol.h
arity.o: $(hdrdir)/ruby/internal/value.h
arity.o: $(hdrdir)/ruby/internal/value_type.h
@@ -306,6 +307,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/notimplement/depend b/ext/-test-/notimplement/depend
index 9105093b0d..84517a9c15 100644
--- a/ext/-test-/notimplement/depend
+++ b/ext/-test-/notimplement/depend
@@ -147,6 +147,7 @@ bug.o: $(hdrdir)/ruby/internal/special_consts.h
bug.o: $(hdrdir)/ruby/internal/static_assert.h
bug.o: $(hdrdir)/ruby/internal/stdalign.h
bug.o: $(hdrdir)/ruby/internal/stdbool.h
+bug.o: $(hdrdir)/ruby/internal/stdckdint.h
bug.o: $(hdrdir)/ruby/internal/symbol.h
bug.o: $(hdrdir)/ruby/internal/value.h
bug.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/num2int/depend b/ext/-test-/num2int/depend
index 4e05d1e8c1..5550033be7 100644
--- a/ext/-test-/num2int/depend
+++ b/ext/-test-/num2int/depend
@@ -147,6 +147,7 @@ num2int.o: $(hdrdir)/ruby/internal/special_consts.h
num2int.o: $(hdrdir)/ruby/internal/static_assert.h
num2int.o: $(hdrdir)/ruby/internal/stdalign.h
num2int.o: $(hdrdir)/ruby/internal/stdbool.h
+num2int.o: $(hdrdir)/ruby/internal/stdckdint.h
num2int.o: $(hdrdir)/ruby/internal/symbol.h
num2int.o: $(hdrdir)/ruby/internal/value.h
num2int.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/path_to_class/depend b/ext/-test-/path_to_class/depend
index 8fe6ee37c2..a1657c9574 100644
--- a/ext/-test-/path_to_class/depend
+++ b/ext/-test-/path_to_class/depend
@@ -147,6 +147,7 @@ path_to_class.o: $(hdrdir)/ruby/internal/special_consts.h
path_to_class.o: $(hdrdir)/ruby/internal/static_assert.h
path_to_class.o: $(hdrdir)/ruby/internal/stdalign.h
path_to_class.o: $(hdrdir)/ruby/internal/stdbool.h
+path_to_class.o: $(hdrdir)/ruby/internal/stdckdint.h
path_to_class.o: $(hdrdir)/ruby/internal/symbol.h
path_to_class.o: $(hdrdir)/ruby/internal/value.h
path_to_class.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/popen_deadlock/depend b/ext/-test-/popen_deadlock/depend
index fb58ca30e9..1904e64e59 100644
--- a/ext/-test-/popen_deadlock/depend
+++ b/ext/-test-/popen_deadlock/depend
@@ -147,6 +147,7 @@ infinite_loop_dlsym.o: $(hdrdir)/ruby/internal/special_consts.h
infinite_loop_dlsym.o: $(hdrdir)/ruby/internal/static_assert.h
infinite_loop_dlsym.o: $(hdrdir)/ruby/internal/stdalign.h
infinite_loop_dlsym.o: $(hdrdir)/ruby/internal/stdbool.h
+infinite_loop_dlsym.o: $(hdrdir)/ruby/internal/stdckdint.h
infinite_loop_dlsym.o: $(hdrdir)/ruby/internal/symbol.h
infinite_loop_dlsym.o: $(hdrdir)/ruby/internal/value.h
infinite_loop_dlsym.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/postponed_job/depend b/ext/-test-/postponed_job/depend
index e44d9d51b7..72250896b0 100644
--- a/ext/-test-/postponed_job/depend
+++ b/ext/-test-/postponed_job/depend
@@ -148,6 +148,7 @@ postponed_job.o: $(hdrdir)/ruby/internal/special_consts.h
postponed_job.o: $(hdrdir)/ruby/internal/static_assert.h
postponed_job.o: $(hdrdir)/ruby/internal/stdalign.h
postponed_job.o: $(hdrdir)/ruby/internal/stdbool.h
+postponed_job.o: $(hdrdir)/ruby/internal/stdckdint.h
postponed_job.o: $(hdrdir)/ruby/internal/symbol.h
postponed_job.o: $(hdrdir)/ruby/internal/value.h
postponed_job.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/postponed_job/postponed_job.c b/ext/-test-/postponed_job/postponed_job.c
index fa57bef6f5..9ac866ae77 100644
--- a/ext/-test-/postponed_job/postponed_job.c
+++ b/ext/-test-/postponed_job/postponed_job.c
@@ -1,6 +1,29 @@
#include "ruby.h"
#include "ruby/debug.h"
+// We're testing deprecated things, don't print the compiler warnings
+#if 0
+
+#elif defined(_MSC_VER)
+#pragma warning(disable : 4996)
+
+#elif defined(__INTEL_COMPILER)
+#pragma warning(disable : 1786)
+
+#elif defined(__clang__)
+#pragma clang diagnostic ignored "-Wdeprecated-declarations"
+
+#elif defined(__GNUC__)
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
+#elif defined(__SUNPRO_CC)
+#pragma error_messages (off,symdeprecated)
+
+#else
+// :FIXME: improve here for your compiler.
+
+#endif
+
static int counter;
static void
@@ -58,6 +81,22 @@ pjob_call_direct(VALUE self, VALUE obj)
return self;
}
+static void pjob_noop_callback(void *data) { }
+
+static VALUE
+pjob_register_one_same(VALUE self)
+{
+ rb_gc_start();
+ int r1 = rb_postponed_job_register_one(0, pjob_noop_callback, NULL);
+ int r2 = rb_postponed_job_register_one(0, pjob_noop_callback, NULL);
+ int r3 = rb_postponed_job_register_one(0, pjob_noop_callback, NULL);
+ VALUE ary = rb_ary_new();
+ rb_ary_push(ary, INT2FIX(r1));
+ rb_ary_push(ary, INT2FIX(r2));
+ rb_ary_push(ary, INT2FIX(r3));
+ return ary;
+}
+
#ifdef HAVE_PTHREAD_H
#include <pthread.h>
@@ -86,6 +125,93 @@ pjob_register_in_c_thread(VALUE self, VALUE obj)
}
#endif
+static void
+pjob_preregistered_callback(void *data)
+{
+ VALUE ary = (VALUE)data;
+ Check_Type(ary, T_ARRAY);
+ rb_ary_push(ary, INT2FIX(counter));
+}
+
+static VALUE
+pjob_preregister_and_call_with_sleep(VALUE self, VALUE obj)
+{
+ counter = 0;
+ rb_postponed_job_handle_t h = rb_postponed_job_preregister(0, pjob_preregistered_callback, (void *)obj);
+ counter++;
+ rb_postponed_job_trigger(h);
+ rb_thread_sleep(0);
+ counter++;
+ rb_postponed_job_trigger(h);
+ rb_thread_sleep(0);
+ counter++;
+ rb_postponed_job_trigger(h);
+ rb_thread_sleep(0);
+ return self;
+}
+
+static VALUE
+pjob_preregister_and_call_without_sleep(VALUE self, VALUE obj)
+{
+ counter = 0;
+ rb_postponed_job_handle_t h = rb_postponed_job_preregister(0, pjob_preregistered_callback, (void *)obj);
+ counter = 3;
+ rb_postponed_job_trigger(h);
+ rb_postponed_job_trigger(h);
+ rb_postponed_job_trigger(h);
+ return self;
+}
+
+static VALUE
+pjob_preregister_multiple_times(VALUE self)
+{
+ int r1 = rb_postponed_job_preregister(0, pjob_noop_callback, NULL);
+ int r2 = rb_postponed_job_preregister(0, pjob_noop_callback, NULL);
+ int r3 = rb_postponed_job_preregister(0, pjob_noop_callback, NULL);
+ VALUE ary = rb_ary_new();
+ rb_ary_push(ary, INT2FIX(r1));
+ rb_ary_push(ary, INT2FIX(r2));
+ rb_ary_push(ary, INT2FIX(r3));
+ return ary;
+
+}
+
+struct pjob_append_data_args {
+ VALUE ary;
+ VALUE data;
+};
+
+static void
+pjob_append_data_callback(void *vctx) {
+ struct pjob_append_data_args *ctx = (struct pjob_append_data_args *)vctx;
+ Check_Type(ctx->ary, T_ARRAY);
+ rb_ary_push(ctx->ary, ctx->data);
+}
+
+static VALUE
+pjob_preregister_calls_with_last_argument(VALUE self)
+{
+ VALUE ary = rb_ary_new();
+
+ struct pjob_append_data_args arg1 = { .ary = ary, .data = INT2FIX(1) };
+ struct pjob_append_data_args arg2 = { .ary = ary, .data = INT2FIX(2) };
+ struct pjob_append_data_args arg3 = { .ary = ary, .data = INT2FIX(3) };
+ struct pjob_append_data_args arg4 = { .ary = ary, .data = INT2FIX(4) };
+
+ rb_postponed_job_handle_t h;
+ h = rb_postponed_job_preregister(0, pjob_append_data_callback, &arg1);
+ rb_postponed_job_preregister(0, pjob_append_data_callback, &arg2);
+ rb_postponed_job_trigger(h);
+ rb_postponed_job_preregister(0, pjob_append_data_callback, &arg3);
+ rb_thread_sleep(0); // should execute with arg3
+
+ rb_postponed_job_preregister(0, pjob_append_data_callback, &arg4);
+ rb_postponed_job_trigger(h);
+ rb_thread_sleep(0); // should execute with arg4
+
+ return ary;
+}
+
void
Init_postponed_job(VALUE self)
{
@@ -93,8 +219,13 @@ Init_postponed_job(VALUE self)
rb_define_module_function(mBug, "postponed_job_register", pjob_register, 1);
rb_define_module_function(mBug, "postponed_job_register_one", pjob_register_one, 1);
rb_define_module_function(mBug, "postponed_job_call_direct", pjob_call_direct, 1);
+ rb_define_module_function(mBug, "postponed_job_register_one_same", pjob_register_one_same, 0);
#ifdef HAVE_PTHREAD_H
rb_define_module_function(mBug, "postponed_job_register_in_c_thread", pjob_register_in_c_thread, 1);
#endif
+ rb_define_module_function(mBug, "postponed_job_preregister_and_call_with_sleep", pjob_preregister_and_call_with_sleep, 1);
+ rb_define_module_function(mBug, "postponed_job_preregister_and_call_without_sleep", pjob_preregister_and_call_without_sleep, 1);
+ rb_define_module_function(mBug, "postponed_job_preregister_multiple_times", pjob_preregister_multiple_times, 0);
+ rb_define_module_function(mBug, "postponed_job_preregister_calls_with_last_argument", pjob_preregister_calls_with_last_argument, 0);
}
diff --git a/ext/-test-/printf/depend b/ext/-test-/printf/depend
index b397041103..0530df78bf 100644
--- a/ext/-test-/printf/depend
+++ b/ext/-test-/printf/depend
@@ -157,6 +157,7 @@ printf.o: $(hdrdir)/ruby/internal/special_consts.h
printf.o: $(hdrdir)/ruby/internal/static_assert.h
printf.o: $(hdrdir)/ruby/internal/stdalign.h
printf.o: $(hdrdir)/ruby/internal/stdbool.h
+printf.o: $(hdrdir)/ruby/internal/stdckdint.h
printf.o: $(hdrdir)/ruby/internal/symbol.h
printf.o: $(hdrdir)/ruby/internal/value.h
printf.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/proc/depend b/ext/-test-/proc/depend
index 7e78aa6f83..45e12bcd09 100644
--- a/ext/-test-/proc/depend
+++ b/ext/-test-/proc/depend
@@ -147,6 +147,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -306,6 +307,7 @@ receiver.o: $(hdrdir)/ruby/internal/special_consts.h
receiver.o: $(hdrdir)/ruby/internal/static_assert.h
receiver.o: $(hdrdir)/ruby/internal/stdalign.h
receiver.o: $(hdrdir)/ruby/internal/stdbool.h
+receiver.o: $(hdrdir)/ruby/internal/stdckdint.h
receiver.o: $(hdrdir)/ruby/internal/symbol.h
receiver.o: $(hdrdir)/ruby/internal/value.h
receiver.o: $(hdrdir)/ruby/internal/value_type.h
@@ -465,6 +467,7 @@ super.o: $(hdrdir)/ruby/internal/special_consts.h
super.o: $(hdrdir)/ruby/internal/static_assert.h
super.o: $(hdrdir)/ruby/internal/stdalign.h
super.o: $(hdrdir)/ruby/internal/stdbool.h
+super.o: $(hdrdir)/ruby/internal/stdckdint.h
super.o: $(hdrdir)/ruby/internal/symbol.h
super.o: $(hdrdir)/ruby/internal/value.h
super.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/random/depend b/ext/-test-/random/depend
index 3f9a52be44..71f5f6e1e6 100644
--- a/ext/-test-/random/depend
+++ b/ext/-test-/random/depend
@@ -146,6 +146,7 @@ bad_version.o: $(hdrdir)/ruby/internal/special_consts.h
bad_version.o: $(hdrdir)/ruby/internal/static_assert.h
bad_version.o: $(hdrdir)/ruby/internal/stdalign.h
bad_version.o: $(hdrdir)/ruby/internal/stdbool.h
+bad_version.o: $(hdrdir)/ruby/internal/stdckdint.h
bad_version.o: $(hdrdir)/ruby/internal/symbol.h
bad_version.o: $(hdrdir)/ruby/internal/value.h
bad_version.o: $(hdrdir)/ruby/internal/value_type.h
@@ -306,6 +307,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -464,6 +466,7 @@ loop.o: $(hdrdir)/ruby/internal/special_consts.h
loop.o: $(hdrdir)/ruby/internal/static_assert.h
loop.o: $(hdrdir)/ruby/internal/stdalign.h
loop.o: $(hdrdir)/ruby/internal/stdbool.h
+loop.o: $(hdrdir)/ruby/internal/stdckdint.h
loop.o: $(hdrdir)/ruby/internal/symbol.h
loop.o: $(hdrdir)/ruby/internal/value.h
loop.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/rational/depend b/ext/-test-/rational/depend
index cff2eae38d..363d779302 100644
--- a/ext/-test-/rational/depend
+++ b/ext/-test-/rational/depend
@@ -151,6 +151,7 @@ rat.o: $(hdrdir)/ruby/internal/special_consts.h
rat.o: $(hdrdir)/ruby/internal/static_assert.h
rat.o: $(hdrdir)/ruby/internal/stdalign.h
rat.o: $(hdrdir)/ruby/internal/stdbool.h
+rat.o: $(hdrdir)/ruby/internal/stdckdint.h
rat.o: $(hdrdir)/ruby/internal/symbol.h
rat.o: $(hdrdir)/ruby/internal/value.h
rat.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/rb_call_super_kw/depend b/ext/-test-/rb_call_super_kw/depend
index a42ddc85ac..04a0fac12c 100644
--- a/ext/-test-/rb_call_super_kw/depend
+++ b/ext/-test-/rb_call_super_kw/depend
@@ -147,6 +147,7 @@ rb_call_super_kw.o: $(hdrdir)/ruby/internal/special_consts.h
rb_call_super_kw.o: $(hdrdir)/ruby/internal/static_assert.h
rb_call_super_kw.o: $(hdrdir)/ruby/internal/stdalign.h
rb_call_super_kw.o: $(hdrdir)/ruby/internal/stdbool.h
+rb_call_super_kw.o: $(hdrdir)/ruby/internal/stdckdint.h
rb_call_super_kw.o: $(hdrdir)/ruby/internal/symbol.h
rb_call_super_kw.o: $(hdrdir)/ruby/internal/value.h
rb_call_super_kw.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/recursion/depend b/ext/-test-/recursion/depend
index 49377250ef..2a65c98b09 100644
--- a/ext/-test-/recursion/depend
+++ b/ext/-test-/recursion/depend
@@ -147,6 +147,7 @@ recursion.o: $(hdrdir)/ruby/internal/special_consts.h
recursion.o: $(hdrdir)/ruby/internal/static_assert.h
recursion.o: $(hdrdir)/ruby/internal/stdalign.h
recursion.o: $(hdrdir)/ruby/internal/stdbool.h
+recursion.o: $(hdrdir)/ruby/internal/stdckdint.h
recursion.o: $(hdrdir)/ruby/internal/symbol.h
recursion.o: $(hdrdir)/ruby/internal/value.h
recursion.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/regexp/depend b/ext/-test-/regexp/depend
index 484f0320dd..0127a66a2e 100644
--- a/ext/-test-/regexp/depend
+++ b/ext/-test-/regexp/depend
@@ -147,6 +147,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -306,6 +307,7 @@ parse_depth_limit.o: $(hdrdir)/ruby/internal/special_consts.h
parse_depth_limit.o: $(hdrdir)/ruby/internal/static_assert.h
parse_depth_limit.o: $(hdrdir)/ruby/internal/stdalign.h
parse_depth_limit.o: $(hdrdir)/ruby/internal/stdbool.h
+parse_depth_limit.o: $(hdrdir)/ruby/internal/stdckdint.h
parse_depth_limit.o: $(hdrdir)/ruby/internal/symbol.h
parse_depth_limit.o: $(hdrdir)/ruby/internal/value.h
parse_depth_limit.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/scan_args/depend b/ext/-test-/scan_args/depend
index 3bedc6a7cf..922e5bbd5c 100644
--- a/ext/-test-/scan_args/depend
+++ b/ext/-test-/scan_args/depend
@@ -147,6 +147,7 @@ scan_args.o: $(hdrdir)/ruby/internal/special_consts.h
scan_args.o: $(hdrdir)/ruby/internal/static_assert.h
scan_args.o: $(hdrdir)/ruby/internal/stdalign.h
scan_args.o: $(hdrdir)/ruby/internal/stdbool.h
+scan_args.o: $(hdrdir)/ruby/internal/stdckdint.h
scan_args.o: $(hdrdir)/ruby/internal/symbol.h
scan_args.o: $(hdrdir)/ruby/internal/value.h
scan_args.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/st/foreach/depend b/ext/-test-/st/foreach/depend
index fdfe356805..36273f8df8 100644
--- a/ext/-test-/st/foreach/depend
+++ b/ext/-test-/st/foreach/depend
@@ -147,6 +147,7 @@ foreach.o: $(hdrdir)/ruby/internal/special_consts.h
foreach.o: $(hdrdir)/ruby/internal/static_assert.h
foreach.o: $(hdrdir)/ruby/internal/stdalign.h
foreach.o: $(hdrdir)/ruby/internal/stdbool.h
+foreach.o: $(hdrdir)/ruby/internal/stdckdint.h
foreach.o: $(hdrdir)/ruby/internal/symbol.h
foreach.o: $(hdrdir)/ruby/internal/value.h
foreach.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/st/numhash/depend b/ext/-test-/st/numhash/depend
index ef28c892f3..a0916183b6 100644
--- a/ext/-test-/st/numhash/depend
+++ b/ext/-test-/st/numhash/depend
@@ -147,6 +147,7 @@ numhash.o: $(hdrdir)/ruby/internal/special_consts.h
numhash.o: $(hdrdir)/ruby/internal/static_assert.h
numhash.o: $(hdrdir)/ruby/internal/stdalign.h
numhash.o: $(hdrdir)/ruby/internal/stdbool.h
+numhash.o: $(hdrdir)/ruby/internal/stdckdint.h
numhash.o: $(hdrdir)/ruby/internal/symbol.h
numhash.o: $(hdrdir)/ruby/internal/value.h
numhash.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/st/update/depend b/ext/-test-/st/update/depend
index 2d5ff224a2..96ba194df0 100644
--- a/ext/-test-/st/update/depend
+++ b/ext/-test-/st/update/depend
@@ -147,6 +147,7 @@ update.o: $(hdrdir)/ruby/internal/special_consts.h
update.o: $(hdrdir)/ruby/internal/static_assert.h
update.o: $(hdrdir)/ruby/internal/stdalign.h
update.o: $(hdrdir)/ruby/internal/stdbool.h
+update.o: $(hdrdir)/ruby/internal/stdckdint.h
update.o: $(hdrdir)/ruby/internal/symbol.h
update.o: $(hdrdir)/ruby/internal/value.h
update.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/string/chilled.c b/ext/-test-/string/chilled.c
new file mode 100644
index 0000000000..c98fc72c47
--- /dev/null
+++ b/ext/-test-/string/chilled.c
@@ -0,0 +1,13 @@
+#include "ruby.h"
+
+static VALUE
+bug_s_rb_str_chilled_p(VALUE self, VALUE str)
+{
+ return rb_str_chilled_p(str) ? Qtrue : Qfalse;
+}
+
+void
+Init_string_chilled(VALUE klass)
+{
+ rb_define_singleton_method(klass, "rb_str_chilled_p", bug_s_rb_str_chilled_p, 1);
+}
diff --git a/ext/-test-/string/cstr.c b/ext/-test-/string/cstr.c
index ecca793145..b0b1ef5374 100644
--- a/ext/-test-/string/cstr.c
+++ b/ext/-test-/string/cstr.c
@@ -61,13 +61,12 @@ bug_str_unterminated_substring(VALUE str, VALUE vbeg, VALUE vlen)
if (RSTRING_LEN(str) < beg) rb_raise(rb_eIndexError, "beg: %ld", beg);
if (RSTRING_LEN(str) < beg + len) rb_raise(rb_eIndexError, "end: %ld", beg + len);
str = rb_str_new_shared(str);
+ RSTRING(str)->len = len;
if (STR_EMBED_P(str)) {
- RSTRING(str)->as.embed.len = (short)len;
memmove(RSTRING(str)->as.embed.ary, RSTRING(str)->as.embed.ary + beg, len);
}
else {
RSTRING(str)->as.heap.ptr += beg;
- RSTRING(str)->as.heap.len = len;
}
return str;
}
@@ -114,7 +113,7 @@ bug_str_s_cstr_noembed(VALUE self, VALUE str)
RBASIC(str2)->flags &= ~(STR_SHARED | FL_USER5 | FL_USER6);
RSTRING(str2)->as.heap.aux.capa = capacity;
RSTRING(str2)->as.heap.ptr = buf;
- RSTRING(str2)->as.heap.len = RSTRING_LEN(str);
+ RSTRING(str2)->len = RSTRING_LEN(str);
TERM_FILL(RSTRING_END(str2), TERM_LEN(str));
return str2;
}
diff --git a/ext/-test-/string/depend b/ext/-test-/string/depend
index 26720282b2..044b6109ff 100644
--- a/ext/-test-/string/depend
+++ b/ext/-test-/string/depend
@@ -158,6 +158,7 @@ capacity.o: $(hdrdir)/ruby/internal/special_consts.h
capacity.o: $(hdrdir)/ruby/internal/static_assert.h
capacity.o: $(hdrdir)/ruby/internal/stdalign.h
capacity.o: $(hdrdir)/ruby/internal/stdbool.h
+capacity.o: $(hdrdir)/ruby/internal/stdckdint.h
capacity.o: $(hdrdir)/ruby/internal/symbol.h
capacity.o: $(hdrdir)/ruby/internal/value.h
capacity.o: $(hdrdir)/ruby/internal/value_type.h
@@ -173,6 +174,166 @@ capacity.o: $(hdrdir)/ruby/subst.h
capacity.o: $(top_srcdir)/internal/compilers.h
capacity.o: $(top_srcdir)/internal/string.h
capacity.o: capacity.c
+chilled.o: $(RUBY_EXTCONF_H)
+chilled.o: $(arch_hdrdir)/ruby/config.h
+chilled.o: $(hdrdir)/ruby.h
+chilled.o: $(hdrdir)/ruby/assert.h
+chilled.o: $(hdrdir)/ruby/backward.h
+chilled.o: $(hdrdir)/ruby/backward/2/assume.h
+chilled.o: $(hdrdir)/ruby/backward/2/attributes.h
+chilled.o: $(hdrdir)/ruby/backward/2/bool.h
+chilled.o: $(hdrdir)/ruby/backward/2/inttypes.h
+chilled.o: $(hdrdir)/ruby/backward/2/limits.h
+chilled.o: $(hdrdir)/ruby/backward/2/long_long.h
+chilled.o: $(hdrdir)/ruby/backward/2/stdalign.h
+chilled.o: $(hdrdir)/ruby/backward/2/stdarg.h
+chilled.o: $(hdrdir)/ruby/defines.h
+chilled.o: $(hdrdir)/ruby/intern.h
+chilled.o: $(hdrdir)/ruby/internal/abi.h
+chilled.o: $(hdrdir)/ruby/internal/anyargs.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/char.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/double.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/int.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/long.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/short.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h
+chilled.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h
+chilled.o: $(hdrdir)/ruby/internal/assume.h
+chilled.o: $(hdrdir)/ruby/internal/attr/alloc_size.h
+chilled.o: $(hdrdir)/ruby/internal/attr/artificial.h
+chilled.o: $(hdrdir)/ruby/internal/attr/cold.h
+chilled.o: $(hdrdir)/ruby/internal/attr/const.h
+chilled.o: $(hdrdir)/ruby/internal/attr/constexpr.h
+chilled.o: $(hdrdir)/ruby/internal/attr/deprecated.h
+chilled.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h
+chilled.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h
+chilled.o: $(hdrdir)/ruby/internal/attr/error.h
+chilled.o: $(hdrdir)/ruby/internal/attr/flag_enum.h
+chilled.o: $(hdrdir)/ruby/internal/attr/forceinline.h
+chilled.o: $(hdrdir)/ruby/internal/attr/format.h
+chilled.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h
+chilled.o: $(hdrdir)/ruby/internal/attr/noalias.h
+chilled.o: $(hdrdir)/ruby/internal/attr/nodiscard.h
+chilled.o: $(hdrdir)/ruby/internal/attr/noexcept.h
+chilled.o: $(hdrdir)/ruby/internal/attr/noinline.h
+chilled.o: $(hdrdir)/ruby/internal/attr/nonnull.h
+chilled.o: $(hdrdir)/ruby/internal/attr/noreturn.h
+chilled.o: $(hdrdir)/ruby/internal/attr/packed_struct.h
+chilled.o: $(hdrdir)/ruby/internal/attr/pure.h
+chilled.o: $(hdrdir)/ruby/internal/attr/restrict.h
+chilled.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h
+chilled.o: $(hdrdir)/ruby/internal/attr/warning.h
+chilled.o: $(hdrdir)/ruby/internal/attr/weakref.h
+chilled.o: $(hdrdir)/ruby/internal/cast.h
+chilled.o: $(hdrdir)/ruby/internal/compiler_is.h
+chilled.o: $(hdrdir)/ruby/internal/compiler_is/apple.h
+chilled.o: $(hdrdir)/ruby/internal/compiler_is/clang.h
+chilled.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h
+chilled.o: $(hdrdir)/ruby/internal/compiler_is/intel.h
+chilled.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h
+chilled.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h
+chilled.o: $(hdrdir)/ruby/internal/compiler_since.h
+chilled.o: $(hdrdir)/ruby/internal/config.h
+chilled.o: $(hdrdir)/ruby/internal/constant_p.h
+chilled.o: $(hdrdir)/ruby/internal/core.h
+chilled.o: $(hdrdir)/ruby/internal/core/rarray.h
+chilled.o: $(hdrdir)/ruby/internal/core/rbasic.h
+chilled.o: $(hdrdir)/ruby/internal/core/rbignum.h
+chilled.o: $(hdrdir)/ruby/internal/core/rclass.h
+chilled.o: $(hdrdir)/ruby/internal/core/rdata.h
+chilled.o: $(hdrdir)/ruby/internal/core/rfile.h
+chilled.o: $(hdrdir)/ruby/internal/core/rhash.h
+chilled.o: $(hdrdir)/ruby/internal/core/robject.h
+chilled.o: $(hdrdir)/ruby/internal/core/rregexp.h
+chilled.o: $(hdrdir)/ruby/internal/core/rstring.h
+chilled.o: $(hdrdir)/ruby/internal/core/rstruct.h
+chilled.o: $(hdrdir)/ruby/internal/core/rtypeddata.h
+chilled.o: $(hdrdir)/ruby/internal/ctype.h
+chilled.o: $(hdrdir)/ruby/internal/dllexport.h
+chilled.o: $(hdrdir)/ruby/internal/dosish.h
+chilled.o: $(hdrdir)/ruby/internal/error.h
+chilled.o: $(hdrdir)/ruby/internal/eval.h
+chilled.o: $(hdrdir)/ruby/internal/event.h
+chilled.o: $(hdrdir)/ruby/internal/fl_type.h
+chilled.o: $(hdrdir)/ruby/internal/gc.h
+chilled.o: $(hdrdir)/ruby/internal/glob.h
+chilled.o: $(hdrdir)/ruby/internal/globals.h
+chilled.o: $(hdrdir)/ruby/internal/has/attribute.h
+chilled.o: $(hdrdir)/ruby/internal/has/builtin.h
+chilled.o: $(hdrdir)/ruby/internal/has/c_attribute.h
+chilled.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h
+chilled.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h
+chilled.o: $(hdrdir)/ruby/internal/has/extension.h
+chilled.o: $(hdrdir)/ruby/internal/has/feature.h
+chilled.o: $(hdrdir)/ruby/internal/has/warning.h
+chilled.o: $(hdrdir)/ruby/internal/intern/array.h
+chilled.o: $(hdrdir)/ruby/internal/intern/bignum.h
+chilled.o: $(hdrdir)/ruby/internal/intern/class.h
+chilled.o: $(hdrdir)/ruby/internal/intern/compar.h
+chilled.o: $(hdrdir)/ruby/internal/intern/complex.h
+chilled.o: $(hdrdir)/ruby/internal/intern/cont.h
+chilled.o: $(hdrdir)/ruby/internal/intern/dir.h
+chilled.o: $(hdrdir)/ruby/internal/intern/enum.h
+chilled.o: $(hdrdir)/ruby/internal/intern/enumerator.h
+chilled.o: $(hdrdir)/ruby/internal/intern/error.h
+chilled.o: $(hdrdir)/ruby/internal/intern/eval.h
+chilled.o: $(hdrdir)/ruby/internal/intern/file.h
+chilled.o: $(hdrdir)/ruby/internal/intern/hash.h
+chilled.o: $(hdrdir)/ruby/internal/intern/io.h
+chilled.o: $(hdrdir)/ruby/internal/intern/load.h
+chilled.o: $(hdrdir)/ruby/internal/intern/marshal.h
+chilled.o: $(hdrdir)/ruby/internal/intern/numeric.h
+chilled.o: $(hdrdir)/ruby/internal/intern/object.h
+chilled.o: $(hdrdir)/ruby/internal/intern/parse.h
+chilled.o: $(hdrdir)/ruby/internal/intern/proc.h
+chilled.o: $(hdrdir)/ruby/internal/intern/process.h
+chilled.o: $(hdrdir)/ruby/internal/intern/random.h
+chilled.o: $(hdrdir)/ruby/internal/intern/range.h
+chilled.o: $(hdrdir)/ruby/internal/intern/rational.h
+chilled.o: $(hdrdir)/ruby/internal/intern/re.h
+chilled.o: $(hdrdir)/ruby/internal/intern/ruby.h
+chilled.o: $(hdrdir)/ruby/internal/intern/select.h
+chilled.o: $(hdrdir)/ruby/internal/intern/select/largesize.h
+chilled.o: $(hdrdir)/ruby/internal/intern/signal.h
+chilled.o: $(hdrdir)/ruby/internal/intern/sprintf.h
+chilled.o: $(hdrdir)/ruby/internal/intern/string.h
+chilled.o: $(hdrdir)/ruby/internal/intern/struct.h
+chilled.o: $(hdrdir)/ruby/internal/intern/thread.h
+chilled.o: $(hdrdir)/ruby/internal/intern/time.h
+chilled.o: $(hdrdir)/ruby/internal/intern/variable.h
+chilled.o: $(hdrdir)/ruby/internal/intern/vm.h
+chilled.o: $(hdrdir)/ruby/internal/interpreter.h
+chilled.o: $(hdrdir)/ruby/internal/iterator.h
+chilled.o: $(hdrdir)/ruby/internal/memory.h
+chilled.o: $(hdrdir)/ruby/internal/method.h
+chilled.o: $(hdrdir)/ruby/internal/module.h
+chilled.o: $(hdrdir)/ruby/internal/newobj.h
+chilled.o: $(hdrdir)/ruby/internal/scan_args.h
+chilled.o: $(hdrdir)/ruby/internal/special_consts.h
+chilled.o: $(hdrdir)/ruby/internal/static_assert.h
+chilled.o: $(hdrdir)/ruby/internal/stdalign.h
+chilled.o: $(hdrdir)/ruby/internal/stdbool.h
+chilled.o: $(hdrdir)/ruby/internal/stdckdint.h
+chilled.o: $(hdrdir)/ruby/internal/symbol.h
+chilled.o: $(hdrdir)/ruby/internal/value.h
+chilled.o: $(hdrdir)/ruby/internal/value_type.h
+chilled.o: $(hdrdir)/ruby/internal/variable.h
+chilled.o: $(hdrdir)/ruby/internal/warning_push.h
+chilled.o: $(hdrdir)/ruby/internal/xmalloc.h
+chilled.o: $(hdrdir)/ruby/missing.h
+chilled.o: $(hdrdir)/ruby/ruby.h
+chilled.o: $(hdrdir)/ruby/st.h
+chilled.o: $(hdrdir)/ruby/subst.h
+chilled.o: chilled.c
coderange.o: $(RUBY_EXTCONF_H)
coderange.o: $(arch_hdrdir)/ruby/config.h
coderange.o: $(hdrdir)/ruby/assert.h
@@ -330,6 +491,7 @@ coderange.o: $(hdrdir)/ruby/internal/special_consts.h
coderange.o: $(hdrdir)/ruby/internal/static_assert.h
coderange.o: $(hdrdir)/ruby/internal/stdalign.h
coderange.o: $(hdrdir)/ruby/internal/stdbool.h
+coderange.o: $(hdrdir)/ruby/internal/stdckdint.h
coderange.o: $(hdrdir)/ruby/internal/symbol.h
coderange.o: $(hdrdir)/ruby/internal/value.h
coderange.o: $(hdrdir)/ruby/internal/value_type.h
@@ -501,6 +663,7 @@ cstr.o: $(hdrdir)/ruby/internal/special_consts.h
cstr.o: $(hdrdir)/ruby/internal/static_assert.h
cstr.o: $(hdrdir)/ruby/internal/stdalign.h
cstr.o: $(hdrdir)/ruby/internal/stdbool.h
+cstr.o: $(hdrdir)/ruby/internal/stdckdint.h
cstr.o: $(hdrdir)/ruby/internal/symbol.h
cstr.o: $(hdrdir)/ruby/internal/value.h
cstr.o: $(hdrdir)/ruby/internal/value_type.h
@@ -665,6 +828,7 @@ ellipsize.o: $(hdrdir)/ruby/internal/special_consts.h
ellipsize.o: $(hdrdir)/ruby/internal/static_assert.h
ellipsize.o: $(hdrdir)/ruby/internal/stdalign.h
ellipsize.o: $(hdrdir)/ruby/internal/stdbool.h
+ellipsize.o: $(hdrdir)/ruby/internal/stdckdint.h
ellipsize.o: $(hdrdir)/ruby/internal/symbol.h
ellipsize.o: $(hdrdir)/ruby/internal/value.h
ellipsize.o: $(hdrdir)/ruby/internal/value_type.h
@@ -834,6 +998,7 @@ enc_associate.o: $(hdrdir)/ruby/internal/special_consts.h
enc_associate.o: $(hdrdir)/ruby/internal/static_assert.h
enc_associate.o: $(hdrdir)/ruby/internal/stdalign.h
enc_associate.o: $(hdrdir)/ruby/internal/stdbool.h
+enc_associate.o: $(hdrdir)/ruby/internal/stdckdint.h
enc_associate.o: $(hdrdir)/ruby/internal/symbol.h
enc_associate.o: $(hdrdir)/ruby/internal/value.h
enc_associate.o: $(hdrdir)/ruby/internal/value_type.h
@@ -1005,6 +1170,7 @@ enc_dummy.o: $(hdrdir)/ruby/internal/special_consts.h
enc_dummy.o: $(hdrdir)/ruby/internal/static_assert.h
enc_dummy.o: $(hdrdir)/ruby/internal/stdalign.h
enc_dummy.o: $(hdrdir)/ruby/internal/stdbool.h
+enc_dummy.o: $(hdrdir)/ruby/internal/stdckdint.h
enc_dummy.o: $(hdrdir)/ruby/internal/symbol.h
enc_dummy.o: $(hdrdir)/ruby/internal/value.h
enc_dummy.o: $(hdrdir)/ruby/internal/value_type.h
@@ -1175,6 +1341,7 @@ enc_str_buf_cat.o: $(hdrdir)/ruby/internal/special_consts.h
enc_str_buf_cat.o: $(hdrdir)/ruby/internal/static_assert.h
enc_str_buf_cat.o: $(hdrdir)/ruby/internal/stdalign.h
enc_str_buf_cat.o: $(hdrdir)/ruby/internal/stdbool.h
+enc_str_buf_cat.o: $(hdrdir)/ruby/internal/stdckdint.h
enc_str_buf_cat.o: $(hdrdir)/ruby/internal/symbol.h
enc_str_buf_cat.o: $(hdrdir)/ruby/internal/value.h
enc_str_buf_cat.o: $(hdrdir)/ruby/internal/value_type.h
@@ -1196,6 +1363,7 @@ fstring.o: $(hdrdir)/ruby/backward.h
fstring.o: $(hdrdir)/ruby/backward/2/assume.h
fstring.o: $(hdrdir)/ruby/backward/2/attributes.h
fstring.o: $(hdrdir)/ruby/backward/2/bool.h
+fstring.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h
fstring.o: $(hdrdir)/ruby/backward/2/inttypes.h
fstring.o: $(hdrdir)/ruby/backward/2/limits.h
fstring.o: $(hdrdir)/ruby/backward/2/long_long.h
@@ -1346,6 +1514,7 @@ fstring.o: $(hdrdir)/ruby/internal/special_consts.h
fstring.o: $(hdrdir)/ruby/internal/static_assert.h
fstring.o: $(hdrdir)/ruby/internal/stdalign.h
fstring.o: $(hdrdir)/ruby/internal/stdbool.h
+fstring.o: $(hdrdir)/ruby/internal/stdckdint.h
fstring.o: $(hdrdir)/ruby/internal/symbol.h
fstring.o: $(hdrdir)/ruby/internal/value.h
fstring.o: $(hdrdir)/ruby/internal/value_type.h
@@ -1358,6 +1527,8 @@ fstring.o: $(hdrdir)/ruby/oniguruma.h
fstring.o: $(hdrdir)/ruby/ruby.h
fstring.o: $(hdrdir)/ruby/st.h
fstring.o: $(hdrdir)/ruby/subst.h
+fstring.o: $(top_srcdir)/internal/compilers.h
+fstring.o: $(top_srcdir)/internal/string.h
fstring.o: fstring.c
init.o: $(RUBY_EXTCONF_H)
init.o: $(arch_hdrdir)/ruby/config.h
@@ -1507,6 +1678,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -1666,6 +1838,7 @@ modify.o: $(hdrdir)/ruby/internal/special_consts.h
modify.o: $(hdrdir)/ruby/internal/static_assert.h
modify.o: $(hdrdir)/ruby/internal/stdalign.h
modify.o: $(hdrdir)/ruby/internal/stdbool.h
+modify.o: $(hdrdir)/ruby/internal/stdckdint.h
modify.o: $(hdrdir)/ruby/internal/symbol.h
modify.o: $(hdrdir)/ruby/internal/value.h
modify.o: $(hdrdir)/ruby/internal/value_type.h
@@ -1835,6 +2008,7 @@ new.o: $(hdrdir)/ruby/internal/special_consts.h
new.o: $(hdrdir)/ruby/internal/static_assert.h
new.o: $(hdrdir)/ruby/internal/stdalign.h
new.o: $(hdrdir)/ruby/internal/stdbool.h
+new.o: $(hdrdir)/ruby/internal/stdckdint.h
new.o: $(hdrdir)/ruby/internal/symbol.h
new.o: $(hdrdir)/ruby/internal/value.h
new.o: $(hdrdir)/ruby/internal/value_type.h
@@ -1996,6 +2170,7 @@ nofree.o: $(hdrdir)/ruby/internal/special_consts.h
nofree.o: $(hdrdir)/ruby/internal/static_assert.h
nofree.o: $(hdrdir)/ruby/internal/stdalign.h
nofree.o: $(hdrdir)/ruby/internal/stdbool.h
+nofree.o: $(hdrdir)/ruby/internal/stdckdint.h
nofree.o: $(hdrdir)/ruby/internal/symbol.h
nofree.o: $(hdrdir)/ruby/internal/value.h
nofree.o: $(hdrdir)/ruby/internal/value_type.h
@@ -2164,6 +2339,7 @@ normalize.o: $(hdrdir)/ruby/internal/special_consts.h
normalize.o: $(hdrdir)/ruby/internal/static_assert.h
normalize.o: $(hdrdir)/ruby/internal/stdalign.h
normalize.o: $(hdrdir)/ruby/internal/stdbool.h
+normalize.o: $(hdrdir)/ruby/internal/stdckdint.h
normalize.o: $(hdrdir)/ruby/internal/symbol.h
normalize.o: $(hdrdir)/ruby/internal/value.h
normalize.o: $(hdrdir)/ruby/internal/value_type.h
@@ -2336,6 +2512,7 @@ qsort.o: $(hdrdir)/ruby/internal/special_consts.h
qsort.o: $(hdrdir)/ruby/internal/static_assert.h
qsort.o: $(hdrdir)/ruby/internal/stdalign.h
qsort.o: $(hdrdir)/ruby/internal/stdbool.h
+qsort.o: $(hdrdir)/ruby/internal/stdckdint.h
qsort.o: $(hdrdir)/ruby/internal/symbol.h
qsort.o: $(hdrdir)/ruby/internal/value.h
qsort.o: $(hdrdir)/ruby/internal/value_type.h
@@ -2498,6 +2675,7 @@ rb_interned_str.o: $(hdrdir)/ruby/internal/special_consts.h
rb_interned_str.o: $(hdrdir)/ruby/internal/static_assert.h
rb_interned_str.o: $(hdrdir)/ruby/internal/stdalign.h
rb_interned_str.o: $(hdrdir)/ruby/internal/stdbool.h
+rb_interned_str.o: $(hdrdir)/ruby/internal/stdckdint.h
rb_interned_str.o: $(hdrdir)/ruby/internal/symbol.h
rb_interned_str.o: $(hdrdir)/ruby/internal/value.h
rb_interned_str.o: $(hdrdir)/ruby/internal/value_type.h
@@ -2657,6 +2835,7 @@ rb_str_dup.o: $(hdrdir)/ruby/internal/special_consts.h
rb_str_dup.o: $(hdrdir)/ruby/internal/static_assert.h
rb_str_dup.o: $(hdrdir)/ruby/internal/stdalign.h
rb_str_dup.o: $(hdrdir)/ruby/internal/stdbool.h
+rb_str_dup.o: $(hdrdir)/ruby/internal/stdckdint.h
rb_str_dup.o: $(hdrdir)/ruby/internal/symbol.h
rb_str_dup.o: $(hdrdir)/ruby/internal/value.h
rb_str_dup.o: $(hdrdir)/ruby/internal/value_type.h
@@ -2816,6 +2995,7 @@ set_len.o: $(hdrdir)/ruby/internal/special_consts.h
set_len.o: $(hdrdir)/ruby/internal/static_assert.h
set_len.o: $(hdrdir)/ruby/internal/stdalign.h
set_len.o: $(hdrdir)/ruby/internal/stdbool.h
+set_len.o: $(hdrdir)/ruby/internal/stdckdint.h
set_len.o: $(hdrdir)/ruby/internal/symbol.h
set_len.o: $(hdrdir)/ruby/internal/value.h
set_len.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/string/fstring.c b/ext/-test-/string/fstring.c
index 2374319fe3..71c4b7f97e 100644
--- a/ext/-test-/string/fstring.c
+++ b/ext/-test-/string/fstring.c
@@ -1,30 +1,38 @@
#include "ruby.h"
#include "ruby/encoding.h"
-
-VALUE rb_fstring(VALUE str);
+#include "internal/string.h"
VALUE
bug_s_fstring(VALUE self, VALUE str)
{
- return rb_fstring(str);
+ return rb_str_to_interned_str(str);
+}
+
+VALUE
+bug_s_fstring_fake_str(VALUE self)
+{
+ static const char literal[] = "abcdefghijklmnopqrstuvwxyz";
+ struct RString fake_str;
+ return rb_str_to_interned_str(rb_setup_fake_str(&fake_str, literal, sizeof(literal) - 1, 0));
}
VALUE
bug_s_rb_enc_interned_str(VALUE self, VALUE encoding)
{
- return rb_enc_interned_str("foo", 3, RDATA(encoding)->data);
+ return rb_enc_interned_str("foo", 3, NIL_P(encoding) ? NULL : RDATA(encoding)->data);
}
VALUE
bug_s_rb_enc_str_new(VALUE self, VALUE encoding)
{
- return rb_enc_str_new("foo", 3, RDATA(encoding)->data);
+ return rb_enc_str_new("foo", 3, NIL_P(encoding) ? NULL : RDATA(encoding)->data);
}
void
Init_string_fstring(VALUE klass)
{
rb_define_singleton_method(klass, "fstring", bug_s_fstring, 1);
+ rb_define_singleton_method(klass, "fstring_fake_str", bug_s_fstring_fake_str, 0);
rb_define_singleton_method(klass, "rb_enc_interned_str", bug_s_rb_enc_interned_str, 1);
rb_define_singleton_method(klass, "rb_enc_str_new", bug_s_rb_enc_str_new, 1);
}
diff --git a/ext/-test-/string/set_len.c b/ext/-test-/string/set_len.c
index 219cea404c..049da2cdb5 100644
--- a/ext/-test-/string/set_len.c
+++ b/ext/-test-/string/set_len.c
@@ -7,8 +7,18 @@ bug_str_set_len(VALUE str, VALUE len)
return str;
}
+static VALUE
+bug_str_append(VALUE str, VALUE addendum)
+{
+ StringValue(addendum);
+ rb_str_modify_expand(str, RSTRING_LEN(addendum));
+ memcpy(RSTRING_END(str), RSTRING_PTR(addendum), RSTRING_LEN(addendum));
+ return str;
+}
+
void
Init_string_set_len(VALUE klass)
{
rb_define_method(klass, "set_len", bug_str_set_len, 1);
+ rb_define_method(klass, "append", bug_str_append, 1);
}
diff --git a/ext/-test-/struct/data.c b/ext/-test-/struct/data.c
new file mode 100644
index 0000000000..5841c342e7
--- /dev/null
+++ b/ext/-test-/struct/data.c
@@ -0,0 +1,13 @@
+#include "ruby.h"
+
+static VALUE
+bug_data_new(VALUE self, VALUE super)
+{
+ return rb_data_define(super, "mem1", "mem2", NULL);
+}
+
+void
+Init_data(VALUE klass)
+{
+ rb_define_singleton_method(klass, "data_new", bug_data_new, 1);
+}
diff --git a/ext/-test-/struct/depend b/ext/-test-/struct/depend
index 191408cc90..951dddd5dd 100644
--- a/ext/-test-/struct/depend
+++ b/ext/-test-/struct/depend
@@ -1,4 +1,164 @@
# AUTOGENERATED DEPENDENCIES START
+data.o: $(RUBY_EXTCONF_H)
+data.o: $(arch_hdrdir)/ruby/config.h
+data.o: $(hdrdir)/ruby.h
+data.o: $(hdrdir)/ruby/assert.h
+data.o: $(hdrdir)/ruby/backward.h
+data.o: $(hdrdir)/ruby/backward/2/assume.h
+data.o: $(hdrdir)/ruby/backward/2/attributes.h
+data.o: $(hdrdir)/ruby/backward/2/bool.h
+data.o: $(hdrdir)/ruby/backward/2/inttypes.h
+data.o: $(hdrdir)/ruby/backward/2/limits.h
+data.o: $(hdrdir)/ruby/backward/2/long_long.h
+data.o: $(hdrdir)/ruby/backward/2/stdalign.h
+data.o: $(hdrdir)/ruby/backward/2/stdarg.h
+data.o: $(hdrdir)/ruby/defines.h
+data.o: $(hdrdir)/ruby/intern.h
+data.o: $(hdrdir)/ruby/internal/abi.h
+data.o: $(hdrdir)/ruby/internal/anyargs.h
+data.o: $(hdrdir)/ruby/internal/arithmetic.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/char.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/double.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/fixnum.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/gid_t.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/int.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/intptr_t.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/long.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/long_long.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/mode_t.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/off_t.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/pid_t.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/short.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/size_t.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/st_data_t.h
+data.o: $(hdrdir)/ruby/internal/arithmetic/uid_t.h
+data.o: $(hdrdir)/ruby/internal/assume.h
+data.o: $(hdrdir)/ruby/internal/attr/alloc_size.h
+data.o: $(hdrdir)/ruby/internal/attr/artificial.h
+data.o: $(hdrdir)/ruby/internal/attr/cold.h
+data.o: $(hdrdir)/ruby/internal/attr/const.h
+data.o: $(hdrdir)/ruby/internal/attr/constexpr.h
+data.o: $(hdrdir)/ruby/internal/attr/deprecated.h
+data.o: $(hdrdir)/ruby/internal/attr/diagnose_if.h
+data.o: $(hdrdir)/ruby/internal/attr/enum_extensibility.h
+data.o: $(hdrdir)/ruby/internal/attr/error.h
+data.o: $(hdrdir)/ruby/internal/attr/flag_enum.h
+data.o: $(hdrdir)/ruby/internal/attr/forceinline.h
+data.o: $(hdrdir)/ruby/internal/attr/format.h
+data.o: $(hdrdir)/ruby/internal/attr/maybe_unused.h
+data.o: $(hdrdir)/ruby/internal/attr/noalias.h
+data.o: $(hdrdir)/ruby/internal/attr/nodiscard.h
+data.o: $(hdrdir)/ruby/internal/attr/noexcept.h
+data.o: $(hdrdir)/ruby/internal/attr/noinline.h
+data.o: $(hdrdir)/ruby/internal/attr/nonnull.h
+data.o: $(hdrdir)/ruby/internal/attr/noreturn.h
+data.o: $(hdrdir)/ruby/internal/attr/packed_struct.h
+data.o: $(hdrdir)/ruby/internal/attr/pure.h
+data.o: $(hdrdir)/ruby/internal/attr/restrict.h
+data.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h
+data.o: $(hdrdir)/ruby/internal/attr/warning.h
+data.o: $(hdrdir)/ruby/internal/attr/weakref.h
+data.o: $(hdrdir)/ruby/internal/cast.h
+data.o: $(hdrdir)/ruby/internal/compiler_is.h
+data.o: $(hdrdir)/ruby/internal/compiler_is/apple.h
+data.o: $(hdrdir)/ruby/internal/compiler_is/clang.h
+data.o: $(hdrdir)/ruby/internal/compiler_is/gcc.h
+data.o: $(hdrdir)/ruby/internal/compiler_is/intel.h
+data.o: $(hdrdir)/ruby/internal/compiler_is/msvc.h
+data.o: $(hdrdir)/ruby/internal/compiler_is/sunpro.h
+data.o: $(hdrdir)/ruby/internal/compiler_since.h
+data.o: $(hdrdir)/ruby/internal/config.h
+data.o: $(hdrdir)/ruby/internal/constant_p.h
+data.o: $(hdrdir)/ruby/internal/core.h
+data.o: $(hdrdir)/ruby/internal/core/rarray.h
+data.o: $(hdrdir)/ruby/internal/core/rbasic.h
+data.o: $(hdrdir)/ruby/internal/core/rbignum.h
+data.o: $(hdrdir)/ruby/internal/core/rclass.h
+data.o: $(hdrdir)/ruby/internal/core/rdata.h
+data.o: $(hdrdir)/ruby/internal/core/rfile.h
+data.o: $(hdrdir)/ruby/internal/core/rhash.h
+data.o: $(hdrdir)/ruby/internal/core/robject.h
+data.o: $(hdrdir)/ruby/internal/core/rregexp.h
+data.o: $(hdrdir)/ruby/internal/core/rstring.h
+data.o: $(hdrdir)/ruby/internal/core/rstruct.h
+data.o: $(hdrdir)/ruby/internal/core/rtypeddata.h
+data.o: $(hdrdir)/ruby/internal/ctype.h
+data.o: $(hdrdir)/ruby/internal/dllexport.h
+data.o: $(hdrdir)/ruby/internal/dosish.h
+data.o: $(hdrdir)/ruby/internal/error.h
+data.o: $(hdrdir)/ruby/internal/eval.h
+data.o: $(hdrdir)/ruby/internal/event.h
+data.o: $(hdrdir)/ruby/internal/fl_type.h
+data.o: $(hdrdir)/ruby/internal/gc.h
+data.o: $(hdrdir)/ruby/internal/glob.h
+data.o: $(hdrdir)/ruby/internal/globals.h
+data.o: $(hdrdir)/ruby/internal/has/attribute.h
+data.o: $(hdrdir)/ruby/internal/has/builtin.h
+data.o: $(hdrdir)/ruby/internal/has/c_attribute.h
+data.o: $(hdrdir)/ruby/internal/has/cpp_attribute.h
+data.o: $(hdrdir)/ruby/internal/has/declspec_attribute.h
+data.o: $(hdrdir)/ruby/internal/has/extension.h
+data.o: $(hdrdir)/ruby/internal/has/feature.h
+data.o: $(hdrdir)/ruby/internal/has/warning.h
+data.o: $(hdrdir)/ruby/internal/intern/array.h
+data.o: $(hdrdir)/ruby/internal/intern/bignum.h
+data.o: $(hdrdir)/ruby/internal/intern/class.h
+data.o: $(hdrdir)/ruby/internal/intern/compar.h
+data.o: $(hdrdir)/ruby/internal/intern/complex.h
+data.o: $(hdrdir)/ruby/internal/intern/cont.h
+data.o: $(hdrdir)/ruby/internal/intern/dir.h
+data.o: $(hdrdir)/ruby/internal/intern/enum.h
+data.o: $(hdrdir)/ruby/internal/intern/enumerator.h
+data.o: $(hdrdir)/ruby/internal/intern/error.h
+data.o: $(hdrdir)/ruby/internal/intern/eval.h
+data.o: $(hdrdir)/ruby/internal/intern/file.h
+data.o: $(hdrdir)/ruby/internal/intern/hash.h
+data.o: $(hdrdir)/ruby/internal/intern/io.h
+data.o: $(hdrdir)/ruby/internal/intern/load.h
+data.o: $(hdrdir)/ruby/internal/intern/marshal.h
+data.o: $(hdrdir)/ruby/internal/intern/numeric.h
+data.o: $(hdrdir)/ruby/internal/intern/object.h
+data.o: $(hdrdir)/ruby/internal/intern/parse.h
+data.o: $(hdrdir)/ruby/internal/intern/proc.h
+data.o: $(hdrdir)/ruby/internal/intern/process.h
+data.o: $(hdrdir)/ruby/internal/intern/random.h
+data.o: $(hdrdir)/ruby/internal/intern/range.h
+data.o: $(hdrdir)/ruby/internal/intern/rational.h
+data.o: $(hdrdir)/ruby/internal/intern/re.h
+data.o: $(hdrdir)/ruby/internal/intern/ruby.h
+data.o: $(hdrdir)/ruby/internal/intern/select.h
+data.o: $(hdrdir)/ruby/internal/intern/select/largesize.h
+data.o: $(hdrdir)/ruby/internal/intern/signal.h
+data.o: $(hdrdir)/ruby/internal/intern/sprintf.h
+data.o: $(hdrdir)/ruby/internal/intern/string.h
+data.o: $(hdrdir)/ruby/internal/intern/struct.h
+data.o: $(hdrdir)/ruby/internal/intern/thread.h
+data.o: $(hdrdir)/ruby/internal/intern/time.h
+data.o: $(hdrdir)/ruby/internal/intern/variable.h
+data.o: $(hdrdir)/ruby/internal/intern/vm.h
+data.o: $(hdrdir)/ruby/internal/interpreter.h
+data.o: $(hdrdir)/ruby/internal/iterator.h
+data.o: $(hdrdir)/ruby/internal/memory.h
+data.o: $(hdrdir)/ruby/internal/method.h
+data.o: $(hdrdir)/ruby/internal/module.h
+data.o: $(hdrdir)/ruby/internal/newobj.h
+data.o: $(hdrdir)/ruby/internal/scan_args.h
+data.o: $(hdrdir)/ruby/internal/special_consts.h
+data.o: $(hdrdir)/ruby/internal/static_assert.h
+data.o: $(hdrdir)/ruby/internal/stdalign.h
+data.o: $(hdrdir)/ruby/internal/stdbool.h
+data.o: $(hdrdir)/ruby/internal/stdckdint.h
+data.o: $(hdrdir)/ruby/internal/symbol.h
+data.o: $(hdrdir)/ruby/internal/value.h
+data.o: $(hdrdir)/ruby/internal/value_type.h
+data.o: $(hdrdir)/ruby/internal/variable.h
+data.o: $(hdrdir)/ruby/internal/warning_push.h
+data.o: $(hdrdir)/ruby/internal/xmalloc.h
+data.o: $(hdrdir)/ruby/missing.h
+data.o: $(hdrdir)/ruby/ruby.h
+data.o: $(hdrdir)/ruby/st.h
+data.o: $(hdrdir)/ruby/subst.h
+data.o: data.c
duplicate.o: $(RUBY_EXTCONF_H)
duplicate.o: $(arch_hdrdir)/ruby/config.h
duplicate.o: $(hdrdir)/ruby.h
@@ -147,6 +307,7 @@ duplicate.o: $(hdrdir)/ruby/internal/special_consts.h
duplicate.o: $(hdrdir)/ruby/internal/static_assert.h
duplicate.o: $(hdrdir)/ruby/internal/stdalign.h
duplicate.o: $(hdrdir)/ruby/internal/stdbool.h
+duplicate.o: $(hdrdir)/ruby/internal/stdckdint.h
duplicate.o: $(hdrdir)/ruby/internal/symbol.h
duplicate.o: $(hdrdir)/ruby/internal/value.h
duplicate.o: $(hdrdir)/ruby/internal/value_type.h
@@ -306,6 +467,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -465,6 +627,7 @@ len.o: $(hdrdir)/ruby/internal/special_consts.h
len.o: $(hdrdir)/ruby/internal/static_assert.h
len.o: $(hdrdir)/ruby/internal/stdalign.h
len.o: $(hdrdir)/ruby/internal/stdbool.h
+len.o: $(hdrdir)/ruby/internal/stdckdint.h
len.o: $(hdrdir)/ruby/internal/symbol.h
len.o: $(hdrdir)/ruby/internal/value.h
len.o: $(hdrdir)/ruby/internal/value_type.h
@@ -624,6 +787,7 @@ member.o: $(hdrdir)/ruby/internal/special_consts.h
member.o: $(hdrdir)/ruby/internal/static_assert.h
member.o: $(hdrdir)/ruby/internal/stdalign.h
member.o: $(hdrdir)/ruby/internal/stdbool.h
+member.o: $(hdrdir)/ruby/internal/stdckdint.h
member.o: $(hdrdir)/ruby/internal/symbol.h
member.o: $(hdrdir)/ruby/internal/value.h
member.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/struct/member.c b/ext/-test-/struct/member.c
index f5400fe477..29ddff93e8 100644
--- a/ext/-test-/struct/member.c
+++ b/ext/-test-/struct/member.c
@@ -6,7 +6,7 @@ bug_struct_get(VALUE obj, VALUE name)
ID id = rb_check_id(&name);
if (!id) {
- rb_name_error_str(name, "`%"PRIsVALUE"' is not a struct member", name);
+ rb_name_error_str(name, "'%"PRIsVALUE"' is not a struct member", name);
}
return rb_struct_getmember(obj, id);
}
diff --git a/ext/-test-/symbol/depend b/ext/-test-/symbol/depend
index dd1b5c305f..7c76596fdf 100644
--- a/ext/-test-/symbol/depend
+++ b/ext/-test-/symbol/depend
@@ -147,6 +147,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -306,6 +307,7 @@ type.o: $(hdrdir)/ruby/internal/special_consts.h
type.o: $(hdrdir)/ruby/internal/static_assert.h
type.o: $(hdrdir)/ruby/internal/stdalign.h
type.o: $(hdrdir)/ruby/internal/stdbool.h
+type.o: $(hdrdir)/ruby/internal/stdckdint.h
type.o: $(hdrdir)/ruby/internal/symbol.h
type.o: $(hdrdir)/ruby/internal/value.h
type.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/thread/instrumentation/depend b/ext/-test-/thread/instrumentation/depend
index b03f51870f..a37e4d5675 100644
--- a/ext/-test-/thread/instrumentation/depend
+++ b/ext/-test-/thread/instrumentation/depend
@@ -147,6 +147,7 @@ instrumentation.o: $(hdrdir)/ruby/internal/special_consts.h
instrumentation.o: $(hdrdir)/ruby/internal/static_assert.h
instrumentation.o: $(hdrdir)/ruby/internal/stdalign.h
instrumentation.o: $(hdrdir)/ruby/internal/stdbool.h
+instrumentation.o: $(hdrdir)/ruby/internal/stdckdint.h
instrumentation.o: $(hdrdir)/ruby/internal/symbol.h
instrumentation.o: $(hdrdir)/ruby/internal/value.h
instrumentation.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/thread/instrumentation/instrumentation.c b/ext/-test-/thread/instrumentation/instrumentation.c
index edb8738a29..d81bc0f2a7 100644
--- a/ext/-test-/thread/instrumentation/instrumentation.c
+++ b/ext/-test-/thread/instrumentation/instrumentation.c
@@ -2,85 +2,137 @@
#include "ruby/atomic.h"
#include "ruby/thread.h"
-static rb_atomic_t started_count = 0;
-static rb_atomic_t ready_count = 0;
-static rb_atomic_t resumed_count = 0;
-static rb_atomic_t suspended_count = 0;
-static rb_atomic_t exited_count = 0;
-
#ifndef RB_THREAD_LOCAL_SPECIFIER
# define RB_THREAD_LOCAL_SPECIFIER
#endif
-static RB_THREAD_LOCAL_SPECIFIER unsigned int local_ready_count = 0;
-static RB_THREAD_LOCAL_SPECIFIER unsigned int local_resumed_count = 0;
-static RB_THREAD_LOCAL_SPECIFIER unsigned int local_suspended_count = 0;
+static VALUE last_thread = Qnil;
+static VALUE timeline_value = Qnil;
+
+struct thread_event {
+ VALUE thread;
+ rb_event_flag_t event;
+};
+
+#define MAX_EVENTS 1024
+static struct thread_event event_timeline[MAX_EVENTS];
+static rb_atomic_t timeline_cursor;
static void
-ex_callback(rb_event_flag_t event, const rb_internal_thread_event_data_t *event_data, void *user_data)
+event_timeline_gc_mark(void *ptr) {
+ rb_atomic_t cursor;
+ for (cursor = 0; cursor < timeline_cursor; cursor++) {
+ rb_gc_mark(event_timeline[cursor].thread);
+ }
+}
+
+static const rb_data_type_t event_timeline_type = {
+ "TestThreadInstrumentation/event_timeline",
+ {event_timeline_gc_mark, NULL, NULL,},
+ 0, 0,
+ RUBY_TYPED_FREE_IMMEDIATELY,
+};
+
+static void
+reset_timeline(void)
+{
+ timeline_cursor = 0;
+ memset(event_timeline, 0, sizeof(struct thread_event) * MAX_EVENTS);
+}
+
+static rb_event_flag_t
+find_last_event(VALUE thread)
+{
+ rb_atomic_t cursor = timeline_cursor;
+ if (cursor) {
+ do {
+ if (event_timeline[cursor].thread == thread){
+ return event_timeline[cursor].event;
+ }
+ cursor--;
+ } while (cursor > 0);
+ }
+ return 0;
+}
+
+static const char *
+event_name(rb_event_flag_t event)
{
switch (event) {
case RUBY_INTERNAL_THREAD_EVENT_STARTED:
- RUBY_ATOMIC_INC(started_count);
- break;
+ return "started";
case RUBY_INTERNAL_THREAD_EVENT_READY:
- RUBY_ATOMIC_INC(ready_count);
- local_ready_count++;
- break;
+ return "ready";
case RUBY_INTERNAL_THREAD_EVENT_RESUMED:
- RUBY_ATOMIC_INC(resumed_count);
- local_resumed_count++;
- break;
+ return "resumed";
case RUBY_INTERNAL_THREAD_EVENT_SUSPENDED:
- RUBY_ATOMIC_INC(suspended_count);
- local_suspended_count++;
- break;
+ return "suspended";
case RUBY_INTERNAL_THREAD_EVENT_EXITED:
- RUBY_ATOMIC_INC(exited_count);
- break;
+ return "exited";
}
+ return "no-event";
}
-static rb_internal_thread_event_hook_t * single_hook = NULL;
-
-static VALUE
-thread_counters(VALUE thread)
+static void
+unexpected(bool strict, const char *format, VALUE thread, rb_event_flag_t last_event)
{
- VALUE array = rb_ary_new2(5);
- rb_ary_push(array, UINT2NUM(started_count));
- rb_ary_push(array, UINT2NUM(ready_count));
- rb_ary_push(array, UINT2NUM(resumed_count));
- rb_ary_push(array, UINT2NUM(suspended_count));
- rb_ary_push(array, UINT2NUM(exited_count));
- return array;
+ const char *last_event_name = event_name(last_event);
+ if (strict) {
+ rb_bug(format, thread, last_event_name);
+ }
+ else {
+ fprintf(stderr, format, thread, last_event_name);
+ fprintf(stderr, "\n");
+ }
}
-static VALUE
-thread_local_counters(VALUE thread)
+static void
+ex_callback(rb_event_flag_t event, const rb_internal_thread_event_data_t *event_data, void *user_data)
{
- VALUE array = rb_ary_new2(3);
- rb_ary_push(array, UINT2NUM(local_ready_count));
- rb_ary_push(array, UINT2NUM(local_resumed_count));
- rb_ary_push(array, UINT2NUM(local_suspended_count));
- return array;
-}
+ rb_event_flag_t last_event = find_last_event(event_data->thread);
+ bool strict = (bool)user_data;
-static VALUE
-thread_reset_counters(VALUE thread)
-{
- RUBY_ATOMIC_SET(started_count, 0);
- RUBY_ATOMIC_SET(ready_count, 0);
- RUBY_ATOMIC_SET(resumed_count, 0);
- RUBY_ATOMIC_SET(suspended_count, 0);
- RUBY_ATOMIC_SET(exited_count, 0);
- local_ready_count = 0;
- local_resumed_count = 0;
- local_suspended_count = 0;
- return Qtrue;
+ if (last_event != 0) {
+ switch (event) {
+ case RUBY_INTERNAL_THREAD_EVENT_STARTED:
+ unexpected(strict, "[thread=%"PRIxVALUE"] `started` event can't be preceded by `%s`", event_data->thread, last_event);
+ break;
+ case RUBY_INTERNAL_THREAD_EVENT_READY:
+ if (last_event != RUBY_INTERNAL_THREAD_EVENT_STARTED && last_event != RUBY_INTERNAL_THREAD_EVENT_SUSPENDED) {
+ unexpected(strict, "[thread=%"PRIxVALUE"] `ready` must be preceded by `started` or `suspended`, got: `%s`", event_data->thread, last_event);
+ }
+ break;
+ case RUBY_INTERNAL_THREAD_EVENT_RESUMED:
+ if (last_event != RUBY_INTERNAL_THREAD_EVENT_READY) {
+ unexpected(strict, "[thread=%"PRIxVALUE"] `resumed` must be preceded by `ready`, got: `%s`", event_data->thread, last_event);
+ }
+ break;
+ case RUBY_INTERNAL_THREAD_EVENT_SUSPENDED:
+ if (last_event != RUBY_INTERNAL_THREAD_EVENT_RESUMED) {
+ unexpected(strict, "[thread=%"PRIxVALUE"] `suspended` must be preceded by `resumed`, got: `%s`", event_data->thread, last_event);
+ }
+ break;
+ case RUBY_INTERNAL_THREAD_EVENT_EXITED:
+ if (last_event != RUBY_INTERNAL_THREAD_EVENT_RESUMED && last_event != RUBY_INTERNAL_THREAD_EVENT_SUSPENDED) {
+ unexpected(strict, "[thread=%"PRIxVALUE"] `exited` must be preceded by `resumed` or `suspended`, got: `%s`", event_data->thread, last_event);
+ }
+ break;
+ }
+ }
+
+ rb_atomic_t cursor = RUBY_ATOMIC_FETCH_ADD(timeline_cursor, 1);
+ if (cursor >= MAX_EVENTS) {
+ rb_bug("TestThreadInstrumentation: ran out of event_timeline space");
+ }
+
+ event_timeline[cursor].thread = event_data->thread;
+ event_timeline[cursor].event = event;
}
+static rb_internal_thread_event_hook_t * single_hook = NULL;
+
static VALUE
-thread_register_callback(VALUE thread)
+thread_register_callback(VALUE thread, VALUE strict)
{
single_hook = rb_internal_thread_add_event_hook(
ex_callback,
@@ -89,13 +141,33 @@ thread_register_callback(VALUE thread)
RUBY_INTERNAL_THREAD_EVENT_RESUMED |
RUBY_INTERNAL_THREAD_EVENT_SUSPENDED |
RUBY_INTERNAL_THREAD_EVENT_EXITED,
- NULL
+ (void *)RTEST(strict)
);
return Qnil;
}
static VALUE
+event_symbol(rb_event_flag_t event)
+{
+ switch (event) {
+ case RUBY_INTERNAL_THREAD_EVENT_STARTED:
+ return rb_id2sym(rb_intern("started"));
+ case RUBY_INTERNAL_THREAD_EVENT_READY:
+ return rb_id2sym(rb_intern("ready"));
+ case RUBY_INTERNAL_THREAD_EVENT_RESUMED:
+ return rb_id2sym(rb_intern("resumed"));
+ case RUBY_INTERNAL_THREAD_EVENT_SUSPENDED:
+ return rb_id2sym(rb_intern("suspended"));
+ case RUBY_INTERNAL_THREAD_EVENT_EXITED:
+ return rb_id2sym(rb_intern("exited"));
+ default:
+ rb_bug("TestThreadInstrumentation: Unexpected event");
+ break;
+ }
+}
+
+static VALUE
thread_unregister_callback(VALUE thread)
{
if (single_hook) {
@@ -103,7 +175,18 @@ thread_unregister_callback(VALUE thread)
single_hook = NULL;
}
- return Qnil;
+ VALUE events = rb_ary_new_capa(timeline_cursor);
+ rb_atomic_t cursor;
+ for (cursor = 0; cursor < timeline_cursor; cursor++) {
+ VALUE pair = rb_ary_new_capa(2);
+ rb_ary_push(pair, event_timeline[cursor].thread);
+ rb_ary_push(pair, event_symbol(event_timeline[cursor].event));
+ rb_ary_push(events, pair);
+ }
+
+ reset_timeline();
+
+ return events;
}
static VALUE
@@ -127,10 +210,11 @@ Init_instrumentation(void)
{
VALUE mBug = rb_define_module("Bug");
VALUE klass = rb_define_module_under(mBug, "ThreadInstrumentation");
- rb_define_singleton_method(klass, "counters", thread_counters, 0);
- rb_define_singleton_method(klass, "local_counters", thread_local_counters, 0);
- rb_define_singleton_method(klass, "reset_counters", thread_reset_counters, 0);
- rb_define_singleton_method(klass, "register_callback", thread_register_callback, 0);
+ rb_global_variable(&timeline_value);
+ timeline_value = TypedData_Wrap_Struct(0, &event_timeline_type, 0);
+
+ rb_global_variable(&last_thread);
+ rb_define_singleton_method(klass, "register_callback", thread_register_callback, 1);
rb_define_singleton_method(klass, "unregister_callback", thread_unregister_callback, 0);
rb_define_singleton_method(klass, "register_and_unregister_callbacks", thread_register_and_unregister_callback, 0);
}
diff --git a/ext/-test-/thread/lock_native_thread/extconf.rb b/ext/-test-/thread/lock_native_thread/extconf.rb
new file mode 100644
index 0000000000..832bfde01a
--- /dev/null
+++ b/ext/-test-/thread/lock_native_thread/extconf.rb
@@ -0,0 +1,2 @@
+# frozen_string_literal: false
+create_makefile("-test-/thread/lock_native_thread")
diff --git a/ext/-test-/thread/lock_native_thread/lock_native_thread.c b/ext/-test-/thread/lock_native_thread/lock_native_thread.c
new file mode 100644
index 0000000000..2eb75809a9
--- /dev/null
+++ b/ext/-test-/thread/lock_native_thread/lock_native_thread.c
@@ -0,0 +1,50 @@
+
+#include "ruby/ruby.h"
+#include "ruby/thread.h"
+
+#ifdef HAVE_PTHREAD_H
+#include <pthread.h>
+
+static pthread_key_t tls_key;
+
+static VALUE
+get_tls(VALUE self)
+{
+ return (VALUE)pthread_getspecific(tls_key);
+}
+
+static VALUE
+set_tls(VALUE self, VALUE vn)
+{
+ pthread_setspecific(tls_key, (void *)vn);
+ return Qnil;
+}
+
+static VALUE
+lock_native_thread(VALUE self)
+{
+ return rb_thread_lock_native_thread() ? Qtrue : Qfalse;
+}
+
+void
+Init_lock_native_thread(void)
+{
+ int r;
+
+ if ((r = pthread_key_create(&tls_key, NULL)) != 0) {
+ rb_bug("pthread_key_create() returns %d", r);
+ }
+ pthread_setspecific(tls_key, NULL);
+
+ rb_define_method(rb_cThread, "lock_native_thread", lock_native_thread, 0);
+ rb_define_method(rb_cThread, "get_tls", get_tls, 0);
+ rb_define_method(rb_cThread, "set_tls", set_tls, 1);
+}
+
+#else // HAVE_PTHREAD_H
+void
+Init_lock_native_thread(void)
+{
+ // do nothing
+}
+#endif // HAVE_PTHREAD_H
diff --git a/ext/-test-/thread_fd/depend b/ext/-test-/thread_fd/depend
index d4cc772526..0fda9f6dbf 100644
--- a/ext/-test-/thread_fd/depend
+++ b/ext/-test-/thread_fd/depend
@@ -146,6 +146,7 @@ thread_fd.o: $(hdrdir)/ruby/internal/special_consts.h
thread_fd.o: $(hdrdir)/ruby/internal/static_assert.h
thread_fd.o: $(hdrdir)/ruby/internal/stdalign.h
thread_fd.o: $(hdrdir)/ruby/internal/stdbool.h
+thread_fd.o: $(hdrdir)/ruby/internal/stdckdint.h
thread_fd.o: $(hdrdir)/ruby/internal/symbol.h
thread_fd.o: $(hdrdir)/ruby/internal/value.h
thread_fd.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/time/depend b/ext/-test-/time/depend
index c015588b09..5ed791bcc5 100644
--- a/ext/-test-/time/depend
+++ b/ext/-test-/time/depend
@@ -147,6 +147,7 @@ init.o: $(hdrdir)/ruby/internal/special_consts.h
init.o: $(hdrdir)/ruby/internal/static_assert.h
init.o: $(hdrdir)/ruby/internal/stdalign.h
init.o: $(hdrdir)/ruby/internal/stdbool.h
+init.o: $(hdrdir)/ruby/internal/stdckdint.h
init.o: $(hdrdir)/ruby/internal/symbol.h
init.o: $(hdrdir)/ruby/internal/value.h
init.o: $(hdrdir)/ruby/internal/value_type.h
@@ -307,6 +308,7 @@ leap_second.o: $(hdrdir)/ruby/internal/special_consts.h
leap_second.o: $(hdrdir)/ruby/internal/static_assert.h
leap_second.o: $(hdrdir)/ruby/internal/stdalign.h
leap_second.o: $(hdrdir)/ruby/internal/stdbool.h
+leap_second.o: $(hdrdir)/ruby/internal/stdckdint.h
leap_second.o: $(hdrdir)/ruby/internal/symbol.h
leap_second.o: $(hdrdir)/ruby/internal/value.h
leap_second.o: $(hdrdir)/ruby/internal/value_type.h
@@ -470,6 +472,7 @@ new.o: $(hdrdir)/ruby/internal/special_consts.h
new.o: $(hdrdir)/ruby/internal/static_assert.h
new.o: $(hdrdir)/ruby/internal/stdalign.h
new.o: $(hdrdir)/ruby/internal/stdbool.h
+new.o: $(hdrdir)/ruby/internal/stdckdint.h
new.o: $(hdrdir)/ruby/internal/symbol.h
new.o: $(hdrdir)/ruby/internal/value.h
new.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/tracepoint/depend b/ext/-test-/tracepoint/depend
index 396004926e..133663b3bd 100644
--- a/ext/-test-/tracepoint/depend
+++ b/ext/-test-/tracepoint/depend
@@ -147,6 +147,7 @@ gc_hook.o: $(hdrdir)/ruby/internal/special_consts.h
gc_hook.o: $(hdrdir)/ruby/internal/static_assert.h
gc_hook.o: $(hdrdir)/ruby/internal/stdalign.h
gc_hook.o: $(hdrdir)/ruby/internal/stdbool.h
+gc_hook.o: $(hdrdir)/ruby/internal/stdckdint.h
gc_hook.o: $(hdrdir)/ruby/internal/symbol.h
gc_hook.o: $(hdrdir)/ruby/internal/value.h
gc_hook.o: $(hdrdir)/ruby/internal/value_type.h
@@ -306,6 +307,7 @@ tracepoint.o: $(hdrdir)/ruby/internal/special_consts.h
tracepoint.o: $(hdrdir)/ruby/internal/static_assert.h
tracepoint.o: $(hdrdir)/ruby/internal/stdalign.h
tracepoint.o: $(hdrdir)/ruby/internal/stdbool.h
+tracepoint.o: $(hdrdir)/ruby/internal/stdckdint.h
tracepoint.o: $(hdrdir)/ruby/internal/symbol.h
tracepoint.o: $(hdrdir)/ruby/internal/value.h
tracepoint.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/tracepoint/gc_hook.c b/ext/-test-/tracepoint/gc_hook.c
index a3f4e7f68a..54c06c54a5 100644
--- a/ext/-test-/tracepoint/gc_hook.c
+++ b/ext/-test-/tracepoint/gc_hook.c
@@ -33,7 +33,9 @@ gc_start_end_i(VALUE tpval, void *data)
}
if (invoking == 0) {
- rb_postponed_job_register(0, invoke_proc, data);
+ /* will overwrite the existing handle with new data on the second and subsequent call */
+ rb_postponed_job_handle_t h = rb_postponed_job_preregister(0, invoke_proc, data);
+ rb_postponed_job_trigger(h);
}
}
diff --git a/ext/-test-/typeddata/depend b/ext/-test-/typeddata/depend
index cbeafa8000..6c0847c82d 100644
--- a/ext/-test-/typeddata/depend
+++ b/ext/-test-/typeddata/depend
@@ -147,6 +147,7 @@ typeddata.o: $(hdrdir)/ruby/internal/special_consts.h
typeddata.o: $(hdrdir)/ruby/internal/static_assert.h
typeddata.o: $(hdrdir)/ruby/internal/stdalign.h
typeddata.o: $(hdrdir)/ruby/internal/stdbool.h
+typeddata.o: $(hdrdir)/ruby/internal/stdckdint.h
typeddata.o: $(hdrdir)/ruby/internal/symbol.h
typeddata.o: $(hdrdir)/ruby/internal/value.h
typeddata.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/vm/depend b/ext/-test-/vm/depend
index f0b3f3b1f4..422b40a32d 100644
--- a/ext/-test-/vm/depend
+++ b/ext/-test-/vm/depend
@@ -146,6 +146,7 @@ at_exit.o: $(hdrdir)/ruby/internal/special_consts.h
at_exit.o: $(hdrdir)/ruby/internal/static_assert.h
at_exit.o: $(hdrdir)/ruby/internal/stdalign.h
at_exit.o: $(hdrdir)/ruby/internal/stdbool.h
+at_exit.o: $(hdrdir)/ruby/internal/stdckdint.h
at_exit.o: $(hdrdir)/ruby/internal/symbol.h
at_exit.o: $(hdrdir)/ruby/internal/value.h
at_exit.o: $(hdrdir)/ruby/internal/value_type.h
diff --git a/ext/-test-/wait/depend b/ext/-test-/wait/depend
index 2e4887559c..7997a16709 100644
--- a/ext/-test-/wait/depend
+++ b/ext/-test-/wait/depend
@@ -156,6 +156,7 @@ wait.o: $(hdrdir)/ruby/internal/special_consts.h
wait.o: $(hdrdir)/ruby/internal/static_assert.h
wait.o: $(hdrdir)/ruby/internal/stdalign.h
wait.o: $(hdrdir)/ruby/internal/stdbool.h
+wait.o: $(hdrdir)/ruby/internal/stdckdint.h
wait.o: $(hdrdir)/ruby/internal/symbol.h
wait.o: $(hdrdir)/ruby/internal/value.h
wait.o: $(hdrdir)/ruby/internal/value_type.h