debase-ruby_core_source 0.10.9 → 0.10.13

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 (242) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/README.md +1 -1
  4. data/Rakefile +6 -3
  5. data/debase-ruby_core_source.gemspec +2 -1
  6. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/addr2line.h +2 -3
  7. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/builtin.h +17 -2
  8. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/build_assert/build_assert.h +0 -0
  9. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/check_type/check_type.h +0 -0
  10. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/container_of/container_of.h +0 -0
  11. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/list/list.h +0 -0
  12. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/ccan/str/str.h +0 -0
  13. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/constant.h +10 -5
  14. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/debug_counter.h +127 -48
  15. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/dln.h +3 -18
  16. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/encindex.h +3 -2
  17. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/eval_intern.h +16 -7
  18. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/gc.h +13 -2
  19. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/hrtime.h +0 -0
  20. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/id.h +0 -0
  21. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/id_table.h +2 -0
  22. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/insns.inc +0 -4
  23. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/insns_info.inc +323 -536
  24. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/array.h +119 -0
  25. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/bignum.h +246 -0
  26. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/bits.h +566 -0
  27. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/class.h +174 -0
  28. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compar.h +50 -0
  29. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compile.h +32 -0
  30. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/compilers.h +108 -0
  31. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/complex.h +29 -0
  32. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/cont.h +25 -0
  33. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/dir.h +17 -0
  34. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enc.h +20 -0
  35. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/encoding.h +28 -0
  36. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enum.h +19 -0
  37. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/enumerator.h +22 -0
  38. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/error.h +124 -0
  39. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/eval.h +33 -0
  40. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/file.h +39 -0
  41. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/fixnum.h +185 -0
  42. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/gc.h +161 -0
  43. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/hash.h +241 -0
  44. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/imemo.h +243 -0
  45. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/inits.h +51 -0
  46. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/io.h +35 -0
  47. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/load.h +19 -0
  48. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/loadpath.h +17 -0
  49. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/math.h +24 -0
  50. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/missing.h +19 -0
  51. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/numeric.h +255 -0
  52. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/object.h +83 -0
  53. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/parse.h +23 -0
  54. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/proc.h +33 -0
  55. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/process.h +136 -0
  56. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/random.h +17 -0
  57. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/range.h +41 -0
  58. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/rational.h +71 -0
  59. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/re.h +29 -0
  60. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/sanitizers.h +191 -0
  61. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/scheduler.h +44 -0
  62. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/serial.h +24 -0
  63. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/signal.h +22 -0
  64. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/static_assert.h +17 -0
  65. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/string.h +140 -0
  66. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/struct.h +154 -0
  67. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/symbol.h +41 -0
  68. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/thread.h +54 -0
  69. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/time.h +35 -0
  70. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/transcode.h +21 -0
  71. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/util.h +31 -0
  72. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/variable.h +84 -0
  73. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/vm.h +136 -0
  74. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal/warnings.h +17 -0
  75. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/internal.h +107 -0
  76. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/iseq.h +11 -18
  77. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/known_errors.inc +0 -0
  78. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/method.h +21 -8
  79. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/mjit.h +89 -48
  80. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/mjit_compile.inc +2746 -2288
  81. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/node.h +32 -24
  82. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/node_name.inc +2 -2
  83. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/opt_sc.inc +0 -0
  84. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/optinsn.inc +0 -0
  85. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/optunifs.inc +0 -0
  86. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/parse.h +1 -0
  87. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/probes_helper.h +2 -0
  88. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ractor_core.h +343 -0
  89. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/regenc.h +0 -0
  90. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/regint.h +1 -1
  91. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/regparse.h +0 -0
  92. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/revision.h +2 -0
  93. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ruby_assert.h +15 -0
  94. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/ruby_atomic.h +23 -0
  95. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/siphash.h +0 -0
  96. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/symbol.h +4 -4
  97. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/thread_pthread.h +45 -5
  98. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/thread_win32.h +28 -3
  99. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/timev.h +1 -0
  100. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/transcode_data.h +2 -3
  101. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/transient_heap.h +6 -3
  102. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/variable.h +22 -0
  103. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/version.h +23 -11
  104. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vm.inc +707 -671
  105. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vm_call_iseq_optimized.inc +93 -86
  106. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_callinfo.h +456 -0
  107. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/vm_core.h +262 -194
  108. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_debug.h +116 -0
  109. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/vm_exec.h +9 -6
  110. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.0.0-p0}/vm_insnhelper.h +28 -26
  111. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vm_opts.h +6 -5
  112. data/lib/debase/ruby_core_source/ruby-3.0.0-p0/vm_sync.h +136 -0
  113. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.0.0-p0}/vmtc.inc +0 -4
  114. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/addr2line.h +2 -3
  115. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/builtin.h +83 -0
  116. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/build_assert/build_assert.h +13 -13
  117. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/check_type/check_type.h +17 -17
  118. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/container_of/container_of.h +63 -63
  119. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/list/list.h +262 -262
  120. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/ccan/str/str.h +4 -4
  121. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/constant.h +10 -9
  122. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/darray.h +198 -0
  123. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/debug_counter.h +137 -48
  124. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/dln.h +3 -23
  125. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/encindex.h +3 -2
  126. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/eval_intern.h +34 -41
  127. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/gc.h +24 -11
  128. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/hrtime.h +9 -9
  129. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/id.h +4 -3
  130. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/id_table.h +3 -1
  131. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/insns.inc +6 -8
  132. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/insns_info.inc +1907 -2543
  133. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/array.h +113 -0
  134. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/bignum.h +246 -0
  135. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/bits.h +565 -0
  136. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/class.h +188 -0
  137. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/compar.h +49 -0
  138. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/compile.h +35 -0
  139. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/compilers.h +107 -0
  140. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/complex.h +29 -0
  141. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/cont.h +24 -0
  142. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/dir.h +16 -0
  143. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/enc.h +19 -0
  144. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/encoding.h +30 -0
  145. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/enum.h +18 -0
  146. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/enumerator.h +21 -0
  147. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/error.h +191 -0
  148. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/eval.h +32 -0
  149. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/file.h +38 -0
  150. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/fixnum.h +184 -0
  151. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/gc.h +175 -0
  152. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/hash.h +243 -0
  153. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/imemo.h +243 -0
  154. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/inits.h +50 -0
  155. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/io.h +38 -0
  156. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/load.h +18 -0
  157. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/loadpath.h +16 -0
  158. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/math.h +23 -0
  159. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/missing.h +18 -0
  160. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/numeric.h +271 -0
  161. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/object.h +83 -0
  162. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/parse.h +23 -0
  163. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/proc.h +32 -0
  164. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/process.h +137 -0
  165. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/random.h +16 -0
  166. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/range.h +40 -0
  167. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/rational.h +72 -0
  168. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/re.h +30 -0
  169. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/sanitizers.h +190 -0
  170. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/serial.h +23 -0
  171. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/signal.h +21 -0
  172. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/static_assert.h +16 -0
  173. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/string.h +141 -0
  174. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/struct.h +153 -0
  175. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/symbol.h +40 -0
  176. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/thread.h +53 -0
  177. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/time.h +34 -0
  178. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/transcode.h +20 -0
  179. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/util.h +27 -0
  180. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/variable.h +83 -0
  181. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/vm.h +132 -0
  182. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal/warnings.h +16 -0
  183. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/internal.h +109 -0
  184. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/iseq.h +44 -35
  185. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/known_errors.inc +0 -0
  186. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/method.h +21 -4
  187. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/mjit.h +231 -0
  188. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/mjit_compile.inc +3322 -2940
  189. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/node.h +39 -23
  190. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/node_name.inc +210 -0
  191. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/opt_sc.inc +0 -2
  192. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/optinsn.inc +7 -7
  193. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/optunifs.inc +1 -1
  194. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/parse.h +9 -5
  195. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/probes_helper.h +9 -7
  196. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/ractor_core.h +346 -0
  197. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/regenc.h +8 -8
  198. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/regint.h +16 -12
  199. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/regparse.h +2 -2
  200. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/revision.h +2 -0
  201. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/ruby_assert.h +14 -0
  202. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/ruby_atomic.h +23 -0
  203. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/siphash.h +0 -0
  204. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/symbol.h +14 -14
  205. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/thread_pthread.h +45 -5
  206. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/thread_win32.h +30 -5
  207. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/timev.h +1 -0
  208. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/transcode_data.h +49 -50
  209. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/transient_heap.h +6 -3
  210. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/variable.h +21 -0
  211. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/version.h +15 -4
  212. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/vm.inc +1033 -887
  213. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_call_iseq_optimized.inc +244 -0
  214. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_callinfo.h +454 -0
  215. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/vm_core.h +508 -362
  216. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_debug.h +119 -0
  217. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/vm_exec.h +22 -18
  218. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview3 → ruby-3.1.0-preview1}/vm_insnhelper.h +42 -32
  219. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/vm_opts.h +8 -5
  220. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/vm_sync.h +137 -0
  221. data/lib/debase/ruby_core_source/{ruby-2.7.0-preview2 → ruby-3.1.0-preview1}/vmtc.inc +6 -8
  222. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit.h +63 -0
  223. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_asm.h +392 -0
  224. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_codegen.h +19 -0
  225. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_core.h +302 -0
  226. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/yjit_iface.h +38 -0
  227. data/lib/debase/ruby_core_source/version.rb +1 -1
  228. data/lib/debase/ruby_core_source.rb +0 -2
  229. metadata +240 -110
  230. data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/internal.h +0 -2682
  231. data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/revision.h +0 -2
  232. data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/ruby_assert.h +0 -15
  233. data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/ruby_atomic.h +0 -244
  234. data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/vm_call_iseq_optimized.inc +0 -237
  235. data/lib/debase/ruby_core_source/ruby-2.7.0-preview2/vm_debug.h +0 -34
  236. data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/internal.h +0 -2657
  237. data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/mjit.h +0 -175
  238. data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/node_name.inc +0 -208
  239. data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/revision.h +0 -2
  240. data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/ruby_assert.h +0 -15
  241. data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/ruby_atomic.h +0 -244
  242. data/lib/debase/ruby_core_source/ruby-2.7.0-preview3/vm_debug.h +0 -34
@@ -6,11 +6,11 @@
6
6
  * @expr: any C expression
7
7
  *
8
8
  * Example:
9
- * #define PRINT_COND_IF_FALSE(cond) \
10
- * ((cond) || printf("%s is false!", stringify(cond)))
9
+ * #define PRINT_COND_IF_FALSE(cond) \
10
+ * ((cond) || printf("%s is false!", stringify(cond)))
11
11
  */
12
- #define stringify(expr) stringify_1(expr)
12
+ #define stringify(expr) stringify_1(expr)
13
13
  /* Double-indirection required to stringify expansions */
14
- #define stringify_1(expr) #expr
14
+ #define stringify_1(expr) #expr
15
15
 
16
16
  #endif /* CCAN_STR_H */
@@ -1,3 +1,5 @@
1
+ #ifndef CONSTANT_H
2
+ #define CONSTANT_H
1
3
  /**********************************************************************
2
4
 
3
5
  constant.h -
@@ -8,8 +10,8 @@
8
10
  Copyright (C) 2009 Yusuke Endoh
9
11
 
10
12
  **********************************************************************/
11
- #ifndef CONSTANT_H
12
- #define CONSTANT_H
13
+ #include "ruby/ruby.h"
14
+ #include "id_table.h"
13
15
 
14
16
  typedef enum {
15
17
  CONST_DEPRECATED = 0x100,
@@ -39,16 +41,15 @@ VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj);
39
41
  VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj);
40
42
  VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj);
41
43
  void rb_free_const_table(struct rb_id_table *tbl);
42
- VALUE rb_public_const_get(VALUE klass, ID id);
44
+ VALUE rb_const_source_location(VALUE, ID);
45
+
46
+ MJIT_SYMBOL_EXPORT_BEGIN
47
+ int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
48
+ rb_const_entry_t *rb_const_lookup(VALUE klass, ID id);
43
49
  VALUE rb_public_const_get_at(VALUE klass, ID id);
44
50
  VALUE rb_public_const_get_from(VALUE klass, ID id);
45
- int rb_public_const_defined(VALUE klass, ID id);
46
- int rb_public_const_defined_at(VALUE klass, ID id);
47
51
  int rb_public_const_defined_from(VALUE klass, ID id);
48
- rb_const_entry_t *rb_const_lookup(VALUE klass, ID id);
49
- int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
50
- VALUE rb_const_source_location(VALUE, ID);
51
- VALUE rb_const_source_location_from(VALUE, ID);
52
52
  VALUE rb_const_source_location_at(VALUE, ID);
53
+ MJIT_SYMBOL_EXPORT_END
53
54
 
54
55
  #endif /* CONSTANT_H */
@@ -0,0 +1,198 @@
1
+ #ifndef RUBY_DARRAY_H
2
+ #define RUBY_DARRAY_H
3
+
4
+ #include <stdint.h>
5
+ #include <stddef.h>
6
+ #include <stdlib.h>
7
+
8
+ // Type for a dynamic array. Use to declare a dynamic array.
9
+ // It is a pointer so it fits in st_table nicely. Designed
10
+ // to be fairly type-safe.
11
+ //
12
+ // NULL is a valid empty dynamic array.
13
+ //
14
+ // Example:
15
+ // rb_darray(char) char_array = NULL;
16
+ // if (!rb_darray_append(&char_array, 'e')) abort();
17
+ // printf("pushed %c\n", *rb_darray_ref(char_array, 0));
18
+ // rb_darray_free(char_array);
19
+ //
20
+ #define rb_darray(T) struct { rb_darray_meta_t meta; T data[]; } *
21
+
22
+ // Copy an element out of the array. Warning: not bounds checked.
23
+ //
24
+ // T rb_darray_get(rb_darray(T) ary, int32_t idx);
25
+ //
26
+ #define rb_darray_get(ary, idx) ((ary)->data[(idx)])
27
+
28
+ // Assign to an element. Warning: not bounds checked.
29
+ //
30
+ // void rb_darray_set(rb_darray(T) ary, int32_t idx, T element);
31
+ //
32
+ #define rb_darray_set(ary, idx, element) ((ary)->data[(idx)] = (element))
33
+
34
+ // Get a pointer to an element. Warning: not bounds checked.
35
+ //
36
+ // T *rb_darray_ref(rb_darray(T) ary, int32_t idx);
37
+ //
38
+ #define rb_darray_ref(ary, idx) (&((ary)->data[(idx)]))
39
+
40
+ // Copy a new element into the array. Return 1 on success and 0 on failure.
41
+ // ptr_to_ary is evaluated multiple times.
42
+ //
43
+ // bool rb_darray_append(rb_darray(T) *ptr_to_ary, T element);
44
+ //
45
+ #define rb_darray_append(ptr_to_ary, element) ( \
46
+ rb_darray_ensure_space((ptr_to_ary), sizeof(**(ptr_to_ary)), sizeof((*(ptr_to_ary))->data[0])) ? ( \
47
+ rb_darray_set(*(ptr_to_ary), \
48
+ (*(ptr_to_ary))->meta.size, \
49
+ (element)), \
50
+ ++((*(ptr_to_ary))->meta.size), \
51
+ 1 \
52
+ ) : 0)
53
+
54
+ // Last element of the array
55
+ //
56
+ #define rb_darray_back(ary) ((ary)->data[(ary)->meta.size - 1])
57
+
58
+ // Remove the last element of the array.
59
+ //
60
+ #define rb_darray_pop_back(ary) ((ary)->meta.size--)
61
+
62
+ // Remove element at idx and replace it by the last element
63
+ #define rb_darray_remove_unordered(ary, idx) do { \
64
+ rb_darray_set(ary, idx, rb_darray_back(ary)); \
65
+ rb_darray_pop_back(ary); \
66
+ } while (0);
67
+
68
+ // Iterate over items of the array in a for loop
69
+ //
70
+ #define rb_darray_foreach(ary, idx_name, elem_ptr_var) \
71
+ for (int idx_name = 0; idx_name < rb_darray_size(ary) && ((elem_ptr_var) = rb_darray_ref(ary, idx_name)); ++idx_name)
72
+
73
+ // Iterate over valid indicies in the array in a for loop
74
+ //
75
+ #define rb_darray_for(ary, idx_name) \
76
+ for (int idx_name = 0; idx_name < rb_darray_size(ary); ++idx_name)
77
+
78
+ // Make a dynamic array of a certain size. All bytes backing the elements are set to zero.
79
+ // Return 1 on success and 0 on failure.
80
+ //
81
+ // Note that NULL is a valid empty dynamic array.
82
+ //
83
+ // bool rb_darray_make(rb_darray(T) *ptr_to_ary, int32_t size);
84
+ //
85
+ #define rb_darray_make(ptr_to_ary, size) rb_darray_make_impl((ptr_to_ary), size, sizeof(**(ptr_to_ary)), sizeof((*(ptr_to_ary))->data[0]))
86
+
87
+ // Set the size of the array to zero without freeing the backing memory.
88
+ // Allows reusing the same array.
89
+ //
90
+ #define rb_darray_clear(ary) (ary->meta.size = 0)
91
+
92
+ typedef struct rb_darray_meta {
93
+ int32_t size;
94
+ int32_t capa;
95
+ } rb_darray_meta_t;
96
+
97
+ // Get the size of the dynamic array.
98
+ //
99
+ static inline int32_t
100
+ rb_darray_size(const void *ary)
101
+ {
102
+ const rb_darray_meta_t *meta = ary;
103
+ return meta ? meta->size : 0;
104
+ }
105
+
106
+ // Get the capacity of the dynamic array.
107
+ //
108
+ static inline int32_t
109
+ rb_darray_capa(const void *ary)
110
+ {
111
+ const rb_darray_meta_t *meta = ary;
112
+ return meta ? meta->capa : 0;
113
+ }
114
+
115
+ // Free the dynamic array.
116
+ //
117
+ static inline void
118
+ rb_darray_free(void *ary)
119
+ {
120
+ free(ary);
121
+ }
122
+
123
+ // Internal function. Calculate buffer size on malloc heap.
124
+ static inline size_t
125
+ rb_darray_buffer_size(int32_t capacity, size_t header_size, size_t element_size)
126
+ {
127
+ if (capacity == 0) return 0;
128
+ return header_size + (size_t)capacity * element_size;
129
+ }
130
+
131
+ // Internal function
132
+ // Ensure there is space for one more element. Return 1 on success and 0 on failure.
133
+ // Note: header_size can be bigger than sizeof(rb_darray_meta_t) when T is __int128_t, for example.
134
+ static inline int
135
+ rb_darray_ensure_space(void *ptr_to_ary, size_t header_size, size_t element_size)
136
+ {
137
+ rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
138
+ rb_darray_meta_t *meta = *ptr_to_ptr_to_meta;
139
+ int32_t current_capa = rb_darray_capa(meta);
140
+ if (rb_darray_size(meta) < current_capa) return 1;
141
+
142
+ int32_t new_capa;
143
+ // Calculate new capacity
144
+ if (current_capa == 0) {
145
+ new_capa = 1;
146
+ }
147
+ else {
148
+ int64_t doubled = 2 * (int64_t)current_capa;
149
+ new_capa = (int32_t)doubled;
150
+ if (new_capa != doubled) return 0;
151
+ }
152
+
153
+ // Calculate new buffer size
154
+ size_t current_buffer_size = rb_darray_buffer_size(current_capa, header_size, element_size);
155
+ size_t new_buffer_size = rb_darray_buffer_size(new_capa, header_size, element_size);
156
+ if (new_buffer_size <= current_buffer_size) return 0;
157
+
158
+ rb_darray_meta_t *doubled_ary = realloc(meta, new_buffer_size);
159
+ if (!doubled_ary) return 0;
160
+
161
+ if (meta == NULL) {
162
+ // First allocation. Initialize size. On subsequence allocations
163
+ // realloc takes care of carrying over the size.
164
+ doubled_ary->size = 0;
165
+ }
166
+
167
+ doubled_ary->capa = new_capa;
168
+
169
+ // We don't have access to the type of the dynamic array in function context.
170
+ // Write out result with memcpy to avoid strict aliasing issue.
171
+ memcpy(ptr_to_ary, &doubled_ary, sizeof(doubled_ary));
172
+ return 1;
173
+ }
174
+
175
+ static inline int
176
+ rb_darray_make_impl(void *ptr_to_ary, int32_t array_size, size_t header_size, size_t element_size)
177
+ {
178
+ rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
179
+ if (array_size < 0) return 0;
180
+ if (array_size == 0) {
181
+ *ptr_to_ptr_to_meta = NULL;
182
+ return 1;
183
+ }
184
+
185
+ size_t buffer_size = rb_darray_buffer_size(array_size, header_size, element_size);
186
+ rb_darray_meta_t *meta = calloc(buffer_size, 1);
187
+ if (!meta) return 0;
188
+
189
+ meta->size = array_size;
190
+ meta->capa = array_size;
191
+
192
+ // We don't have access to the type of the dynamic array in function context.
193
+ // Write out result with memcpy to avoid strict aliasing issue.
194
+ memcpy(ptr_to_ary, &meta, sizeof(meta));
195
+ return 1;
196
+ }
197
+
198
+ #endif /* RUBY_DARRAY_H */
@@ -14,38 +14,67 @@
14
14
 
15
15
  #ifdef RB_DEBUG_COUNTER
16
16
 
17
- /*
18
- * method cache (mc) counts.
19
- *
20
- * * mc_inline_hit/miss: inline mc hit/miss counts (VM send insn)
21
- * * mc_global_hit/miss: global method cache hit/miss counts
22
- * two types: (1) inline cache miss (VM send insn)
23
- * (2) called from C (rb_funcall).
24
- * * mc_global_state_miss: inline mc miss by global_state miss.
25
- * * mc_class_serial_miss: ... by mc_class_serial_miss
26
- * * mc_cme_complement: callable_method_entry complement counts.
27
- * * mc_cme_complement_hit: callable_method_entry cache hit counts.
28
- * * mc_search_super: search_method() call counts.
29
- * * mc_miss_by_nome: inline mc miss by no ment.
30
- * * mc_miss_by_distinct: ... by distinct ment.
31
- * * mc_miss_by_refine: ... by ment being refined.
32
- * * mc_miss_by_visi: ... by visibility change.
33
- * * mc_miss_spurious: spurious inline mc misshit.
34
- */
35
- RB_DEBUG_COUNTER(mc_inline_hit)
36
- RB_DEBUG_COUNTER(mc_inline_miss)
37
- RB_DEBUG_COUNTER(mc_global_hit)
38
- RB_DEBUG_COUNTER(mc_global_miss)
39
- RB_DEBUG_COUNTER(mc_global_state_miss)
40
- RB_DEBUG_COUNTER(mc_class_serial_miss)
41
- RB_DEBUG_COUNTER(mc_cme_complement)
42
- RB_DEBUG_COUNTER(mc_cme_complement_hit)
43
- RB_DEBUG_COUNTER(mc_search_super)
44
- RB_DEBUG_COUNTER(mc_miss_by_nome)
45
- RB_DEBUG_COUNTER(mc_miss_by_distinct)
46
- RB_DEBUG_COUNTER(mc_miss_by_refine)
47
- RB_DEBUG_COUNTER(mc_miss_by_visi)
48
- RB_DEBUG_COUNTER(mc_miss_spurious)
17
+ // method cache (IMC: inline method cache)
18
+ RB_DEBUG_COUNTER(mc_inline_hit) // IMC hit
19
+ RB_DEBUG_COUNTER(mc_inline_miss_klass) // IMC miss by different class
20
+ RB_DEBUG_COUNTER(mc_inline_miss_invalidated) // IMC miss by invalidated ME
21
+ RB_DEBUG_COUNTER(mc_inline_miss_empty) // IMC miss because prev is empty slot
22
+ RB_DEBUG_COUNTER(mc_inline_miss_same_cc) // IMC miss, but same CC
23
+ RB_DEBUG_COUNTER(mc_inline_miss_same_cme) // IMC miss, but same CME
24
+ RB_DEBUG_COUNTER(mc_inline_miss_same_def) // IMC miss, but same definition
25
+ RB_DEBUG_COUNTER(mc_inline_miss_diff) // IMC miss, different methods
26
+
27
+ RB_DEBUG_COUNTER(cvar_write_inline_hit) // cvar cache hit on write
28
+ RB_DEBUG_COUNTER(cvar_read_inline_hit) // cvar cache hit on read
29
+ RB_DEBUG_COUNTER(cvar_inline_miss) // miss inline cache
30
+ RB_DEBUG_COUNTER(cvar_class_invalidate) // invalidate cvar cache when define a cvar that's defined on a subclass
31
+ RB_DEBUG_COUNTER(cvar_include_invalidate) // invalidate cvar cache on module include or prepend
32
+
33
+ RB_DEBUG_COUNTER(mc_cme_complement) // number of acquiring complement CME
34
+ RB_DEBUG_COUNTER(mc_cme_complement_hit) // number of cache hit for complemented CME
35
+
36
+ RB_DEBUG_COUNTER(mc_search) // count for method lookup in class tree
37
+ RB_DEBUG_COUNTER(mc_search_notfound) // method lookup, but not found
38
+ RB_DEBUG_COUNTER(mc_search_super) // total traversed classes
39
+
40
+ // callinfo
41
+ RB_DEBUG_COUNTER(ci_packed) // number of packed CI
42
+ RB_DEBUG_COUNTER(ci_kw) // non-packed CI w/ keywords
43
+ RB_DEBUG_COUNTER(ci_nokw) // non-packed CI w/o keywords
44
+ RB_DEBUG_COUNTER(ci_runtime) // creating temporary CI
45
+
46
+ // callcache
47
+ RB_DEBUG_COUNTER(cc_new) // number of CC
48
+ RB_DEBUG_COUNTER(cc_temp) // dummy CC (stack-allocated)
49
+ RB_DEBUG_COUNTER(cc_found_in_ccs) // count for CC lookup success in CCS
50
+ RB_DEBUG_COUNTER(cc_not_found_in_ccs) // count for CC lookup success in CCS
51
+
52
+ RB_DEBUG_COUNTER(cc_ent_invalidate) // count for invalidating cc (cc->klass = 0)
53
+ RB_DEBUG_COUNTER(cc_cme_invalidate) // count for invalidating CME
54
+
55
+ RB_DEBUG_COUNTER(cc_invalidate_leaf) // count for invalidating klass if klass has no-subclasses
56
+ RB_DEBUG_COUNTER(cc_invalidate_leaf_ccs) // corresponding CCS
57
+ RB_DEBUG_COUNTER(cc_invalidate_leaf_callable) // complimented cache (no-subclasses)
58
+ RB_DEBUG_COUNTER(cc_invalidate_tree) // count for invalidating klass if klass has subclasses
59
+ RB_DEBUG_COUNTER(cc_invalidate_tree_cme) // cme if cme is found in this class or superclasses
60
+ RB_DEBUG_COUNTER(cc_invalidate_tree_callable) // complimented cache (subclasses)
61
+ RB_DEBUG_COUNTER(cc_invalidate_negative) // count for invalidating negative cache
62
+
63
+ RB_DEBUG_COUNTER(ccs_free) // count for free'ing ccs
64
+ RB_DEBUG_COUNTER(ccs_maxlen) // maximum length of ccs
65
+ RB_DEBUG_COUNTER(ccs_found) // count for finding corresponding ccs on method lookup
66
+ RB_DEBUG_COUNTER(ccs_not_found) // count for not found corresponding ccs on method lookup
67
+
68
+ // vm_eval.c
69
+ RB_DEBUG_COUNTER(call0_public)
70
+ RB_DEBUG_COUNTER(call0_other)
71
+ RB_DEBUG_COUNTER(gccct_hit)
72
+ RB_DEBUG_COUNTER(gccct_miss)
73
+ RB_DEBUG_COUNTER(gccct_null)
74
+
75
+ // iseq
76
+ RB_DEBUG_COUNTER(iseq_num) // number of total created iseq
77
+ RB_DEBUG_COUNTER(iseq_cd_num) // number of total created cd (call_data)
49
78
 
50
79
  /*
51
80
  * call cache fastpath usage
@@ -59,6 +88,7 @@ RB_DEBUG_COUNTER(ccf_iseq_opt) /* has_opt == TRUE (has optional parameters), but
59
88
  RB_DEBUG_COUNTER(ccf_iseq_kw1) /* vm_call_iseq_setup_kwparm_kwarg() */
60
89
  RB_DEBUG_COUNTER(ccf_iseq_kw2) /* vm_call_iseq_setup_kwparm_nokwarg() */
61
90
  RB_DEBUG_COUNTER(ccf_cfunc)
91
+ RB_DEBUG_COUNTER(ccf_cfunc_with_frame)
62
92
  RB_DEBUG_COUNTER(ccf_ivar) /* attr_reader */
63
93
  RB_DEBUG_COUNTER(ccf_attrset) /* attr_writer */
64
94
  RB_DEBUG_COUNTER(ccf_method_missing)
@@ -115,7 +145,7 @@ RB_DEBUG_COUNTER(ivar_set_ic_hit)
115
145
  RB_DEBUG_COUNTER(ivar_set_ic_miss)
116
146
  RB_DEBUG_COUNTER(ivar_set_ic_miss_serial)
117
147
  RB_DEBUG_COUNTER(ivar_set_ic_miss_unset)
118
- RB_DEBUG_COUNTER(ivar_set_ic_miss_oorange)
148
+ RB_DEBUG_COUNTER(ivar_set_ic_miss_iv_hit)
119
149
  RB_DEBUG_COUNTER(ivar_set_ic_miss_noobject)
120
150
  RB_DEBUG_COUNTER(ivar_get_base)
121
151
  RB_DEBUG_COUNTER(ivar_set_base)
@@ -153,6 +183,12 @@ RB_DEBUG_COUNTER(gc_major_shady)
153
183
  RB_DEBUG_COUNTER(gc_major_force)
154
184
  RB_DEBUG_COUNTER(gc_major_oldmalloc)
155
185
 
186
+ RB_DEBUG_COUNTER(gc_enter_start)
187
+ RB_DEBUG_COUNTER(gc_enter_mark_continue)
188
+ RB_DEBUG_COUNTER(gc_enter_sweep_continue)
189
+ RB_DEBUG_COUNTER(gc_enter_rest)
190
+ RB_DEBUG_COUNTER(gc_enter_finalizer)
191
+
156
192
  RB_DEBUG_COUNTER(gc_isptr_trial)
157
193
  RB_DEBUG_COUNTER(gc_isptr_range)
158
194
  RB_DEBUG_COUNTER(gc_isptr_align)
@@ -162,7 +198,7 @@ RB_DEBUG_COUNTER(gc_isptr_maybe)
162
198
  *
163
199
  * * obj_newobj: newobj counts
164
200
  * * obj_newobj_slowpath: newobj with slowpath counts
165
- * * obj_newobj_wb_unprotected: newobj for wb_unprotecte.
201
+ * * obj_newobj_wb_unprotected: newobj for wb_unprotected.
166
202
  * * obj_free: obj_free() counts
167
203
  * * obj_promote: promoted counts (oldgen)
168
204
  * * obj_wb_unprotect: wb unprotect counts
@@ -245,8 +281,6 @@ RB_DEBUG_COUNTER(obj_struct_embed)
245
281
  RB_DEBUG_COUNTER(obj_struct_transient)
246
282
  RB_DEBUG_COUNTER(obj_struct_ptr)
247
283
 
248
- RB_DEBUG_COUNTER(obj_regexp_ptr)
249
-
250
284
  RB_DEBUG_COUNTER(obj_data_empty)
251
285
  RB_DEBUG_COUNTER(obj_data_xfree)
252
286
  RB_DEBUG_COUNTER(obj_data_imm_free)
@@ -256,9 +290,19 @@ RB_DEBUG_COUNTER(obj_match_under4)
256
290
  RB_DEBUG_COUNTER(obj_match_ge4)
257
291
  RB_DEBUG_COUNTER(obj_match_ge8)
258
292
  RB_DEBUG_COUNTER(obj_match_ptr)
259
- RB_DEBUG_COUNTER(obj_file_ptr)
293
+
294
+ RB_DEBUG_COUNTER(obj_iclass_ptr)
295
+ RB_DEBUG_COUNTER(obj_class_ptr)
296
+ RB_DEBUG_COUNTER(obj_module_ptr)
297
+
260
298
  RB_DEBUG_COUNTER(obj_bignum_ptr)
299
+ RB_DEBUG_COUNTER(obj_bignum_embed)
300
+ RB_DEBUG_COUNTER(obj_float)
301
+ RB_DEBUG_COUNTER(obj_complex)
302
+ RB_DEBUG_COUNTER(obj_rational)
261
303
 
304
+ RB_DEBUG_COUNTER(obj_regexp_ptr)
305
+ RB_DEBUG_COUNTER(obj_file_ptr)
262
306
  RB_DEBUG_COUNTER(obj_symbol)
263
307
 
264
308
  RB_DEBUG_COUNTER(obj_imemo_ment)
@@ -272,10 +316,9 @@ RB_DEBUG_COUNTER(obj_imemo_throw_data)
272
316
  RB_DEBUG_COUNTER(obj_imemo_ifunc)
273
317
  RB_DEBUG_COUNTER(obj_imemo_memo)
274
318
  RB_DEBUG_COUNTER(obj_imemo_parser_strterm)
275
-
276
- RB_DEBUG_COUNTER(obj_iclass_ptr)
277
- RB_DEBUG_COUNTER(obj_class_ptr)
278
- RB_DEBUG_COUNTER(obj_module_ptr)
319
+ RB_DEBUG_COUNTER(obj_imemo_callinfo)
320
+ RB_DEBUG_COUNTER(obj_imemo_callcache)
321
+ RB_DEBUG_COUNTER(obj_imemo_constcache)
279
322
 
280
323
  /* ar_table */
281
324
  RB_DEBUG_COUNTER(artable_hint_hit)
@@ -295,14 +338,24 @@ RB_DEBUG_COUNTER(theap_alloc)
295
338
  RB_DEBUG_COUNTER(theap_alloc_fail)
296
339
  RB_DEBUG_COUNTER(theap_evacuate)
297
340
 
341
+ // VM sync
342
+ RB_DEBUG_COUNTER(vm_sync_lock)
343
+ RB_DEBUG_COUNTER(vm_sync_lock_enter)
344
+ RB_DEBUG_COUNTER(vm_sync_lock_enter_nb)
345
+ RB_DEBUG_COUNTER(vm_sync_lock_enter_cr)
346
+ RB_DEBUG_COUNTER(vm_sync_barrier)
347
+
298
348
  /* mjit_exec() counts */
299
349
  RB_DEBUG_COUNTER(mjit_exec)
300
350
  RB_DEBUG_COUNTER(mjit_exec_not_added)
301
- RB_DEBUG_COUNTER(mjit_exec_not_added_add_iseq)
302
351
  RB_DEBUG_COUNTER(mjit_exec_not_ready)
303
352
  RB_DEBUG_COUNTER(mjit_exec_not_compiled)
304
353
  RB_DEBUG_COUNTER(mjit_exec_call_func)
305
354
 
355
+ /* MJIT enqueue / unload */
356
+ RB_DEBUG_COUNTER(mjit_add_iseq_to_process)
357
+ RB_DEBUG_COUNTER(mjit_unload_units)
358
+
306
359
  /* MJIT <-> VM frame push counts */
307
360
  RB_DEBUG_COUNTER(mjit_frame_VM2VM)
308
361
  RB_DEBUG_COUNTER(mjit_frame_VM2JT)
@@ -312,9 +365,11 @@ RB_DEBUG_COUNTER(mjit_frame_JT2VM)
312
365
  /* MJIT cancel counters */
313
366
  RB_DEBUG_COUNTER(mjit_cancel)
314
367
  RB_DEBUG_COUNTER(mjit_cancel_ivar_inline)
368
+ RB_DEBUG_COUNTER(mjit_cancel_exivar_inline)
315
369
  RB_DEBUG_COUNTER(mjit_cancel_send_inline)
316
370
  RB_DEBUG_COUNTER(mjit_cancel_opt_insn) /* CALL_SIMPLE_METHOD */
317
371
  RB_DEBUG_COUNTER(mjit_cancel_invalidate_all)
372
+ RB_DEBUG_COUNTER(mjit_cancel_leave)
318
373
 
319
374
  /* rb_mjit_unit_list length */
320
375
  RB_DEBUG_COUNTER(mjit_length_unit_queue)
@@ -335,6 +390,10 @@ RB_DEBUG_COUNTER(load_path_is_not_realpath)
335
390
  #ifndef RUBY_DEBUG_COUNTER_H
336
391
  #define RUBY_DEBUG_COUNTER_H 1
337
392
 
393
+ #include "ruby/internal/config.h"
394
+ #include <stddef.h> /* for size_t */
395
+ #include "ruby/ruby.h" /* for VALUE */
396
+
338
397
  #if !defined(__GNUC__) && USE_DEBUG_COUNTER
339
398
  #error "USE_DEBUG_COUNTER is not supported by other than __GNUC__"
340
399
  #endif
@@ -347,32 +406,62 @@ enum rb_debug_counter_type {
347
406
  };
348
407
 
349
408
  #if USE_DEBUG_COUNTER
350
- #include "ruby/ruby.h"
351
-
352
409
  extern size_t rb_debug_counter[];
410
+ RUBY_EXTERN struct rb_ractor_struct *ruby_single_main_ractor;
411
+ RUBY_EXTERN void rb_debug_counter_add_atomic(enum rb_debug_counter_type type, int add);
353
412
 
354
413
  inline static int
355
414
  rb_debug_counter_add(enum rb_debug_counter_type type, int add, int cond)
356
415
  {
357
416
  if (cond) {
358
- rb_debug_counter[(int)type] += add;
417
+ if (ruby_single_main_ractor != NULL) {
418
+ rb_debug_counter[(int)type] += add;
419
+ }
420
+ else {
421
+ rb_debug_counter_add_atomic(type, add);
422
+ }
359
423
  }
360
424
  return cond;
361
425
  }
362
426
 
427
+ inline static int
428
+ rb_debug_counter_max(enum rb_debug_counter_type type, unsigned int num)
429
+ {
430
+ // TODO: sync
431
+ if (rb_debug_counter[(int)type] < num) {
432
+ rb_debug_counter[(int)type] = num;
433
+ return 1;
434
+ }
435
+ else {
436
+ return 0;
437
+ }
438
+ }
439
+
363
440
  VALUE rb_debug_counter_reset(VALUE klass);
364
441
  VALUE rb_debug_counter_show(VALUE klass);
365
442
 
366
443
  #define RB_DEBUG_COUNTER_INC(type) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, 1)
367
444
  #define RB_DEBUG_COUNTER_INC_UNLESS(type, cond) (!rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, !(cond)))
368
- #define RB_DEBUG_COUNTER_INC_IF(type, cond) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, (cond))
445
+ #define RB_DEBUG_COUNTER_INC_IF(type, cond) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, 1, !!(cond))
446
+ #define RB_DEBUG_COUNTER_ADD(type, num) rb_debug_counter_add(RB_DEBUG_COUNTER_##type, (num), 1)
447
+ #define RB_DEBUG_COUNTER_SETMAX(type, num) rb_debug_counter_max(RB_DEBUG_COUNTER_##type, (unsigned int)(num))
369
448
 
370
449
  #else
371
450
  #define RB_DEBUG_COUNTER_INC(type) ((void)0)
372
- #define RB_DEBUG_COUNTER_INC_UNLESS(type, cond) (cond)
373
- #define RB_DEBUG_COUNTER_INC_IF(type, cond) (cond)
451
+ #define RB_DEBUG_COUNTER_INC_UNLESS(type, cond) (!!(cond))
452
+ #define RB_DEBUG_COUNTER_INC_IF(type, cond) (!!(cond))
453
+ #define RB_DEBUG_COUNTER_ADD(type, num) ((void)0)
454
+ #define RB_DEBUG_COUNTER_SETMAX(type, num) 0
374
455
  #endif
375
456
 
376
457
  void rb_debug_counter_show_results(const char *msg);
377
458
 
459
+ RUBY_SYMBOL_EXPORT_BEGIN
460
+
461
+ size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr);
462
+ void ruby_debug_counter_reset(void);
463
+ void ruby_debug_counter_show_at_exit(int enable);
464
+
465
+ RUBY_SYMBOL_EXPORT_END
466
+
378
467
  #endif /* RUBY_DEBUG_COUNTER_H */
@@ -1,3 +1,5 @@
1
+ #ifndef DLN_H
2
+ #define DLN_H
1
3
  /**********************************************************************
2
4
 
3
5
  dln.h -
@@ -9,24 +11,7 @@
9
11
 
10
12
  **********************************************************************/
11
13
 
12
- #ifndef DLN_H
13
- #define DLN_H
14
-
15
- #ifdef __cplusplus
16
- # ifndef HAVE_PROTOTYPES
17
- # define HAVE_PROTOTYPES 1
18
- # endif
19
- # ifndef HAVE_STDARG_PROTOTYPES
20
- # define HAVE_STDARG_PROTOTYPES 1
21
- # endif
22
- #endif
23
-
24
- #undef _
25
- #ifdef HAVE_PROTOTYPES
26
- # define _(args) args
27
- #else
28
- # define _(args) ()
29
- #endif
14
+ #include "ruby/defines.h" /* for RUBY_SYMBOL_EXPORT_BEGIN */
30
15
 
31
16
  RUBY_SYMBOL_EXPORT_BEGIN
32
17
 
@@ -39,11 +24,6 @@ RUBY_SYMBOL_EXPORT_BEGIN
39
24
 
40
25
  char *dln_find_exe_r(const char*,const char*,char*,size_t DLN_FIND_EXTRA_ARG_DECL);
41
26
  char *dln_find_file_r(const char*,const char*,char*,size_t DLN_FIND_EXTRA_ARG_DECL);
42
-
43
- #ifdef USE_DLN_A_OUT
44
- extern char *dln_argv0;
45
- #endif
46
-
47
27
  void *dln_load(const char*);
48
28
 
49
29
  RUBY_SYMBOL_EXPORT_END
@@ -1,3 +1,5 @@
1
+ #ifndef RUBY_ENCINDEX_H
2
+ #define RUBY_ENCINDEX_H 1
1
3
  /**********************************************************************
2
4
 
3
5
  encindex.h -
@@ -9,8 +11,7 @@
9
11
 
10
12
  **********************************************************************/
11
13
 
12
- #ifndef RUBY_ENCINDEX_H
13
- #define RUBY_ENCINDEX_H 1
14
+ #include "ruby/encoding.h" /* rb_ascii8bit_encindex etc. */
14
15
  #if defined(__cplusplus)
15
16
  extern "C" {
16
17
  #if 0