debase-ruby_core_source 0.10.13 → 0.10.16

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 (303) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/debase-ruby_core_source.gemspec +3 -3
  4. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/addr2line.h +1 -1
  5. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-2.5.4-p155}/ccan/build_assert/build_assert.h +0 -0
  6. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-2.5.4-p155}/ccan/check_type/check_type.h +0 -0
  7. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-2.5.4-p155}/ccan/container_of/container_of.h +0 -0
  8. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/ccan/list/list.h +773 -0
  9. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-2.5.4-p155}/ccan/str/str.h +0 -0
  10. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/constant.h +51 -0
  11. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/debug_counter.h +109 -0
  12. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/dln.h +10 -9
  13. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/encindex.h +69 -0
  14. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/eval_intern.h +334 -0
  15. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/gc.h +27 -10
  16. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/id.h +250 -0
  17. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/id_table.h +31 -0
  18. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/insns.inc +217 -0
  19. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/insns_info.inc +1570 -0
  20. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/internal.h +2036 -0
  21. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/iseq.h +308 -0
  22. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/known_errors.inc +16 -1
  23. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/method.h +218 -0
  24. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/node.h +115 -79
  25. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/node_name.inc +12 -22
  26. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/opt_sc.inc +1601 -0
  27. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/optinsn.inc +103 -0
  28. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/optunifs.inc +28 -83
  29. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/parse.h +74 -60
  30. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/probes_helper.h +43 -0
  31. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/regenc.h +254 -0
  32. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/regint.h +299 -211
  33. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/regparse.h +45 -37
  34. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/revision.h +1 -0
  35. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/ruby_assert.h +54 -0
  36. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/ruby_atomic.h +84 -26
  37. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/siphash.h +1 -1
  38. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/symbol.h +108 -0
  39. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/thread_pthread.h +14 -11
  40. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/thread_win32.h +2 -6
  41. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/timev.h +42 -0
  42. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/transcode_data.h +34 -12
  43. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/version.h +73 -0
  44. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm.inc +3667 -0
  45. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm_call_iseq_optimized.inc +213 -0
  46. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm_core.h +1768 -0
  47. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550/debug.h → ruby-2.5.4-p155/vm_debug.h} +4 -8
  48. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/vm_exec.h +38 -30
  49. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm_insnhelper.h +255 -0
  50. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/vm_opts.h +14 -9
  51. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vmtc.inc +214 -0
  52. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/addr2line.h +0 -0
  53. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/builtin.h +1 -0
  54. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/ccan/build_assert/build_assert.h +40 -0
  55. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/ccan/check_type/check_type.h +63 -0
  56. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/ccan/container_of/container_of.h +142 -0
  57. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ccan/list/list.h +0 -0
  58. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/ccan/str/str.h +16 -0
  59. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/constant.h +0 -0
  60. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/darray.h +0 -0
  61. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/debug_counter.h +2 -0
  62. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/dln.h +0 -0
  63. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/encindex.h +0 -0
  64. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/eval_intern.h +32 -1
  65. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/gc.h +0 -1
  66. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/hrtime.h +0 -0
  67. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/id.h +0 -0
  68. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/id_table.h +0 -0
  69. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/insns.inc +4 -2
  70. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/insns_info.inc +309 -224
  71. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/array.h +0 -0
  72. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/bignum.h +0 -0
  73. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/bits.h +0 -0
  74. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/class.h +13 -5
  75. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/compar.h +0 -0
  76. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/compile.h +0 -0
  77. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/compilers.h +0 -0
  78. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/complex.h +0 -0
  79. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/cont.h +0 -0
  80. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/dir.h +0 -0
  81. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/enc.h +0 -0
  82. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/encoding.h +0 -0
  83. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/enum.h +0 -0
  84. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/enumerator.h +0 -0
  85. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/error.h +0 -0
  86. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/eval.h +0 -0
  87. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/file.h +0 -0
  88. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/fixnum.h +0 -0
  89. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/gc.h +12 -1
  90. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/hash.h +0 -0
  91. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/imemo.h +0 -0
  92. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/inits.h +0 -0
  93. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/io.h +0 -0
  94. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/load.h +0 -0
  95. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/loadpath.h +0 -0
  96. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/math.h +0 -0
  97. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/missing.h +0 -0
  98. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/numeric.h +0 -0
  99. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/object.h +0 -0
  100. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/parse.h +0 -0
  101. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/proc.h +0 -0
  102. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/process.h +0 -0
  103. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/random.h +0 -0
  104. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/range.h +0 -0
  105. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/rational.h +0 -0
  106. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/re.h +0 -0
  107. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/sanitizers.h +0 -0
  108. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/serial.h +0 -0
  109. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/signal.h +0 -0
  110. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/static_assert.h +0 -0
  111. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/string.h +0 -0
  112. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/struct.h +0 -0
  113. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/symbol.h +1 -0
  114. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/thread.h +0 -0
  115. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/time.h +0 -0
  116. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/transcode.h +0 -0
  117. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/util.h +0 -0
  118. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/variable.h +0 -0
  119. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/vm.h +2 -1
  120. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/warnings.h +0 -0
  121. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal.h +0 -0
  122. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/iseq.h +3 -1
  123. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/known_errors.inc +0 -0
  124. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/method.h +14 -6
  125. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/mjit.h +0 -0
  126. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/mjit_compile.inc +64 -7
  127. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/node.h +28 -17
  128. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/node_name.inc +0 -2
  129. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/opt_sc.inc +2 -0
  130. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/optinsn.inc +0 -0
  131. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/optunifs.inc +1 -1
  132. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/parse.h +0 -0
  133. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/probes_helper.h +0 -0
  134. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ractor_core.h +0 -0
  135. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/regenc.h +0 -0
  136. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/regint.h +0 -0
  137. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/regparse.h +0 -0
  138. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/revision.h +2 -0
  139. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ruby_assert.h +0 -0
  140. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ruby_atomic.h +0 -0
  141. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/siphash.h +0 -0
  142. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/symbol.h +0 -0
  143. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/thread_pthread.h +0 -0
  144. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/thread_win32.h +0 -0
  145. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/timev.h +0 -0
  146. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/transcode_data.h +0 -0
  147. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/transient_heap.h +0 -0
  148. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/variable.h +0 -0
  149. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/version.h +4 -4
  150. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm.inc +338 -283
  151. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_call_iseq_optimized.inc +0 -0
  152. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_callinfo.h +41 -8
  153. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_core.h +6 -2
  154. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_debug.h +8 -3
  155. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_exec.h +0 -0
  156. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_insnhelper.h +0 -0
  157. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_opts.h +0 -0
  158. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/vm_sync.h +137 -0
  159. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vmtc.inc +4 -2
  160. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit.h +11 -1
  161. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_asm.h +21 -5
  162. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_codegen.h +5 -1
  163. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_core.h +11 -6
  164. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_iface.h +0 -0
  165. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/addr2line.h +20 -0
  166. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/builtin.h +84 -0
  167. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/build_assert/build_assert.h +40 -0
  168. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/check_type/check_type.h +63 -0
  169. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/container_of/container_of.h +142 -0
  170. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/list/list.h +789 -0
  171. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/str/str.h +17 -0
  172. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/constant.h +55 -0
  173. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/darray.h +226 -0
  174. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/debug_counter.h +469 -0
  175. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/dln.h +31 -0
  176. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/encindex.h +70 -0
  177. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/eval_intern.h +339 -0
  178. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/gc.h +143 -0
  179. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/hrtime.h +216 -0
  180. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/id.h +295 -0
  181. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/id_table.h +36 -0
  182. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/insns.inc +249 -0
  183. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/insns_info.inc +9064 -0
  184. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/array.h +113 -0
  185. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/bignum.h +246 -0
  186. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/bits.h +565 -0
  187. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/class.h +211 -0
  188. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/cmdlineopt.h +61 -0
  189. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/compar.h +49 -0
  190. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/compile.h +35 -0
  191. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/compilers.h +107 -0
  192. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/complex.h +29 -0
  193. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/cont.h +24 -0
  194. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/dir.h +16 -0
  195. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/enc.h +19 -0
  196. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/encoding.h +30 -0
  197. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/enum.h +18 -0
  198. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/enumerator.h +21 -0
  199. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/error.h +191 -0
  200. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/eval.h +32 -0
  201. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/file.h +38 -0
  202. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/fixnum.h +184 -0
  203. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/gc.h +188 -0
  204. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/hash.h +243 -0
  205. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/imemo.h +243 -0
  206. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/inits.h +50 -0
  207. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/io.h +38 -0
  208. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/load.h +18 -0
  209. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/loadpath.h +16 -0
  210. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/math.h +23 -0
  211. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/missing.h +18 -0
  212. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/numeric.h +271 -0
  213. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/object.h +83 -0
  214. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/parse.h +23 -0
  215. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/proc.h +32 -0
  216. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/process.h +137 -0
  217. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/ractor.h +6 -0
  218. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/random.h +16 -0
  219. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/range.h +40 -0
  220. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/rational.h +72 -0
  221. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/re.h +30 -0
  222. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/sanitizers.h +190 -0
  223. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/serial.h +23 -0
  224. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/signal.h +21 -0
  225. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/static_assert.h +16 -0
  226. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/string.h +141 -0
  227. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/struct.h +153 -0
  228. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/symbol.h +41 -0
  229. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/thread.h +53 -0
  230. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/time.h +34 -0
  231. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/transcode.h +20 -0
  232. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/util.h +27 -0
  233. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/variable.h +83 -0
  234. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/vm.h +134 -0
  235. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/warnings.h +16 -0
  236. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal.h +109 -0
  237. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/iseq.h +325 -0
  238. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/known_errors.inc +791 -0
  239. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/method.h +254 -0
  240. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/mjit.h +231 -0
  241. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/mjit_compile.inc +8333 -0
  242. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/node.h +510 -0
  243. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/node_name.inc +208 -0
  244. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/opt_sc.inc +109 -0
  245. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/optinsn.inc +128 -0
  246. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/optunifs.inc +43 -0
  247. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/parse.h +214 -0
  248. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/probes_helper.h +44 -0
  249. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ractor_core.h +346 -0
  250. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/regenc.h +255 -0
  251. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/regint.h +957 -0
  252. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/regparse.h +370 -0
  253. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/revision.h +2 -0
  254. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ruby_assert.h +14 -0
  255. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ruby_atomic.h +23 -0
  256. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/siphash.h +48 -0
  257. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/symbol.h +119 -0
  258. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/thread_none.h +17 -0
  259. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/thread_pthread.h +115 -0
  260. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/thread_win32.h +61 -0
  261. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/timev.h +57 -0
  262. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/transcode_data.h +138 -0
  263. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/transient_heap.h +65 -0
  264. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/variable.h +21 -0
  265. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/version.h +91 -0
  266. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm.inc +5481 -0
  267. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_call_iseq_optimized.inc +244 -0
  268. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_callinfo.h +502 -0
  269. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_core.h +2089 -0
  270. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_debug.h +113 -0
  271. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_exec.h +197 -0
  272. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_insnhelper.h +262 -0
  273. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_opts.h +73 -0
  274. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.2.0-preview1}/vm_sync.h +0 -0
  275. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vmtc.inc +243 -0
  276. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit.h +73 -0
  277. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_asm.h +408 -0
  278. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_codegen.h +23 -0
  279. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_core.h +307 -0
  280. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_iface.h +38 -0
  281. data/lib/debase/ruby_core_source/version.rb +1 -1
  282. metadata +284 -158
  283. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/constant.h +0 -34
  284. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/encdb.h +0 -167
  285. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/eval_intern.h +0 -234
  286. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/id.h +0 -177
  287. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/insns.inc +0 -179
  288. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/insns_info.inc +0 -695
  289. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/internal.h +0 -242
  290. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/iseq.h +0 -126
  291. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/method.h +0 -105
  292. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/opt_sc.inc +0 -670
  293. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/optinsn.inc +0 -30
  294. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/regenc.h +0 -219
  295. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/revision.h +0 -1
  296. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/timev.h +0 -21
  297. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/transdb.h +0 -189
  298. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/version.h +0 -52
  299. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vm.inc +0 -3054
  300. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vm_core.h +0 -763
  301. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vm_insnhelper.h +0 -220
  302. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vmtc.inc +0 -97
  303. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/revision.h +0 -2
@@ -0,0 +1,339 @@
1
+ #ifndef RUBY_EVAL_INTERN_H
2
+ #define RUBY_EVAL_INTERN_H
3
+
4
+ #include "ruby/ruby.h"
5
+ #include "vm_core.h"
6
+
7
+ static inline void
8
+ vm_passed_block_handler_set(rb_execution_context_t *ec, VALUE block_handler)
9
+ {
10
+ vm_block_handler_verify(block_handler);
11
+ ec->passed_block_handler = block_handler;
12
+ }
13
+
14
+ static inline void
15
+ pass_passed_block_handler(rb_execution_context_t *ec)
16
+ {
17
+ VALUE block_handler = rb_vm_frame_block_handler(ec->cfp);
18
+ vm_passed_block_handler_set(ec, block_handler);
19
+ VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_PASSED);
20
+ }
21
+
22
+ #define PASS_PASSED_BLOCK_HANDLER_EC(ec) pass_passed_block_handler(ec)
23
+ #define PASS_PASSED_BLOCK_HANDLER() pass_passed_block_handler(GET_EC())
24
+
25
+ #ifdef HAVE_STDLIB_H
26
+ #include <stdlib.h>
27
+ #endif
28
+ #ifndef EXIT_SUCCESS
29
+ #define EXIT_SUCCESS 0
30
+ #endif
31
+ #ifndef EXIT_FAILURE
32
+ #define EXIT_FAILURE 1
33
+ #endif
34
+
35
+ #include <stdio.h>
36
+ #if defined(__wasm__) && !defined(__EMSCRIPTEN__)
37
+ # include "wasm/setjmp.h"
38
+ #else
39
+ # include <setjmp.h>
40
+ #endif
41
+
42
+ #ifdef __APPLE__
43
+ # ifdef HAVE_CRT_EXTERNS_H
44
+ # include <crt_externs.h>
45
+ # else
46
+ # include "missing/crt_externs.h"
47
+ # endif
48
+ #endif
49
+
50
+ #ifndef HAVE_STRING_H
51
+ char *strrchr(const char *, const char);
52
+ #endif
53
+
54
+ #ifdef HAVE_UNISTD_H
55
+ #include <unistd.h>
56
+ #endif
57
+
58
+ #ifdef HAVE_NET_SOCKET_H
59
+ #include <net/socket.h>
60
+ #endif
61
+
62
+ #define ruby_setjmp(env) RUBY_SETJMP(env)
63
+ #define ruby_longjmp(env,val) RUBY_LONGJMP((env),(val))
64
+ #ifdef __CYGWIN__
65
+ # ifndef _setjmp
66
+ int _setjmp(jmp_buf);
67
+ # endif
68
+ # ifndef _longjmp
69
+ NORETURN(void _longjmp(jmp_buf, int));
70
+ # endif
71
+ #endif
72
+
73
+ #include <sys/types.h>
74
+ #include <signal.h>
75
+ #include <errno.h>
76
+
77
+ #ifdef HAVE_SYS_SELECT_H
78
+ #include <sys/select.h>
79
+ #endif
80
+
81
+ /*
82
+ Solaris sys/select.h switches select to select_large_fdset to support larger
83
+ file descriptors if FD_SETSIZE is larger than 1024 on 32bit environment.
84
+ But Ruby doesn't change FD_SETSIZE because fd_set is allocated dynamically.
85
+ So following definition is required to use select_large_fdset.
86
+ */
87
+ #ifdef HAVE_SELECT_LARGE_FDSET
88
+ #define select(n, r, w, e, t) select_large_fdset((n), (r), (w), (e), (t))
89
+ extern int select_large_fdset(int, fd_set *, fd_set *, fd_set *, struct timeval *);
90
+ #endif
91
+
92
+ #ifdef HAVE_SYS_PARAM_H
93
+ #include <sys/param.h>
94
+ #endif
95
+
96
+ #include <sys/stat.h>
97
+
98
+
99
+ #define SAVE_ROOT_JMPBUF(th, stmt) do \
100
+ if (true) { \
101
+ stmt; \
102
+ } \
103
+ else if (th) { /* suppress unused-variable warning */ \
104
+ } while (0)
105
+
106
+ #define EC_PUSH_TAG(ec) do { \
107
+ rb_execution_context_t * const _ec = (ec); \
108
+ struct rb_vm_tag _tag; \
109
+ _tag.state = TAG_NONE; \
110
+ _tag.tag = Qundef; \
111
+ _tag.prev = _ec->tag; \
112
+ _tag.lock_rec = rb_ec_vm_lock_rec(_ec); \
113
+
114
+ #define EC_POP_TAG() \
115
+ _ec->tag = _tag.prev; \
116
+ } while (0)
117
+
118
+ #define EC_TMPPOP_TAG() \
119
+ _ec->tag = _tag.prev
120
+
121
+ #define EC_REPUSH_TAG() (void)(_ec->tag = &_tag)
122
+
123
+ #if defined __GNUC__ && __GNUC__ == 4 && (__GNUC_MINOR__ >= 6 && __GNUC_MINOR__ <= 8) || defined __clang__
124
+ /* This macro prevents GCC 4.6--4.8 from emitting maybe-uninitialized warnings.
125
+ * This macro also prevents Clang from dumping core in EC_EXEC_TAG().
126
+ * (I confirmed Clang 4.0.1 and 5.0.0.)
127
+ */
128
+ # define VAR_FROM_MEMORY(var) __extension__(*(__typeof__(var) volatile *)&(var))
129
+ # define VAR_INITIALIZED(var) ((var) = VAR_FROM_MEMORY(var))
130
+ # define VAR_NOCLOBBERED(var) volatile var
131
+ #else
132
+ # define VAR_FROM_MEMORY(var) (var)
133
+ # define VAR_INITIALIZED(var) ((void)&(var))
134
+ # define VAR_NOCLOBBERED(var) var
135
+ #endif
136
+
137
+ static inline void
138
+ rb_ec_vm_lock_rec_check(const rb_execution_context_t *ec, unsigned int recorded_lock_rec)
139
+ {
140
+ unsigned int current_lock_rec = rb_ec_vm_lock_rec(ec);
141
+ if (current_lock_rec != recorded_lock_rec) {
142
+ rb_ec_vm_lock_rec_release(ec, recorded_lock_rec, current_lock_rec);
143
+ }
144
+ }
145
+
146
+ /* clear ec->tag->state, and return the value */
147
+ static inline int
148
+ rb_ec_tag_state(const rb_execution_context_t *ec)
149
+ {
150
+ struct rb_vm_tag *tag = ec->tag;
151
+ enum ruby_tag_type state = tag->state;
152
+ tag->state = TAG_NONE;
153
+ rb_ec_vm_lock_rec_check(ec, tag->lock_rec);
154
+ return state;
155
+ }
156
+
157
+ NORETURN(static inline void rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st));
158
+ static inline void
159
+ rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st)
160
+ {
161
+ ec->tag->state = st;
162
+ ruby_longjmp(ec->tag->buf, 1);
163
+ }
164
+
165
+ /*
166
+ setjmp() in assignment expression rhs is undefined behavior
167
+ [ISO/IEC 9899:1999] 7.13.1.1
168
+ */
169
+ #define EC_EXEC_TAG() \
170
+ (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
171
+
172
+ #define EC_JUMP_TAG(ec, st) rb_ec_tag_jump(ec, st)
173
+
174
+ #define INTERNAL_EXCEPTION_P(exc) FIXNUM_P(exc)
175
+
176
+ /* CREF operators */
177
+
178
+ #define CREF_FL_PUSHED_BY_EVAL IMEMO_FL_USER1
179
+ #define CREF_FL_OMOD_SHARED IMEMO_FL_USER2
180
+ #define CREF_FL_SINGLETON IMEMO_FL_USER3
181
+
182
+ static inline int CREF_SINGLETON(const rb_cref_t *cref);
183
+
184
+ static inline VALUE
185
+ CREF_CLASS(const rb_cref_t *cref)
186
+ {
187
+ if (CREF_SINGLETON(cref)) {
188
+ return CLASS_OF(cref->klass_or_self);
189
+ }
190
+ else {
191
+ return cref->klass_or_self;
192
+ }
193
+ }
194
+
195
+ static inline VALUE
196
+ CREF_CLASS_FOR_DEFINITION(const rb_cref_t *cref)
197
+ {
198
+ if (CREF_SINGLETON(cref)) {
199
+ return rb_singleton_class(cref->klass_or_self);
200
+ }
201
+ else {
202
+ return cref->klass_or_self;
203
+ }
204
+ }
205
+
206
+ static inline rb_cref_t *
207
+ CREF_NEXT(const rb_cref_t *cref)
208
+ {
209
+ return cref->next;
210
+ }
211
+
212
+ static inline const rb_scope_visibility_t *
213
+ CREF_SCOPE_VISI(const rb_cref_t *cref)
214
+ {
215
+ return &cref->scope_visi;
216
+ }
217
+
218
+ static inline VALUE
219
+ CREF_REFINEMENTS(const rb_cref_t *cref)
220
+ {
221
+ return cref->refinements;
222
+ }
223
+
224
+ static inline void
225
+ CREF_REFINEMENTS_SET(rb_cref_t *cref, VALUE refs)
226
+ {
227
+ RB_OBJ_WRITE(cref, &cref->refinements, refs);
228
+ }
229
+
230
+ static inline int
231
+ CREF_PUSHED_BY_EVAL(const rb_cref_t *cref)
232
+ {
233
+ return cref->flags & CREF_FL_PUSHED_BY_EVAL;
234
+ }
235
+
236
+ static inline void
237
+ CREF_PUSHED_BY_EVAL_SET(rb_cref_t *cref)
238
+ {
239
+ cref->flags |= CREF_FL_PUSHED_BY_EVAL;
240
+ }
241
+
242
+ static inline int
243
+ CREF_SINGLETON(const rb_cref_t *cref)
244
+ {
245
+ return cref->flags & CREF_FL_SINGLETON;
246
+ }
247
+
248
+ static inline void
249
+ CREF_SINGLETON_SET(rb_cref_t *cref)
250
+ {
251
+ cref->flags |= CREF_FL_SINGLETON;
252
+ }
253
+
254
+ static inline int
255
+ CREF_OMOD_SHARED(const rb_cref_t *cref)
256
+ {
257
+ return cref->flags & CREF_FL_OMOD_SHARED;
258
+ }
259
+
260
+ static inline void
261
+ CREF_OMOD_SHARED_SET(rb_cref_t *cref)
262
+ {
263
+ cref->flags |= CREF_FL_OMOD_SHARED;
264
+ }
265
+
266
+ static inline void
267
+ CREF_OMOD_SHARED_UNSET(rb_cref_t *cref)
268
+ {
269
+ cref->flags &= ~CREF_FL_OMOD_SHARED;
270
+ }
271
+
272
+ enum {
273
+ RAISED_EXCEPTION = 1,
274
+ RAISED_STACKOVERFLOW = 2,
275
+ RAISED_NOMEMORY = 4
276
+ };
277
+ #define rb_ec_raised_set(ec, f) ((ec)->raised_flag |= (f))
278
+ #define rb_ec_raised_reset(ec, f) ((ec)->raised_flag &= ~(f))
279
+ #define rb_ec_raised_p(ec, f) (((ec)->raised_flag & (f)) != 0)
280
+ #define rb_ec_raised_clear(ec) ((ec)->raised_flag = 0)
281
+ int rb_ec_set_raised(rb_execution_context_t *ec);
282
+ int rb_ec_reset_raised(rb_execution_context_t *ec);
283
+ int rb_ec_stack_check(rb_execution_context_t *ec);
284
+
285
+ VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self);
286
+ VALUE rb_make_exception(int argc, const VALUE *argv);
287
+
288
+ NORETURN(void rb_method_name_error(VALUE, VALUE));
289
+
290
+ NORETURN(void rb_fiber_start(rb_fiber_t*));
291
+
292
+ NORETURN(void rb_print_undef(VALUE, ID, rb_method_visibility_t));
293
+ NORETURN(void rb_print_undef_str(VALUE, VALUE));
294
+ NORETURN(void rb_print_inaccessible(VALUE, ID, rb_method_visibility_t));
295
+ NORETURN(void rb_vm_localjump_error(const char *,VALUE, int));
296
+ NORETURN(void rb_vm_jump_tag_but_local_jump(int));
297
+
298
+ VALUE rb_vm_make_jump_tag_but_local_jump(int state, VALUE val);
299
+ rb_cref_t *rb_vm_cref(void);
300
+ rb_cref_t *rb_vm_cref_replace_with_duplicated_cref(void);
301
+ VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename);
302
+ void rb_vm_set_progname(VALUE filename);
303
+ VALUE rb_vm_cbase(void);
304
+
305
+ /* vm_backtrace.c */
306
+ VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec);
307
+ VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n);
308
+ VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n, bool skip_internal);
309
+
310
+ #ifndef CharNext /* defined as CharNext[AW] on Windows. */
311
+ # ifdef HAVE_MBLEN
312
+ # define CharNext(p) rb_char_next(p)
313
+ static inline char *
314
+ rb_char_next(const char *p)
315
+ {
316
+ if (p) {
317
+ int len = mblen(p, RUBY_MBCHAR_MAXSIZE);
318
+ p += len > 0 ? len : 1;
319
+ }
320
+ return (char *)p;
321
+ }
322
+ # else
323
+ # define CharNext(p) ((p) + 1)
324
+ # endif
325
+ #endif
326
+
327
+ #if defined DOSISH || defined __CYGWIN__
328
+ static inline void
329
+ translit_char(char *p, int from, int to)
330
+ {
331
+ while (*p) {
332
+ if ((unsigned char)*p == from)
333
+ *p = to;
334
+ p = CharNext(p);
335
+ }
336
+ }
337
+ #endif
338
+
339
+ #endif /* RUBY_EVAL_INTERN_H */
@@ -0,0 +1,143 @@
1
+ #ifndef RUBY_GC_H
2
+ #define RUBY_GC_H 1
3
+ #include "ruby/ruby.h"
4
+
5
+ #if defined(__x86_64__) && !defined(_ILP32) && defined(__GNUC__)
6
+ #define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movq\t%%rsp, %0" : "=r" (*(p)))
7
+ #elif defined(__i386) && defined(__GNUC__)
8
+ #define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movl\t%%esp, %0" : "=r" (*(p)))
9
+ #elif (defined(__powerpc__) || defined(__powerpc64__)) && defined(__GNUC__) && !defined(_AIX)
10
+ #define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mr\t%0, %%r1" : "=r" (*(p)))
11
+ #elif (defined(__powerpc__) || defined(__powerpc64__)) && defined(__GNUC__) && defined(_AIX)
12
+ #define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mr %0,1" : "=r" (*(p)))
13
+ #elif defined(__aarch64__) && defined(__GNUC__)
14
+ #define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mov\t%0, sp" : "=r" (*(p)))
15
+ #else
16
+ NOINLINE(void rb_gc_set_stack_end(VALUE **stack_end_p));
17
+ #define SET_MACHINE_STACK_END(p) rb_gc_set_stack_end(p)
18
+ #define USE_CONSERVATIVE_STACK_END
19
+ #endif
20
+
21
+ #define RB_GC_SAVE_MACHINE_CONTEXT(th) \
22
+ do { \
23
+ FLUSH_REGISTER_WINDOWS; \
24
+ setjmp((th)->ec->machine.regs); \
25
+ SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); \
26
+ } while (0)
27
+
28
+ /* for GC debug */
29
+
30
+ #ifndef RUBY_MARK_FREE_DEBUG
31
+ #define RUBY_MARK_FREE_DEBUG 0
32
+ #endif
33
+
34
+ #if RUBY_MARK_FREE_DEBUG
35
+ extern int ruby_gc_debug_indent;
36
+
37
+ static inline void
38
+ rb_gc_debug_indent(void)
39
+ {
40
+ ruby_debug_printf("%*s", ruby_gc_debug_indent, "");
41
+ }
42
+
43
+ static inline void
44
+ rb_gc_debug_body(const char *mode, const char *msg, int st, void *ptr)
45
+ {
46
+ if (st == 0) {
47
+ ruby_gc_debug_indent--;
48
+ }
49
+ rb_gc_debug_indent();
50
+ ruby_debug_printf("%s: %s %s (%p)\n", mode, st ? "->" : "<-", msg, ptr);
51
+
52
+ if (st) {
53
+ ruby_gc_debug_indent++;
54
+ }
55
+
56
+ fflush(stdout);
57
+ }
58
+
59
+ #define RUBY_MARK_ENTER(msg) rb_gc_debug_body("mark", (msg), 1, ptr)
60
+ #define RUBY_MARK_LEAVE(msg) rb_gc_debug_body("mark", (msg), 0, ptr)
61
+ #define RUBY_FREE_ENTER(msg) rb_gc_debug_body("free", (msg), 1, ptr)
62
+ #define RUBY_FREE_LEAVE(msg) rb_gc_debug_body("free", (msg), 0, ptr)
63
+ #define RUBY_GC_INFO rb_gc_debug_indent(), ruby_debug_printf
64
+
65
+ #else
66
+ #define RUBY_MARK_ENTER(msg)
67
+ #define RUBY_MARK_LEAVE(msg)
68
+ #define RUBY_FREE_ENTER(msg)
69
+ #define RUBY_FREE_LEAVE(msg)
70
+ #define RUBY_GC_INFO if(0)printf
71
+ #endif
72
+
73
+ #define RUBY_MARK_MOVABLE_UNLESS_NULL(ptr) do { \
74
+ VALUE markobj = (ptr); \
75
+ if (RTEST(markobj)) {rb_gc_mark_movable(markobj);} \
76
+ } while (0)
77
+ #define RUBY_MARK_UNLESS_NULL(ptr) do { \
78
+ VALUE markobj = (ptr); \
79
+ if (RTEST(markobj)) {rb_gc_mark(markobj);} \
80
+ } while (0)
81
+ #define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
82
+
83
+ #if STACK_GROW_DIRECTION > 0
84
+ # define STACK_UPPER(x, a, b) (a)
85
+ #elif STACK_GROW_DIRECTION < 0
86
+ # define STACK_UPPER(x, a, b) (b)
87
+ #else
88
+ RUBY_EXTERN int ruby_stack_grow_direction;
89
+ int ruby_get_stack_grow_direction(volatile VALUE *addr);
90
+ # define stack_growup_p(x) ( \
91
+ (ruby_stack_grow_direction ? \
92
+ ruby_stack_grow_direction : \
93
+ ruby_get_stack_grow_direction(x)) > 0)
94
+ # define STACK_UPPER(x, a, b) (stack_growup_p(x) ? (a) : (b))
95
+ #endif
96
+
97
+ /*
98
+ STACK_GROW_DIR_DETECTION is used with STACK_DIR_UPPER.
99
+
100
+ On most normal systems, stacks grow from high address to lower address. In
101
+ this case, STACK_DIR_UPPER(a, b) will return (b), but on exotic systems where
102
+ the stack grows UP (from low address to high address), it will return (a).
103
+ */
104
+
105
+ #if STACK_GROW_DIRECTION
106
+ #define STACK_GROW_DIR_DETECTION
107
+ #define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
108
+ #else
109
+ #define STACK_GROW_DIR_DETECTION VALUE stack_grow_dir_detection
110
+ #define STACK_DIR_UPPER(a,b) STACK_UPPER(&stack_grow_dir_detection, (a), (b))
111
+ #endif
112
+ #define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
113
+
114
+ const char *rb_obj_info(VALUE obj);
115
+ const char *rb_raw_obj_info(char *buff, const int buff_size, VALUE obj);
116
+
117
+ VALUE rb_gc_disable_no_rest(void);
118
+
119
+ struct rb_thread_struct;
120
+
121
+ RUBY_SYMBOL_EXPORT_BEGIN
122
+
123
+ /* exports for objspace module */
124
+ size_t rb_objspace_data_type_memsize(VALUE obj);
125
+ void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data);
126
+ void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
127
+ int rb_objspace_markable_object_p(VALUE obj);
128
+ int rb_objspace_internal_object_p(VALUE obj);
129
+ int rb_objspace_marked_object_p(VALUE obj);
130
+
131
+ void rb_objspace_each_objects(
132
+ int (*callback)(void *start, void *end, size_t stride, void *data),
133
+ void *data);
134
+
135
+ void rb_objspace_each_objects_without_setup(
136
+ int (*callback)(void *, void *, size_t, void *),
137
+ void *data);
138
+
139
+ size_t rb_gc_obj_slot_size(VALUE obj);
140
+
141
+ RUBY_SYMBOL_EXPORT_END
142
+
143
+ #endif /* RUBY_GC_H */
@@ -0,0 +1,216 @@
1
+ #ifndef RB_HRTIME_H
2
+ #define RB_HRTIME_H
3
+ #include "ruby/ruby.h"
4
+ #include <time.h>
5
+ #if defined(HAVE_SYS_TIME_H)
6
+ # include <sys/time.h>
7
+ #endif
8
+
9
+ /*
10
+ * Hi-res monotonic clock. It is currently nsec resolution, which has over
11
+ * 500 years of range (with an unsigned 64-bit integer). Developers
12
+ * targeting small systems may try 32-bit and low-resolution (milliseconds).
13
+ *
14
+ * TBD: Is nsec even necessary? usec resolution seems enough for userspace
15
+ * and it'll be suitable for use with devices lasting over 500,000 years
16
+ * (maybe some devices designed for long-term space travel)
17
+ *
18
+ * Current API:
19
+ *
20
+ * * rb_hrtime_now - current clock value (monotonic if available)
21
+ * * rb_hrtime_mul - multiply with overflow check
22
+ * * rb_hrtime_add - add with overflow check
23
+ * * rb_timeval2hrtime - convert from timeval
24
+ * * rb_timespec2hrtime - convert from timespec
25
+ * * rb_msec2hrtime - convert from millisecond
26
+ * * rb_sec2hrtime - convert from time_t (seconds)
27
+ * * rb_hrtime2timeval - convert to timeval
28
+ * * rb_hrtime2timespec - convert to timespec
29
+ *
30
+ * Note: no conversion to milliseconds is provided here because different
31
+ * functions have different limits (e.g. epoll_wait vs w32_wait_events).
32
+ * So we provide RB_HRTIME_PER_MSEC and similar macros for implementing
33
+ * this for each use case.
34
+ */
35
+ #define RB_HRTIME_PER_USEC ((rb_hrtime_t)1000)
36
+ #define RB_HRTIME_PER_MSEC (RB_HRTIME_PER_USEC * (rb_hrtime_t)1000)
37
+ #define RB_HRTIME_PER_SEC (RB_HRTIME_PER_MSEC * (rb_hrtime_t)1000)
38
+ #define RB_HRTIME_MAX UINT64_MAX
39
+
40
+ /*
41
+ * Lets try to support time travelers. Lets assume anybody with a time machine
42
+ * also has access to a modern gcc or clang with 128-bit int support
43
+ */
44
+ #ifdef MY_RUBY_BUILD_MAY_TIME_TRAVEL
45
+ typedef int128_t rb_hrtime_t;
46
+ #else
47
+ typedef uint64_t rb_hrtime_t;
48
+ #endif
49
+
50
+ /* thread.c */
51
+ /* returns the value of the monotonic clock (if available) */
52
+ rb_hrtime_t rb_hrtime_now(void);
53
+
54
+ /*
55
+ * multiply @a and @b with overflow check and return the
56
+ * (clamped to RB_HRTIME_MAX) result.
57
+ */
58
+ static inline rb_hrtime_t
59
+ rb_hrtime_mul(rb_hrtime_t a, rb_hrtime_t b)
60
+ {
61
+ rb_hrtime_t c;
62
+
63
+ #ifdef HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW
64
+ if (__builtin_mul_overflow(a, b, &c))
65
+ return RB_HRTIME_MAX;
66
+ #else
67
+ if (b != 0 && a > RB_HRTIME_MAX / b) /* overflow */
68
+ return RB_HRTIME_MAX;
69
+ c = a * b;
70
+ #endif
71
+ return c;
72
+ }
73
+
74
+ /*
75
+ * add @a and @b with overflow check and return the
76
+ * (clamped to RB_HRTIME_MAX) result.
77
+ */
78
+ static inline rb_hrtime_t
79
+ rb_hrtime_add(rb_hrtime_t a, rb_hrtime_t b)
80
+ {
81
+ rb_hrtime_t c;
82
+
83
+ #ifdef HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW
84
+ if (__builtin_add_overflow(a, b, &c))
85
+ return RB_HRTIME_MAX;
86
+ #else
87
+ c = a + b;
88
+ if (c < a) /* overflow */
89
+ return RB_HRTIME_MAX;
90
+ #endif
91
+ return c;
92
+ }
93
+
94
+ /*
95
+ * convert a timeval struct to rb_hrtime_t, clamping at RB_HRTIME_MAX
96
+ */
97
+ static inline rb_hrtime_t
98
+ rb_timeval2hrtime(const struct timeval *tv)
99
+ {
100
+ rb_hrtime_t s = rb_hrtime_mul((rb_hrtime_t)tv->tv_sec, RB_HRTIME_PER_SEC);
101
+ rb_hrtime_t u = rb_hrtime_mul((rb_hrtime_t)tv->tv_usec, RB_HRTIME_PER_USEC);
102
+
103
+ return rb_hrtime_add(s, u);
104
+ }
105
+
106
+ /*
107
+ * convert a timespec struct to rb_hrtime_t, clamping at RB_HRTIME_MAX
108
+ */
109
+ static inline rb_hrtime_t
110
+ rb_timespec2hrtime(const struct timespec *ts)
111
+ {
112
+ rb_hrtime_t s = rb_hrtime_mul((rb_hrtime_t)ts->tv_sec, RB_HRTIME_PER_SEC);
113
+
114
+ return rb_hrtime_add(s, (rb_hrtime_t)ts->tv_nsec);
115
+ }
116
+
117
+ /*
118
+ * convert a millisecond value to rb_hrtime_t, clamping at RB_HRTIME_MAX
119
+ */
120
+ static inline rb_hrtime_t
121
+ rb_msec2hrtime(unsigned long msec)
122
+ {
123
+ return rb_hrtime_mul((rb_hrtime_t)msec, RB_HRTIME_PER_MSEC);
124
+ }
125
+
126
+ /*
127
+ * convert a time_t value to rb_hrtime_t, clamping at RB_HRTIME_MAX
128
+ * Negative values will be clamped at 0.
129
+ */
130
+ static inline rb_hrtime_t
131
+ rb_sec2hrtime(time_t sec)
132
+ {
133
+ if (sec <= 0) return 0;
134
+
135
+ return rb_hrtime_mul((rb_hrtime_t)sec, RB_HRTIME_PER_SEC);
136
+ }
137
+
138
+ /*
139
+ * convert a rb_hrtime_t value to a timespec, suitable for calling
140
+ * functions like ppoll(2) or kevent(2)
141
+ */
142
+ static inline struct timespec *
143
+ rb_hrtime2timespec(struct timespec *ts, const rb_hrtime_t *hrt)
144
+ {
145
+ if (hrt) {
146
+ ts->tv_sec = (time_t)(*hrt / RB_HRTIME_PER_SEC);
147
+ ts->tv_nsec = (int32_t)(*hrt % RB_HRTIME_PER_SEC);
148
+ return ts;
149
+ }
150
+ return 0;
151
+ }
152
+
153
+ /*
154
+ * convert a rb_hrtime_t value to a timeval, suitable for calling
155
+ * functions like select(2)
156
+ */
157
+ static inline struct timeval *
158
+ rb_hrtime2timeval(struct timeval *tv, const rb_hrtime_t *hrt)
159
+ {
160
+ if (hrt) {
161
+ tv->tv_sec = (time_t)(*hrt / RB_HRTIME_PER_SEC);
162
+ tv->tv_usec = (int32_t)((*hrt % RB_HRTIME_PER_SEC)/RB_HRTIME_PER_USEC);
163
+
164
+ return tv;
165
+ }
166
+ return 0;
167
+ }
168
+
169
+ #include "internal/warnings.h"
170
+ #include "internal/time.h"
171
+
172
+ /*
173
+ * Back when we used "struct timeval", not all platforms implemented
174
+ * tv_sec as time_t. Nowadays we use "struct timespec" and tv_sec
175
+ * seems to be implemented more consistently across platforms.
176
+ * At least other parts of our code hasn't had to deal with non-time_t
177
+ * tv_sec in timespec...
178
+ */
179
+ #define TIMESPEC_SEC_MAX TIMET_MAX
180
+ #define TIMESPEC_SEC_MIN TIMET_MIN
181
+
182
+ COMPILER_WARNING_PUSH
183
+ #if __has_warning("-Wimplicit-int-float-conversion")
184
+ COMPILER_WARNING_IGNORED(-Wimplicit-int-float-conversion)
185
+ #elif defined(_MSC_VER)
186
+ /* C4305: 'initializing': truncation from '__int64' to 'const double' */
187
+ COMPILER_WARNING_IGNORED(4305)
188
+ #endif
189
+ static const double TIMESPEC_SEC_MAX_as_double = TIMESPEC_SEC_MAX;
190
+ COMPILER_WARNING_POP
191
+
192
+ static inline rb_hrtime_t *
193
+ double2hrtime(rb_hrtime_t *hrt, double d)
194
+ {
195
+ /* assume timespec.tv_sec has same signedness as time_t */
196
+ const double TIMESPEC_SEC_MAX_PLUS_ONE = 2.0 * (TIMESPEC_SEC_MAX_as_double / 2.0 + 1.0);
197
+
198
+ if (TIMESPEC_SEC_MAX_PLUS_ONE <= d) {
199
+ return NULL;
200
+ }
201
+ else if (d <= 0) {
202
+ *hrt = 0;
203
+ }
204
+ else {
205
+ *hrt = (rb_hrtime_t)(d * (double)RB_HRTIME_PER_SEC);
206
+ }
207
+ return hrt;
208
+ }
209
+
210
+ static inline double
211
+ hrtime2double(rb_hrtime_t hrt)
212
+ {
213
+ return (double)hrt / (double)RB_HRTIME_PER_SEC;
214
+ }
215
+
216
+ #endif /* RB_HRTIME_H */