debase-ruby_core_source 0.10.9 → 0.10.13

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,191 @@
1
+ #ifndef INTERNAL_ERROR_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_ERROR_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Exception.
10
+ */
11
+ #include "ruby/internal/config.h"
12
+ #include <stdarg.h> /* for va_list */
13
+ #include "internal/string.h" /* for rb_fstring_cstr */
14
+ #include "ruby/internal/stdbool.h" /* for bool */
15
+ #include "ruby/encoding.h" /* for rb_encoding */
16
+ #include "ruby/intern.h" /* for rb_exc_raise */
17
+ #include "ruby/ruby.h" /* for enum ruby_value_type */
18
+
19
+ #ifdef Check_Type
20
+ # undef Check_Type /* in ruby/ruby.h */
21
+ #endif
22
+
23
+ #ifdef rb_raise_static
24
+ # undef rb_raise_static
25
+ # undef rb_sys_fail_path
26
+ # undef rb_syserr_fail_path
27
+ #endif
28
+
29
+ #define rb_raise_static(e, m) \
30
+ rb_raise_cstr_i((e), rb_str_new_static((m), rb_strlen_lit(m)))
31
+ #ifdef RUBY_FUNCTION_NAME_STRING
32
+ # define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path)
33
+ # define rb_syserr_fail_path(err, path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
34
+ # define rb_syserr_new_path(err, path) rb_syserr_new_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
35
+ #else
36
+ # define rb_sys_fail_path(path) rb_sys_fail_str(path)
37
+ # define rb_syserr_fail_path(err, path) rb_syserr_fail_str((err), (path))
38
+ # define rb_syserr_new_path(err, path) rb_syserr_new_str((err), (path))
39
+ #endif
40
+
41
+ /* error.c */
42
+ extern long rb_backtrace_length_limit;
43
+ extern VALUE rb_eEAGAIN;
44
+ extern VALUE rb_eEWOULDBLOCK;
45
+ extern VALUE rb_eEINPROGRESS;
46
+ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 3, 0)
47
+ void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args);
48
+ NORETURN(void rb_async_bug_errno(const char *,int));
49
+ const char *rb_builtin_type_name(int t);
50
+ const char *rb_builtin_class_name(VALUE x);
51
+ PRINTF_ARGS(void rb_warn_deprecated(const char *fmt, const char *suggest, ...), 1, 3);
52
+ PRINTF_ARGS(void rb_warn_deprecated_to_remove(const char *removal, const char *fmt, const char *suggest, ...), 2, 4);
53
+ #if RUBY_DEBUG
54
+ # include "ruby/version.h"
55
+ # define RUBY_VERSION_SINCE(major, minor) (RUBY_API_VERSION_CODE >= (major * 10000) + (minor) * 100)
56
+ # define RUBY_VERSION_BEFORE(major, minor) (RUBY_API_VERSION_CODE < (major * 10000) + (minor) * 100)
57
+ # if defined(RBIMPL_WARNING_PRAGMA0)
58
+ # define RBIMPL_TODO0(x) RBIMPL_WARNING_PRAGMA0(message(x))
59
+ # elif RBIMPL_COMPILER_SINCE(MSVC, 12, 0, 0)
60
+ # define RBIMPL_TODO0(x) __pragma(message(x))
61
+ # endif
62
+
63
+ # if RBIMPL_HAS_ATTRIBUTE(diagnose_if) || defined(__OPTIMIZE__)
64
+
65
+ #define RUBY_VERSION_isdigit(c) ('0'<=(c)&&(c)<='9')
66
+ // upto 99
67
+ #define RUBY_VERSION__number_len(v, ofs) \
68
+ (!RUBY_VERSION_isdigit((v)[ofs]) ? \
69
+ 0 : !RUBY_VERSION_isdigit((v)[(ofs) + 1]) ? 1 : 2)
70
+ #define RUBY_VERSION__to_number(v, ofs) \
71
+ (!RUBY_VERSION_isdigit((v)[ofs]) ? \
72
+ 0 : !RUBY_VERSION_isdigit((v)[(ofs) + 1]) ? \
73
+ ((v)[ofs]-'0') : \
74
+ (((v)[ofs]-'0')*10+(v)[(ofs)+1]-'0'))
75
+
76
+ #define RUBY_VERSION_CODE_FROM_MAJOR_MINOR_STRING(v) \
77
+ (RUBY_VERSION__to_number(v, 0) * 10000 + \
78
+ ((v)[RUBY_VERSION__number_len(v, 0)] == '.' ? \
79
+ RUBY_VERSION__to_number(v, RUBY_VERSION__number_len(v, 0)+1) * 100 : 0))
80
+ #define RUBY_VERSION_STRING_SINCE(v) (RUBY_API_VERSION_CODE >= RUBY_VERSION_CODE_FROM_MAJOR_MINOR_STRING(v))
81
+ #define RUBY_VERSION_STRING_BEFORE(v) (RUBY_API_VERSION_CODE < RUBY_VERSION_CODE_FROM_MAJOR_MINOR_STRING(v))
82
+
83
+ # if RBIMPL_HAS_ATTRIBUTE(diagnose_if)
84
+ RBIMPL_ATTR_FORCEINLINE()
85
+ static void
86
+ rb_deprecated_method_to_be_removed(const char *removal)
87
+ RBIMPL_ATTR_DIAGNOSE_IF(!RUBY_VERSION_isdigit(removal[0]), "malformed version number", "error")
88
+ RBIMPL_ATTR_DIAGNOSE_IF(RUBY_VERSION_STRING_SINCE(removal), "deprecated method to be removed", "error")
89
+ {
90
+ }
91
+ # else
92
+ RBIMPL_ATTR_ERROR(("deprecated"))
93
+ void rb_deprecated_method_to_be_removed(const char *);
94
+ # define rb_deprecated_method_to_be_removed(removal) \
95
+ (sizeof(char[1-2*(!RUBY_VERSION_isdigit(removal[0]) || RUBY_VERSION_STRING_SINCE(removal))])!=1 ? \
96
+ rb_deprecated_method_to_be_removed(removal) : \
97
+ RBIMPL_ASSERT_NOTHING)
98
+ # endif
99
+ # define rb_warn_deprecated_to_remove_at(removal, ...) \
100
+ (rb_deprecated_method_to_be_removed(#removal), \
101
+ rb_warn_deprecated_to_remove(#removal, __VA_ARGS__))
102
+ # endif
103
+ #endif
104
+ #ifndef rb_warn_deprecated_to_remove_at
105
+ # define rb_warn_deprecated_to_remove_at(removal, ...) \
106
+ rb_warn_deprecated_to_remove(#removal, __VA_ARGS__)
107
+ #endif
108
+ #ifndef RUBY_VERSION_SINCE
109
+ # define RUBY_VERSION_SINCE(major, minor) 0
110
+ #endif
111
+ #ifndef RUBY_VERSION_BEFORE
112
+ # define RUBY_VERSION_BEFORE(major, minor) 0
113
+ #endif
114
+ #ifndef RBIMPL_TODO0
115
+ # define RBIMPL_TODO0(x)
116
+ #endif
117
+ #define RBIMPL_TODO(message) RBIMPL_TODO0("TODO: " message)
118
+ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 6, 0)
119
+ VALUE rb_syntax_error_append(VALUE, VALUE, int, int, rb_encoding*, const char*, va_list);
120
+ PRINTF_ARGS(void rb_enc_warn(rb_encoding *enc, const char *fmt, ...), 2, 3);
121
+ PRINTF_ARGS(void rb_sys_enc_warning(rb_encoding *enc, const char *fmt, ...), 2, 3);
122
+ PRINTF_ARGS(void rb_syserr_enc_warning(int err, rb_encoding *enc, const char *fmt, ...), 3, 4);
123
+ rb_warning_category_t rb_warning_category_from_name(VALUE category);
124
+ bool rb_warning_category_enabled_p(rb_warning_category_t category);
125
+ VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method);
126
+ VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv);
127
+ VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name);
128
+ PRINTF_ARGS(VALUE rb_warning_string(const char *fmt, ...), 1, 2);
129
+ RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 0)
130
+ NORETURN(void rb_vraise(VALUE, const char *, va_list));
131
+ NORETURN(static inline void rb_raise_cstr(VALUE etype, const char *mesg));
132
+ NORETURN(static inline void rb_raise_cstr_i(VALUE etype, VALUE mesg));
133
+ NORETURN(static inline void rb_name_err_raise_str(VALUE mesg, VALUE recv, VALUE name));
134
+ NORETURN(static inline void rb_name_err_raise(const char *mesg, VALUE recv, VALUE name));
135
+ NORETURN(static inline void rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name));
136
+ static inline void Check_Type(VALUE v, enum ruby_value_type t);
137
+ static inline bool rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type);
138
+ #define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
139
+
140
+ RUBY_SYMBOL_EXPORT_BEGIN
141
+ /* error.c (export) */
142
+ int rb_bug_reporter_add(void (*func)(FILE *, void *), void *data);
143
+ #ifdef RUBY_FUNCTION_NAME_STRING
144
+ NORETURN(void rb_sys_fail_path_in(const char *func_name, VALUE path));
145
+ NORETURN(void rb_syserr_fail_path_in(const char *func_name, int err, VALUE path));
146
+ VALUE rb_syserr_new_path_in(const char *func_name, int n, VALUE path);
147
+ #endif
148
+ RUBY_SYMBOL_EXPORT_END
149
+
150
+ static inline void
151
+ rb_raise_cstr_i(VALUE etype, VALUE mesg)
152
+ {
153
+ VALUE exc = rb_exc_new_str(etype, mesg);
154
+ rb_exc_raise(exc);
155
+ }
156
+
157
+ static inline void
158
+ rb_raise_cstr(VALUE etype, const char *mesg)
159
+ {
160
+ VALUE str = rb_str_new_cstr(mesg);
161
+ rb_raise_cstr_i(etype, str);
162
+ }
163
+
164
+ static inline void
165
+ rb_name_err_raise_str(VALUE mesg, VALUE recv, VALUE name)
166
+ {
167
+ VALUE exc = rb_name_err_new(mesg, recv, name);
168
+ rb_exc_raise(exc);
169
+ }
170
+
171
+ static inline void
172
+ rb_name_err_raise(const char *mesg, VALUE recv, VALUE name)
173
+ {
174
+ VALUE str = rb_fstring_cstr(mesg);
175
+ rb_name_err_raise_str(str, recv, name);
176
+ }
177
+
178
+ static inline void
179
+ rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name)
180
+ {
181
+ VALUE exc = rb_key_err_new(mesg, recv, name);
182
+ rb_exc_raise(exc);
183
+ }
184
+
185
+ static inline bool
186
+ rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type)
187
+ {
188
+ return RB_TYPE_P(obj, T_DATA) && RTYPEDDATA_P(obj) && (RTYPEDDATA_TYPE(obj) == data_type);
189
+ }
190
+
191
+ #endif /* INTERNAL_ERROR_H */
@@ -0,0 +1,32 @@
1
+ #ifndef INTERNAL_EVAL_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_EVAL_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for the evaluator.
10
+ * @note There also is eval_intern.h, which is evaluator's internal
11
+ * header (related to this file, but not the same role).
12
+ */
13
+ #include "ruby/ruby.h" /* for ID */
14
+
15
+ #define id_signo ruby_static_id_signo
16
+ #define id_status ruby_static_id_status
17
+
18
+ /* eval.c */
19
+ extern ID ruby_static_id_signo;
20
+ extern ID ruby_static_id_status;
21
+ VALUE rb_refinement_module_get_refined_class(VALUE module);
22
+ void rb_class_modify_check(VALUE);
23
+ NORETURN(VALUE rb_f_raise(int argc, VALUE *argv));
24
+
25
+ /* eval_error.c */
26
+ VALUE rb_get_backtrace(VALUE info);
27
+
28
+ /* eval_jump.c */
29
+ void rb_call_end_proc(VALUE data);
30
+ void rb_mark_end_proc(void);
31
+
32
+ #endif /* INTERNAL_EVAL_H */
@@ -0,0 +1,38 @@
1
+ #ifndef INTERNAL_FILE_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_FILE_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for File.
10
+ */
11
+ #include "ruby/ruby.h" /* for VALUE */
12
+ #include "ruby/encoding.h" /* for rb_encodinng */
13
+
14
+ /* file.c */
15
+ extern const char ruby_null_device[];
16
+ VALUE rb_home_dir_of(VALUE user, VALUE result);
17
+ VALUE rb_default_home_dir(VALUE result);
18
+ VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict);
19
+ VALUE rb_check_realpath(VALUE basedir, VALUE path, rb_encoding *origenc);
20
+ void rb_file_const(const char*, VALUE);
21
+ int rb_file_load_ok(const char *);
22
+ VALUE rb_file_expand_path_fast(VALUE, VALUE);
23
+ VALUE rb_file_expand_path_internal(VALUE, VALUE, int, int, VALUE);
24
+ VALUE rb_get_path_check_to_string(VALUE);
25
+ VALUE rb_get_path_check_convert(VALUE);
26
+ int ruby_is_fd_loadable(int fd);
27
+
28
+ RUBY_SYMBOL_EXPORT_BEGIN
29
+ /* file.c (export) */
30
+ #ifdef HAVE_READLINK
31
+ VALUE rb_readlink(VALUE path, rb_encoding *enc);
32
+ #endif
33
+ #ifdef __APPLE__
34
+ VALUE rb_str_normalize_ospath(const char *ptr, long len);
35
+ #endif
36
+ RUBY_SYMBOL_EXPORT_END
37
+
38
+ #endif /* INTERNAL_FILE_H */
@@ -0,0 +1,184 @@
1
+ #ifndef INTERNAL_FIXNUM_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_FIXNUM_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Fixnums.
10
+ */
11
+ #include "ruby/internal/config.h" /* for HAVE_LONG_LONG */
12
+ #include <limits.h> /* for CHAR_BIT */
13
+ #include "internal/compilers.h" /* for __has_builtin */
14
+ #include "ruby/internal/stdbool.h" /* for bool */
15
+ #include "ruby/intern.h" /* for rb_big_mul */
16
+ #include "ruby/ruby.h" /* for RB_FIXABLE */
17
+
18
+ #if HAVE_LONG_LONG && SIZEOF_LONG * 2 <= SIZEOF_LONG_LONG
19
+ # define DLONG LONG_LONG
20
+ # define DL2NUM(x) LL2NUM(x)
21
+ #elif defined(HAVE_INT128_T)
22
+ # define DLONG int128_t
23
+ # define DL2NUM(x) (RB_FIXABLE(x) ? LONG2FIX(x) : rb_int128t2big(x))
24
+ VALUE rb_int128t2big(int128_t n); /* in bignum.c */
25
+ #endif
26
+
27
+ static inline long rb_overflowed_fix_to_int(long x);
28
+ static inline VALUE rb_fix_plus_fix(VALUE x, VALUE y);
29
+ static inline VALUE rb_fix_minus_fix(VALUE x, VALUE y);
30
+ static inline VALUE rb_fix_mul_fix(VALUE x, VALUE y);
31
+ static inline void rb_fix_divmod_fix(VALUE x, VALUE y, VALUE *divp, VALUE *modp);
32
+ static inline VALUE rb_fix_div_fix(VALUE x, VALUE y);
33
+ static inline VALUE rb_fix_mod_fix(VALUE x, VALUE y);
34
+ static inline bool FIXNUM_POSITIVE_P(VALUE num);
35
+ static inline bool FIXNUM_NEGATIVE_P(VALUE num);
36
+ static inline bool FIXNUM_ZERO_P(VALUE num);
37
+
38
+ static inline long
39
+ rb_overflowed_fix_to_int(long x)
40
+ {
41
+ return (long)((unsigned long)(x >> 1) ^ (1LU << (SIZEOF_LONG * CHAR_BIT - 1)));
42
+ }
43
+
44
+ static inline VALUE
45
+ rb_fix_plus_fix(VALUE x, VALUE y)
46
+ {
47
+ #if !__has_builtin(__builtin_add_overflow)
48
+ long lz = FIX2LONG(x) + FIX2LONG(y);
49
+ return LONG2NUM(lz);
50
+ #else
51
+ long lz;
52
+ /* NOTE
53
+ * (1) `LONG2FIX(FIX2LONG(x)+FIX2LONG(y))`
54
+ + = `((lx*2+1)/2 + (ly*2+1)/2)*2+1`
55
+ + = `lx*2 + ly*2 + 1`
56
+ + = `(lx*2+1) + (ly*2+1) - 1`
57
+ + = `x + y - 1`
58
+ * (2) Fixnum's LSB is always 1.
59
+ * It means you can always run `x - 1` without overflow.
60
+ * (3) Of course `z = x + (y-1)` may overflow.
61
+ * At that time true value is
62
+ * * positive: 0b0 1xxx...1, and z = 0b1xxx...1
63
+ * * negative: 0b1 0xxx...1, and z = 0b0xxx...1
64
+ * To convert this true value to long,
65
+ * (a) Use arithmetic shift
66
+ * * positive: 0b11xxx...
67
+ * * negative: 0b00xxx...
68
+ * (b) invert MSB
69
+ * * positive: 0b01xxx...
70
+ * * negative: 0b10xxx...
71
+ */
72
+ if (__builtin_add_overflow((long)x, (long)y-1, &lz)) {
73
+ return rb_int2big(rb_overflowed_fix_to_int(lz));
74
+ }
75
+ else {
76
+ return (VALUE)lz;
77
+ }
78
+ #endif
79
+ }
80
+
81
+ static inline VALUE
82
+ rb_fix_minus_fix(VALUE x, VALUE y)
83
+ {
84
+ #if !__has_builtin(__builtin_sub_overflow)
85
+ long lz = FIX2LONG(x) - FIX2LONG(y);
86
+ return LONG2NUM(lz);
87
+ #else
88
+ long lz;
89
+ if (__builtin_sub_overflow((long)x, (long)y-1, &lz)) {
90
+ return rb_int2big(rb_overflowed_fix_to_int(lz));
91
+ }
92
+ else {
93
+ return (VALUE)lz;
94
+ }
95
+ #endif
96
+ }
97
+
98
+ /* arguments must be Fixnum */
99
+ static inline VALUE
100
+ rb_fix_mul_fix(VALUE x, VALUE y)
101
+ {
102
+ long lx = FIX2LONG(x);
103
+ long ly = FIX2LONG(y);
104
+ #ifdef DLONG
105
+ return DL2NUM((DLONG)lx * (DLONG)ly);
106
+ #else
107
+ if (MUL_OVERFLOW_FIXNUM_P(lx, ly)) {
108
+ return rb_big_mul(rb_int2big(lx), rb_int2big(ly));
109
+ }
110
+ else {
111
+ return LONG2FIX(lx * ly);
112
+ }
113
+ #endif
114
+ }
115
+
116
+ /*
117
+ * This behaves different from C99 for negative arguments.
118
+ * Note that div may overflow fixnum.
119
+ */
120
+ static inline void
121
+ rb_fix_divmod_fix(VALUE a, VALUE b, VALUE *divp, VALUE *modp)
122
+ {
123
+ /* assume / and % comply C99.
124
+ * ldiv(3) won't be inlined by GCC and clang.
125
+ * I expect / and % are compiled as single idiv.
126
+ */
127
+ long x = FIX2LONG(a);
128
+ long y = FIX2LONG(b);
129
+ long div, mod;
130
+ if (x == FIXNUM_MIN && y == -1) {
131
+ if (divp) *divp = LONG2NUM(-FIXNUM_MIN);
132
+ if (modp) *modp = LONG2FIX(0);
133
+ return;
134
+ }
135
+ div = x / y;
136
+ mod = x % y;
137
+ if (y > 0 ? mod < 0 : mod > 0) {
138
+ mod += y;
139
+ div -= 1;
140
+ }
141
+ if (divp) *divp = LONG2FIX(div);
142
+ if (modp) *modp = LONG2FIX(mod);
143
+ }
144
+
145
+ /* div() for Ruby
146
+ * This behaves different from C99 for negative arguments.
147
+ */
148
+ static inline VALUE
149
+ rb_fix_div_fix(VALUE x, VALUE y)
150
+ {
151
+ VALUE div;
152
+ rb_fix_divmod_fix(x, y, &div, NULL);
153
+ return div;
154
+ }
155
+
156
+ /* mod() for Ruby
157
+ * This behaves different from C99 for negative arguments.
158
+ */
159
+ static inline VALUE
160
+ rb_fix_mod_fix(VALUE x, VALUE y)
161
+ {
162
+ VALUE mod;
163
+ rb_fix_divmod_fix(x, y, NULL, &mod);
164
+ return mod;
165
+ }
166
+
167
+ static inline bool
168
+ FIXNUM_POSITIVE_P(VALUE num)
169
+ {
170
+ return (SIGNED_VALUE)num > (SIGNED_VALUE)INT2FIX(0);
171
+ }
172
+
173
+ static inline bool
174
+ FIXNUM_NEGATIVE_P(VALUE num)
175
+ {
176
+ return (SIGNED_VALUE)num < 0;
177
+ }
178
+
179
+ static inline bool
180
+ FIXNUM_ZERO_P(VALUE num)
181
+ {
182
+ return num == INT2FIX(0);
183
+ }
184
+ #endif /* INTERNAL_FIXNUM_H */
@@ -0,0 +1,175 @@
1
+ #ifndef INTERNAL_GC_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_GC_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for GC.
10
+ */
11
+ #include "ruby/internal/config.h"
12
+
13
+ #include <stddef.h> /* for size_t */
14
+
15
+ #include "internal/compilers.h" /* for __has_attribute */
16
+ #include "ruby/ruby.h" /* for rb_event_flag_t */
17
+
18
+ struct rb_execution_context_struct; /* in vm_core.h */
19
+ struct rb_objspace; /* in vm_core.h */
20
+
21
+ #ifdef NEWOBJ_OF
22
+ # undef NEWOBJ_OF
23
+ # undef RB_NEWOBJ_OF
24
+ # undef RB_OBJ_WRITE
25
+ #endif
26
+
27
+ #define RVALUE_SIZE (sizeof(struct RBasic) + sizeof(VALUE[RBIMPL_RVALUE_EMBED_LEN_MAX]))
28
+
29
+ #define RB_RVARGC_NEWOBJ_OF(var, T, c, f, s) \
30
+ T *(var) = (T *)(((f) & FL_WB_PROTECTED) ? \
31
+ rb_wb_protected_newobj_of((c), (f) & ~FL_WB_PROTECTED, s) : \
32
+ rb_wb_unprotected_newobj_of((c), (f), s))
33
+
34
+ #define RB_RVARGC_EC_NEWOBJ_OF(ec, var, T, c, f, s) \
35
+ T *(var) = (T *)(((f) & FL_WB_PROTECTED) ? \
36
+ rb_ec_wb_protected_newobj_of((ec), (c), (f) & ~FL_WB_PROTECTED, s) : \
37
+ rb_wb_unprotected_newobj_of((c), (f), s))
38
+
39
+ /* optimized version of NEWOBJ() */
40
+ #define RB_NEWOBJ_OF(var, T, c, f) RB_RVARGC_NEWOBJ_OF(var, T, c, f, RVALUE_SIZE)
41
+
42
+ #define RB_EC_NEWOBJ_OF(ec, var, T, c, f) RB_RVARGC_EC_NEWOBJ_OF(ec, var, T, c, f, RVALUE_SIZE)
43
+
44
+ #define NEWOBJ_OF(var, T, c, f) RB_NEWOBJ_OF((var), T, (c), (f))
45
+ #define RVARGC_NEWOBJ_OF(var, T, c, f, s) RB_RVARGC_NEWOBJ_OF((var), T, (c), (f), (s))
46
+ #define RB_OBJ_GC_FLAGS_MAX 6 /* used in ext/objspace */
47
+
48
+ #ifndef USE_UNALIGNED_MEMBER_ACCESS
49
+ # define UNALIGNED_MEMBER_ACCESS(expr) (expr)
50
+ #elif ! USE_UNALIGNED_MEMBER_ACCESS
51
+ # define UNALIGNED_MEMBER_ACCESS(expr) (expr)
52
+ #elif ! (__has_warning("-Waddress-of-packed-member") || GCC_VERSION_SINCE(9, 0, 0))
53
+ # define UNALIGNED_MEMBER_ACCESS(expr) (expr)
54
+ #else
55
+ # include "internal/warnings.h"
56
+ # define UNALIGNED_MEMBER_ACCESS(expr) __extension__({ \
57
+ COMPILER_WARNING_PUSH; \
58
+ COMPILER_WARNING_IGNORED(-Waddress-of-packed-member); \
59
+ __typeof__(expr) unaligned_member_access_result = (expr); \
60
+ COMPILER_WARNING_POP; \
61
+ unaligned_member_access_result; \
62
+ })
63
+ #endif
64
+
65
+ #define UNALIGNED_MEMBER_PTR(ptr, mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
66
+ #define RB_OBJ_WRITE(a, slot, b) \
67
+ rb_obj_write((VALUE)(a), UNALIGNED_MEMBER_ACCESS((VALUE *)(slot)), \
68
+ (VALUE)(b), __FILE__, __LINE__)
69
+
70
+ typedef struct ractor_newobj_cache {
71
+ struct RVALUE *freelist;
72
+ struct heap_page *using_page;
73
+ } rb_ractor_newobj_cache_t;
74
+
75
+ /* gc.c */
76
+ extern VALUE *ruby_initial_gc_stress_ptr;
77
+ extern int ruby_disable_gc;
78
+ RUBY_ATTR_MALLOC void *ruby_mimmalloc(size_t size);
79
+ void ruby_mimfree(void *ptr);
80
+ void rb_objspace_set_event_hook(const rb_event_flag_t event);
81
+ VALUE rb_objspace_gc_enable(struct rb_objspace *);
82
+ VALUE rb_objspace_gc_disable(struct rb_objspace *);
83
+ void ruby_gc_set_params(void);
84
+ void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj);
85
+ #if __has_attribute(alloc_align)
86
+ __attribute__((__alloc_align__(1)))
87
+ #endif
88
+ RUBY_ATTR_MALLOC void *rb_aligned_malloc(size_t, size_t) RUBY_ATTR_ALLOC_SIZE((2));
89
+ size_t rb_size_mul_or_raise(size_t, size_t, VALUE); /* used in compile.c */
90
+ size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE); /* used in iseq.h */
91
+ RUBY_ATTR_MALLOC void *rb_xmalloc_mul_add(size_t, size_t, size_t);
92
+ void *rb_xrealloc_mul_add(const void *, size_t, size_t, size_t);
93
+ RUBY_ATTR_MALLOC void *rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t);
94
+ RUBY_ATTR_MALLOC void *rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t);
95
+ static inline void *ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2));
96
+ static inline void *ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2, 3));
97
+ static inline void ruby_sized_xfree_inlined(void *ptr, size_t size);
98
+ VALUE rb_class_allocate_instance(VALUE klass);
99
+ void rb_gc_ractor_newobj_cache_clear(rb_ractor_newobj_cache_t *newobj_cache);
100
+ size_t rb_gc_obj_slot_size(VALUE obj);
101
+ bool rb_gc_size_allocatable_p(size_t size);
102
+
103
+ RUBY_SYMBOL_EXPORT_BEGIN
104
+ /* gc.c (export) */
105
+ const char *rb_objspace_data_type_name(VALUE obj);
106
+ VALUE rb_wb_protected_newobj_of(VALUE, VALUE, size_t);
107
+ VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE, size_t);
108
+ VALUE rb_ec_wb_protected_newobj_of(struct rb_execution_context_struct *ec, VALUE klass, VALUE flags, size_t);
109
+ size_t rb_obj_memsize_of(VALUE);
110
+ void rb_gc_verify_internal_consistency(void);
111
+ size_t rb_obj_gc_flags(VALUE, ID[], size_t);
112
+ void rb_gc_mark_values(long n, const VALUE *values);
113
+ void rb_gc_mark_vm_stack_values(long n, const VALUE *values);
114
+ void *ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2));
115
+ void *ruby_sized_xrealloc2(void *ptr, size_t new_count, size_t element_size, size_t old_count) RUBY_ATTR_RETURNS_NONNULL RUBY_ATTR_ALLOC_SIZE((2, 3));
116
+ void ruby_sized_xfree(void *x, size_t size);
117
+ RUBY_SYMBOL_EXPORT_END
118
+
119
+ MJIT_SYMBOL_EXPORT_BEGIN
120
+ int rb_ec_stack_check(struct rb_execution_context_struct *ec);
121
+ void rb_gc_writebarrier_remember(VALUE obj);
122
+ const char *rb_obj_info(VALUE obj);
123
+ MJIT_SYMBOL_EXPORT_END
124
+
125
+ #if defined(HAVE_MALLOC_USABLE_SIZE) || defined(HAVE_MALLOC_SIZE) || defined(_WIN32)
126
+
127
+ static inline void *
128
+ ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size)
129
+ {
130
+ return ruby_xrealloc(ptr, new_size);
131
+ }
132
+
133
+ static inline void *
134
+ ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count)
135
+ {
136
+ return ruby_xrealloc2(ptr, new_count, elemsiz);
137
+ }
138
+
139
+ static inline void
140
+ ruby_sized_xfree_inlined(void *ptr, size_t size)
141
+ {
142
+ ruby_xfree(ptr);
143
+ }
144
+
145
+ # define SIZED_REALLOC_N(x, y, z, w) REALLOC_N(x, y, z)
146
+
147
+ #else
148
+
149
+ static inline void *
150
+ ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size)
151
+ {
152
+ return ruby_sized_xrealloc(ptr, new_size, old_size);
153
+ }
154
+
155
+ static inline void *
156
+ ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count)
157
+ {
158
+ return ruby_sized_xrealloc2(ptr, new_count, elemsiz, old_count);
159
+ }
160
+
161
+ static inline void
162
+ ruby_sized_xfree_inlined(void *ptr, size_t size)
163
+ {
164
+ ruby_sized_xfree(ptr, size);
165
+ }
166
+
167
+ # define SIZED_REALLOC_N(v, T, m, n) \
168
+ ((v) = (T *)ruby_sized_xrealloc2((void *)(v), (m), sizeof(T), (n)))
169
+
170
+ #endif /* HAVE_MALLOC_USABLE_SIZE */
171
+
172
+ #define ruby_sized_xrealloc ruby_sized_xrealloc_inlined
173
+ #define ruby_sized_xrealloc2 ruby_sized_xrealloc2_inlined
174
+ #define ruby_sized_xfree ruby_sized_xfree_inlined
175
+ #endif /* INTERNAL_GC_H */