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,408 @@
1
+ #ifndef YJIT_ASM_H
2
+ #define YJIT_ASM_H 1
3
+
4
+ #include <stdint.h>
5
+ #include <stddef.h>
6
+ #include <stdbool.h>
7
+
8
+ // Maximum number of labels to link
9
+ #define MAX_LABELS 32
10
+
11
+ // Maximum number of label references
12
+ #define MAX_LABEL_REFS 32
13
+
14
+ // Reference to an ASM label
15
+ typedef struct LabelRef
16
+ {
17
+ // Position in the code block where the label reference exists
18
+ uint32_t pos;
19
+
20
+ // Label which this refers to
21
+ uint32_t label_idx;
22
+
23
+ } labelref_t;
24
+
25
+ // Block of executable memory into which instructions can be written
26
+ typedef struct CodeBlock
27
+ {
28
+ // Memory block
29
+ // Users are advised to not use this directly.
30
+ uint8_t *mem_block_;
31
+
32
+ // Memory block size
33
+ uint32_t mem_size;
34
+
35
+ // Current writing position
36
+ uint32_t write_pos;
37
+
38
+ // Table of registered label addresses
39
+ uint32_t label_addrs[MAX_LABELS];
40
+
41
+ // Table of registered label names
42
+ // Note that these should be constant strings only
43
+ const char *label_names[MAX_LABELS];
44
+
45
+ // References to labels
46
+ labelref_t label_refs[MAX_LABEL_REFS];
47
+
48
+ // Number of labels registeered
49
+ uint32_t num_labels;
50
+
51
+ // Number of references to labels
52
+ uint32_t num_refs;
53
+
54
+
55
+ // Keep track of the current aligned write position.
56
+ // Used for changing protection when writing to the JIT buffer
57
+ uint32_t current_aligned_write_pos;
58
+
59
+ // Set if the assembler is unable to output some instructions,
60
+ // for example, when there is not enough space or when a jump
61
+ // target is too far away.
62
+ bool dropped_bytes;
63
+
64
+ // Flag to enable or disable comments
65
+ bool has_asm;
66
+
67
+
68
+ } codeblock_t;
69
+
70
+ // 1 is not aligned so this won't match any pages
71
+ #define ALIGNED_WRITE_POSITION_NONE 1
72
+
73
+ enum OpndType
74
+ {
75
+ OPND_NONE,
76
+ OPND_REG,
77
+ OPND_IMM,
78
+ OPND_MEM
79
+ };
80
+
81
+ enum RegType
82
+ {
83
+ REG_GP,
84
+ REG_FP,
85
+ REG_XMM,
86
+ REG_IP
87
+ };
88
+
89
+ typedef struct X86Reg
90
+ {
91
+ // Register type
92
+ uint8_t reg_type;
93
+
94
+ // Register index number
95
+ uint8_t reg_no;
96
+
97
+ } x86reg_t;
98
+
99
+ typedef struct X86Mem
100
+ {
101
+ /// Base register number
102
+ uint8_t base_reg_no;
103
+
104
+ /// Index register number
105
+ uint8_t idx_reg_no;
106
+
107
+ /// SIB scale exponent value (power of two, two bits)
108
+ uint8_t scale_exp;
109
+
110
+ /// Has index register flag
111
+ bool has_idx;
112
+
113
+ // TODO: should this be here, or should we have an extra operand type?
114
+ /// IP-relative addressing flag
115
+ bool is_iprel;
116
+
117
+ /// Constant displacement from the base, not scaled
118
+ int32_t disp;
119
+
120
+ } x86mem_t;
121
+
122
+ typedef struct X86Opnd
123
+ {
124
+ // Operand type
125
+ uint8_t type;
126
+
127
+ // Size in bits
128
+ uint16_t num_bits;
129
+
130
+ union
131
+ {
132
+ // Register operand
133
+ x86reg_t reg;
134
+
135
+ // Memory operand
136
+ x86mem_t mem;
137
+
138
+ // Signed immediate value
139
+ int64_t imm;
140
+
141
+ // Unsigned immediate value
142
+ uint64_t unsig_imm;
143
+ } as;
144
+
145
+ } x86opnd_t;
146
+
147
+ // Dummy none/null operand
148
+ static const x86opnd_t NO_OPND = { OPND_NONE, 0, .as.imm = 0 };
149
+
150
+ // Instruction pointer
151
+ static const x86opnd_t RIP = { OPND_REG, 64, .as.reg = { REG_IP, 5 }};
152
+
153
+ // 64-bit GP registers
154
+ static const x86opnd_t RAX = { OPND_REG, 64, .as.reg = { REG_GP, 0 }};
155
+ static const x86opnd_t RCX = { OPND_REG, 64, .as.reg = { REG_GP, 1 }};
156
+ static const x86opnd_t RDX = { OPND_REG, 64, .as.reg = { REG_GP, 2 }};
157
+ static const x86opnd_t RBX = { OPND_REG, 64, .as.reg = { REG_GP, 3 }};
158
+ static const x86opnd_t RSP = { OPND_REG, 64, .as.reg = { REG_GP, 4 }};
159
+ static const x86opnd_t RBP = { OPND_REG, 64, .as.reg = { REG_GP, 5 }};
160
+ static const x86opnd_t RSI = { OPND_REG, 64, .as.reg = { REG_GP, 6 }};
161
+ static const x86opnd_t RDI = { OPND_REG, 64, .as.reg = { REG_GP, 7 }};
162
+ static const x86opnd_t R8 = { OPND_REG, 64, .as.reg = { REG_GP, 8 }};
163
+ static const x86opnd_t R9 = { OPND_REG, 64, .as.reg = { REG_GP, 9 }};
164
+ static const x86opnd_t R10 = { OPND_REG, 64, .as.reg = { REG_GP, 10 }};
165
+ static const x86opnd_t R11 = { OPND_REG, 64, .as.reg = { REG_GP, 11 }};
166
+ static const x86opnd_t R12 = { OPND_REG, 64, .as.reg = { REG_GP, 12 }};
167
+ static const x86opnd_t R13 = { OPND_REG, 64, .as.reg = { REG_GP, 13 }};
168
+ static const x86opnd_t R14 = { OPND_REG, 64, .as.reg = { REG_GP, 14 }};
169
+ static const x86opnd_t R15 = { OPND_REG, 64, .as.reg = { REG_GP, 15 }};
170
+
171
+ // 32-bit GP registers
172
+ static const x86opnd_t EAX = { OPND_REG, 32, .as.reg = { REG_GP, 0 }};
173
+ static const x86opnd_t ECX = { OPND_REG, 32, .as.reg = { REG_GP, 1 }};
174
+ static const x86opnd_t EDX = { OPND_REG, 32, .as.reg = { REG_GP, 2 }};
175
+ static const x86opnd_t EBX = { OPND_REG, 32, .as.reg = { REG_GP, 3 }};
176
+ static const x86opnd_t ESP = { OPND_REG, 32, .as.reg = { REG_GP, 4 }};
177
+ static const x86opnd_t EBP = { OPND_REG, 32, .as.reg = { REG_GP, 5 }};
178
+ static const x86opnd_t ESI = { OPND_REG, 32, .as.reg = { REG_GP, 6 }};
179
+ static const x86opnd_t EDI = { OPND_REG, 32, .as.reg = { REG_GP, 7 }};
180
+ static const x86opnd_t R8D = { OPND_REG, 32, .as.reg = { REG_GP, 8 }};
181
+ static const x86opnd_t R9D = { OPND_REG, 32, .as.reg = { REG_GP, 9 }};
182
+ static const x86opnd_t R10D = { OPND_REG, 32, .as.reg = { REG_GP, 10 }};
183
+ static const x86opnd_t R11D = { OPND_REG, 32, .as.reg = { REG_GP, 11 }};
184
+ static const x86opnd_t R12D = { OPND_REG, 32, .as.reg = { REG_GP, 12 }};
185
+ static const x86opnd_t R13D = { OPND_REG, 32, .as.reg = { REG_GP, 13 }};
186
+ static const x86opnd_t R14D = { OPND_REG, 32, .as.reg = { REG_GP, 14 }};
187
+ static const x86opnd_t R15D = { OPND_REG, 32, .as.reg = { REG_GP, 15 }};
188
+
189
+ // 16-bit GP registers
190
+ static const x86opnd_t AX = { OPND_REG, 16, .as.reg = { REG_GP, 0 }};
191
+ static const x86opnd_t CX = { OPND_REG, 16, .as.reg = { REG_GP, 1 }};
192
+ static const x86opnd_t DX = { OPND_REG, 16, .as.reg = { REG_GP, 2 }};
193
+ static const x86opnd_t BX = { OPND_REG, 16, .as.reg = { REG_GP, 3 }};
194
+ static const x86opnd_t SP = { OPND_REG, 16, .as.reg = { REG_GP, 4 }};
195
+ static const x86opnd_t BP = { OPND_REG, 16, .as.reg = { REG_GP, 5 }};
196
+ static const x86opnd_t SI = { OPND_REG, 16, .as.reg = { REG_GP, 6 }};
197
+ static const x86opnd_t DI = { OPND_REG, 16, .as.reg = { REG_GP, 7 }};
198
+ static const x86opnd_t R8W = { OPND_REG, 16, .as.reg = { REG_GP, 8 }};
199
+ static const x86opnd_t R9W = { OPND_REG, 16, .as.reg = { REG_GP, 9 }};
200
+ static const x86opnd_t R10W = { OPND_REG, 16, .as.reg = { REG_GP, 10 }};
201
+ static const x86opnd_t R11W = { OPND_REG, 16, .as.reg = { REG_GP, 11 }};
202
+ static const x86opnd_t R12W = { OPND_REG, 16, .as.reg = { REG_GP, 12 }};
203
+ static const x86opnd_t R13W = { OPND_REG, 16, .as.reg = { REG_GP, 13 }};
204
+ static const x86opnd_t R14W = { OPND_REG, 16, .as.reg = { REG_GP, 14 }};
205
+ static const x86opnd_t R15W = { OPND_REG, 16, .as.reg = { REG_GP, 15 }};
206
+
207
+ // 8-bit GP registers
208
+ static const x86opnd_t AL = { OPND_REG, 8, .as.reg = { REG_GP, 0 }};
209
+ static const x86opnd_t CL = { OPND_REG, 8, .as.reg = { REG_GP, 1 }};
210
+ static const x86opnd_t DL = { OPND_REG, 8, .as.reg = { REG_GP, 2 }};
211
+ static const x86opnd_t BL = { OPND_REG, 8, .as.reg = { REG_GP, 3 }};
212
+ static const x86opnd_t SPL = { OPND_REG, 8, .as.reg = { REG_GP, 4 }};
213
+ static const x86opnd_t BPL = { OPND_REG, 8, .as.reg = { REG_GP, 5 }};
214
+ static const x86opnd_t SIL = { OPND_REG, 8, .as.reg = { REG_GP, 6 }};
215
+ static const x86opnd_t DIL = { OPND_REG, 8, .as.reg = { REG_GP, 7 }};
216
+ static const x86opnd_t R8B = { OPND_REG, 8, .as.reg = { REG_GP, 8 }};
217
+ static const x86opnd_t R9B = { OPND_REG, 8, .as.reg = { REG_GP, 9 }};
218
+ static const x86opnd_t R10B = { OPND_REG, 8, .as.reg = { REG_GP, 10 }};
219
+ static const x86opnd_t R11B = { OPND_REG, 8, .as.reg = { REG_GP, 11 }};
220
+ static const x86opnd_t R12B = { OPND_REG, 8, .as.reg = { REG_GP, 12 }};
221
+ static const x86opnd_t R13B = { OPND_REG, 8, .as.reg = { REG_GP, 13 }};
222
+ static const x86opnd_t R14B = { OPND_REG, 8, .as.reg = { REG_GP, 14 }};
223
+ static const x86opnd_t R15B = { OPND_REG, 8, .as.reg = { REG_GP, 15 }};
224
+
225
+ // C argument registers
226
+ #define NUM_C_ARG_REGS 6
227
+ #define C_ARG_REGS ( (x86opnd_t[]){ RDI, RSI, RDX, RCX, R8, R9 } )
228
+
229
+ // Compute the number of bits needed to store a signed or unsigned value
230
+ static inline uint32_t sig_imm_size(int64_t imm);
231
+ static inline uint32_t unsig_imm_size(uint64_t imm);
232
+
233
+ // Memory operand with base register and displacement/offset
234
+ static inline x86opnd_t mem_opnd(uint32_t num_bits, x86opnd_t base_reg, int32_t disp);
235
+
236
+ // Scale-index-base memory operand
237
+ static inline x86opnd_t mem_opnd_sib(uint32_t num_bits, x86opnd_t base_reg, x86opnd_t index_reg, int32_t scale, int32_t disp);
238
+
239
+ // Immediate number operand
240
+ static inline x86opnd_t imm_opnd(int64_t val);
241
+
242
+ // Constant pointer operand
243
+ static inline x86opnd_t const_ptr_opnd(const void *ptr);
244
+
245
+ // Struct member operand
246
+ #define member_opnd(base_reg, struct_type, member_name) mem_opnd( \
247
+ 8 * sizeof(((struct_type*)0)->member_name), \
248
+ base_reg, \
249
+ offsetof(struct_type, member_name) \
250
+ )
251
+
252
+ // Struct member operand with an array index
253
+ #define member_opnd_idx(base_reg, struct_type, member_name, idx) mem_opnd( \
254
+ 8 * sizeof(((struct_type*)0)->member_name[0]), \
255
+ base_reg, \
256
+ (offsetof(struct_type, member_name) + \
257
+ sizeof(((struct_type*)0)->member_name[0]) * idx) \
258
+ )
259
+
260
+ // Allocate executable memory
261
+ static uint8_t *alloc_exec_mem(uint32_t mem_size);
262
+
263
+ // Code block functions
264
+ static inline void cb_init(codeblock_t *cb, uint8_t *mem_block, uint32_t mem_size);
265
+ static inline void cb_align_pos(codeblock_t *cb, uint32_t multiple);
266
+ static inline void cb_set_pos(codeblock_t *cb, uint32_t pos);
267
+ static inline void cb_set_write_ptr(codeblock_t *cb, uint8_t *code_ptr);
268
+ static inline uint8_t *cb_get_ptr(const codeblock_t *cb, uint32_t index);
269
+ static inline uint8_t *cb_get_write_ptr(const codeblock_t *cb);
270
+ static inline void cb_write_byte(codeblock_t *cb, uint8_t byte);
271
+ static inline void cb_write_bytes(codeblock_t *cb, uint32_t num_bytes, ...);
272
+ static inline void cb_write_int(codeblock_t *cb, uint64_t val, uint32_t num_bits);
273
+ static inline uint32_t cb_new_label(codeblock_t *cb, const char *name);
274
+ static inline void cb_write_label(codeblock_t *cb, uint32_t label_idx);
275
+ static inline void cb_label_ref(codeblock_t *cb, uint32_t label_idx);
276
+ static inline void cb_link_labels(codeblock_t *cb);
277
+ static inline void cb_mark_all_writeable(codeblock_t *cb);
278
+ static inline void cb_mark_position_writeable(codeblock_t *cb, uint32_t write_pos);
279
+ static inline void cb_mark_all_executable(codeblock_t *cb);
280
+
281
+ // Encode individual instructions into a code block
282
+ static inline void add(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
283
+ static inline void and(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
284
+ static inline void call_ptr(codeblock_t *cb, x86opnd_t scratch_reg, uint8_t *dst_ptr);
285
+ static inline void call_label(codeblock_t *cb, uint32_t label_idx);
286
+ static inline void call(codeblock_t *cb, x86opnd_t opnd);
287
+ static inline void cmova(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
288
+ static inline void cmovae(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
289
+ static inline void cmovb(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
290
+ static inline void cmovbe(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
291
+ static inline void cmovc(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
292
+ static inline void cmove(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
293
+ static inline void cmovg(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
294
+ static inline void cmovge(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
295
+ static inline void cmovl(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
296
+ static inline void cmovle(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
297
+ static inline void cmovna(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
298
+ static inline void cmovnae(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
299
+ static inline void cmovnb(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
300
+ static inline void cmovnbe(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
301
+ static inline void cmovnc(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
302
+ static inline void cmovne(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
303
+ static inline void cmovng(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
304
+ static inline void cmovnge(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
305
+ static inline void cmovnl(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
306
+ static inline void cmovnle(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
307
+ static inline void cmovno(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
308
+ static inline void cmovnp(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
309
+ static inline void cmovns(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
310
+ static inline void cmovnz(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
311
+ static inline void cmovo(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
312
+ static inline void cmovp(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
313
+ static inline void cmovpe(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
314
+ static inline void cmovpo(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
315
+ static inline void cmovs(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
316
+ static inline void cmovz(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
317
+ static inline void cmp(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
318
+ static inline void cdq(codeblock_t *cb);
319
+ static inline void cqo(codeblock_t *cb);
320
+ static inline void int3(codeblock_t *cb);
321
+ static inline void ja_label(codeblock_t *cb, uint32_t label_idx);
322
+ static inline void jae_label(codeblock_t *cb, uint32_t label_idx);
323
+ static inline void jb_label(codeblock_t *cb, uint32_t label_idx);
324
+ static inline void jbe_label(codeblock_t *cb, uint32_t label_idx);
325
+ static inline void jc_label(codeblock_t *cb, uint32_t label_idx);
326
+ static inline void je_label(codeblock_t *cb, uint32_t label_idx);
327
+ static inline void jg_label(codeblock_t *cb, uint32_t label_idx);
328
+ static inline void jge_label(codeblock_t *cb, uint32_t label_idx);
329
+ static inline void jl_label(codeblock_t *cb, uint32_t label_idx);
330
+ static inline void jle_label(codeblock_t *cb, uint32_t label_idx);
331
+ static inline void jna_label(codeblock_t *cb, uint32_t label_idx);
332
+ static inline void jnae_label(codeblock_t *cb, uint32_t label_idx);
333
+ static inline void jnb_label(codeblock_t *cb, uint32_t label_idx);
334
+ static inline void jnbe_label(codeblock_t *cb, uint32_t label_idx);
335
+ static inline void jnc_label(codeblock_t *cb, uint32_t label_idx);
336
+ static inline void jne_label(codeblock_t *cb, uint32_t label_idx);
337
+ static inline void jng_label(codeblock_t *cb, uint32_t label_idx);
338
+ static inline void jnge_label(codeblock_t *cb, uint32_t label_idx);
339
+ static inline void jnl_label(codeblock_t *cb, uint32_t label_idx);
340
+ static inline void jnle_label(codeblock_t *cb, uint32_t label_idx);
341
+ static inline void jno_label(codeblock_t *cb, uint32_t label_idx);
342
+ static inline void jnp_label(codeblock_t *cb, uint32_t label_idx);
343
+ static inline void jns_label(codeblock_t *cb, uint32_t label_idx);
344
+ static inline void jnz_label(codeblock_t *cb, uint32_t label_idx);
345
+ static inline void jo_label(codeblock_t *cb, uint32_t label_idx);
346
+ static inline void jp_label(codeblock_t *cb, uint32_t label_idx);
347
+ static inline void jpe_label(codeblock_t *cb, uint32_t label_idx);
348
+ static inline void jpo_label(codeblock_t *cb, uint32_t label_idx);
349
+ static inline void js_label(codeblock_t *cb, uint32_t label_idx);
350
+ static inline void jz_label(codeblock_t *cb, uint32_t label_idx);
351
+ static inline void ja_ptr(codeblock_t *cb, uint8_t *ptr);
352
+ static inline void jae_ptr(codeblock_t *cb, uint8_t *ptr);
353
+ static inline void jb_ptr(codeblock_t *cb, uint8_t *ptr);
354
+ static inline void jbe_ptr(codeblock_t *cb, uint8_t *ptr);
355
+ static inline void jc_ptr(codeblock_t *cb, uint8_t *ptr);
356
+ static inline void je_ptr(codeblock_t *cb, uint8_t *ptr);
357
+ static inline void jg_ptr(codeblock_t *cb, uint8_t *ptr);
358
+ static inline void jge_ptr(codeblock_t *cb, uint8_t *ptr);
359
+ static inline void jl_ptr(codeblock_t *cb, uint8_t *ptr);
360
+ static inline void jle_ptr(codeblock_t *cb, uint8_t *ptr);
361
+ static inline void jna_ptr(codeblock_t *cb, uint8_t *ptr);
362
+ static inline void jnae_ptr(codeblock_t *cb, uint8_t *ptr);
363
+ static inline void jnb_ptr(codeblock_t *cb, uint8_t *ptr);
364
+ static inline void jnbe_ptr(codeblock_t *cb, uint8_t *ptr);
365
+ static inline void jnc_ptr(codeblock_t *cb, uint8_t *ptr);
366
+ static inline void jne_ptr(codeblock_t *cb, uint8_t *ptr);
367
+ static inline void jng_ptr(codeblock_t *cb, uint8_t *ptr);
368
+ static inline void jnge_ptr(codeblock_t *cb, uint8_t *ptr);
369
+ static inline void jnl_ptr(codeblock_t *cb, uint8_t *ptr);
370
+ static inline void jnle_ptr(codeblock_t *cb, uint8_t *ptr);
371
+ static inline void jno_ptr(codeblock_t *cb, uint8_t *ptr);
372
+ static inline void jnp_ptr(codeblock_t *cb, uint8_t *ptr);
373
+ static inline void jns_ptr(codeblock_t *cb, uint8_t *ptr);
374
+ static inline void jnz_ptr(codeblock_t *cb, uint8_t *ptr);
375
+ static inline void jo_ptr(codeblock_t *cb, uint8_t *ptr);
376
+ static inline void jp_ptr(codeblock_t *cb, uint8_t *ptr);
377
+ static inline void jpe_ptr(codeblock_t *cb, uint8_t *ptr);
378
+ static inline void jpo_ptr(codeblock_t *cb, uint8_t *ptr);
379
+ static inline void js_ptr(codeblock_t *cb, uint8_t *ptr);
380
+ static inline void jz_ptr(codeblock_t *cb, uint8_t *ptr);
381
+ static inline void jmp_label(codeblock_t *cb, uint32_t label_idx);
382
+ static inline void jmp_ptr(codeblock_t *cb, uint8_t *ptr);
383
+ static inline void jmp_rm(codeblock_t *cb, x86opnd_t opnd);
384
+ static inline void jmp32(codeblock_t *cb, int32_t offset);
385
+ static inline void lea(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
386
+ static inline void mov(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
387
+ static inline void movsx(codeblock_t *cb, x86opnd_t dst, x86opnd_t src);
388
+ static inline void neg(codeblock_t *cb, x86opnd_t opnd);
389
+ static inline void nop(codeblock_t *cb, uint32_t length);
390
+ static inline void not(codeblock_t *cb, x86opnd_t opnd);
391
+ static inline void or(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
392
+ static inline void pop(codeblock_t *cb, x86opnd_t reg);
393
+ static inline void popfq(codeblock_t *cb);
394
+ static inline void push(codeblock_t *cb, x86opnd_t opnd);
395
+ static inline void pushfq(codeblock_t *cb);
396
+ static inline void ret(codeblock_t *cb);
397
+ static inline void sal(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
398
+ static inline void sar(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
399
+ static inline void shl(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
400
+ static inline void shr(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
401
+ static inline void sub(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
402
+ static inline void test(codeblock_t *cb, x86opnd_t rm_opnd, x86opnd_t test_opnd);
403
+ static inline void ud2(codeblock_t *cb);
404
+ static inline void xchg(codeblock_t *cb, x86opnd_t rm_opnd, x86opnd_t r_opnd);
405
+ static inline void xor(codeblock_t *cb, x86opnd_t opnd0, x86opnd_t opnd1);
406
+ static inline void cb_write_lock_prefix(codeblock_t *cb);
407
+
408
+ #endif
@@ -0,0 +1,23 @@
1
+ #ifndef YJIT_CODEGEN_H
2
+ #define YJIT_CODEGEN_H 1
3
+
4
+ typedef enum codegen_status {
5
+ YJIT_END_BLOCK,
6
+ YJIT_KEEP_COMPILING,
7
+ YJIT_CANT_COMPILE
8
+ } codegen_status_t;
9
+
10
+ // Code generation function signature
11
+ typedef codegen_status_t (*codegen_fn)(jitstate_t *jit, ctx_t *ctx, codeblock_t *cb);
12
+
13
+ static void jit_ensure_block_entry_exit(jitstate_t *jit);
14
+
15
+ static uint8_t *yjit_entry_prologue(codeblock_t *cb, const rb_iseq_t *iseq);
16
+
17
+ static block_t *gen_single_block(blockid_t blockid, const ctx_t *start_ctx, rb_execution_context_t *ec);
18
+
19
+ static void gen_code_for_exit_from_stub(void);
20
+
21
+ static void yjit_init_codegen(void);
22
+
23
+ #endif // #ifndef YJIT_CODEGEN_H