debase-ruby_core_source 3.3.6 → 4.0.0.preview2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +10 -0
  4. data/Rakefile +3 -1
  5. data/debase-ruby_core_source.gemspec +1 -0
  6. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/builtin.h +7 -1
  7. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/darray.h +1 -3
  8. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/id.h +5 -0
  9. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/insns.inc +2 -0
  10. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/insns_info.inc +310 -175
  11. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/basic_operators.h +1 -0
  12. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/bits.h +82 -0
  13. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/encoding.h +2 -0
  14. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/error.h +26 -0
  15. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/fixnum.h +1 -0
  16. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/gc.h +14 -6
  17. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/imemo.h +6 -1
  18. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/io.h +1 -1
  19. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/parse.h +2 -1
  20. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/proc.h +1 -0
  21. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/ractor.h +4 -0
  22. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/sanitizers.h +31 -39
  23. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/string.h +22 -10
  24. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/thread.h +23 -0
  25. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/vm.h +1 -1
  26. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/method.h +1 -0
  27. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/optunifs.inc +1 -1
  28. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/parse.h +2 -2
  29. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/ast.h +427 -3
  30. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/defines.h +8 -7
  31. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/diagnostic.h +1 -0
  32. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/extension.h +1 -1
  33. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/prism.h +47 -11
  34. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/version.h +2 -2
  35. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism_compile.h +5 -5
  36. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/ractor_core.h +6 -6
  37. data/lib/debase/ruby_core_source/ruby-3.4.0-p-1/revision.h +5 -0
  38. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/rubyparser.h +3 -2
  39. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/thread_pthread.h +0 -1
  40. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/version.h +1 -1
  41. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vm.inc +151 -88
  42. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vm_core.h +40 -12
  43. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vm_sync.h +3 -3
  44. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vmtc.inc +2 -0
  45. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/yjit.h +1 -0
  46. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/builtin.h +7 -1
  47. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/darray.h +101 -14
  48. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/debug_counter.h +6 -4
  49. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/dln.h +1 -2
  50. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/eval_intern.h +7 -0
  51. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/id.h +16 -5
  52. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/id_table.h +15 -0
  53. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/insns.inc +49 -6
  54. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/insns_info.inc +2432 -721
  55. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/array.h +3 -0
  56. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/basic_operators.h +2 -0
  57. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/bignum.h +1 -0
  58. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/bits.h +82 -0
  59. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/internal/box.h +81 -0
  60. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/internal/class.h +805 -0
  61. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/cmdlineopt.h +3 -4
  62. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/internal/concurrent_set.h +21 -0
  63. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/encoding.h +4 -1
  64. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/error.h +35 -0
  65. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/eval.h +8 -0
  66. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/fixnum.h +1 -0
  67. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/gc.h +54 -30
  68. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/hash.h +3 -0
  69. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/imemo.h +94 -32
  70. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/inits.h +4 -0
  71. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/io.h +30 -7
  72. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/load.h +2 -0
  73. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/numeric.h +1 -0
  74. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/object.h +1 -1
  75. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/parse.h +18 -4
  76. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/proc.h +1 -1
  77. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/ractor.h +4 -0
  78. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/re.h +7 -2
  79. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/sanitizers.h +88 -39
  80. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/internal/set_table.h +70 -0
  81. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/signal.h +1 -0
  82. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/st.h +1 -1
  83. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/string.h +39 -18
  84. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/struct.h +38 -5
  85. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/symbol.h +4 -3
  86. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/thread.h +42 -9
  87. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/time.h +4 -1
  88. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/variable.h +13 -11
  89. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/vm.h +6 -7
  90. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal.h +0 -3
  91. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/iseq.h +19 -2
  92. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/known_errors.inc +103 -103
  93. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/method.h +18 -2
  94. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/node.h +14 -3
  95. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/optunifs.inc +1 -3
  96. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/parse.h +37 -36
  97. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/ast.h +2495 -507
  98. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/defines.h +61 -7
  99. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/diagnostic.h +31 -6
  100. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/extension.h +5 -5
  101. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/node.h +0 -21
  102. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/options.h +186 -6
  103. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/parser.h +85 -40
  104. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/prism.h +88 -16
  105. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/prism/regexp.h +43 -0
  106. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/static_literals.h +3 -2
  107. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/util/pm_buffer.h +18 -0
  108. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/util/pm_char.h +1 -2
  109. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/util/pm_constant_pool.h +0 -8
  110. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/util/pm_integer.h +26 -15
  111. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/util/pm_list.h +6 -0
  112. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/util/pm_newline_list.h +11 -0
  113. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/util/pm_string.h +39 -13
  114. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/version.h +3 -3
  115. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism_compile.h +30 -12
  116. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/ractor_core.h +47 -134
  117. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/regenc.h +9 -4
  118. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/regint.h +0 -5
  119. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/regparse.h +2 -2
  120. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/revision.h +5 -0
  121. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/ruby_atomic.h +66 -0
  122. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/rubyparser.h +214 -250
  123. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/shape.h +444 -0
  124. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/symbol.h +8 -10
  125. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/thread_pthread.h +36 -27
  126. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/variable.h +8 -20
  127. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vm.inc +884 -344
  128. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vm_callinfo.h +110 -75
  129. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vm_core.h +220 -106
  130. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/vm_exec.h +15 -4
  131. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vm_insnhelper.h +11 -6
  132. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vm_sync.h +23 -4
  133. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vmtc.inc +42 -6
  134. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/yjit.h +5 -3
  135. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/zjit.h +47 -0
  136. data/lib/debase/ruby_core_source/version.rb +1 -1
  137. data/lib/debase/ruby_core_source.rb +4 -2
  138. data/test/deduce_source_dir_test.rb +31 -0
  139. metadata +307 -293
  140. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/class.h +0 -283
  141. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/regexp.h +0 -33
  142. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string_list.h +0 -44
  143. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/revision.h +0 -5
  144. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/shape.h +0 -233
  145. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/revision.h +0 -5
  146. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rjit.h +0 -101
  147. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rjit_c.h +0 -165
  148. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ruby_atomic.h +0 -23
  149. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/addr2line.h +0 -0
  150. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/build_assert/build_assert.h +0 -0
  151. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/check_type/check_type.h +0 -0
  152. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/container_of/container_of.h +0 -0
  153. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/list/list.h +0 -0
  154. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/str/str.h +0 -0
  155. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/constant.h +0 -0
  156. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/debug_counter.h +0 -0
  157. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/dln.h +0 -0
  158. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/encindex.h +0 -0
  159. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/eval_intern.h +0 -0
  160. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/hrtime.h +0 -0
  161. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/id_table.h +0 -0
  162. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/array.h +0 -0
  163. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/bignum.h +0 -0
  164. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/class.h +0 -0
  165. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/cmdlineopt.h +0 -0
  166. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compar.h +0 -0
  167. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compile.h +0 -0
  168. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compilers.h +0 -0
  169. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/complex.h +0 -0
  170. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/cont.h +0 -0
  171. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/dir.h +0 -0
  172. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enc.h +0 -0
  173. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enum.h +0 -0
  174. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enumerator.h +0 -0
  175. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/eval.h +0 -0
  176. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/file.h +0 -0
  177. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/hash.h +0 -0
  178. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/inits.h +0 -0
  179. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/load.h +0 -0
  180. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/loadpath.h +0 -0
  181. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/math.h +0 -0
  182. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/missing.h +0 -0
  183. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/numeric.h +0 -0
  184. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/object.h +0 -0
  185. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/process.h +0 -0
  186. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/random.h +0 -0
  187. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/range.h +0 -0
  188. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/rational.h +0 -0
  189. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/re.h +0 -0
  190. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/ruby_parser.h +0 -0
  191. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/serial.h +0 -0
  192. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/signal.h +0 -0
  193. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/st.h +0 -0
  194. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/static_assert.h +0 -0
  195. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/struct.h +0 -0
  196. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/symbol.h +0 -0
  197. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/time.h +0 -0
  198. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/transcode.h +0 -0
  199. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/util.h +0 -0
  200. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/variable.h +0 -0
  201. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/warnings.h +0 -0
  202. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal.h +0 -0
  203. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/iseq.h +0 -0
  204. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/known_errors.inc +0 -0
  205. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/node.h +0 -0
  206. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/node_name.inc +0 -0
  207. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/optinsn.inc +0 -0
  208. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_bits.h +0 -0
  209. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_node.h +0 -0
  210. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_st.h +0 -0
  211. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_value.h +0 -0
  212. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/encoding.h +0 -0
  213. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/node.h +0 -0
  214. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/options.h +0 -0
  215. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/pack.h +0 -0
  216. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/parser.h +0 -0
  217. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/prettyprint.h +0 -0
  218. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/regexp.h +0 -0
  219. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/static_literals.h +0 -0
  220. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_buffer.h +0 -0
  221. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/util/pm_char.h +0 -0
  222. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/util/pm_constant_pool.h +0 -0
  223. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/util/pm_integer.h +0 -0
  224. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_list.h +0 -0
  225. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_memchr.h +0 -0
  226. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/util/pm_newline_list.h +0 -0
  227. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/util/pm_string.h +0 -0
  228. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_strncasecmp.h +0 -0
  229. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_strpbrk.h +0 -0
  230. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/probes_helper.h +0 -0
  231. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/regenc.h +0 -0
  232. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/regint.h +0 -0
  233. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/regparse.h +0 -0
  234. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/rjit.h +0 -0
  235. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/rjit_c.h +0 -0
  236. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ruby_assert.h +0 -0
  237. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ruby_atomic.h +0 -0
  238. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/shape.h +0 -0
  239. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/siphash.h +0 -0
  240. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/symbol.h +0 -0
  241. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/thread_none.h +0 -0
  242. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/thread_win32.h +0 -0
  243. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/timev.h +0 -0
  244. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/transcode_data.h +0 -0
  245. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/variable.h +0 -0
  246. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_call_iseq_optimized.inc +0 -0
  247. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vm_callinfo.h +0 -0
  248. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_debug.h +0 -0
  249. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_exec.h +0 -0
  250. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vm_insnhelper.h +0 -0
  251. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_opts.h +0 -0
  252. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/addr2line.h +0 -0
  253. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ccan/build_assert/build_assert.h +0 -0
  254. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ccan/check_type/check_type.h +0 -0
  255. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ccan/container_of/container_of.h +0 -0
  256. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ccan/list/list.h +0 -0
  257. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ccan/str/str.h +0 -0
  258. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/constant.h +0 -0
  259. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/encindex.h +0 -0
  260. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/hrtime.h +0 -0
  261. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/compar.h +0 -0
  262. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/compile.h +0 -0
  263. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/compilers.h +0 -0
  264. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/complex.h +0 -0
  265. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/cont.h +0 -0
  266. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/dir.h +0 -0
  267. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/enc.h +0 -0
  268. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/enum.h +0 -0
  269. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/enumerator.h +0 -0
  270. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/file.h +0 -0
  271. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/loadpath.h +0 -0
  272. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/math.h +0 -0
  273. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/missing.h +0 -0
  274. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/process.h +0 -0
  275. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/random.h +0 -0
  276. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/range.h +0 -0
  277. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/rational.h +0 -0
  278. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/ruby_parser.h +0 -0
  279. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/serial.h +0 -0
  280. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/static_assert.h +0 -0
  281. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/transcode.h +0 -0
  282. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/util.h +0 -0
  283. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/warnings.h +0 -0
  284. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/node_name.inc +0 -0
  285. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/optinsn.inc +0 -0
  286. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/parser_bits.h +0 -0
  287. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/parser_node.h +0 -0
  288. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/parser_st.h +0 -0
  289. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/parser_value.h +0 -0
  290. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/encoding.h +0 -0
  291. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/pack.h +0 -0
  292. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/prettyprint.h +0 -0
  293. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/util/pm_memchr.h +0 -0
  294. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/util/pm_strncasecmp.h +0 -0
  295. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/util/pm_strpbrk.h +0 -0
  296. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/probes_helper.h +0 -0
  297. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ruby_assert.h +0 -0
  298. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/siphash.h +0 -0
  299. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/thread_none.h +0 -0
  300. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/thread_win32.h +0 -0
  301. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/timev.h +0 -0
  302. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/transcode_data.h +0 -0
  303. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/version.h +0 -0
  304. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/vm_call_iseq_optimized.inc +0 -0
  305. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/vm_debug.h +0 -0
  306. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/vm_opts.h +0 -0
@@ -38,6 +38,7 @@ enum ruby_basic_operators {
38
38
  BOP_CMP,
39
39
  BOP_DEFAULT,
40
40
  BOP_PACK,
41
+ BOP_INCLUDE_P,
41
42
 
42
43
  BOP_LAST_
43
44
  };
@@ -90,6 +90,7 @@
90
90
 
91
91
  #define UNSIGNED_INTEGER_MAX(T) ((T)~(T)0)
92
92
 
93
+ #ifndef MUL_OVERFLOW_SIGNED_INTEGER_P
93
94
  #if __has_builtin(__builtin_mul_overflow_p)
94
95
  # define MUL_OVERFLOW_P(a, b) \
95
96
  __builtin_mul_overflow_p((a), (b), (__typeof__(a * b))0)
@@ -131,6 +132,87 @@
131
132
  # define MUL_OVERFLOW_LONG_P(a, b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, LONG_MIN, LONG_MAX)
132
133
  # define MUL_OVERFLOW_INT_P(a, b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, INT_MIN, INT_MAX)
133
134
  #endif
135
+ #endif
136
+
137
+ #ifndef ADD_OVERFLOW_SIGNED_INTEGER_P
138
+ #if __has_builtin(__builtin_add_overflow_p)
139
+ # define ADD_OVERFLOW_P(a, b) \
140
+ __builtin_add_overflow_p((a), (b), (__typeof__(a * b))0)
141
+ #elif __has_builtin(__builtin_add_overflow)
142
+ # define ADD_OVERFLOW_P(a, b) \
143
+ __extension__ ({ __typeof__(a) c; __builtin_add_overflow((a), (b), &c); })
144
+ #endif
145
+
146
+ #define ADD_OVERFLOW_SIGNED_INTEGER_P(a, b, min, max) ( \
147
+ (a) > 0 ? (b) > (max) - (a) : (b) < (min) - (a))
148
+
149
+ #if __has_builtin(__builtin_add_overflow_p)
150
+ /* __builtin_add_overflow_p can take bitfield */
151
+ /* and GCC permits bitfields for integers other than int */
152
+ # define ADD_OVERFLOW_FIXNUM_P(a, b) \
153
+ __extension__ ({ \
154
+ struct { long fixnum : sizeof(long) * CHAR_BIT - 1; } c = { 0 }; \
155
+ __builtin_add_overflow_p((a), (b), c.fixnum); \
156
+ })
157
+ #else
158
+ # define ADD_OVERFLOW_FIXNUM_P(a, b) \
159
+ ADD_OVERFLOW_SIGNED_INTEGER_P(a, b, FIXNUM_MIN, FIXNUM_MAX)
160
+ #endif
161
+
162
+ #if defined(ADD_OVERFLOW_P) && defined(USE___BUILTIN_ADD_OVERFLOW_LONG_LONG)
163
+ # define ADD_OVERFLOW_LONG_LONG_P(a, b) ADD_OVERFLOW_P(a, b)
164
+ #else
165
+ # define ADD_OVERFLOW_LONG_LONG_P(a, b) ADD_OVERFLOW_SIGNED_INTEGER_P(a, b, LLONG_MIN, LLONG_MAX)
166
+ #endif
167
+
168
+ #ifdef ADD_OVERFLOW_P
169
+ # define ADD_OVERFLOW_LONG_P(a, b) ADD_OVERFLOW_P(a, b)
170
+ # define ADD_OVERFLOW_INT_P(a, b) ADD_OVERFLOW_P(a, b)
171
+ #else
172
+ # define ADD_OVERFLOW_LONG_P(a, b) ADD_OVERFLOW_SIGNED_INTEGER_P(a, b, LONG_MIN, LONG_MAX)
173
+ # define ADD_OVERFLOW_INT_P(a, b) ADD_OVERFLOW_SIGNED_INTEGER_P(a, b, INT_MIN, INT_MAX)
174
+ #endif
175
+ #endif
176
+
177
+ #ifndef SUB_OVERFLOW_SIGNED_INTEGER_P
178
+ #if __has_builtin(__builtin_sub_overflow_p)
179
+ # define SUB_OVERFLOW_P(a, b) \
180
+ __builtin_sub_overflow_p((a), (b), (__typeof__(a * b))0)
181
+ #elif __has_builtin(__builtin_sub_overflow)
182
+ # define SUB_OVERFLOW_P(a, b) \
183
+ __extension__ ({ __typeof__(a) c; __builtin_sub_overflow((a), (b), &c); })
184
+ #endif
185
+
186
+ #define SUB_OVERFLOW_SIGNED_INTEGER_P(a, b, min, max) ( \
187
+ (b) > 0 ? (a) < (min) + (b) : (a) > (max) + (b))
188
+
189
+ #if __has_builtin(__builtin_sub_overflow_p)
190
+ /* __builtin_sub_overflow_p can take bitfield */
191
+ /* and GCC permits bitfields for integers other than int */
192
+ # define SUB_OVERFLOW_FIXNUM_P(a, b) \
193
+ __extension__ ({ \
194
+ struct { long fixnum : sizeof(long) * CHAR_BIT - 1; } c = { 0 }; \
195
+ __builtin_sub_overflow_p((a), (b), c.fixnum); \
196
+ })
197
+ #else
198
+ # define SUB_OVERFLOW_FIXNUM_P(a, b) \
199
+ SUB_OVERFLOW_SIGNED_INTEGER_P(a, b, FIXNUM_MIN, FIXNUM_MAX)
200
+ #endif
201
+
202
+ #if defined(SUB_OVERFLOW_P) && defined(USE___BUILTIN_SUB_OVERFLOW_LONG_LONG)
203
+ # define SUB_OVERFLOW_LONG_LONG_P(a, b) SUB_OVERFLOW_P(a, b)
204
+ #else
205
+ # define SUB_OVERFLOW_LONG_LONG_P(a, b) SUB_OVERFLOW_SIGNED_INTEGER_P(a, b, LLONG_MIN, LLONG_MAX)
206
+ #endif
207
+
208
+ #ifdef SUB_OVERFLOW_P
209
+ # define SUB_OVERFLOW_LONG_P(a, b) SUB_OVERFLOW_P(a, b)
210
+ # define SUB_OVERFLOW_INT_P(a, b) SUB_OVERFLOW_P(a, b)
211
+ #else
212
+ # define SUB_OVERFLOW_LONG_P(a, b) SUB_OVERFLOW_SIGNED_INTEGER_P(a, b, LONG_MIN, LONG_MAX)
213
+ # define SUB_OVERFLOW_INT_P(a, b) SUB_OVERFLOW_SIGNED_INTEGER_P(a, b, INT_MIN, INT_MAX)
214
+ #endif
215
+ #endif
134
216
 
135
217
  #ifdef HAVE_UINT128_T
136
218
  # define bit_length(x) \
@@ -28,6 +28,8 @@ int rb_encdb_dummy(const char *name);
28
28
  void rb_encdb_declare(const char *name);
29
29
  void rb_enc_set_base(const char *name, const char *orig);
30
30
  int rb_enc_set_dummy(int index);
31
+ void rb_enc_raw_set(VALUE obj, rb_encoding *enc);
32
+
31
33
  PUREFUNC(int rb_data_is_encoding(VALUE obj));
32
34
 
33
35
  /* vm.c */
@@ -72,6 +72,7 @@ const char *rb_builtin_type_name(int t);
72
72
  const char *rb_builtin_class_name(VALUE x);
73
73
  PRINTF_ARGS(void rb_warn_deprecated(const char *fmt, const char *suggest, ...), 1, 3);
74
74
  PRINTF_ARGS(void rb_warn_deprecated_to_remove(const char *removal, const char *fmt, const char *suggest, ...), 2, 4);
75
+ PRINTF_ARGS(void rb_warn_reserved_name(const char *removal, const char *fmt, ...), 2, 3);
75
76
  #if RUBY_DEBUG
76
77
  # include "ruby/version.h"
77
78
  # define RUBY_VERSION_SINCE(major, minor) (RUBY_API_VERSION_CODE >= (major * 10000) + (minor) * 100)
@@ -110,6 +111,14 @@ rb_deprecated_method_to_be_removed(const char *removal)
110
111
  RBIMPL_ATTR_DIAGNOSE_IF(RUBY_VERSION_STRING_SINCE(removal), "deprecated method to be removed", "error")
111
112
  {
112
113
  }
114
+
115
+ RBIMPL_ATTR_FORCEINLINE()
116
+ static void
117
+ rb_diagnose_reserved_name_at(const char *coming)
118
+ RBIMPL_ATTR_DIAGNOSE_IF(!RUBY_VERSION_isdigit(coming[0]), "malformed version number", "error")
119
+ RBIMPL_ATTR_DIAGNOSE_IF(RUBY_VERSION_STRING_SINCE(coming), "reserved name already in use", "error")
120
+ {
121
+ }
113
122
  # else
114
123
  RBIMPL_ATTR_ERROR(("deprecated"))
115
124
  void rb_deprecated_method_to_be_removed(const char *);
@@ -117,16 +126,32 @@ void rb_deprecated_method_to_be_removed(const char *);
117
126
  (sizeof(char[1-2*(!RUBY_VERSION_isdigit(removal[0]) || RUBY_VERSION_STRING_SINCE(removal))])!=1 ? \
118
127
  rb_deprecated_method_to_be_removed(removal) : \
119
128
  RBIMPL_ASSERT_NOTHING)
129
+
130
+ RBIMPL_ATTR_ERROR(("deprecated"))
131
+ void rb_diagnose_reserved_name_at(const char *);
132
+ # define rb_diagnose_reserved_name_at(coming) \
133
+ (sizeof(char[1-2*(!RUBY_VERSION_isdigit(coming[0]) || RUBY_VERSION_STRING_SINCE(coming))])!=1 ? \
134
+ rb_diagnose_reserved_name_at(coming) : \
135
+ RBIMPL_ASSERT_NOTHING)
136
+
120
137
  # endif
121
138
  # define rb_warn_deprecated_to_remove_at(removal, ...) \
122
139
  (rb_deprecated_method_to_be_removed(#removal), \
123
140
  rb_warn_deprecated_to_remove(#removal, __VA_ARGS__))
141
+
142
+ # define rb_warn_reserved_name_at(coming, ...) \
143
+ (rb_diagnose_reserved_name_at(#coming), \
144
+ rb_warn_reserved_name(#coming, __VA_ARGS__))
124
145
  # endif
125
146
  #endif
126
147
  #ifndef rb_warn_deprecated_to_remove_at
127
148
  # define rb_warn_deprecated_to_remove_at(removal, ...) \
128
149
  rb_warn_deprecated_to_remove(#removal, __VA_ARGS__)
129
150
  #endif
151
+ #ifndef rb_warn_reserved_name_at
152
+ # define rb_warn_reserved_name_at(removal, ...) \
153
+ rb_warn_reserved_name(#removal, __VA_ARGS__)
154
+ #endif
130
155
  #ifndef RUBY_VERSION_SINCE
131
156
  # define RUBY_VERSION_SINCE(major, minor) 0
132
157
  #endif
@@ -160,6 +185,7 @@ NORETURN(static inline void rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name)
160
185
  static inline void Check_Type(VALUE v, enum ruby_value_type t);
161
186
  static inline bool rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type);
162
187
  #define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
188
+ void rb_bug_without_die(const char *fmt, ...);
163
189
 
164
190
  RUBY_SYMBOL_EXPORT_BEGIN
165
191
  /* error.c (export) */
@@ -10,6 +10,7 @@
10
10
  */
11
11
  #include "ruby/internal/config.h" /* for HAVE_LONG_LONG */
12
12
  #include <limits.h> /* for CHAR_BIT */
13
+ #include "internal/bits.h" /* for MUL_OVERFLOW_FIXNUM_P */
13
14
  #include "internal/compilers.h" /* for __has_builtin */
14
15
  #include "ruby/internal/stdbool.h" /* for bool */
15
16
  #include "ruby/intern.h" /* for rb_big_mul */
@@ -16,8 +16,8 @@
16
16
  #include "ruby/ruby.h" /* for rb_event_flag_t */
17
17
  #include "vm_core.h" /* for GET_EC() */
18
18
 
19
- #ifndef USE_SHARED_GC
20
- # define USE_SHARED_GC 0
19
+ #ifndef USE_MODULAR_GC
20
+ # define USE_MODULAR_GC 0
21
21
  #endif
22
22
 
23
23
  #if defined(__x86_64__) && !defined(_ILP32) && defined(__GNUC__)
@@ -175,7 +175,6 @@ struct rb_objspace; /* in vm_core.h */
175
175
  if (_already_disabled == Qfalse) rb_gc_enable()
176
176
 
177
177
  /* gc.c */
178
- extern int ruby_disable_gc;
179
178
  RUBY_ATTR_MALLOC void *ruby_mimmalloc(size_t size);
180
179
  RUBY_ATTR_MALLOC void *ruby_mimcalloc(size_t num, size_t size);
181
180
  void ruby_mimfree(void *ptr);
@@ -197,7 +196,7 @@ static inline void *ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size
197
196
  static inline void *ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2, 3));
198
197
  static inline void ruby_sized_xfree_inlined(void *ptr, size_t size);
199
198
 
200
- void *rb_gc_ractor_cache_alloc(void);
199
+ void *rb_gc_ractor_cache_alloc(rb_ractor_t *ractor);
201
200
  void rb_gc_ractor_cache_free(void *cache);
202
201
 
203
202
  bool rb_gc_size_allocatable_p(size_t size);
@@ -213,6 +212,9 @@ void rb_gc_ref_update_table_values_only(st_table *tbl);
213
212
 
214
213
  void rb_gc_initial_stress_set(VALUE flag);
215
214
 
215
+ void rb_gc_before_fork(void);
216
+ void rb_gc_after_fork(rb_pid_t pid);
217
+
216
218
  #define rb_gc_mark_and_move_ptr(ptr) do { \
217
219
  VALUE _obj = (VALUE)*(ptr); \
218
220
  rb_gc_mark_and_move(&_obj); \
@@ -225,6 +227,7 @@ void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), v
225
227
  void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
226
228
  int rb_objspace_internal_object_p(VALUE obj);
227
229
  int rb_objspace_garbage_object_p(VALUE obj);
230
+ bool rb_gc_pointer_to_heap_p(VALUE obj);
228
231
 
229
232
  void rb_objspace_each_objects(
230
233
  int (*callback)(void *start, void *end, size_t stride, void *data),
@@ -234,6 +237,7 @@ size_t rb_gc_obj_slot_size(VALUE obj);
234
237
 
235
238
  VALUE rb_gc_disable_no_rest(void);
236
239
 
240
+ #define RB_GC_MAX_NAME_LEN 20
237
241
 
238
242
  /* gc.c (export) */
239
243
  const char *rb_objspace_data_type_name(VALUE obj);
@@ -248,14 +252,18 @@ void *ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size) RUBY_ATTR
248
252
  void *ruby_sized_xrealloc2(void *ptr, size_t new_count, size_t element_size, size_t old_count) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2, 3));
249
253
  void ruby_sized_xfree(void *x, size_t size);
250
254
 
251
- #if USE_SHARED_GC
252
- void ruby_load_external_gc_from_argv(int argc, char **argv);
255
+ const char *rb_gc_active_gc_name(void);
256
+ int rb_gc_modular_gc_loaded_p(void);
257
+
258
+ #if USE_MODULAR_GC
259
+ void ruby_load_modular_gc_from_argv(int argc, char **argv);
253
260
  #endif
254
261
  RUBY_SYMBOL_EXPORT_END
255
262
 
256
263
  int rb_ec_stack_check(struct rb_execution_context_struct *ec);
257
264
  void rb_gc_writebarrier_remember(VALUE obj);
258
265
  const char *rb_obj_info(VALUE obj);
266
+ void ruby_annotate_mmap(const void *addr, unsigned long size, const char *name);
259
267
 
260
268
  #if defined(HAVE_MALLOC_USABLE_SIZE) || defined(HAVE_MALLOC_SIZE) || defined(_WIN32)
261
269
 
@@ -79,7 +79,12 @@ struct vm_ifunc_argc {
79
79
  #endif
80
80
  };
81
81
 
82
- /*! IFUNC (Internal FUNCtion) */
82
+ /*! IFUNC (Internal FUNCtion)
83
+ *
84
+ * Bookkeeping for converting a C function and some closed-over data into a
85
+ * block passable to methods. Like Ruby Proc, but not directly accessible at
86
+ * Ruby level since this is an imemo. See rb_block_call() and friends.
87
+ */
83
88
  struct vm_ifunc {
84
89
  VALUE flags;
85
90
  VALUE *svar_lep;
@@ -15,7 +15,7 @@ struct rb_io;
15
15
 
16
16
  #include "ruby/io.h" /* for rb_io_t */
17
17
 
18
- #define IO_WITHOUT_GVL(func, arg) rb_thread_call_without_gvl(func, arg, RUBY_UBF_IO, 0)
18
+ #define IO_WITHOUT_GVL(func, arg) rb_nogvl(func, arg, RUBY_UBF_IO, 0, RB_NOGVL_OFFLOAD_SAFE)
19
19
  #define IO_WITHOUT_GVL_INT(func, arg) (int)(VALUE)IO_WITHOUT_GVL(func, arg)
20
20
 
21
21
  /** Ruby's IO, metadata and buffers. */
@@ -79,8 +79,9 @@ void rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str);
79
79
  int rb_parser_dvar_defined_ref(struct parser_params*, ID, ID**);
80
80
  ID rb_parser_internal_id(struct parser_params*);
81
81
  int rb_parser_reg_fragment_check(struct parser_params*, rb_parser_string_t*, int);
82
- int rb_reg_named_capture_assign_iter_impl(struct parser_params *p, const char *s, long len, rb_encoding *enc, NODE **succ_block, const rb_code_location_t *loc);
82
+ int rb_reg_named_capture_assign_iter_impl(struct parser_params *p, const char *s, long len, rb_encoding *enc, NODE **succ_block, const rb_code_location_t *loc, rb_parser_assignable_func assignable);
83
83
  int rb_parser_local_defined(struct parser_params *p, ID id, const struct rb_iseq_struct *iseq);
84
+ NODE *rb_parser_assignable(struct parser_params *p, ID id, NODE *val, const YYLTYPE *loc);
84
85
 
85
86
  RUBY_SYMBOL_EXPORT_END
86
87
 
@@ -23,6 +23,7 @@ VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additi
23
23
  VALUE rb_callable_receiver(VALUE);
24
24
 
25
25
  VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val);
26
+ VALUE rb_func_proc_dup(VALUE src_obj);
26
27
  VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc);
27
28
  VALUE rb_iseq_location(const struct rb_iseq_struct *iseq);
28
29
  VALUE rb_sym_to_proc(VALUE sym);
@@ -3,4 +3,8 @@
3
3
 
4
4
  void rb_ractor_ensure_main_ractor(const char *msg);
5
5
 
6
+ RUBY_SYMBOL_EXPORT_BEGIN
7
+ void rb_ractor_setup_belonging(VALUE obj);
8
+ RUBY_SYMBOL_EXPORT_END
9
+
6
10
  #endif /* INTERNAL_RACTOR_H */
@@ -16,7 +16,7 @@
16
16
  #endif
17
17
 
18
18
  #ifdef HAVE_SANITIZER_ASAN_INTERFACE_H
19
- # if __has_feature(address_sanitizer)
19
+ # if __has_feature(address_sanitizer) || defined(__SANITIZE_ADDRESS__)
20
20
  # define RUBY_ASAN_ENABLED
21
21
  # include <sanitizer/asan_interface.h>
22
22
  # endif
@@ -39,6 +39,9 @@
39
39
  #elif defined(RUBY_ASAN_ENABLED)
40
40
  # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
41
41
  __attribute__((__no_sanitize__("address"), __noinline__)) x
42
+ #elif defined(RUBY_MSAN_ENABLED)
43
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
44
+ __attribute__((__no_sanitize__("memory"), __noinline__)) x
42
45
  #elif defined(NO_SANITIZE_ADDRESS)
43
46
  # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
44
47
  NO_SANITIZE_ADDRESS(NOINLINE(x))
@@ -54,10 +57,11 @@
54
57
  # include "internal/warnings.h"
55
58
  # undef NO_SANITIZE
56
59
  # define NO_SANITIZE(x, y) \
57
- COMPILER_WARNING_PUSH; \
58
- COMPILER_WARNING_IGNORED(-Wattributes); \
60
+ COMPILER_WARNING_PUSH \
61
+ COMPILER_WARNING_IGNORED(-Wattributes) \
59
62
  __attribute__((__no_sanitize__(x))) y; \
60
- COMPILER_WARNING_POP
63
+ COMPILER_WARNING_POP \
64
+ y
61
65
  #endif
62
66
 
63
67
  #ifndef NO_SANITIZE
@@ -115,26 +119,22 @@ asan_poison_memory_region(const volatile void *ptr, size_t size)
115
119
  __asan_poison_memory_region(ptr, size);
116
120
  }
117
121
 
118
- /**
119
- * This is a variant of asan_poison_memory_region that takes a VALUE.
120
- *
121
- * @param[in] obj target object.
122
- */
123
- static inline void
124
- asan_poison_object(VALUE obj)
125
- {
126
- MAYBE_UNUSED(struct RVALUE *) ptr = (void *)obj;
127
- asan_poison_memory_region(ptr, SIZEOF_VALUE);
128
- }
129
-
130
122
  #ifdef RUBY_ASAN_ENABLED
131
123
  #define asan_poison_object_if(ptr, obj) do { \
132
- if (ptr) asan_poison_object(obj); \
124
+ if (ptr) rb_asan_poison_object(obj); \
133
125
  } while (0)
134
126
  #else
135
127
  #define asan_poison_object_if(ptr, obj) ((void)(ptr), (void)(obj))
136
128
  #endif
137
129
 
130
+ RUBY_SYMBOL_EXPORT_BEGIN
131
+ /**
132
+ * This is a variant of asan_poison_memory_region that takes a VALUE.
133
+ *
134
+ * @param[in] obj target object.
135
+ */
136
+ void rb_asan_poison_object(VALUE obj);
137
+
138
138
  /**
139
139
  * This function predicates if the given object is fully addressable or not.
140
140
  *
@@ -142,12 +142,17 @@ asan_poison_object(VALUE obj)
142
142
  * @retval 0 the given object is fully addressable.
143
143
  * @retval otherwise pointer to first such byte who is poisoned.
144
144
  */
145
- static inline void *
146
- asan_poisoned_object_p(VALUE obj)
147
- {
148
- MAYBE_UNUSED(struct RVALUE *) ptr = (void *)obj;
149
- return __asan_region_is_poisoned(ptr, SIZEOF_VALUE);
150
- }
145
+ void *rb_asan_poisoned_object_p(VALUE obj);
146
+
147
+ /**
148
+ * This is a variant of asan_unpoison_memory_region that takes a VALUE.
149
+ *
150
+ * @param[in] obj target object.
151
+ * @param[in] malloc_p if the memory region is like a malloc's return value or not.
152
+ */
153
+ void rb_asan_unpoison_object(VALUE obj, bool newobj_p);
154
+
155
+ RUBY_SYMBOL_EXPORT_END
151
156
 
152
157
  /**
153
158
  * This function asserts that a (formally poisoned) memory region from ptr to
@@ -176,24 +181,11 @@ asan_unpoison_memory_region(const volatile void *ptr, size_t size, bool malloc_p
176
181
  }
177
182
  }
178
183
 
179
- /**
180
- * This is a variant of asan_unpoison_memory_region that takes a VALUE.
181
- *
182
- * @param[in] obj target object.
183
- * @param[in] malloc_p if the memory region is like a malloc's return value or not.
184
- */
185
- static inline void
186
- asan_unpoison_object(VALUE obj, bool newobj_p)
187
- {
188
- MAYBE_UNUSED(struct RVALUE *) ptr = (void *)obj;
189
- asan_unpoison_memory_region(ptr, SIZEOF_VALUE, newobj_p);
190
- }
191
-
192
184
  static inline void *
193
185
  asan_unpoison_object_temporary(VALUE obj)
194
186
  {
195
- void *ptr = asan_poisoned_object_p(obj);
196
- asan_unpoison_object(obj, false);
187
+ void *ptr = rb_asan_poisoned_object_p(obj);
188
+ rb_asan_unpoison_object(obj, false);
197
189
  return ptr;
198
190
  }
199
191
 
@@ -201,7 +193,7 @@ static inline void *
201
193
  asan_poison_object_restore(VALUE obj, void *ptr)
202
194
  {
203
195
  if (ptr) {
204
- asan_poison_object(obj);
196
+ rb_asan_poison_object(obj);
205
197
  }
206
198
  return NULL;
207
199
  }
@@ -15,9 +15,11 @@
15
15
  #include "ruby/encoding.h" /* for rb_encoding */
16
16
  #include "ruby/ruby.h" /* for VALUE */
17
17
 
18
- #define STR_NOEMBED FL_USER1
19
- #define STR_SHARED FL_USER2 /* = ELTS_SHARED */
20
- #define STR_CHILLED FL_USER3
18
+ #define STR_SHARED FL_USER0 /* = ELTS_SHARED */
19
+ #define STR_NOEMBED FL_USER1
20
+ #define STR_CHILLED (FL_USER2 | FL_USER3)
21
+ #define STR_CHILLED_LITERAL FL_USER2
22
+ #define STR_CHILLED_SYMBOL_TO_S FL_USER3
21
23
 
22
24
  enum ruby_rstring_private_flags {
23
25
  RSTRING_CHILLED = STR_CHILLED,
@@ -51,12 +53,18 @@ int rb_enc_str_coderange_scan(VALUE str, rb_encoding *enc);
51
53
  int rb_ascii8bit_appendable_encoding_index(rb_encoding *enc, unsigned int code);
52
54
  VALUE rb_str_include(VALUE str, VALUE arg);
53
55
  VALUE rb_str_byte_substr(VALUE str, VALUE beg, VALUE len);
56
+ VALUE rb_str_substr_two_fixnums(VALUE str, VALUE beg, VALUE len, int empty);
54
57
  VALUE rb_str_tmp_frozen_no_embed_acquire(VALUE str);
55
58
  void rb_str_make_embedded(VALUE);
56
59
  VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
57
60
  size_t rb_str_size_as_embedded(VALUE);
58
61
  bool rb_str_reembeddable_p(VALUE);
59
62
  VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE);
63
+ VALUE rb_str_with_debug_created_info(VALUE, VALUE, int);
64
+
65
+ /* error.c */
66
+ void rb_warn_unchilled_literal(VALUE str);
67
+ void rb_warn_unchilled_symbol_to_s(VALUE str);
60
68
 
61
69
  static inline bool STR_EMBED_P(VALUE str);
62
70
  static inline bool STR_SHARED_P(VALUE str);
@@ -123,14 +131,18 @@ CHILLED_STRING_P(VALUE obj)
123
131
  static inline void
124
132
  CHILLED_STRING_MUTATED(VALUE str)
125
133
  {
134
+ VALUE chilled_reason = RB_FL_TEST_RAW(str, STR_CHILLED);
126
135
  FL_UNSET_RAW(str, STR_CHILLED);
127
- rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "literal string will be frozen in the future");
128
- }
129
-
130
- static inline void
131
- STR_CHILL_RAW(VALUE str)
132
- {
133
- FL_SET_RAW(str, STR_CHILLED);
136
+ switch (chilled_reason) {
137
+ case STR_CHILLED_SYMBOL_TO_S:
138
+ rb_warn_unchilled_symbol_to_s(str);
139
+ break;
140
+ case STR_CHILLED_LITERAL:
141
+ rb_warn_unchilled_literal(str);
142
+ break;
143
+ default:
144
+ rb_bug("RString was chilled for multiple reasons");
145
+ }
134
146
  }
135
147
 
136
148
  static inline bool
@@ -66,6 +66,8 @@ struct rb_io_close_wait_list {
66
66
  int rb_notify_fd_close(int fd, struct rb_io_close_wait_list *busy);
67
67
  void rb_notify_fd_close_wait(struct rb_io_close_wait_list *busy);
68
68
 
69
+ void rb_ec_check_ints(struct rb_execution_context_struct *ec);
70
+
69
71
  RUBY_SYMBOL_EXPORT_BEGIN
70
72
 
71
73
  void *rb_thread_prevent_fork(void *(*func)(void *), void *data); /* for ext/socket/raddrinfo.c */
@@ -82,4 +84,25 @@ RUBY_SYMBOL_EXPORT_END
82
84
  int rb_threadptr_execute_interrupts(struct rb_thread_struct *th, int blocking_timing);
83
85
  bool rb_thread_mn_schedulable(VALUE thread);
84
86
 
87
+ // interrupt exec
88
+
89
+ typedef VALUE (rb_interrupt_exec_func_t)(void *data);
90
+
91
+ enum rb_interrupt_exec_flag {
92
+ rb_interrupt_exec_flag_none = 0x00,
93
+ rb_interrupt_exec_flag_value_data = 0x01,
94
+ };
95
+
96
+ // interrupt the target_th and run func.
97
+ struct rb_ractor_struct;
98
+
99
+ void rb_threadptr_interrupt_exec(struct rb_thread_struct *target_th,
100
+ rb_interrupt_exec_func_t *func, void *data, enum rb_interrupt_exec_flag flags);
101
+
102
+ // create a thread in the target_r and run func on the created thread.
103
+ void rb_ractor_interrupt_exec(struct rb_ractor_struct *target_r,
104
+ rb_interrupt_exec_func_t *func, void *data, enum rb_interrupt_exec_flag flags);
105
+
106
+ void rb_threadptr_interrupt_exec_task_mark(struct rb_thread_struct *th);
107
+
85
108
  #endif /* INTERNAL_THREAD_H */
@@ -77,6 +77,7 @@ VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
77
77
  void rb_check_stack_overflow(void);
78
78
  #define RB_BLOCK_NO_USE_PACKED_ARGS 2
79
79
  VALUE rb_block_call2(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t bl_proc, VALUE data2, long flags);
80
+ struct vm_ifunc *rb_current_ifunc(void);
80
81
 
81
82
  #if USE_YJIT
82
83
  /* vm_exec.c */
@@ -96,7 +97,6 @@ struct rb_iseq_struct;
96
97
  const struct rb_callcache *rb_vm_search_method_slowpath(const struct rb_callinfo *ci, VALUE klass);
97
98
 
98
99
  /* vm_method.c */
99
- struct rb_execution_context_struct;
100
100
  int rb_ec_obj_respond_to(struct rb_execution_context_struct *ec, VALUE obj, ID id, int priv);
101
101
 
102
102
  void rb_clear_constant_cache(void);
@@ -237,6 +237,7 @@ st_index_t rb_hash_method_entry(st_index_t hash, const rb_method_entry_t *me);
237
237
 
238
238
  VALUE rb_method_entry_location(const rb_method_entry_t *me);
239
239
 
240
+ void rb_free_method_entry_vm_weak_references(const rb_method_entry_t *me);
240
241
  void rb_free_method_entry(const rb_method_entry_t *me);
241
242
 
242
243
  const rb_method_entry_t *rb_method_entry_clone(const rb_method_entry_t *me);
@@ -38,6 +38,6 @@
38
38
 
39
39
  /* Let .bss section automatically initialize this variable */
40
40
  /* cf. Section 6.7.8 of ISO/IEC 9899:1999 */
41
- static const int *const *const unified_insns_data[218];
41
+ static const int *const *const unified_insns_data[220];
42
42
 
43
43
  ASSERT_VM_INSTRUCTION_SIZE(unified_insns_data);
@@ -1,4 +1,4 @@
1
- /* A Bison parser, made by Lrama 0.6.10. */
1
+ /* A Bison parser, made by Lrama 0.6.11. */
2
2
 
3
3
  /* Bison interface for Yacc-like parsers in C
4
4
 
@@ -190,7 +190,7 @@ extern int yydebug;
190
190
  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
191
191
  union YYSTYPE
192
192
  {
193
- #line 2668 "parse.y"
193
+ #line 2664 "parse.y"
194
194
 
195
195
  NODE *node;
196
196
  rb_node_fcall_t *node_fcall;