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
@@ -12,6 +12,8 @@
12
12
 
13
13
  /* load.c */
14
14
  VALUE rb_get_expanded_load_path(void);
15
+ VALUE rb_load_entrypoint(VALUE args);
16
+ VALUE rb_require_relative_entrypoint(VALUE fname);
15
17
  int rb_require_internal(VALUE fname);
16
18
  NORETURN(void rb_load_fail(VALUE, const char*));
17
19
 
@@ -85,6 +85,7 @@ VALUE rb_int_cmp(VALUE x, VALUE y);
85
85
  VALUE rb_int_equal(VALUE x, VALUE y);
86
86
  VALUE rb_int_divmod(VALUE x, VALUE y);
87
87
  VALUE rb_int_and(VALUE x, VALUE y);
88
+ VALUE rb_int_xor(VALUE x, VALUE y);
88
89
  VALUE rb_int_lshift(VALUE x, VALUE y);
89
90
  VALUE rb_int_rshift(VALUE x, VALUE y);
90
91
  VALUE rb_int_div(VALUE x, VALUE y);
@@ -11,7 +11,7 @@
11
11
  #include "ruby/ruby.h" /* for VALUE */
12
12
 
13
13
  /* object.c */
14
- size_t rb_obj_embedded_size(uint32_t numiv);
14
+ size_t rb_obj_embedded_size(uint32_t fields_count);
15
15
  VALUE rb_class_allocate_instance(VALUE klass);
16
16
  VALUE rb_class_search_ancestor(VALUE klass, VALUE super);
17
17
  NORETURN(void rb_undefined_alloc(VALUE klass));
@@ -12,6 +12,17 @@
12
12
  #include "rubyparser.h"
13
13
  #include "internal/static_assert.h"
14
14
 
15
+ // The default parser to use for Ruby code.
16
+ typedef enum {
17
+ RB_DEFAULT_PARSER_PARSE_Y,
18
+ RB_DEFAULT_PARSER_PRISM,
19
+ } ruby_default_parser_enum;
20
+
21
+ ruby_default_parser_enum rb_ruby_default_parser(void);
22
+ void rb_ruby_default_parser_set(ruby_default_parser_enum parser);
23
+
24
+ #define rb_ruby_prism_p() (rb_ruby_default_parser() == RB_DEFAULT_PARSER_PRISM)
25
+
15
26
  #ifdef UNIVERSAL_PARSER
16
27
  #define rb_encoding const void
17
28
  #endif
@@ -55,7 +66,7 @@ void rb_ruby_parser_set_script_lines(rb_parser_t *p);
55
66
  void rb_ruby_parser_error_tolerant(rb_parser_t *p);
56
67
  void rb_ruby_parser_keep_tokens(rb_parser_t *p);
57
68
  typedef rb_parser_string_t*(rb_parser_lex_gets_func)(struct parser_params*, rb_parser_input_data, int);
58
- rb_ast_t *rb_parser_compile(rb_parser_t *p, rb_parser_lex_gets_func *gets, const char *fname_ptr, long fname_len, rb_encoding *fname_enc, rb_parser_input_data input, int line);
69
+ rb_ast_t *rb_parser_compile(rb_parser_t *p, rb_parser_lex_gets_func *gets, VALUE fname, rb_parser_input_data input, int line);
59
70
 
60
71
  RUBY_SYMBOL_EXPORT_BEGIN
61
72
 
@@ -63,12 +74,15 @@ rb_encoding *rb_ruby_parser_encoding(rb_parser_t *p);
63
74
  int rb_ruby_parser_end_seen_p(rb_parser_t *p);
64
75
  int rb_ruby_parser_set_yydebug(rb_parser_t *p, int flag);
65
76
  rb_parser_string_t *rb_str_to_parser_string(rb_parser_t *p, VALUE str);
77
+ void rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str);
66
78
 
67
79
  int rb_parser_dvar_defined_ref(struct parser_params*, ID, ID**);
68
80
  ID rb_parser_internal_id(struct parser_params*);
69
- int rb_parser_reg_fragment_check(struct parser_params*, rb_parser_string_t*, int);
70
- 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);
81
+ typedef void (*rb_parser_reg_fragment_error_func)(struct parser_params *, VALUE);
82
+ int rb_parser_reg_fragment_check(struct parser_params*, rb_parser_string_t*, int, rb_parser_reg_fragment_error_func);
83
+ 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);
71
84
  int rb_parser_local_defined(struct parser_params *p, ID id, const struct rb_iseq_struct *iseq);
85
+ NODE *rb_parser_assignable(struct parser_params *p, ID id, NODE *val, const YYLTYPE *loc);
72
86
 
73
87
  RUBY_SYMBOL_EXPORT_END
74
88
 
@@ -97,7 +111,7 @@ VALUE rb_ruby_parser_ruby_sourcefile_string(rb_parser_t *p);
97
111
  int rb_ruby_parser_ruby_sourceline(rb_parser_t *p);
98
112
  int rb_ruby_parser_lex_state(rb_parser_t *p);
99
113
  void rb_ruby_ripper_parse0(rb_parser_t *p);
100
- int rb_ruby_ripper_dedent_string(rb_parser_t *p, VALUE string, int width);
114
+ int rb_ruby_ripper_dedent_string(rb_parser_t *p, rb_parser_string_t *string, int width);
101
115
  int rb_ruby_ripper_initialized_p(rb_parser_t *p);
102
116
  void rb_ruby_ripper_parser_initialize(rb_parser_t *p);
103
117
  long rb_ruby_ripper_column(rb_parser_t *p);
@@ -22,7 +22,7 @@ int rb_block_min_max_arity(int *max);
22
22
  VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
23
23
  VALUE rb_callable_receiver(VALUE);
24
24
 
25
- VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val);
25
+ VALUE rb_func_proc_dup(VALUE src_obj);
26
26
  VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc);
27
27
  VALUE rb_iseq_location(const struct rb_iseq_struct *iseq);
28
28
  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 */
@@ -14,15 +14,20 @@
14
14
  /* re.c */
15
15
  VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
16
16
  VALUE rb_reg_check_preprocess(VALUE);
17
- long rb_reg_search0(VALUE, VALUE, long, int, int);
17
+ long rb_reg_search0(VALUE, VALUE, long, int, int, VALUE *);
18
18
  VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
19
19
  bool rb_reg_start_with_p(VALUE re, VALUE str);
20
20
  VALUE rb_reg_hash(VALUE re);
21
21
  VALUE rb_reg_equal(VALUE re1, VALUE re2);
22
- void rb_backref_set_string(VALUE string, long pos, long len);
22
+ VALUE rb_backref_set_string(VALUE string, long pos, long len);
23
23
  void rb_match_unbusy(VALUE);
24
24
  int rb_match_count(VALUE match);
25
25
  VALUE rb_reg_new_ary(VALUE ary, int options);
26
26
  VALUE rb_reg_last_defined(VALUE match);
27
27
 
28
+ #define ARG_REG_OPTION_MASK \
29
+ (ONIG_OPTION_IGNORECASE|ONIG_OPTION_MULTILINE|ONIG_OPTION_EXTEND)
30
+ #define ARG_ENCODING_FIXED 16
31
+ #define ARG_ENCODING_NONE 32
32
+
28
33
  #endif /* INTERNAL_RE_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
@@ -29,6 +29,13 @@
29
29
  # endif
30
30
  #endif
31
31
 
32
+ #ifdef HAVE_SANITIZER_TSAN_INTERFACE_H
33
+ # if __has_feature(thread_sanitizer) || defined(__SANITIZE_THREAD__)
34
+ # define RUBY_TSAN_ENABLED
35
+ # include <sanitizer/tsan_interface.h>
36
+ # endif
37
+ #endif
38
+
32
39
  #include "ruby/internal/stdbool.h" /* for bool */
33
40
  #include "ruby/ruby.h" /* for VALUE */
34
41
 
@@ -39,6 +46,12 @@
39
46
  #elif defined(RUBY_ASAN_ENABLED)
40
47
  # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
41
48
  __attribute__((__no_sanitize__("address"), __noinline__)) x
49
+ #elif defined(RUBY_MSAN_ENABLED)
50
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
51
+ __attribute__((__no_sanitize__("memory"), __noinline__)) x
52
+ #elif defined(RUBY_TSAN_ENABLED)
53
+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
54
+ __attribute__((__no_sanitize__("thread"), __noinline__)) x
42
55
  #elif defined(NO_SANITIZE_ADDRESS)
43
56
  # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) \
44
57
  NO_SANITIZE_ADDRESS(NOINLINE(x))
@@ -54,10 +67,11 @@
54
67
  # include "internal/warnings.h"
55
68
  # undef NO_SANITIZE
56
69
  # define NO_SANITIZE(x, y) \
57
- COMPILER_WARNING_PUSH; \
58
- COMPILER_WARNING_IGNORED(-Wattributes); \
70
+ COMPILER_WARNING_PUSH \
71
+ COMPILER_WARNING_IGNORED(-Wattributes) \
59
72
  __attribute__((__no_sanitize__(x))) y; \
60
- COMPILER_WARNING_POP
73
+ COMPILER_WARNING_POP \
74
+ y
61
75
  #endif
62
76
 
63
77
  #ifndef NO_SANITIZE
@@ -115,26 +129,23 @@ asan_poison_memory_region(const volatile void *ptr, size_t size)
115
129
  __asan_poison_memory_region(ptr, size);
116
130
  }
117
131
 
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
132
  #ifdef RUBY_ASAN_ENABLED
131
133
  #define asan_poison_object_if(ptr, obj) do { \
132
- if (ptr) asan_poison_object(obj); \
134
+ if (ptr) rb_asan_poison_object(obj); \
133
135
  } while (0)
134
136
  #else
135
137
  #define asan_poison_object_if(ptr, obj) ((void)(ptr), (void)(obj))
136
138
  #endif
137
139
 
140
+ #ifdef RUBY_ASAN_ENABLED
141
+ RUBY_SYMBOL_EXPORT_BEGIN
142
+ /**
143
+ * This is a variant of asan_poison_memory_region that takes a VALUE.
144
+ *
145
+ * @param[in] obj target object.
146
+ */
147
+ void rb_asan_poison_object(VALUE obj);
148
+
138
149
  /**
139
150
  * This function predicates if the given object is fully addressable or not.
140
151
  *
@@ -142,12 +153,22 @@ asan_poison_object(VALUE obj)
142
153
  * @retval 0 the given object is fully addressable.
143
154
  * @retval otherwise pointer to first such byte who is poisoned.
144
155
  */
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
- }
156
+ void *rb_asan_poisoned_object_p(VALUE obj);
157
+
158
+ /**
159
+ * This is a variant of asan_unpoison_memory_region that takes a VALUE.
160
+ *
161
+ * @param[in] obj target object.
162
+ * @param[in] malloc_p if the memory region is like a malloc's return value or not.
163
+ */
164
+ void rb_asan_unpoison_object(VALUE obj, bool newobj_p);
165
+
166
+ RUBY_SYMBOL_EXPORT_END
167
+ #else
168
+ # define rb_asan_poison_object(obj) ((void)obj)
169
+ # define rb_asan_poisoned_object_p(obj) ((void)obj, NULL)
170
+ # define rb_asan_unpoison_object(obj, newobj_p) ((void)obj, (void)newobj_p)
171
+ #endif
151
172
 
152
173
  /**
153
174
  * This function asserts that a (formally poisoned) memory region from ptr to
@@ -176,24 +197,11 @@ asan_unpoison_memory_region(const volatile void *ptr, size_t size, bool malloc_p
176
197
  }
177
198
  }
178
199
 
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
200
  static inline void *
193
201
  asan_unpoison_object_temporary(VALUE obj)
194
202
  {
195
- void *ptr = asan_poisoned_object_p(obj);
196
- asan_unpoison_object(obj, false);
203
+ void *ptr = rb_asan_poisoned_object_p(obj);
204
+ rb_asan_unpoison_object(obj, false);
197
205
  return ptr;
198
206
  }
199
207
 
@@ -201,11 +209,40 @@ static inline void *
201
209
  asan_poison_object_restore(VALUE obj, void *ptr)
202
210
  {
203
211
  if (ptr) {
204
- asan_poison_object(obj);
212
+ rb_asan_poison_object(obj);
205
213
  }
206
214
  return NULL;
207
215
  }
208
216
 
217
+ #define asan_unpoisoning_object(obj) \
218
+ for (void *poisoned = asan_unpoison_object_temporary(obj), \
219
+ *unpoisoning = &poisoned; /* flag to loop just once */ \
220
+ unpoisoning; \
221
+ unpoisoning = asan_poison_object_restore(obj, poisoned))
222
+
223
+
224
+ static inline void *
225
+ asan_unpoison_memory_region_temporary(void *ptr, size_t len)
226
+ {
227
+ void *poisoned_ptr = __asan_region_is_poisoned(ptr, len);
228
+ asan_unpoison_memory_region(ptr, len, false);
229
+ return poisoned_ptr;
230
+ }
231
+
232
+ static inline void *
233
+ asan_poison_memory_region_restore(void *ptr, size_t len, void *poisoned_ptr)
234
+ {
235
+ if (poisoned_ptr) {
236
+ asan_poison_memory_region(ptr, len);
237
+ }
238
+ return NULL;
239
+ }
240
+
241
+ #define asan_unpoisoning_memory_region(ptr, len) \
242
+ for (void *poisoned = asan_unpoison_memory_region_temporary(ptr, len), \
243
+ *unpoisoning = &poisoned; /* flag to loop just once */ \
244
+ unpoisoning; \
245
+ unpoisoning = asan_poison_memory_region_restore(ptr, len, poisoned))
209
246
 
210
247
  /**
211
248
  * Checks if the given pointer is on an ASAN fake stack. If so, it returns the
@@ -293,5 +330,17 @@ asan_get_fake_stack_extents(void *thread_fake_stack_handle, VALUE slot,
293
330
  return false;
294
331
  }
295
332
 
333
+ extern const char ruby_asan_default_options[];
334
+
335
+ #ifdef RUBY_ASAN_ENABLED
336
+ /* Compile in the ASAN options Ruby needs, rather than relying on environment variables, so
337
+ * that even tests which fork ruby with a clean environment will run ASAN with the right
338
+ * settings */
339
+ # undef RUBY__ASAN_DEFAULT_OPTIONS
340
+ # define RUBY__ASAN_DEFAULT_OPTIONS \
341
+ RBIMPL_SYMBOL_EXPORT_BEGIN() \
342
+ const char * __asan_default_options(void) {return ruby_asan_default_options;} \
343
+ RBIMPL_SYMBOL_EXPORT_END()
344
+ #endif
296
345
 
297
346
  #endif /* INTERNAL_SANITIZERS_H */
@@ -0,0 +1,70 @@
1
+ #ifndef INTERNAL_SET_TABLE_H
2
+ #define INTERNAL_SET_TABLE_H
3
+
4
+ #include "ruby/st.h"
5
+
6
+ struct set_table_entry;
7
+
8
+ typedef struct set_table_entry set_table_entry;
9
+
10
+ struct set_table {
11
+ /* Cached features of the table -- see st.c for more details. */
12
+ unsigned char entry_power, bin_power, size_ind;
13
+ /* How many times the table was rebuilt. */
14
+ unsigned int rebuilds_num;
15
+ const struct st_hash_type *type;
16
+ /* Number of entries currently in the table. */
17
+ st_index_t num_entries;
18
+
19
+ /* Start and bound index of entries in array entries.
20
+ entries_starts and entries_bound are in interval
21
+ [0,allocated_entries]. */
22
+ st_index_t entries_start, entries_bound;
23
+
24
+ /**
25
+ * Array of size 2^entry_power.
26
+ * Followed by st_index_t *bins, Array of bins used for access by keys.
27
+ */
28
+ set_table_entry *entries;
29
+ };
30
+
31
+ typedef struct set_table set_table;
32
+
33
+ typedef int set_foreach_callback_func(st_data_t, st_data_t);
34
+ typedef int set_foreach_check_callback_func(st_data_t, st_data_t, int);
35
+ typedef int set_update_callback_func(st_data_t *key, st_data_t arg, int existing);
36
+
37
+ #define set_table_size rb_set_table_size
38
+ size_t rb_set_table_size(const struct set_table *tbl);
39
+ #define set_init_table_with_size rb_set_init_table_with_size
40
+ set_table *rb_set_init_table_with_size(set_table *tab, const struct st_hash_type *, st_index_t);
41
+ #define set_init_numtable rb_set_init_numtable
42
+ set_table *rb_set_init_numtable(void);
43
+ #define set_init_numtable_with_size rb_set_init_numtable_with_size
44
+ set_table *rb_set_init_numtable_with_size(st_index_t size);
45
+ #define set_table_delete rb_set_table_delete
46
+ int rb_set_table_delete(set_table *, st_data_t *); /* returns 0:notfound 1:deleted */
47
+ #define set_insert rb_set_insert
48
+ int rb_set_insert(set_table *, st_data_t);
49
+ #define set_table_lookup rb_set_table_lookup
50
+ int rb_set_table_lookup(set_table *, st_data_t);
51
+ #define set_foreach_with_replace rb_set_foreach_with_replace
52
+ int rb_set_foreach_with_replace(set_table *tab, set_foreach_check_callback_func *func, set_update_callback_func *replace, st_data_t arg);
53
+ #define set_table_foreach rb_set_table_foreach
54
+ int rb_set_table_foreach(set_table *, set_foreach_callback_func *, st_data_t);
55
+ #define set_foreach_check rb_set_foreach_check
56
+ int rb_set_foreach_check(set_table *, set_foreach_check_callback_func *, st_data_t, st_data_t);
57
+ #define set_keys rb_set_keys
58
+ st_index_t rb_set_keys(set_table *table, st_data_t *keys, st_index_t size);
59
+ #define set_free_table rb_set_free_table
60
+ void rb_set_free_table(set_table *);
61
+ #define set_table_clear rb_set_table_clear
62
+ void rb_set_table_clear(set_table *);
63
+ #define set_copy rb_set_copy
64
+ set_table *rb_set_copy(set_table *new_table, set_table *old_table);
65
+ #define set_memsize rb_set_memsize
66
+ PUREFUNC(size_t rb_set_memsize(const set_table *));
67
+ #define set_compact_table rb_set_compact_table
68
+ void set_compact_table(set_table *tab);
69
+
70
+ #endif
@@ -19,6 +19,7 @@ void (*ruby_posix_signal(int, void (*)(int)))(int);
19
19
 
20
20
  RUBY_SYMBOL_EXPORT_BEGIN
21
21
  /* signal.c (export) */
22
+ void rb_signal_atfork(void);
22
23
  RUBY_SYMBOL_EXPORT_END
23
24
 
24
25
  #endif /* INTERNAL_SIGNAL_H */
@@ -1,7 +1,7 @@
1
1
  #ifndef INTERNAL_ST_H
2
2
  #define INTERNAL_ST_H
3
3
 
4
- #include "include/ruby/st.h"
4
+ #include "ruby/st.h"
5
5
 
6
6
  st_table *rb_st_replace(st_table *new_tab, st_table *old_tab);
7
7
  #define st_replace rb_st_replace
@@ -15,15 +15,22 @@
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
23
+
24
+ enum ruby_rstring_private_flags {
25
+ RSTRING_CHILLED = STR_CHILLED,
26
+ };
21
27
 
22
28
  #ifdef rb_fstring_cstr
23
29
  # undef rb_fstring_cstr
24
30
  #endif
25
31
 
26
32
  /* string.c */
33
+ VALUE rb_str_dup_m(VALUE str);
27
34
  VALUE rb_fstring(VALUE);
28
35
  VALUE rb_fstring_cstr(const char *str);
29
36
  VALUE rb_fstring_enc_new(const char *ptr, long len, rb_encoding *enc);
@@ -47,6 +54,19 @@ int rb_enc_str_coderange_scan(VALUE str, rb_encoding *enc);
47
54
  int rb_ascii8bit_appendable_encoding_index(rb_encoding *enc, unsigned int code);
48
55
  VALUE rb_str_include(VALUE str, VALUE arg);
49
56
  VALUE rb_str_byte_substr(VALUE str, VALUE beg, VALUE len);
57
+ VALUE rb_str_substr_two_fixnums(VALUE str, VALUE beg, VALUE len, int empty);
58
+ VALUE rb_str_tmp_frozen_no_embed_acquire(VALUE str);
59
+ void rb_str_make_embedded(VALUE);
60
+ VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
61
+ size_t rb_str_size_as_embedded(VALUE);
62
+ bool rb_str_reembeddable_p(VALUE);
63
+ VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE);
64
+ VALUE rb_str_with_debug_created_info(VALUE, VALUE, int);
65
+ VALUE rb_str_frozen_bare_string(VALUE);
66
+
67
+ /* error.c */
68
+ void rb_warn_unchilled_literal(VALUE str);
69
+ void rb_warn_unchilled_symbol_to_s(VALUE str);
50
70
 
51
71
  static inline bool STR_EMBED_P(VALUE str);
52
72
  static inline bool STR_SHARED_P(VALUE str);
@@ -59,23 +79,21 @@ static inline VALUE rb_str_eql_internal(const VALUE str1, const VALUE str2);
59
79
  RUBY_SYMBOL_EXPORT_BEGIN
60
80
  /* string.c (export) */
61
81
  VALUE rb_str_tmp_frozen_acquire(VALUE str);
62
- VALUE rb_str_tmp_frozen_no_embed_acquire(VALUE str);
63
82
  void rb_str_tmp_frozen_release(VALUE str, VALUE tmp);
64
83
  VALUE rb_setup_fake_str(struct RString *fake_str, const char *name, long len, rb_encoding *enc);
65
- VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
66
- VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE);
67
- void rb_str_make_embedded(VALUE);
68
- size_t rb_str_size_as_embedded(VALUE);
69
- bool rb_str_reembeddable_p(VALUE);
70
84
  RUBY_SYMBOL_EXPORT_END
71
85
 
72
86
  VALUE rb_fstring_new(const char *ptr, long len);
87
+ void rb_gc_free_fstring(VALUE obj);
88
+ bool rb_obj_is_fstring_table(VALUE obj);
89
+ void Init_fstring_table();
73
90
  VALUE rb_obj_as_string_result(VALUE str, VALUE obj);
74
91
  VALUE rb_str_opt_plus(VALUE x, VALUE y);
75
92
  VALUE rb_str_concat_literals(size_t num, const VALUE *strary);
76
93
  VALUE rb_str_eql(VALUE str1, VALUE str2);
77
94
  VALUE rb_id_quote_unprintable(ID);
78
95
  VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc);
96
+ VALUE rb_enc_literal_str(const char *ptr, long len, rb_encoding *enc);
79
97
 
80
98
  struct rb_execution_context_struct;
81
99
  VALUE rb_ec_str_resurrect(struct rb_execution_context_struct *ec, VALUE str, bool chilled);
@@ -118,15 +136,18 @@ CHILLED_STRING_P(VALUE obj)
118
136
  static inline void
119
137
  CHILLED_STRING_MUTATED(VALUE str)
120
138
  {
121
- rb_category_warn(RB_WARN_CATEGORY_DEPRECATED, "literal string will be frozen in the future");
122
- FL_UNSET_RAW(str, STR_CHILLED | FL_FREEZE);
123
- }
124
-
125
- static inline void
126
- STR_CHILL_RAW(VALUE str)
127
- {
128
- // Chilled strings are always also frozen
129
- FL_SET_RAW(str, STR_CHILLED | RUBY_FL_FREEZE);
139
+ VALUE chilled_reason = RB_FL_TEST_RAW(str, STR_CHILLED);
140
+ FL_UNSET_RAW(str, STR_CHILLED);
141
+ switch (chilled_reason) {
142
+ case STR_CHILLED_SYMBOL_TO_S:
143
+ rb_warn_unchilled_symbol_to_s(str);
144
+ break;
145
+ case STR_CHILLED_LITERAL:
146
+ rb_warn_unchilled_literal(str);
147
+ break;
148
+ default:
149
+ rb_bug("RString was chilled for multiple reasons");
150
+ }
130
151
  }
131
152
 
132
153
  static inline bool
@@ -11,10 +11,23 @@
11
11
  #include "ruby/internal/stdbool.h" /* for bool */
12
12
  #include "ruby/ruby.h" /* for struct RBasic */
13
13
 
14
+ /* Flags of RStruct
15
+ *
16
+ * 1-7: RSTRUCT_EMBED_LEN
17
+ * If non-zero, the struct is embedded (its contents follow the
18
+ * header, rather than being on a separately allocated buffer) and
19
+ * these bits are the length of the Struct.
20
+ * 8: RSTRUCT_GEN_FIELDS
21
+ * The struct is embedded and has no space left to store the
22
+ * IMEMO/fields reference. Any ivar this struct may have will be in
23
+ * the generic_fields_tbl. This flag doesn't imply the struct has
24
+ * ivars.
25
+ */
14
26
  enum {
15
27
  RSTRUCT_EMBED_LEN_MASK = RUBY_FL_USER7 | RUBY_FL_USER6 | RUBY_FL_USER5 | RUBY_FL_USER4 |
16
28
  RUBY_FL_USER3 | RUBY_FL_USER2 | RUBY_FL_USER1,
17
29
  RSTRUCT_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+1),
30
+ RSTRUCT_GEN_FIELDS = RUBY_FL_USER8,
18
31
  };
19
32
 
20
33
  struct RStruct {
@@ -23,6 +36,7 @@ struct RStruct {
23
36
  struct {
24
37
  long len;
25
38
  const VALUE *ptr;
39
+ VALUE fields_obj;
26
40
  } heap;
27
41
  /* This is a length 1 array because:
28
42
  * 1. GCC has a bug that does not optimize C flexible array members
@@ -59,7 +73,6 @@ struct RStruct {
59
73
  VALUE rb_struct_init_copy(VALUE copy, VALUE s);
60
74
  VALUE rb_struct_lookup(VALUE s, VALUE idx);
61
75
  VALUE rb_struct_s_keyword_init(VALUE klass);
62
- static inline const VALUE *rb_struct_const_heap_ptr(VALUE st);
63
76
  static inline long RSTRUCT_EMBED_LEN(VALUE st);
64
77
  static inline long RSTRUCT_LEN(VALUE st);
65
78
  static inline int RSTRUCT_LENINT(VALUE st);
@@ -117,11 +130,31 @@ RSTRUCT_GET(VALUE st, long k)
117
130
  return RSTRUCT_CONST_PTR(st)[k];
118
131
  }
119
132
 
120
- static inline const VALUE *
121
- rb_struct_const_heap_ptr(VALUE st)
133
+ static inline VALUE
134
+ RSTRUCT_FIELDS_OBJ(VALUE st)
122
135
  {
123
- assert(!FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK));
124
- return RSTRUCT(st)->as.heap.ptr;
136
+ const long embed_len = RSTRUCT_EMBED_LEN(st);
137
+ VALUE fields_obj;
138
+ if (embed_len) {
139
+ RUBY_ASSERT(!FL_TEST_RAW(st, RSTRUCT_GEN_FIELDS));
140
+ fields_obj = RSTRUCT_GET(st, embed_len);
141
+ }
142
+ else {
143
+ fields_obj = RSTRUCT(st)->as.heap.fields_obj;
144
+ }
145
+ return fields_obj;
125
146
  }
126
147
 
148
+ static inline void
149
+ RSTRUCT_SET_FIELDS_OBJ(VALUE st, VALUE fields_obj)
150
+ {
151
+ const long embed_len = RSTRUCT_EMBED_LEN(st);
152
+ if (embed_len) {
153
+ RUBY_ASSERT(!FL_TEST_RAW(st, RSTRUCT_GEN_FIELDS));
154
+ RSTRUCT_SET(st, embed_len, fields_obj);
155
+ }
156
+ else {
157
+ RB_OBJ_WRITE(st, &RSTRUCT(st)->as.heap.fields_obj, fields_obj);
158
+ }
159
+ }
127
160
  #endif /* INTERNAL_STRUCT_H */
@@ -17,6 +17,7 @@
17
17
  #endif
18
18
 
19
19
  /* symbol.c */
20
+ void rb_sym_global_symbols_mark_and_move(void);
20
21
  VALUE rb_to_symbol_type(VALUE obj);
21
22
  VALUE rb_sym_intern(const char *ptr, long len, rb_encoding *enc);
22
23
  VALUE rb_sym_intern_ascii(const char *ptr, long len);
@@ -29,11 +30,11 @@ PUREFUNC(int rb_is_const_sym(VALUE sym));
29
30
  PUREFUNC(int rb_is_attrset_sym(VALUE sym));
30
31
  ID rb_make_internal_id(void);
31
32
  ID rb_make_temporary_id(size_t n);
33
+ bool rb_obj_is_symbol_table(VALUE obj);
34
+ void rb_sym_global_symbol_table_foreach_weak_reference(int (*callback)(VALUE *key, void *data), void *data);
32
35
  void rb_gc_free_dsymbol(VALUE);
33
36
  int rb_static_id_valid_p(ID id);
34
-
35
- /* vm.c */
36
- void rb_free_static_symid_str(void);
37
+ void rb_free_global_symbol_table(void);
37
38
 
38
39
  #if __has_builtin(__builtin_constant_p)
39
40
  #define rb_sym_intern_ascii_cstr(ptr) \