debase-ruby_core_source 3.3.6 → 4.0.0.preview2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +10 -0
  4. data/Rakefile +3 -1
  5. data/debase-ruby_core_source.gemspec +1 -0
  6. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/builtin.h +7 -1
  7. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/darray.h +1 -3
  8. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/id.h +5 -0
  9. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/insns.inc +2 -0
  10. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/insns_info.inc +310 -175
  11. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/basic_operators.h +1 -0
  12. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/bits.h +82 -0
  13. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/encoding.h +2 -0
  14. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/error.h +26 -0
  15. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/fixnum.h +1 -0
  16. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/gc.h +14 -6
  17. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/imemo.h +6 -1
  18. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/io.h +1 -1
  19. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/parse.h +2 -1
  20. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/proc.h +1 -0
  21. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/ractor.h +4 -0
  22. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/sanitizers.h +31 -39
  23. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/string.h +22 -10
  24. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/thread.h +23 -0
  25. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/vm.h +1 -1
  26. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/method.h +1 -0
  27. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/optunifs.inc +1 -1
  28. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/parse.h +2 -2
  29. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/ast.h +427 -3
  30. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/defines.h +8 -7
  31. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/diagnostic.h +1 -0
  32. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/extension.h +1 -1
  33. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/prism.h +47 -11
  34. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/version.h +2 -2
  35. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism_compile.h +5 -5
  36. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/ractor_core.h +6 -6
  37. data/lib/debase/ruby_core_source/ruby-3.4.0-p-1/revision.h +5 -0
  38. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/rubyparser.h +3 -2
  39. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/thread_pthread.h +0 -1
  40. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/version.h +1 -1
  41. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vm.inc +151 -88
  42. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vm_core.h +40 -12
  43. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vm_sync.h +3 -3
  44. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vmtc.inc +2 -0
  45. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/yjit.h +1 -0
  46. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/builtin.h +7 -1
  47. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/darray.h +101 -14
  48. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/debug_counter.h +6 -4
  49. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/dln.h +1 -2
  50. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/eval_intern.h +7 -0
  51. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/id.h +16 -5
  52. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/id_table.h +15 -0
  53. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/insns.inc +49 -6
  54. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/insns_info.inc +2432 -721
  55. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/array.h +3 -0
  56. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/basic_operators.h +2 -0
  57. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/bignum.h +1 -0
  58. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/bits.h +82 -0
  59. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/internal/box.h +81 -0
  60. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/internal/class.h +805 -0
  61. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/cmdlineopt.h +3 -4
  62. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/internal/concurrent_set.h +21 -0
  63. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/encoding.h +4 -1
  64. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/error.h +35 -0
  65. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/eval.h +8 -0
  66. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/fixnum.h +1 -0
  67. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/gc.h +54 -30
  68. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/hash.h +3 -0
  69. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/imemo.h +94 -32
  70. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/inits.h +4 -0
  71. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/io.h +30 -7
  72. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/load.h +2 -0
  73. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/numeric.h +1 -0
  74. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/object.h +1 -1
  75. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/parse.h +18 -4
  76. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/proc.h +1 -1
  77. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/ractor.h +4 -0
  78. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/re.h +7 -2
  79. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/sanitizers.h +88 -39
  80. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/internal/set_table.h +70 -0
  81. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/signal.h +1 -0
  82. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/st.h +1 -1
  83. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/string.h +39 -18
  84. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/struct.h +38 -5
  85. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/symbol.h +4 -3
  86. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/thread.h +42 -9
  87. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/time.h +4 -1
  88. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/variable.h +13 -11
  89. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/internal/vm.h +6 -7
  90. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal.h +0 -3
  91. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/iseq.h +19 -2
  92. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/known_errors.inc +103 -103
  93. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/method.h +18 -2
  94. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/node.h +14 -3
  95. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/optunifs.inc +1 -3
  96. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/parse.h +37 -36
  97. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/ast.h +2495 -507
  98. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/defines.h +61 -7
  99. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/diagnostic.h +31 -6
  100. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/extension.h +5 -5
  101. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/node.h +0 -21
  102. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/options.h +186 -6
  103. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/parser.h +85 -40
  104. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/prism.h +88 -16
  105. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/prism/regexp.h +43 -0
  106. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/static_literals.h +3 -2
  107. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/util/pm_buffer.h +18 -0
  108. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/util/pm_char.h +1 -2
  109. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/util/pm_constant_pool.h +0 -8
  110. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/util/pm_integer.h +26 -15
  111. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/util/pm_list.h +6 -0
  112. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/util/pm_newline_list.h +11 -0
  113. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/util/pm_string.h +39 -13
  114. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism/version.h +3 -3
  115. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/prism_compile.h +30 -12
  116. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/ractor_core.h +47 -134
  117. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/regenc.h +9 -4
  118. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/regint.h +0 -5
  119. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/regparse.h +2 -2
  120. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/revision.h +5 -0
  121. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/ruby_atomic.h +66 -0
  122. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/rubyparser.h +214 -250
  123. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/shape.h +444 -0
  124. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/symbol.h +8 -10
  125. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/thread_pthread.h +36 -27
  126. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/variable.h +8 -20
  127. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vm.inc +884 -344
  128. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vm_callinfo.h +110 -75
  129. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vm_core.h +220 -106
  130. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/vm_exec.h +15 -4
  131. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vm_insnhelper.h +11 -6
  132. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vm_sync.h +23 -4
  133. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-4.0.0-preview2}/vmtc.inc +42 -6
  134. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/yjit.h +5 -3
  135. data/lib/debase/ruby_core_source/ruby-4.0.0-preview2/zjit.h +47 -0
  136. data/lib/debase/ruby_core_source/version.rb +1 -1
  137. data/lib/debase/ruby_core_source.rb +4 -2
  138. data/test/deduce_source_dir_test.rb +31 -0
  139. metadata +307 -293
  140. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/class.h +0 -283
  141. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/regexp.h +0 -33
  142. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string_list.h +0 -44
  143. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/revision.h +0 -5
  144. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/shape.h +0 -233
  145. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/revision.h +0 -5
  146. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rjit.h +0 -101
  147. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rjit_c.h +0 -165
  148. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ruby_atomic.h +0 -23
  149. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/addr2line.h +0 -0
  150. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/build_assert/build_assert.h +0 -0
  151. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/check_type/check_type.h +0 -0
  152. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/container_of/container_of.h +0 -0
  153. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/list/list.h +0 -0
  154. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/str/str.h +0 -0
  155. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/constant.h +0 -0
  156. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/debug_counter.h +0 -0
  157. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/dln.h +0 -0
  158. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/encindex.h +0 -0
  159. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/eval_intern.h +0 -0
  160. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/hrtime.h +0 -0
  161. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/id_table.h +0 -0
  162. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/array.h +0 -0
  163. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/bignum.h +0 -0
  164. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/class.h +0 -0
  165. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/cmdlineopt.h +0 -0
  166. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compar.h +0 -0
  167. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compile.h +0 -0
  168. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compilers.h +0 -0
  169. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/complex.h +0 -0
  170. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/cont.h +0 -0
  171. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/dir.h +0 -0
  172. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enc.h +0 -0
  173. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enum.h +0 -0
  174. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enumerator.h +0 -0
  175. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/eval.h +0 -0
  176. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/file.h +0 -0
  177. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/internal/hash.h +0 -0
  178. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/inits.h +0 -0
  179. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/load.h +0 -0
  180. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/loadpath.h +0 -0
  181. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/math.h +0 -0
  182. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/missing.h +0 -0
  183. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/numeric.h +0 -0
  184. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/object.h +0 -0
  185. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/process.h +0 -0
  186. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/random.h +0 -0
  187. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/range.h +0 -0
  188. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/rational.h +0 -0
  189. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/re.h +0 -0
  190. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/ruby_parser.h +0 -0
  191. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/serial.h +0 -0
  192. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/signal.h +0 -0
  193. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/st.h +0 -0
  194. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/static_assert.h +0 -0
  195. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/struct.h +0 -0
  196. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/symbol.h +0 -0
  197. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/time.h +0 -0
  198. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/transcode.h +0 -0
  199. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/util.h +0 -0
  200. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/variable.h +0 -0
  201. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/warnings.h +0 -0
  202. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal.h +0 -0
  203. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/iseq.h +0 -0
  204. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/known_errors.inc +0 -0
  205. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/node.h +0 -0
  206. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/node_name.inc +0 -0
  207. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/optinsn.inc +0 -0
  208. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_bits.h +0 -0
  209. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_node.h +0 -0
  210. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_st.h +0 -0
  211. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_value.h +0 -0
  212. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/encoding.h +0 -0
  213. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/node.h +0 -0
  214. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/options.h +0 -0
  215. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/pack.h +0 -0
  216. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/parser.h +0 -0
  217. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/prettyprint.h +0 -0
  218. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/regexp.h +0 -0
  219. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/static_literals.h +0 -0
  220. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_buffer.h +0 -0
  221. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/util/pm_char.h +0 -0
  222. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/util/pm_constant_pool.h +0 -0
  223. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/util/pm_integer.h +0 -0
  224. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_list.h +0 -0
  225. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_memchr.h +0 -0
  226. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/util/pm_newline_list.h +0 -0
  227. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/prism/util/pm_string.h +0 -0
  228. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_strncasecmp.h +0 -0
  229. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_strpbrk.h +0 -0
  230. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/probes_helper.h +0 -0
  231. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/regenc.h +0 -0
  232. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/regint.h +0 -0
  233. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/regparse.h +0 -0
  234. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/rjit.h +0 -0
  235. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/rjit_c.h +0 -0
  236. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ruby_assert.h +0 -0
  237. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ruby_atomic.h +0 -0
  238. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/shape.h +0 -0
  239. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/siphash.h +0 -0
  240. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/symbol.h +0 -0
  241. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/thread_none.h +0 -0
  242. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/thread_win32.h +0 -0
  243. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/timev.h +0 -0
  244. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/transcode_data.h +0 -0
  245. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/variable.h +0 -0
  246. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_call_iseq_optimized.inc +0 -0
  247. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vm_callinfo.h +0 -0
  248. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_debug.h +0 -0
  249. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_exec.h +0 -0
  250. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0-p-1}/vm_insnhelper.h +0 -0
  251. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_opts.h +0 -0
  252. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/addr2line.h +0 -0
  253. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ccan/build_assert/build_assert.h +0 -0
  254. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ccan/check_type/check_type.h +0 -0
  255. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ccan/container_of/container_of.h +0 -0
  256. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ccan/list/list.h +0 -0
  257. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ccan/str/str.h +0 -0
  258. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/constant.h +0 -0
  259. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/encindex.h +0 -0
  260. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/hrtime.h +0 -0
  261. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/compar.h +0 -0
  262. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/compile.h +0 -0
  263. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/compilers.h +0 -0
  264. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/complex.h +0 -0
  265. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/cont.h +0 -0
  266. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/dir.h +0 -0
  267. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/enc.h +0 -0
  268. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/enum.h +0 -0
  269. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/enumerator.h +0 -0
  270. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/file.h +0 -0
  271. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/loadpath.h +0 -0
  272. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/math.h +0 -0
  273. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/missing.h +0 -0
  274. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/process.h +0 -0
  275. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/random.h +0 -0
  276. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/range.h +0 -0
  277. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/rational.h +0 -0
  278. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/ruby_parser.h +0 -0
  279. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/serial.h +0 -0
  280. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/static_assert.h +0 -0
  281. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/transcode.h +0 -0
  282. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/util.h +0 -0
  283. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/internal/warnings.h +0 -0
  284. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/node_name.inc +0 -0
  285. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/optinsn.inc +0 -0
  286. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/parser_bits.h +0 -0
  287. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/parser_node.h +0 -0
  288. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/parser_st.h +0 -0
  289. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/parser_value.h +0 -0
  290. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/encoding.h +0 -0
  291. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/pack.h +0 -0
  292. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/prettyprint.h +0 -0
  293. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/util/pm_memchr.h +0 -0
  294. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/util/pm_strncasecmp.h +0 -0
  295. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/prism/util/pm_strpbrk.h +0 -0
  296. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/probes_helper.h +0 -0
  297. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/ruby_assert.h +0 -0
  298. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/siphash.h +0 -0
  299. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/thread_none.h +0 -0
  300. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/thread_win32.h +0 -0
  301. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/timev.h +0 -0
  302. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/transcode_data.h +0 -0
  303. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/version.h +0 -0
  304. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/vm_call_iseq_optimized.inc +0 -0
  305. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/vm_debug.h +0 -0
  306. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-4.0.0-preview2}/vm_opts.h +0 -0
@@ -431,7 +431,7 @@ INSN_ENTRY(getinstancevariable)
431
431
 
432
432
  /* ### Here we do the instruction body. ### */
433
433
  # define NAME_OF_CURRENT_INSN getinstancevariable
434
- # line 215 "insns.def"
434
+ # line 216 "insns.def"
435
435
  {
436
436
  val = vm_getinstancevariable(GET_ISEQ(), GET_SELF(), id, ic);
437
437
  }
@@ -474,7 +474,7 @@ INSN_ENTRY(setinstancevariable)
474
474
 
475
475
  /* ### Here we do the instruction body. ### */
476
476
  # define NAME_OF_CURRENT_INSN setinstancevariable
477
- # line 226 "insns.def"
477
+ # line 227 "insns.def"
478
478
  {
479
479
  vm_setinstancevariable(GET_ISEQ(), GET_SELF(), id, val, ic);
480
480
  }
@@ -514,7 +514,7 @@ INSN_ENTRY(getclassvariable)
514
514
 
515
515
  /* ### Here we do the instruction body. ### */
516
516
  # define NAME_OF_CURRENT_INSN getclassvariable
517
- # line 238 "insns.def"
517
+ # line 239 "insns.def"
518
518
  {
519
519
  rb_control_frame_t *cfp = GET_CFP();
520
520
  val = vm_getclassvariable(GET_ISEQ(), cfp, id, ic);
@@ -558,7 +558,7 @@ INSN_ENTRY(setclassvariable)
558
558
 
559
559
  /* ### Here we do the instruction body. ### */
560
560
  # define NAME_OF_CURRENT_INSN setclassvariable
561
- # line 251 "insns.def"
561
+ # line 252 "insns.def"
562
562
  {
563
563
  vm_ensure_not_refinement_module(GET_SELF());
564
564
  vm_setclassvariable(GET_ISEQ(), GET_CFP(), id, val, ic);
@@ -597,7 +597,7 @@ INSN_ENTRY(opt_getconstant_path)
597
597
 
598
598
  /* ### Here we do the instruction body. ### */
599
599
  # define NAME_OF_CURRENT_INSN opt_getconstant_path
600
- # line 262 "insns.def"
600
+ # line 263 "insns.def"
601
601
  {
602
602
  val = rb_vm_opt_getconstant_path(ec, GET_CFP(), ic);
603
603
  }
@@ -640,7 +640,7 @@ INSN_ENTRY(getconstant)
640
640
 
641
641
  /* ### Here we do the instruction body. ### */
642
642
  # define NAME_OF_CURRENT_INSN getconstant
643
- # line 277 "insns.def"
643
+ # line 278 "insns.def"
644
644
  {
645
645
  val = vm_get_ev_const(ec, klass, id, allow_nil == Qtrue, 0);
646
646
  }
@@ -682,7 +682,7 @@ INSN_ENTRY(setconstant)
682
682
 
683
683
  /* ### Here we do the instruction body. ### */
684
684
  # define NAME_OF_CURRENT_INSN setconstant
685
- # line 293 "insns.def"
685
+ # line 294 "insns.def"
686
686
  {
687
687
  vm_check_if_namespace(cbase);
688
688
  vm_ensure_not_refinement_module(GET_SELF());
@@ -722,7 +722,7 @@ INSN_ENTRY(getglobal)
722
722
 
723
723
  /* ### Here we do the instruction body. ### */
724
724
  # define NAME_OF_CURRENT_INSN getglobal
725
- # line 306 "insns.def"
725
+ # line 307 "insns.def"
726
726
  {
727
727
  val = rb_gvar_get(gid);
728
728
  }
@@ -763,7 +763,7 @@ INSN_ENTRY(setglobal)
763
763
 
764
764
  /* ### Here we do the instruction body. ### */
765
765
  # define NAME_OF_CURRENT_INSN setglobal
766
- # line 317 "insns.def"
766
+ # line 318 "insns.def"
767
767
  {
768
768
  rb_gvar_set(gid, val);
769
769
  }
@@ -799,7 +799,7 @@ INSN_ENTRY(putnil)
799
799
 
800
800
  /* ### Here we do the instruction body. ### */
801
801
  # define NAME_OF_CURRENT_INSN putnil
802
- # line 331 "insns.def"
802
+ # line 332 "insns.def"
803
803
  {
804
804
  val = Qnil;
805
805
  }
@@ -838,7 +838,7 @@ INSN_ENTRY(putself)
838
838
 
839
839
  /* ### Here we do the instruction body. ### */
840
840
  # define NAME_OF_CURRENT_INSN putself
841
- # line 341 "insns.def"
841
+ # line 342 "insns.def"
842
842
  {
843
843
  val = GET_SELF();
844
844
  }
@@ -908,7 +908,7 @@ INSN_ENTRY(putspecialobject)
908
908
 
909
909
  /* ### Here we do the instruction body. ### */
910
910
  # define NAME_OF_CURRENT_INSN putspecialobject
911
- # line 364 "insns.def"
911
+ # line 365 "insns.def"
912
912
  {
913
913
  enum vm_special_object_type type;
914
914
 
@@ -952,7 +952,7 @@ INSN_ENTRY(putstring)
952
952
 
953
953
  /* ### Here we do the instruction body. ### */
954
954
  # define NAME_OF_CURRENT_INSN putstring
955
- # line 377 "insns.def"
955
+ # line 378 "insns.def"
956
956
  {
957
957
  val = rb_ec_str_resurrect(ec, str, false);
958
958
  }
@@ -993,7 +993,7 @@ INSN_ENTRY(putchilledstring)
993
993
 
994
994
  /* ### Here we do the instruction body. ### */
995
995
  # define NAME_OF_CURRENT_INSN putchilledstring
996
- # line 387 "insns.def"
996
+ # line 388 "insns.def"
997
997
  {
998
998
  val = rb_ec_str_resurrect(ec, str, true);
999
999
  }
@@ -1034,7 +1034,7 @@ INSN_ENTRY(concatstrings)
1034
1034
 
1035
1035
  /* ### Here we do the instruction body. ### */
1036
1036
  # define NAME_OF_CURRENT_INSN concatstrings
1037
- # line 401 "insns.def"
1037
+ # line 402 "insns.def"
1038
1038
  {
1039
1039
  val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));
1040
1040
  }
@@ -1074,7 +1074,7 @@ INSN_ENTRY(anytostring)
1074
1074
 
1075
1075
  /* ### Here we do the instruction body. ### */
1076
1076
  # define NAME_OF_CURRENT_INSN anytostring
1077
- # line 412 "insns.def"
1077
+ # line 413 "insns.def"
1078
1078
  {
1079
1079
  val = rb_obj_as_string_result(str, val);
1080
1080
  }
@@ -1117,7 +1117,7 @@ INSN_ENTRY(toregexp)
1117
1117
 
1118
1118
  /* ### Here we do the instruction body. ### */
1119
1119
  # define NAME_OF_CURRENT_INSN toregexp
1120
- # line 428 "insns.def"
1120
+ # line 429 "insns.def"
1121
1121
  {
1122
1122
  const VALUE ary = rb_ary_tmp_new_from_values(0, cnt, STACK_ADDR_FROM_TOP(cnt));
1123
1123
  val = rb_reg_new_ary(ary, (int)opt);
@@ -1159,7 +1159,7 @@ INSN_ENTRY(intern)
1159
1159
 
1160
1160
  /* ### Here we do the instruction body. ### */
1161
1161
  # define NAME_OF_CURRENT_INSN intern
1162
- # line 440 "insns.def"
1162
+ # line 441 "insns.def"
1163
1163
  {
1164
1164
  sym = rb_str_intern(str);
1165
1165
  }
@@ -1200,7 +1200,7 @@ INSN_ENTRY(newarray)
1200
1200
 
1201
1201
  /* ### Here we do the instruction body. ### */
1202
1202
  # define NAME_OF_CURRENT_INSN newarray
1203
- # line 451 "insns.def"
1203
+ # line 452 "insns.def"
1204
1204
  {
1205
1205
  val = rb_ec_ary_new_from_values(ec, num, STACK_ADDR_FROM_TOP(num));
1206
1206
  }
@@ -1220,52 +1220,6 @@ INSN_ENTRY(newarray)
1220
1220
  END_INSN(newarray);
1221
1221
  }
1222
1222
 
1223
- /* insn newarraykwsplat(num)(...)(val) */
1224
- INSN_ENTRY(newarraykwsplat)
1225
- {
1226
- /* ### Declare that we have just entered into an instruction. ### */
1227
- START_OF_ORIGINAL_INSN(newarraykwsplat);
1228
- DEBUG_ENTER_INSN("newarraykwsplat");
1229
-
1230
- /* ### Declare and assign variables. ### */
1231
- rb_num_t num = (rb_num_t)GET_OPERAND(1);
1232
- # define INSN_ATTR(x) attr_ ## x ## _newarraykwsplat(num)
1233
- const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
1234
- VALUE val;
1235
-
1236
- /* ### Instruction preambles. ### */
1237
- ADD_PC(INSN_ATTR(width));
1238
- SETUP_CANARY(leaf);
1239
- COLLECT_USAGE_INSN(INSN_ATTR(bin));
1240
- COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, num);
1241
-
1242
- /* ### Here we do the instruction body. ### */
1243
- # define NAME_OF_CURRENT_INSN newarraykwsplat
1244
- # line 466 "insns.def"
1245
- {
1246
- if (RHASH_EMPTY_P(*STACK_ADDR_FROM_TOP(1))) {
1247
- val = rb_ary_new4(num-1, STACK_ADDR_FROM_TOP(num));
1248
- }
1249
- else {
1250
- val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));
1251
- }
1252
- }
1253
- # line 1254 "vm.inc"
1254
- # undef NAME_OF_CURRENT_INSN
1255
-
1256
- /* ### Instruction trailers. ### */
1257
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
1258
- CHECK_CANARY(leaf, INSN_ATTR(bin));
1259
- INC_SP(INSN_ATTR(sp_inc));
1260
- TOPN(0) = val;
1261
- VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
1262
- VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
1263
- # undef INSN_ATTR
1264
-
1265
- /* ### Leave the instruction. ### */
1266
- END_INSN(newarraykwsplat);
1267
- }
1268
-
1269
1223
  /* insn pushtoarraykwsplat()(ary, hash)(ary) */
1270
1224
  INSN_ENTRY(pushtoarraykwsplat)
1271
1225
  {
@@ -1286,13 +1240,13 @@ INSN_ENTRY(pushtoarraykwsplat)
1286
1240
 
1287
1241
  /* ### Here we do the instruction body. ### */
1288
1242
  # define NAME_OF_CURRENT_INSN pushtoarraykwsplat
1289
- # line 483 "insns.def"
1243
+ # line 464 "insns.def"
1290
1244
  {
1291
1245
  if (!RHASH_EMPTY_P(hash)) {
1292
1246
  rb_ary_push(ary, hash);
1293
1247
  }
1294
1248
  }
1295
- # line 1296 "vm.inc"
1249
+ # line 1250 "vm.inc"
1296
1250
  # undef NAME_OF_CURRENT_INSN
1297
1251
 
1298
1252
  /* ### Instruction trailers. ### */
@@ -1329,12 +1283,12 @@ INSN_ENTRY(duparray)
1329
1283
 
1330
1284
  /* ### Here we do the instruction body. ### */
1331
1285
  # define NAME_OF_CURRENT_INSN duparray
1332
- # line 495 "insns.def"
1286
+ # line 476 "insns.def"
1333
1287
  {
1334
1288
  RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
1335
1289
  val = rb_ary_resurrect(ary);
1336
1290
  }
1337
- # line 1338 "vm.inc"
1291
+ # line 1292 "vm.inc"
1338
1292
  # undef NAME_OF_CURRENT_INSN
1339
1293
 
1340
1294
  /* ### Instruction trailers. ### */
@@ -1371,12 +1325,12 @@ INSN_ENTRY(duphash)
1371
1325
 
1372
1326
  /* ### Here we do the instruction body. ### */
1373
1327
  # define NAME_OF_CURRENT_INSN duphash
1374
- # line 506 "insns.def"
1328
+ # line 487 "insns.def"
1375
1329
  {
1376
1330
  RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
1377
1331
  val = rb_hash_resurrect(hash);
1378
1332
  }
1379
- # line 1380 "vm.inc"
1333
+ # line 1334 "vm.inc"
1380
1334
  # undef NAME_OF_CURRENT_INSN
1381
1335
 
1382
1336
  /* ### Instruction trailers. ### */
@@ -1415,11 +1369,11 @@ INSN_ENTRY(expandarray)
1415
1369
 
1416
1370
  /* ### Here we do the instruction body. ### */
1417
1371
  # define NAME_OF_CURRENT_INSN expandarray
1418
- # line 528 "insns.def"
1372
+ # line 509 "insns.def"
1419
1373
  {
1420
1374
  vm_expandarray(GET_CFP(), ary, num, (int)flag);
1421
1375
  }
1422
- # line 1423 "vm.inc"
1376
+ # line 1377 "vm.inc"
1423
1377
  # undef NAME_OF_CURRENT_INSN
1424
1378
 
1425
1379
  /* ### Instruction trailers. ### */
@@ -1451,11 +1405,11 @@ INSN_ENTRY(concatarray)
1451
1405
 
1452
1406
  /* ### Here we do the instruction body. ### */
1453
1407
  # define NAME_OF_CURRENT_INSN concatarray
1454
- # line 541 "insns.def"
1408
+ # line 522 "insns.def"
1455
1409
  {
1456
1410
  ary = vm_concat_array(ary1, ary2);
1457
1411
  }
1458
- # line 1459 "vm.inc"
1412
+ # line 1413 "vm.inc"
1459
1413
  # undef NAME_OF_CURRENT_INSN
1460
1414
 
1461
1415
  /* ### Instruction trailers. ### */
@@ -1492,11 +1446,11 @@ INSN_ENTRY(concattoarray)
1492
1446
 
1493
1447
  /* ### Here we do the instruction body. ### */
1494
1448
  # define NAME_OF_CURRENT_INSN concattoarray
1495
- # line 555 "insns.def"
1449
+ # line 536 "insns.def"
1496
1450
  {
1497
1451
  ary = vm_concat_to_array(ary1, ary2);
1498
1452
  }
1499
- # line 1500 "vm.inc"
1453
+ # line 1454 "vm.inc"
1500
1454
  # undef NAME_OF_CURRENT_INSN
1501
1455
 
1502
1456
  /* ### Instruction trailers. ### */
@@ -1533,12 +1487,12 @@ INSN_ENTRY(pushtoarray)
1533
1487
 
1534
1488
  /* ### Here we do the instruction body. ### */
1535
1489
  # define NAME_OF_CURRENT_INSN pushtoarray
1536
- # line 566 "insns.def"
1490
+ # line 547 "insns.def"
1537
1491
  {
1538
1492
  const VALUE *objp = STACK_ADDR_FROM_TOP(num);
1539
1493
  val = rb_ary_cat(*(objp-1), objp, num);
1540
1494
  }
1541
- # line 1542 "vm.inc"
1495
+ # line 1496 "vm.inc"
1542
1496
  # undef NAME_OF_CURRENT_INSN
1543
1497
 
1544
1498
  /* ### Instruction trailers. ### */
@@ -1576,11 +1530,11 @@ INSN_ENTRY(splatarray)
1576
1530
 
1577
1531
  /* ### Here we do the instruction body. ### */
1578
1532
  # define NAME_OF_CURRENT_INSN splatarray
1579
- # line 578 "insns.def"
1533
+ # line 559 "insns.def"
1580
1534
  {
1581
1535
  obj = vm_splat_array(flag, ary);
1582
1536
  }
1583
- # line 1584 "vm.inc"
1537
+ # line 1538 "vm.inc"
1584
1538
  # undef NAME_OF_CURRENT_INSN
1585
1539
 
1586
1540
  /* ### Instruction trailers. ### */
@@ -1617,7 +1571,7 @@ INSN_ENTRY(splatkw)
1617
1571
 
1618
1572
  /* ### Here we do the instruction body. ### */
1619
1573
  # define NAME_OF_CURRENT_INSN splatkw
1620
- # line 589 "insns.def"
1574
+ # line 570 "insns.def"
1621
1575
  {
1622
1576
  if (NIL_P(hash)) {
1623
1577
  obj = Qnil;
@@ -1626,7 +1580,7 @@ INSN_ENTRY(splatkw)
1626
1580
  obj = rb_to_hash_type(hash);
1627
1581
  }
1628
1582
  }
1629
- # line 1630 "vm.inc"
1583
+ # line 1584 "vm.inc"
1630
1584
  # undef NAME_OF_CURRENT_INSN
1631
1585
 
1632
1586
  /* ### Instruction trailers. ### */
@@ -1666,7 +1620,7 @@ INSN_ENTRY(newhash)
1666
1620
 
1667
1621
  /* ### Here we do the instruction body. ### */
1668
1622
  # define NAME_OF_CURRENT_INSN newhash
1669
- # line 606 "insns.def"
1623
+ # line 587 "insns.def"
1670
1624
  {
1671
1625
  RUBY_DTRACE_CREATE_HOOK(HASH, num);
1672
1626
 
@@ -1678,7 +1632,7 @@ INSN_ENTRY(newhash)
1678
1632
  val = rb_hash_new();
1679
1633
  }
1680
1634
  }
1681
- # line 1682 "vm.inc"
1635
+ # line 1636 "vm.inc"
1682
1636
  # undef NAME_OF_CURRENT_INSN
1683
1637
 
1684
1638
  /* ### Instruction trailers. ### */
@@ -1717,11 +1671,11 @@ INSN_ENTRY(newrange)
1717
1671
 
1718
1672
  /* ### Here we do the instruction body. ### */
1719
1673
  # define NAME_OF_CURRENT_INSN newrange
1720
- # line 626 "insns.def"
1674
+ # line 607 "insns.def"
1721
1675
  {
1722
1676
  val = rb_range_new(low, high, (int)flag);
1723
1677
  }
1724
- # line 1725 "vm.inc"
1678
+ # line 1679 "vm.inc"
1725
1679
  # undef NAME_OF_CURRENT_INSN
1726
1680
 
1727
1681
  /* ### Instruction trailers. ### */
@@ -1756,12 +1710,12 @@ INSN_ENTRY(pop)
1756
1710
 
1757
1711
  /* ### Here we do the instruction body. ### */
1758
1712
  # define NAME_OF_CURRENT_INSN pop
1759
- # line 640 "insns.def"
1713
+ # line 621 "insns.def"
1760
1714
  {
1761
1715
  (void)val;
1762
1716
  /* none */
1763
1717
  }
1764
- # line 1765 "vm.inc"
1718
+ # line 1719 "vm.inc"
1765
1719
  # undef NAME_OF_CURRENT_INSN
1766
1720
 
1767
1721
  /* ### Instruction trailers. ### */
@@ -1795,11 +1749,11 @@ INSN_ENTRY(dup)
1795
1749
 
1796
1750
  /* ### Here we do the instruction body. ### */
1797
1751
  # define NAME_OF_CURRENT_INSN dup
1798
- # line 651 "insns.def"
1752
+ # line 632 "insns.def"
1799
1753
  {
1800
1754
  val1 = val2 = val;
1801
1755
  }
1802
- # line 1803 "vm.inc"
1756
+ # line 1757 "vm.inc"
1803
1757
  # undef NAME_OF_CURRENT_INSN
1804
1758
 
1805
1759
  /* ### Instruction trailers. ### */
@@ -1837,14 +1791,14 @@ INSN_ENTRY(dupn)
1837
1791
 
1838
1792
  /* ### Here we do the instruction body. ### */
1839
1793
  # define NAME_OF_CURRENT_INSN dupn
1840
- # line 662 "insns.def"
1794
+ # line 643 "insns.def"
1841
1795
  {
1842
1796
  void *dst = GET_SP();
1843
1797
  void *src = STACK_ADDR_FROM_TOP(n);
1844
1798
 
1845
1799
  MEMCPY(dst, src, VALUE, n);
1846
1800
  }
1847
- # line 1848 "vm.inc"
1801
+ # line 1802 "vm.inc"
1848
1802
  # undef NAME_OF_CURRENT_INSN
1849
1803
 
1850
1804
  /* ### Instruction trailers. ### */
@@ -1907,7 +1861,7 @@ INSN_ENTRY(opt_reverse)
1907
1861
 
1908
1862
  /* ### Here we do the instruction body. ### */
1909
1863
  # define NAME_OF_CURRENT_INSN opt_reverse
1910
- # line 686 "insns.def"
1864
+ # line 667 "insns.def"
1911
1865
  {
1912
1866
  rb_num_t i;
1913
1867
  VALUE *sp = STACK_ADDR_FROM_TOP(n);
@@ -1919,7 +1873,7 @@ INSN_ENTRY(opt_reverse)
1919
1873
  TOPN(i) = v0;
1920
1874
  }
1921
1875
  }
1922
- # line 1923 "vm.inc"
1876
+ # line 1877 "vm.inc"
1923
1877
  # undef NAME_OF_CURRENT_INSN
1924
1878
 
1925
1879
  /* ### Instruction trailers. ### */
@@ -1952,11 +1906,11 @@ INSN_ENTRY(topn)
1952
1906
 
1953
1907
  /* ### Here we do the instruction body. ### */
1954
1908
  # define NAME_OF_CURRENT_INSN topn
1955
- # line 716 "insns.def"
1909
+ # line 697 "insns.def"
1956
1910
  {
1957
1911
  val = TOPN(n);
1958
1912
  }
1959
- # line 1960 "vm.inc"
1913
+ # line 1914 "vm.inc"
1960
1914
  # undef NAME_OF_CURRENT_INSN
1961
1915
 
1962
1916
  /* ### Instruction trailers. ### */
@@ -1993,11 +1947,11 @@ INSN_ENTRY(setn)
1993
1947
 
1994
1948
  /* ### Here we do the instruction body. ### */
1995
1949
  # define NAME_OF_CURRENT_INSN setn
1996
- # line 727 "insns.def"
1950
+ # line 708 "insns.def"
1997
1951
  {
1998
1952
  TOPN(n) = val;
1999
1953
  }
2000
- # line 2001 "vm.inc"
1954
+ # line 1955 "vm.inc"
2001
1955
  # undef NAME_OF_CURRENT_INSN
2002
1956
 
2003
1957
  /* ### Instruction trailers. ### */
@@ -2065,14 +2019,14 @@ INSN_ENTRY(defined)
2065
2019
 
2066
2020
  /* ### Here we do the instruction body. ### */
2067
2021
  # define NAME_OF_CURRENT_INSN defined
2068
- # line 753 "insns.def"
2022
+ # line 734 "insns.def"
2069
2023
  {
2070
2024
  val = Qnil;
2071
2025
  if (vm_defined(ec, GET_CFP(), op_type, obj, v)) {
2072
2026
  val = pushval;
2073
2027
  }
2074
2028
  }
2075
- # line 2076 "vm.inc"
2029
+ # line 2030 "vm.inc"
2076
2030
  # undef NAME_OF_CURRENT_INSN
2077
2031
 
2078
2032
  /* ### Instruction trailers. ### */
@@ -2113,14 +2067,14 @@ INSN_ENTRY(definedivar)
2113
2067
 
2114
2068
  /* ### Here we do the instruction body. ### */
2115
2069
  # define NAME_OF_CURRENT_INSN definedivar
2116
- # line 767 "insns.def"
2070
+ # line 748 "insns.def"
2117
2071
  {
2118
2072
  val = Qnil;
2119
2073
  if (!UNDEF_P(vm_getivar(GET_SELF(), id, GET_ISEQ(), ic, NULL, FALSE, Qundef))) {
2120
2074
  val = pushval;
2121
2075
  }
2122
2076
  }
2123
- # line 2124 "vm.inc"
2077
+ # line 2078 "vm.inc"
2124
2078
  # undef NAME_OF_CURRENT_INSN
2125
2079
 
2126
2080
  /* ### Instruction trailers. ### */
@@ -2159,11 +2113,11 @@ INSN_ENTRY(checkmatch)
2159
2113
 
2160
2114
  /* ### Here we do the instruction body. ### */
2161
2115
  # define NAME_OF_CURRENT_INSN checkmatch
2162
- # line 787 "insns.def"
2116
+ # line 768 "insns.def"
2163
2117
  {
2164
2118
  result = vm_check_match(ec, target, pattern, flag);
2165
2119
  }
2166
- # line 2167 "vm.inc"
2120
+ # line 2121 "vm.inc"
2167
2121
  # undef NAME_OF_CURRENT_INSN
2168
2122
 
2169
2123
  /* ### Instruction trailers. ### */
@@ -2202,11 +2156,11 @@ INSN_ENTRY(checkkeyword)
2202
2156
 
2203
2157
  /* ### Here we do the instruction body. ### */
2204
2158
  # define NAME_OF_CURRENT_INSN checkkeyword
2205
- # line 797 "insns.def"
2159
+ # line 778 "insns.def"
2206
2160
  {
2207
2161
  ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
2208
2162
  }
2209
- # line 2210 "vm.inc"
2163
+ # line 2164 "vm.inc"
2210
2164
  # undef NAME_OF_CURRENT_INSN
2211
2165
 
2212
2166
  /* ### Instruction trailers. ### */
@@ -2244,11 +2198,11 @@ INSN_ENTRY(checktype)
2244
2198
 
2245
2199
  /* ### Here we do the instruction body. ### */
2246
2200
  # define NAME_OF_CURRENT_INSN checktype
2247
- # line 807 "insns.def"
2201
+ # line 788 "insns.def"
2248
2202
  {
2249
2203
  ret = RBOOL(TYPE(val) == (int)type);
2250
2204
  }
2251
- # line 2252 "vm.inc"
2205
+ # line 2206 "vm.inc"
2252
2206
  # undef NAME_OF_CURRENT_INSN
2253
2207
 
2254
2208
  /* ### Instruction trailers. ### */
@@ -2292,15 +2246,16 @@ INSN_ENTRY(defineclass)
2292
2246
 
2293
2247
  /* ### Here we do the instruction body. ### */
2294
2248
  # define NAME_OF_CURRENT_INSN defineclass
2295
- # line 823 "insns.def"
2249
+ # line 804 "insns.def"
2296
2250
  {
2297
2251
  VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
2252
+ const rb_box_t *box = rb_current_box();
2298
2253
 
2299
2254
  rb_iseq_check(class_iseq);
2300
2255
 
2301
2256
  /* enter scope */
2302
2257
  vm_push_frame(ec, class_iseq, VM_FRAME_MAGIC_CLASS | VM_ENV_FLAG_LOCAL, klass,
2303
- GET_BLOCK_HANDLER(),
2258
+ GC_GUARDED_PTR(box),
2304
2259
  (VALUE)vm_cref_push(ec, klass, NULL, FALSE, FALSE),
2305
2260
  ISEQ_BODY(class_iseq)->iseq_encoded, GET_SP(),
2306
2261
  ISEQ_BODY(class_iseq)->local_table_size,
@@ -2308,7 +2263,7 @@ INSN_ENTRY(defineclass)
2308
2263
  RESTORE_REGS();
2309
2264
  NEXT_INSN();
2310
2265
  }
2311
- # line 2312 "vm.inc"
2266
+ # line 2267 "vm.inc"
2312
2267
  # undef NAME_OF_CURRENT_INSN
2313
2268
 
2314
2269
  /* ### Instruction trailers. ### */
@@ -2344,11 +2299,11 @@ INSN_ENTRY(definemethod)
2344
2299
 
2345
2300
  /* ### Here we do the instruction body. ### */
2346
2301
  # define NAME_OF_CURRENT_INSN definemethod
2347
- # line 844 "insns.def"
2302
+ # line 826 "insns.def"
2348
2303
  {
2349
2304
  vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);
2350
2305
  }
2351
- # line 2352 "vm.inc"
2306
+ # line 2307 "vm.inc"
2352
2307
  # undef NAME_OF_CURRENT_INSN
2353
2308
 
2354
2309
  /* ### Instruction trailers. ### */
@@ -2384,11 +2339,11 @@ INSN_ENTRY(definesmethod)
2384
2339
 
2385
2340
  /* ### Here we do the instruction body. ### */
2386
2341
  # define NAME_OF_CURRENT_INSN definesmethod
2387
- # line 853 "insns.def"
2342
+ # line 835 "insns.def"
2388
2343
  {
2389
2344
  vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);
2390
2345
  }
2391
- # line 2392 "vm.inc"
2346
+ # line 2347 "vm.inc"
2392
2347
  # undef NAME_OF_CURRENT_INSN
2393
2348
 
2394
2349
  /* ### Instruction trailers. ### */
@@ -2424,7 +2379,7 @@ INSN_ENTRY(send)
2424
2379
 
2425
2380
  /* ### Here we do the instruction body. ### */
2426
2381
  # define NAME_OF_CURRENT_INSN send
2427
- # line 869 "insns.def"
2382
+ # line 852 "insns.def"
2428
2383
  {
2429
2384
  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, false);
2430
2385
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
@@ -2435,7 +2390,7 @@ INSN_ENTRY(send)
2435
2390
  NEXT_INSN();
2436
2391
  }
2437
2392
  }
2438
- # line 2439 "vm.inc"
2393
+ # line 2394 "vm.inc"
2439
2394
  # undef NAME_OF_CURRENT_INSN
2440
2395
 
2441
2396
  /* ### Instruction trailers. ### */
@@ -2448,6 +2403,62 @@ INSN_ENTRY(send)
2448
2403
  END_INSN(send);
2449
2404
  }
2450
2405
 
2406
+ /* insn sendforward(cd, blockiseq)(...)(val) */
2407
+ INSN_ENTRY(sendforward)
2408
+ {
2409
+ /* ### Declare that we have just entered into an instruction. ### */
2410
+ START_OF_ORIGINAL_INSN(sendforward);
2411
+ DEBUG_ENTER_INSN("sendforward");
2412
+
2413
+ /* ### Declare and assign variables. ### */
2414
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2415
+ ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
2416
+ # define INSN_ATTR(x) attr_ ## x ## _sendforward(cd, blockiseq)
2417
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2418
+ VALUE val;
2419
+
2420
+ /* ### Instruction preambles. ### */
2421
+ ADD_PC(INSN_ATTR(width));
2422
+ POPN(INSN_ATTR(popn));
2423
+ SETUP_CANARY(leaf);
2424
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2425
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
2426
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, blockiseq);
2427
+
2428
+ /* ### Here we do the instruction body. ### */
2429
+ # define NAME_OF_CURRENT_INSN sendforward
2430
+ # line 871 "insns.def"
2431
+ {
2432
+ struct rb_forwarding_call_data adjusted_cd;
2433
+ struct rb_callinfo adjusted_ci;
2434
+
2435
+ VALUE bh = vm_caller_setup_fwd_args(ec, GET_CFP(), cd, blockiseq, 0, &adjusted_cd, &adjusted_ci);
2436
+
2437
+ val = vm_sendish(ec, GET_CFP(), &adjusted_cd.cd, bh, mexp_search_method);
2438
+ JIT_EXEC(ec, val);
2439
+
2440
+ if (cd->cc != adjusted_cd.cd.cc && vm_cc_markable(adjusted_cd.cd.cc)) {
2441
+ RB_OBJ_WRITE(GET_ISEQ(), &cd->cc, adjusted_cd.cd.cc);
2442
+ }
2443
+
2444
+ if (UNDEF_P(val)) {
2445
+ RESTORE_REGS();
2446
+ NEXT_INSN();
2447
+ }
2448
+ }
2449
+ # line 2450 "vm.inc"
2450
+ # undef NAME_OF_CURRENT_INSN
2451
+
2452
+ /* ### Instruction trailers. ### */
2453
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2454
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2455
+ PUSH(val);
2456
+ # undef INSN_ATTR
2457
+
2458
+ /* ### Leave the instruction. ### */
2459
+ END_INSN(sendforward);
2460
+ }
2461
+
2451
2462
  /* insn opt_send_without_block(cd)(...)(val) */
2452
2463
  INSN_ENTRY(opt_send_without_block)
2453
2464
  {
@@ -2470,7 +2481,7 @@ INSN_ENTRY(opt_send_without_block)
2470
2481
 
2471
2482
  /* ### Here we do the instruction body. ### */
2472
2483
  # define NAME_OF_CURRENT_INSN opt_send_without_block
2473
- # line 889 "insns.def"
2484
+ # line 900 "insns.def"
2474
2485
  {
2475
2486
  VALUE bh = VM_BLOCK_HANDLER_NONE;
2476
2487
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
@@ -2481,7 +2492,7 @@ INSN_ENTRY(opt_send_without_block)
2481
2492
  NEXT_INSN();
2482
2493
  }
2483
2494
  }
2484
- # line 2485 "vm.inc"
2495
+ # line 2496 "vm.inc"
2485
2496
  # undef NAME_OF_CURRENT_INSN
2486
2497
 
2487
2498
  /* ### Instruction trailers. ### */
@@ -2494,6 +2505,60 @@ INSN_ENTRY(opt_send_without_block)
2494
2505
  END_INSN(opt_send_without_block);
2495
2506
  }
2496
2507
 
2508
+ /* insn opt_new(cd, dst)()() */
2509
+ INSN_ENTRY(opt_new)
2510
+ {
2511
+ /* ### Declare that we have just entered into an instruction. ### */
2512
+ START_OF_ORIGINAL_INSN(opt_new);
2513
+ DEBUG_ENTER_INSN("opt_new");
2514
+
2515
+ /* ### Declare and assign variables. ### */
2516
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2517
+ OFFSET dst = (OFFSET)GET_OPERAND(2);
2518
+ # define INSN_ATTR(x) attr_ ## x ## _opt_new(cd, dst)
2519
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2520
+
2521
+ /* ### Instruction preambles. ### */
2522
+ ADD_PC(INSN_ATTR(width));
2523
+ SETUP_CANARY(leaf);
2524
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2525
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
2526
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, dst);
2527
+
2528
+ /* ### Here we do the instruction body. ### */
2529
+ # define NAME_OF_CURRENT_INSN opt_new
2530
+ # line 918 "insns.def"
2531
+ {
2532
+ VALUE argc = vm_ci_argc(cd->ci);
2533
+ VALUE val = TOPN(argc);
2534
+
2535
+ // The bookkeeping slot should be empty.
2536
+ RUBY_ASSERT(TOPN(argc + 1) == Qnil);
2537
+
2538
+ if (vm_method_cfunc_is(GET_ISEQ(), cd, val, rb_class_new_instance_pass_kw)) {
2539
+ RB_DEBUG_COUNTER_INC(opt_new_hit);
2540
+ val = rb_obj_alloc(val);
2541
+ TOPN(argc) = val;
2542
+ TOPN(argc + 1) = val;
2543
+ }
2544
+ else {
2545
+ RB_DEBUG_COUNTER_INC(opt_new_miss);
2546
+ JUMP(dst);
2547
+ }
2548
+ }
2549
+ # line 2550 "vm.inc"
2550
+ # undef NAME_OF_CURRENT_INSN
2551
+
2552
+ /* ### Instruction trailers. ### */
2553
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2554
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2555
+ INC_SP(INSN_ATTR(sp_inc));
2556
+ # undef INSN_ATTR
2557
+
2558
+ /* ### Leave the instruction. ### */
2559
+ END_INSN(opt_new);
2560
+ }
2561
+
2497
2562
  /* insn objtostring(cd)(recv)(val) */
2498
2563
  INSN_ENTRY(objtostring)
2499
2564
  {
@@ -2516,7 +2581,7 @@ INSN_ENTRY(objtostring)
2516
2581
 
2517
2582
  /* ### Here we do the instruction body. ### */
2518
2583
  # define NAME_OF_CURRENT_INSN objtostring
2519
- # line 907 "insns.def"
2584
+ # line 945 "insns.def"
2520
2585
  {
2521
2586
  val = vm_objtostring(GET_ISEQ(), recv, cd);
2522
2587
 
@@ -2524,7 +2589,7 @@ INSN_ENTRY(objtostring)
2524
2589
  CALL_SIMPLE_METHOD();
2525
2590
  }
2526
2591
  }
2527
- # line 2528 "vm.inc"
2592
+ # line 2593 "vm.inc"
2528
2593
  # undef NAME_OF_CURRENT_INSN
2529
2594
 
2530
2595
  /* ### Instruction trailers. ### */
@@ -2540,6 +2605,104 @@ INSN_ENTRY(objtostring)
2540
2605
  END_INSN(objtostring);
2541
2606
  }
2542
2607
 
2608
+ /* insn opt_ary_freeze(ary, cd)()(val) */
2609
+ INSN_ENTRY(opt_ary_freeze)
2610
+ {
2611
+ /* ### Declare that we have just entered into an instruction. ### */
2612
+ START_OF_ORIGINAL_INSN(opt_ary_freeze);
2613
+ DEBUG_ENTER_INSN("opt_ary_freeze");
2614
+
2615
+ /* ### Declare and assign variables. ### */
2616
+ VALUE ary = (VALUE)GET_OPERAND(1);
2617
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
2618
+ # define INSN_ATTR(x) attr_ ## x ## _opt_ary_freeze(ary, cd)
2619
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2620
+ VALUE val;
2621
+
2622
+ /* ### Instruction preambles. ### */
2623
+ ADD_PC(INSN_ATTR(width));
2624
+ SETUP_CANARY(leaf);
2625
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2626
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ary);
2627
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
2628
+
2629
+ /* ### Here we do the instruction body. ### */
2630
+ # define NAME_OF_CURRENT_INSN opt_ary_freeze
2631
+ # line 958 "insns.def"
2632
+ {
2633
+ val = vm_opt_ary_freeze(ary, BOP_FREEZE, idFreeze);
2634
+
2635
+ if (UNDEF_P(val)) {
2636
+ RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
2637
+ PUSH(rb_ary_resurrect(ary));
2638
+ CALL_SIMPLE_METHOD();
2639
+ }
2640
+ }
2641
+ # line 2642 "vm.inc"
2642
+ # undef NAME_OF_CURRENT_INSN
2643
+
2644
+ /* ### Instruction trailers. ### */
2645
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2646
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2647
+ INC_SP(INSN_ATTR(sp_inc));
2648
+ TOPN(0) = val;
2649
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2650
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2651
+ # undef INSN_ATTR
2652
+
2653
+ /* ### Leave the instruction. ### */
2654
+ END_INSN(opt_ary_freeze);
2655
+ }
2656
+
2657
+ /* insn opt_hash_freeze(hash, cd)()(val) */
2658
+ INSN_ENTRY(opt_hash_freeze)
2659
+ {
2660
+ /* ### Declare that we have just entered into an instruction. ### */
2661
+ START_OF_ORIGINAL_INSN(opt_hash_freeze);
2662
+ DEBUG_ENTER_INSN("opt_hash_freeze");
2663
+
2664
+ /* ### Declare and assign variables. ### */
2665
+ VALUE hash = (VALUE)GET_OPERAND(1);
2666
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
2667
+ # define INSN_ATTR(x) attr_ ## x ## _opt_hash_freeze(hash, cd)
2668
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2669
+ VALUE val;
2670
+
2671
+ /* ### Instruction preambles. ### */
2672
+ ADD_PC(INSN_ATTR(width));
2673
+ SETUP_CANARY(leaf);
2674
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2675
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
2676
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
2677
+
2678
+ /* ### Here we do the instruction body. ### */
2679
+ # define NAME_OF_CURRENT_INSN opt_hash_freeze
2680
+ # line 973 "insns.def"
2681
+ {
2682
+ val = vm_opt_hash_freeze(hash, BOP_FREEZE, idFreeze);
2683
+
2684
+ if (UNDEF_P(val)) {
2685
+ RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
2686
+ PUSH(rb_hash_resurrect(hash));
2687
+ CALL_SIMPLE_METHOD();
2688
+ }
2689
+ }
2690
+ # line 2691 "vm.inc"
2691
+ # undef NAME_OF_CURRENT_INSN
2692
+
2693
+ /* ### Instruction trailers. ### */
2694
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2695
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2696
+ INC_SP(INSN_ATTR(sp_inc));
2697
+ TOPN(0) = val;
2698
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2699
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2700
+ # undef INSN_ATTR
2701
+
2702
+ /* ### Leave the instruction. ### */
2703
+ END_INSN(opt_hash_freeze);
2704
+ }
2705
+
2543
2706
  /* insn opt_str_freeze(str, cd)()(val) */
2544
2707
  INSN_ENTRY(opt_str_freeze)
2545
2708
  {
@@ -2563,7 +2726,7 @@ INSN_ENTRY(opt_str_freeze)
2563
2726
 
2564
2727
  /* ### Here we do the instruction body. ### */
2565
2728
  # define NAME_OF_CURRENT_INSN opt_str_freeze
2566
- # line 920 "insns.def"
2729
+ # line 988 "insns.def"
2567
2730
  {
2568
2731
  val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze);
2569
2732
 
@@ -2572,7 +2735,7 @@ INSN_ENTRY(opt_str_freeze)
2572
2735
  CALL_SIMPLE_METHOD();
2573
2736
  }
2574
2737
  }
2575
- # line 2576 "vm.inc"
2738
+ # line 2739 "vm.inc"
2576
2739
  # undef NAME_OF_CURRENT_INSN
2577
2740
 
2578
2741
  /* ### Instruction trailers. ### */
@@ -2610,7 +2773,7 @@ INSN_ENTRY(opt_nil_p)
2610
2773
 
2611
2774
  /* ### Here we do the instruction body. ### */
2612
2775
  # define NAME_OF_CURRENT_INSN opt_nil_p
2613
- # line 935 "insns.def"
2776
+ # line 1004 "insns.def"
2614
2777
  {
2615
2778
  val = vm_opt_nil_p(GET_ISEQ(), cd, recv);
2616
2779
 
@@ -2618,7 +2781,7 @@ INSN_ENTRY(opt_nil_p)
2618
2781
  CALL_SIMPLE_METHOD();
2619
2782
  }
2620
2783
  }
2621
- # line 2622 "vm.inc"
2784
+ # line 2785 "vm.inc"
2622
2785
  # undef NAME_OF_CURRENT_INSN
2623
2786
 
2624
2787
  /* ### Instruction trailers. ### */
@@ -2657,7 +2820,7 @@ INSN_ENTRY(opt_str_uminus)
2657
2820
 
2658
2821
  /* ### Here we do the instruction body. ### */
2659
2822
  # define NAME_OF_CURRENT_INSN opt_str_uminus
2660
- # line 948 "insns.def"
2823
+ # line 1017 "insns.def"
2661
2824
  {
2662
2825
  val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus);
2663
2826
 
@@ -2666,7 +2829,7 @@ INSN_ENTRY(opt_str_uminus)
2666
2829
  CALL_SIMPLE_METHOD();
2667
2830
  }
2668
2831
  }
2669
- # line 2670 "vm.inc"
2832
+ # line 2833 "vm.inc"
2670
2833
  # undef NAME_OF_CURRENT_INSN
2671
2834
 
2672
2835
  /* ### Instruction trailers. ### */
@@ -2682,6 +2845,57 @@ INSN_ENTRY(opt_str_uminus)
2682
2845
  END_INSN(opt_str_uminus);
2683
2846
  }
2684
2847
 
2848
+ /* insn opt_duparray_send(ary, method, argc)(...)(val) */
2849
+ INSN_ENTRY(opt_duparray_send)
2850
+ {
2851
+ /* ### Declare that we have just entered into an instruction. ### */
2852
+ START_OF_ORIGINAL_INSN(opt_duparray_send);
2853
+ DEBUG_ENTER_INSN("opt_duparray_send");
2854
+
2855
+ /* ### Declare and assign variables. ### */
2856
+ VALUE ary = (VALUE)GET_OPERAND(1);
2857
+ ID method = (ID)GET_OPERAND(2);
2858
+ rb_num_t argc = (rb_num_t)GET_OPERAND(3);
2859
+ # define INSN_ATTR(x) attr_ ## x ## _opt_duparray_send(ary, method, argc)
2860
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2861
+ VALUE val;
2862
+
2863
+ /* ### Instruction preambles. ### */
2864
+ ADD_PC(INSN_ATTR(width));
2865
+ SETUP_CANARY(leaf);
2866
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2867
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ary);
2868
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, method);
2869
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, argc);
2870
+
2871
+ /* ### Here we do the instruction body. ### */
2872
+ # define NAME_OF_CURRENT_INSN opt_duparray_send
2873
+ # line 1038 "insns.def"
2874
+ {
2875
+ switch (method) {
2876
+ case idIncludeP:
2877
+ val = vm_opt_duparray_include_p(ec, ary, TOPN(0));
2878
+ break;
2879
+ default:
2880
+ rb_bug("unreachable");
2881
+ }
2882
+ }
2883
+ # line 2884 "vm.inc"
2884
+ # undef NAME_OF_CURRENT_INSN
2885
+
2886
+ /* ### Instruction trailers. ### */
2887
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2888
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2889
+ INC_SP(INSN_ATTR(sp_inc));
2890
+ TOPN(0) = val;
2891
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2892
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2893
+ # undef INSN_ATTR
2894
+
2895
+ /* ### Leave the instruction. ### */
2896
+ END_INSN(opt_duparray_send);
2897
+ }
2898
+
2685
2899
  /* insn opt_newarray_send(num, method)(...)(val) */
2686
2900
  INSN_ENTRY(opt_newarray_send)
2687
2901
  {
@@ -2691,7 +2905,7 @@ INSN_ENTRY(opt_newarray_send)
2691
2905
 
2692
2906
  /* ### Declare and assign variables. ### */
2693
2907
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
2694
- ID method = (ID)GET_OPERAND(2);
2908
+ rb_num_t method = (rb_num_t)GET_OPERAND(2);
2695
2909
  # define INSN_ATTR(x) attr_ ## x ## _opt_newarray_send(num, method)
2696
2910
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2697
2911
  VALUE val;
@@ -2705,23 +2919,32 @@ INSN_ENTRY(opt_newarray_send)
2705
2919
 
2706
2920
  /* ### Here we do the instruction body. ### */
2707
2921
  # define NAME_OF_CURRENT_INSN opt_newarray_send
2708
- # line 969 "insns.def"
2922
+ # line 1060 "insns.def"
2709
2923
  {
2710
- switch(method) {
2711
- case idHash:
2924
+ switch (method) {
2925
+ case VM_OPT_NEWARRAY_SEND_HASH:
2712
2926
  val = vm_opt_newarray_hash(ec, num, STACK_ADDR_FROM_TOP(num));
2713
2927
  break;
2714
- case idMin:
2928
+ case VM_OPT_NEWARRAY_SEND_MIN:
2715
2929
  val = vm_opt_newarray_min(ec, num, STACK_ADDR_FROM_TOP(num));
2716
2930
  break;
2717
- case idMax:
2931
+ case VM_OPT_NEWARRAY_SEND_MAX:
2718
2932
  val = vm_opt_newarray_max(ec, num, STACK_ADDR_FROM_TOP(num));
2719
2933
  break;
2934
+ case VM_OPT_NEWARRAY_SEND_INCLUDE_P:
2935
+ val = vm_opt_newarray_include_p(ec, (long)num-1, STACK_ADDR_FROM_TOP(num), TOPN(0));
2936
+ break;
2937
+ case VM_OPT_NEWARRAY_SEND_PACK:
2938
+ val = vm_opt_newarray_pack_buffer(ec, (long)num-1, STACK_ADDR_FROM_TOP(num), TOPN(0), Qundef);
2939
+ break;
2940
+ case VM_OPT_NEWARRAY_SEND_PACK_BUFFER:
2941
+ val = vm_opt_newarray_pack_buffer(ec, (long)num-2, STACK_ADDR_FROM_TOP(num), TOPN(1), TOPN(0));
2942
+ break;
2720
2943
  default:
2721
2944
  rb_bug("unreachable");
2722
2945
  }
2723
2946
  }
2724
- # line 2725 "vm.inc"
2947
+ # line 2948 "vm.inc"
2725
2948
  # undef NAME_OF_CURRENT_INSN
2726
2949
 
2727
2950
  /* ### Instruction trailers. ### */
@@ -2761,7 +2984,7 @@ INSN_ENTRY(invokesuper)
2761
2984
 
2762
2985
  /* ### Here we do the instruction body. ### */
2763
2986
  # define NAME_OF_CURRENT_INSN invokesuper
2764
- # line 993 "insns.def"
2987
+ # line 1093 "insns.def"
2765
2988
  {
2766
2989
  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, true);
2767
2990
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_super);
@@ -2772,7 +2995,7 @@ INSN_ENTRY(invokesuper)
2772
2995
  NEXT_INSN();
2773
2996
  }
2774
2997
  }
2775
- # line 2776 "vm.inc"
2998
+ # line 2999 "vm.inc"
2776
2999
  # undef NAME_OF_CURRENT_INSN
2777
3000
 
2778
3001
  /* ### Instruction trailers. ### */
@@ -2785,6 +3008,62 @@ INSN_ENTRY(invokesuper)
2785
3008
  END_INSN(invokesuper);
2786
3009
  }
2787
3010
 
3011
+ /* insn invokesuperforward(cd, blockiseq)(...)(val) */
3012
+ INSN_ENTRY(invokesuperforward)
3013
+ {
3014
+ /* ### Declare that we have just entered into an instruction. ### */
3015
+ START_OF_ORIGINAL_INSN(invokesuperforward);
3016
+ DEBUG_ENTER_INSN("invokesuperforward");
3017
+
3018
+ /* ### Declare and assign variables. ### */
3019
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3020
+ ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
3021
+ # define INSN_ATTR(x) attr_ ## x ## _invokesuperforward(cd, blockiseq)
3022
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3023
+ VALUE val;
3024
+
3025
+ /* ### Instruction preambles. ### */
3026
+ ADD_PC(INSN_ATTR(width));
3027
+ POPN(INSN_ATTR(popn));
3028
+ SETUP_CANARY(leaf);
3029
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
3030
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
3031
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, blockiseq);
3032
+
3033
+ /* ### Here we do the instruction body. ### */
3034
+ # define NAME_OF_CURRENT_INSN invokesuperforward
3035
+ # line 1112 "insns.def"
3036
+ {
3037
+ struct rb_forwarding_call_data adjusted_cd;
3038
+ struct rb_callinfo adjusted_ci;
3039
+
3040
+ VALUE bh = vm_caller_setup_fwd_args(ec, GET_CFP(), cd, blockiseq, 1, &adjusted_cd, &adjusted_ci);
3041
+
3042
+ val = vm_sendish(ec, GET_CFP(), &adjusted_cd.cd, bh, mexp_search_super);
3043
+ JIT_EXEC(ec, val);
3044
+
3045
+ if (cd->cc != adjusted_cd.cd.cc && vm_cc_markable(adjusted_cd.cd.cc)) {
3046
+ RB_OBJ_WRITE(GET_ISEQ(), &cd->cc, adjusted_cd.cd.cc);
3047
+ }
3048
+
3049
+ if (UNDEF_P(val)) {
3050
+ RESTORE_REGS();
3051
+ NEXT_INSN();
3052
+ }
3053
+ }
3054
+ # line 3055 "vm.inc"
3055
+ # undef NAME_OF_CURRENT_INSN
3056
+
3057
+ /* ### Instruction trailers. ### */
3058
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
3059
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
3060
+ PUSH(val);
3061
+ # undef INSN_ATTR
3062
+
3063
+ /* ### Leave the instruction. ### */
3064
+ END_INSN(invokesuperforward);
3065
+ }
3066
+
2788
3067
  /* insn invokeblock(cd)(...)(val) */
2789
3068
  INSN_ENTRY(invokeblock)
2790
3069
  {
@@ -2807,7 +3086,7 @@ INSN_ENTRY(invokeblock)
2807
3086
 
2808
3087
  /* ### Here we do the instruction body. ### */
2809
3088
  # define NAME_OF_CURRENT_INSN invokeblock
2810
- # line 1013 "insns.def"
3089
+ # line 1141 "insns.def"
2811
3090
  {
2812
3091
  VALUE bh = VM_BLOCK_HANDLER_NONE;
2813
3092
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_invokeblock);
@@ -2818,7 +3097,7 @@ INSN_ENTRY(invokeblock)
2818
3097
  NEXT_INSN();
2819
3098
  }
2820
3099
  }
2821
- # line 2822 "vm.inc"
3100
+ # line 3101 "vm.inc"
2822
3101
  # undef NAME_OF_CURRENT_INSN
2823
3102
 
2824
3103
  /* ### Instruction trailers. ### */
@@ -2851,7 +3130,7 @@ INSN_ENTRY(leave)
2851
3130
 
2852
3131
  /* ### Here we do the instruction body. ### */
2853
3132
  # define NAME_OF_CURRENT_INSN leave
2854
- # line 1035 "insns.def"
3133
+ # line 1163 "insns.def"
2855
3134
  {
2856
3135
  if (OPT_CHECKED_RUN) {
2857
3136
  const VALUE *const bp = vm_base_ptr(GET_CFP());
@@ -2872,7 +3151,7 @@ INSN_ENTRY(leave)
2872
3151
  RESTORE_REGS();
2873
3152
  }
2874
3153
  }
2875
- # line 2876 "vm.inc"
3154
+ # line 3155 "vm.inc"
2876
3155
  # undef NAME_OF_CURRENT_INSN
2877
3156
 
2878
3157
  /* ### Instruction trailers. ### */
@@ -2907,13 +3186,13 @@ INSN_ENTRY(throw)
2907
3186
 
2908
3187
  /* ### Here we do the instruction body. ### */
2909
3188
  # define NAME_OF_CURRENT_INSN throw
2910
- # line 1068 "insns.def"
3189
+ # line 1196 "insns.def"
2911
3190
  {
2912
3191
  val = vm_throw(ec, GET_CFP(), throw_state, throwobj);
2913
3192
  THROW_EXCEPTION(val);
2914
3193
  /* unreachable */
2915
3194
  }
2916
- # line 2917 "vm.inc"
3195
+ # line 3196 "vm.inc"
2917
3196
  # undef NAME_OF_CURRENT_INSN
2918
3197
 
2919
3198
  /* ### Instruction trailers. ### */
@@ -2949,12 +3228,12 @@ INSN_ENTRY(jump)
2949
3228
 
2950
3229
  /* ### Here we do the instruction body. ### */
2951
3230
  # define NAME_OF_CURRENT_INSN jump
2952
- # line 1086 "insns.def"
3231
+ # line 1214 "insns.def"
2953
3232
  {
2954
3233
  RUBY_VM_CHECK_INTS(ec);
2955
3234
  JUMP(dst);
2956
3235
  }
2957
- # line 2958 "vm.inc"
3236
+ # line 3237 "vm.inc"
2958
3237
  # undef NAME_OF_CURRENT_INSN
2959
3238
 
2960
3239
  /* ### Instruction trailers. ### */
@@ -2988,14 +3267,14 @@ INSN_ENTRY(branchif)
2988
3267
 
2989
3268
  /* ### Here we do the instruction body. ### */
2990
3269
  # define NAME_OF_CURRENT_INSN branchif
2991
- # line 1099 "insns.def"
3270
+ # line 1227 "insns.def"
2992
3271
  {
2993
3272
  if (RTEST(val)) {
2994
3273
  RUBY_VM_CHECK_INTS(ec);
2995
3274
  JUMP(dst);
2996
3275
  }
2997
3276
  }
2998
- # line 2999 "vm.inc"
3277
+ # line 3278 "vm.inc"
2999
3278
  # undef NAME_OF_CURRENT_INSN
3000
3279
 
3001
3280
  /* ### Instruction trailers. ### */
@@ -3029,14 +3308,14 @@ INSN_ENTRY(branchunless)
3029
3308
 
3030
3309
  /* ### Here we do the instruction body. ### */
3031
3310
  # define NAME_OF_CURRENT_INSN branchunless
3032
- # line 1114 "insns.def"
3311
+ # line 1242 "insns.def"
3033
3312
  {
3034
3313
  if (!RTEST(val)) {
3035
3314
  RUBY_VM_CHECK_INTS(ec);
3036
3315
  JUMP(dst);
3037
3316
  }
3038
3317
  }
3039
- # line 3040 "vm.inc"
3318
+ # line 3319 "vm.inc"
3040
3319
  # undef NAME_OF_CURRENT_INSN
3041
3320
 
3042
3321
  /* ### Instruction trailers. ### */
@@ -3070,14 +3349,14 @@ INSN_ENTRY(branchnil)
3070
3349
 
3071
3350
  /* ### Here we do the instruction body. ### */
3072
3351
  # define NAME_OF_CURRENT_INSN branchnil
3073
- # line 1129 "insns.def"
3352
+ # line 1257 "insns.def"
3074
3353
  {
3075
3354
  if (NIL_P(val)) {
3076
3355
  RUBY_VM_CHECK_INTS(ec);
3077
3356
  JUMP(dst);
3078
3357
  }
3079
3358
  }
3080
- # line 3081 "vm.inc"
3359
+ # line 3360 "vm.inc"
3081
3360
  # undef NAME_OF_CURRENT_INSN
3082
3361
 
3083
3362
  /* ### Instruction trailers. ### */
@@ -3114,11 +3393,11 @@ INSN_ENTRY(once)
3114
3393
 
3115
3394
  /* ### Here we do the instruction body. ### */
3116
3395
  # define NAME_OF_CURRENT_INSN once
3117
- # line 1146 "insns.def"
3396
+ # line 1274 "insns.def"
3118
3397
  {
3119
3398
  val = vm_once_dispatch(ec, iseq, ise);
3120
3399
  }
3121
- # line 3122 "vm.inc"
3400
+ # line 3401 "vm.inc"
3122
3401
  # undef NAME_OF_CURRENT_INSN
3123
3402
 
3124
3403
  /* ### Instruction trailers. ### */
@@ -3154,7 +3433,7 @@ INSN_ENTRY(opt_case_dispatch)
3154
3433
 
3155
3434
  /* ### Here we do the instruction body. ### */
3156
3435
  # define NAME_OF_CURRENT_INSN opt_case_dispatch
3157
- # line 1157 "insns.def"
3436
+ # line 1285 "insns.def"
3158
3437
  {
3159
3438
  OFFSET dst = vm_case_dispatch(hash, else_offset, key);
3160
3439
 
@@ -3162,7 +3441,7 @@ INSN_ENTRY(opt_case_dispatch)
3162
3441
  JUMP(dst);
3163
3442
  }
3164
3443
  }
3165
- # line 3166 "vm.inc"
3444
+ # line 3445 "vm.inc"
3166
3445
  # undef NAME_OF_CURRENT_INSN
3167
3446
 
3168
3447
  /* ### Instruction trailers. ### */
@@ -3198,7 +3477,7 @@ INSN_ENTRY(opt_plus)
3198
3477
 
3199
3478
  /* ### Here we do the instruction body. ### */
3200
3479
  # define NAME_OF_CURRENT_INSN opt_plus
3201
- # line 1173 "insns.def"
3480
+ # line 1302 "insns.def"
3202
3481
  {
3203
3482
  val = vm_opt_plus(recv, obj);
3204
3483
 
@@ -3206,7 +3485,7 @@ INSN_ENTRY(opt_plus)
3206
3485
  CALL_SIMPLE_METHOD();
3207
3486
  }
3208
3487
  }
3209
- # line 3210 "vm.inc"
3488
+ # line 3489 "vm.inc"
3210
3489
  # undef NAME_OF_CURRENT_INSN
3211
3490
 
3212
3491
  /* ### Instruction trailers. ### */
@@ -3245,7 +3524,7 @@ INSN_ENTRY(opt_minus)
3245
3524
 
3246
3525
  /* ### Here we do the instruction body. ### */
3247
3526
  # define NAME_OF_CURRENT_INSN opt_minus
3248
- # line 1187 "insns.def"
3527
+ # line 1317 "insns.def"
3249
3528
  {
3250
3529
  val = vm_opt_minus(recv, obj);
3251
3530
 
@@ -3253,7 +3532,7 @@ INSN_ENTRY(opt_minus)
3253
3532
  CALL_SIMPLE_METHOD();
3254
3533
  }
3255
3534
  }
3256
- # line 3257 "vm.inc"
3535
+ # line 3536 "vm.inc"
3257
3536
  # undef NAME_OF_CURRENT_INSN
3258
3537
 
3259
3538
  /* ### Instruction trailers. ### */
@@ -3292,7 +3571,7 @@ INSN_ENTRY(opt_mult)
3292
3571
 
3293
3572
  /* ### Here we do the instruction body. ### */
3294
3573
  # define NAME_OF_CURRENT_INSN opt_mult
3295
- # line 1201 "insns.def"
3574
+ # line 1332 "insns.def"
3296
3575
  {
3297
3576
  val = vm_opt_mult(recv, obj);
3298
3577
 
@@ -3300,7 +3579,7 @@ INSN_ENTRY(opt_mult)
3300
3579
  CALL_SIMPLE_METHOD();
3301
3580
  }
3302
3581
  }
3303
- # line 3304 "vm.inc"
3582
+ # line 3583 "vm.inc"
3304
3583
  # undef NAME_OF_CURRENT_INSN
3305
3584
 
3306
3585
  /* ### Instruction trailers. ### */
@@ -3339,7 +3618,7 @@ INSN_ENTRY(opt_div)
3339
3618
 
3340
3619
  /* ### Here we do the instruction body. ### */
3341
3620
  # define NAME_OF_CURRENT_INSN opt_div
3342
- # line 1218 "insns.def"
3621
+ # line 1350 "insns.def"
3343
3622
  {
3344
3623
  val = vm_opt_div(recv, obj);
3345
3624
 
@@ -3347,7 +3626,7 @@ INSN_ENTRY(opt_div)
3347
3626
  CALL_SIMPLE_METHOD();
3348
3627
  }
3349
3628
  }
3350
- # line 3351 "vm.inc"
3629
+ # line 3630 "vm.inc"
3351
3630
  # undef NAME_OF_CURRENT_INSN
3352
3631
 
3353
3632
  /* ### Instruction trailers. ### */
@@ -3386,7 +3665,7 @@ INSN_ENTRY(opt_mod)
3386
3665
 
3387
3666
  /* ### Here we do the instruction body. ### */
3388
3667
  # define NAME_OF_CURRENT_INSN opt_mod
3389
- # line 1234 "insns.def"
3668
+ # line 1367 "insns.def"
3390
3669
  {
3391
3670
  val = vm_opt_mod(recv, obj);
3392
3671
 
@@ -3394,7 +3673,7 @@ INSN_ENTRY(opt_mod)
3394
3673
  CALL_SIMPLE_METHOD();
3395
3674
  }
3396
3675
  }
3397
- # line 3398 "vm.inc"
3676
+ # line 3677 "vm.inc"
3398
3677
  # undef NAME_OF_CURRENT_INSN
3399
3678
 
3400
3679
  /* ### Instruction trailers. ### */
@@ -3433,7 +3712,7 @@ INSN_ENTRY(opt_eq)
3433
3712
 
3434
3713
  /* ### Here we do the instruction body. ### */
3435
3714
  # define NAME_OF_CURRENT_INSN opt_eq
3436
- # line 1248 "insns.def"
3715
+ # line 1382 "insns.def"
3437
3716
  {
3438
3717
  val = opt_equality(GET_ISEQ(), recv, obj, cd);
3439
3718
 
@@ -3441,7 +3720,7 @@ INSN_ENTRY(opt_eq)
3441
3720
  CALL_SIMPLE_METHOD();
3442
3721
  }
3443
3722
  }
3444
- # line 3445 "vm.inc"
3723
+ # line 3724 "vm.inc"
3445
3724
  # undef NAME_OF_CURRENT_INSN
3446
3725
 
3447
3726
  /* ### Instruction trailers. ### */
@@ -3482,7 +3761,7 @@ INSN_ENTRY(opt_neq)
3482
3761
 
3483
3762
  /* ### Here we do the instruction body. ### */
3484
3763
  # define NAME_OF_CURRENT_INSN opt_neq
3485
- # line 1262 "insns.def"
3764
+ # line 1397 "insns.def"
3486
3765
  {
3487
3766
  val = vm_opt_neq(GET_ISEQ(), cd, cd_eq, recv, obj);
3488
3767
 
@@ -3490,7 +3769,7 @@ INSN_ENTRY(opt_neq)
3490
3769
  CALL_SIMPLE_METHOD();
3491
3770
  }
3492
3771
  }
3493
- # line 3494 "vm.inc"
3772
+ # line 3773 "vm.inc"
3494
3773
  # undef NAME_OF_CURRENT_INSN
3495
3774
 
3496
3775
  /* ### Instruction trailers. ### */
@@ -3529,7 +3808,7 @@ INSN_ENTRY(opt_lt)
3529
3808
 
3530
3809
  /* ### Here we do the instruction body. ### */
3531
3810
  # define NAME_OF_CURRENT_INSN opt_lt
3532
- # line 1276 "insns.def"
3811
+ # line 1412 "insns.def"
3533
3812
  {
3534
3813
  val = vm_opt_lt(recv, obj);
3535
3814
 
@@ -3537,7 +3816,7 @@ INSN_ENTRY(opt_lt)
3537
3816
  CALL_SIMPLE_METHOD();
3538
3817
  }
3539
3818
  }
3540
- # line 3541 "vm.inc"
3819
+ # line 3820 "vm.inc"
3541
3820
  # undef NAME_OF_CURRENT_INSN
3542
3821
 
3543
3822
  /* ### Instruction trailers. ### */
@@ -3576,7 +3855,7 @@ INSN_ENTRY(opt_le)
3576
3855
 
3577
3856
  /* ### Here we do the instruction body. ### */
3578
3857
  # define NAME_OF_CURRENT_INSN opt_le
3579
- # line 1290 "insns.def"
3858
+ # line 1427 "insns.def"
3580
3859
  {
3581
3860
  val = vm_opt_le(recv, obj);
3582
3861
 
@@ -3584,7 +3863,7 @@ INSN_ENTRY(opt_le)
3584
3863
  CALL_SIMPLE_METHOD();
3585
3864
  }
3586
3865
  }
3587
- # line 3588 "vm.inc"
3866
+ # line 3867 "vm.inc"
3588
3867
  # undef NAME_OF_CURRENT_INSN
3589
3868
 
3590
3869
  /* ### Instruction trailers. ### */
@@ -3623,7 +3902,7 @@ INSN_ENTRY(opt_gt)
3623
3902
 
3624
3903
  /* ### Here we do the instruction body. ### */
3625
3904
  # define NAME_OF_CURRENT_INSN opt_gt
3626
- # line 1304 "insns.def"
3905
+ # line 1442 "insns.def"
3627
3906
  {
3628
3907
  val = vm_opt_gt(recv, obj);
3629
3908
 
@@ -3631,7 +3910,7 @@ INSN_ENTRY(opt_gt)
3631
3910
  CALL_SIMPLE_METHOD();
3632
3911
  }
3633
3912
  }
3634
- # line 3635 "vm.inc"
3913
+ # line 3914 "vm.inc"
3635
3914
  # undef NAME_OF_CURRENT_INSN
3636
3915
 
3637
3916
  /* ### Instruction trailers. ### */
@@ -3670,7 +3949,7 @@ INSN_ENTRY(opt_ge)
3670
3949
 
3671
3950
  /* ### Here we do the instruction body. ### */
3672
3951
  # define NAME_OF_CURRENT_INSN opt_ge
3673
- # line 1318 "insns.def"
3952
+ # line 1457 "insns.def"
3674
3953
  {
3675
3954
  val = vm_opt_ge(recv, obj);
3676
3955
 
@@ -3678,7 +3957,7 @@ INSN_ENTRY(opt_ge)
3678
3957
  CALL_SIMPLE_METHOD();
3679
3958
  }
3680
3959
  }
3681
- # line 3682 "vm.inc"
3960
+ # line 3961 "vm.inc"
3682
3961
  # undef NAME_OF_CURRENT_INSN
3683
3962
 
3684
3963
  /* ### Instruction trailers. ### */
@@ -3717,7 +3996,7 @@ INSN_ENTRY(opt_ltlt)
3717
3996
 
3718
3997
  /* ### Here we do the instruction body. ### */
3719
3998
  # define NAME_OF_CURRENT_INSN opt_ltlt
3720
- # line 1336 "insns.def"
3999
+ # line 1476 "insns.def"
3721
4000
  {
3722
4001
  val = vm_opt_ltlt(recv, obj);
3723
4002
 
@@ -3725,7 +4004,7 @@ INSN_ENTRY(opt_ltlt)
3725
4004
  CALL_SIMPLE_METHOD();
3726
4005
  }
3727
4006
  }
3728
- # line 3729 "vm.inc"
4007
+ # line 4008 "vm.inc"
3729
4008
  # undef NAME_OF_CURRENT_INSN
3730
4009
 
3731
4010
  /* ### Instruction trailers. ### */
@@ -3764,7 +4043,7 @@ INSN_ENTRY(opt_and)
3764
4043
 
3765
4044
  /* ### Here we do the instruction body. ### */
3766
4045
  # define NAME_OF_CURRENT_INSN opt_and
3767
- # line 1350 "insns.def"
4046
+ # line 1491 "insns.def"
3768
4047
  {
3769
4048
  val = vm_opt_and(recv, obj);
3770
4049
 
@@ -3772,7 +4051,7 @@ INSN_ENTRY(opt_and)
3772
4051
  CALL_SIMPLE_METHOD();
3773
4052
  }
3774
4053
  }
3775
- # line 3776 "vm.inc"
4054
+ # line 4055 "vm.inc"
3776
4055
  # undef NAME_OF_CURRENT_INSN
3777
4056
 
3778
4057
  /* ### Instruction trailers. ### */
@@ -3811,7 +4090,7 @@ INSN_ENTRY(opt_or)
3811
4090
 
3812
4091
  /* ### Here we do the instruction body. ### */
3813
4092
  # define NAME_OF_CURRENT_INSN opt_or
3814
- # line 1364 "insns.def"
4093
+ # line 1506 "insns.def"
3815
4094
  {
3816
4095
  val = vm_opt_or(recv, obj);
3817
4096
 
@@ -3819,7 +4098,7 @@ INSN_ENTRY(opt_or)
3819
4098
  CALL_SIMPLE_METHOD();
3820
4099
  }
3821
4100
  }
3822
- # line 3823 "vm.inc"
4101
+ # line 4102 "vm.inc"
3823
4102
  # undef NAME_OF_CURRENT_INSN
3824
4103
 
3825
4104
  /* ### Instruction trailers. ### */
@@ -3858,7 +4137,7 @@ INSN_ENTRY(opt_aref)
3858
4137
 
3859
4138
  /* ### Here we do the instruction body. ### */
3860
4139
  # define NAME_OF_CURRENT_INSN opt_aref
3861
- # line 1383 "insns.def"
4140
+ # line 1526 "insns.def"
3862
4141
  {
3863
4142
  val = vm_opt_aref(recv, obj);
3864
4143
 
@@ -3866,7 +4145,7 @@ INSN_ENTRY(opt_aref)
3866
4145
  CALL_SIMPLE_METHOD();
3867
4146
  }
3868
4147
  }
3869
- # line 3870 "vm.inc"
4148
+ # line 4149 "vm.inc"
3870
4149
  # undef NAME_OF_CURRENT_INSN
3871
4150
 
3872
4151
  /* ### Instruction trailers. ### */
@@ -3906,7 +4185,7 @@ INSN_ENTRY(opt_aset)
3906
4185
 
3907
4186
  /* ### Here we do the instruction body. ### */
3908
4187
  # define NAME_OF_CURRENT_INSN opt_aset
3909
- # line 1400 "insns.def"
4188
+ # line 1544 "insns.def"
3910
4189
  {
3911
4190
  val = vm_opt_aset(recv, obj, set);
3912
4191
 
@@ -3914,7 +4193,7 @@ INSN_ENTRY(opt_aset)
3914
4193
  CALL_SIMPLE_METHOD();
3915
4194
  }
3916
4195
  }
3917
- # line 3918 "vm.inc"
4196
+ # line 4197 "vm.inc"
3918
4197
  # undef NAME_OF_CURRENT_INSN
3919
4198
 
3920
4199
  /* ### Instruction trailers. ### */
@@ -3930,108 +4209,6 @@ INSN_ENTRY(opt_aset)
3930
4209
  END_INSN(opt_aset);
3931
4210
  }
3932
4211
 
3933
- /* insn opt_aset_with(key, cd)(recv, val)(val) */
3934
- INSN_ENTRY(opt_aset_with)
3935
- {
3936
- /* ### Declare that we have just entered into an instruction. ### */
3937
- START_OF_ORIGINAL_INSN(opt_aset_with);
3938
- DEBUG_ENTER_INSN("opt_aset_with");
3939
-
3940
- /* ### Declare and assign variables. ### */
3941
- VALUE key = (VALUE)GET_OPERAND(1);
3942
- CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3943
- # define INSN_ATTR(x) attr_ ## x ## _opt_aset_with(key, cd)
3944
- const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3945
- VALUE recv = TOPN(1);
3946
- VALUE val = TOPN(0);
3947
-
3948
- /* ### Instruction preambles. ### */
3949
- ADD_PC(INSN_ATTR(width));
3950
- SETUP_CANARY(leaf);
3951
- COLLECT_USAGE_INSN(INSN_ATTR(bin));
3952
- COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
3953
- COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
3954
-
3955
- /* ### Here we do the instruction body. ### */
3956
- # define NAME_OF_CURRENT_INSN opt_aset_with
3957
- # line 1416 "insns.def"
3958
- {
3959
- VALUE tmp = vm_opt_aset_with(recv, key, val);
3960
-
3961
- if (!UNDEF_P(tmp)) {
3962
- val = tmp;
3963
- }
3964
- else {
3965
- TOPN(0) = rb_str_resurrect(key);
3966
- PUSH(val);
3967
- CALL_SIMPLE_METHOD();
3968
- }
3969
- }
3970
- # line 3971 "vm.inc"
3971
- # undef NAME_OF_CURRENT_INSN
3972
-
3973
- /* ### Instruction trailers. ### */
3974
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
3975
- CHECK_CANARY(leaf, INSN_ATTR(bin));
3976
- INC_SP(INSN_ATTR(sp_inc));
3977
- TOPN(0) = val;
3978
- VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
3979
- VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
3980
- # undef INSN_ATTR
3981
-
3982
- /* ### Leave the instruction. ### */
3983
- END_INSN(opt_aset_with);
3984
- }
3985
-
3986
- /* insn opt_aref_with(key, cd)(recv)(val) */
3987
- INSN_ENTRY(opt_aref_with)
3988
- {
3989
- /* ### Declare that we have just entered into an instruction. ### */
3990
- START_OF_ORIGINAL_INSN(opt_aref_with);
3991
- DEBUG_ENTER_INSN("opt_aref_with");
3992
-
3993
- /* ### Declare and assign variables. ### */
3994
- VALUE key = (VALUE)GET_OPERAND(1);
3995
- CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3996
- # define INSN_ATTR(x) attr_ ## x ## _opt_aref_with(key, cd)
3997
- const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
3998
- VALUE recv = TOPN(0);
3999
- VALUE val;
4000
-
4001
- /* ### Instruction preambles. ### */
4002
- ADD_PC(INSN_ATTR(width));
4003
- SETUP_CANARY(leaf);
4004
- COLLECT_USAGE_INSN(INSN_ATTR(bin));
4005
- COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, key);
4006
- COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
4007
-
4008
- /* ### Here we do the instruction body. ### */
4009
- # define NAME_OF_CURRENT_INSN opt_aref_with
4010
- # line 1437 "insns.def"
4011
- {
4012
- val = vm_opt_aref_with(recv, key);
4013
-
4014
- if (UNDEF_P(val)) {
4015
- PUSH(rb_str_resurrect(key));
4016
- CALL_SIMPLE_METHOD();
4017
- }
4018
- }
4019
- # line 4020 "vm.inc"
4020
- # undef NAME_OF_CURRENT_INSN
4021
-
4022
- /* ### Instruction trailers. ### */
4023
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
4024
- CHECK_CANARY(leaf, INSN_ATTR(bin));
4025
- INC_SP(INSN_ATTR(sp_inc));
4026
- TOPN(0) = val;
4027
- VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
4028
- VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
4029
- # undef INSN_ATTR
4030
-
4031
- /* ### Leave the instruction. ### */
4032
- END_INSN(opt_aref_with);
4033
- }
4034
-
4035
4212
  /* insn opt_length(cd)(recv)(val) */
4036
4213
  INSN_ENTRY(opt_length)
4037
4214
  {
@@ -4054,7 +4231,7 @@ INSN_ENTRY(opt_length)
4054
4231
 
4055
4232
  /* ### Here we do the instruction body. ### */
4056
4233
  # define NAME_OF_CURRENT_INSN opt_length
4057
- # line 1452 "insns.def"
4234
+ # line 1559 "insns.def"
4058
4235
  {
4059
4236
  val = vm_opt_length(recv, BOP_LENGTH);
4060
4237
 
@@ -4062,7 +4239,7 @@ INSN_ENTRY(opt_length)
4062
4239
  CALL_SIMPLE_METHOD();
4063
4240
  }
4064
4241
  }
4065
- # line 4066 "vm.inc"
4242
+ # line 4243 "vm.inc"
4066
4243
  # undef NAME_OF_CURRENT_INSN
4067
4244
 
4068
4245
  /* ### Instruction trailers. ### */
@@ -4100,7 +4277,7 @@ INSN_ENTRY(opt_size)
4100
4277
 
4101
4278
  /* ### Here we do the instruction body. ### */
4102
4279
  # define NAME_OF_CURRENT_INSN opt_size
4103
- # line 1466 "insns.def"
4280
+ # line 1574 "insns.def"
4104
4281
  {
4105
4282
  val = vm_opt_length(recv, BOP_SIZE);
4106
4283
 
@@ -4108,7 +4285,7 @@ INSN_ENTRY(opt_size)
4108
4285
  CALL_SIMPLE_METHOD();
4109
4286
  }
4110
4287
  }
4111
- # line 4112 "vm.inc"
4288
+ # line 4289 "vm.inc"
4112
4289
  # undef NAME_OF_CURRENT_INSN
4113
4290
 
4114
4291
  /* ### Instruction trailers. ### */
@@ -4146,7 +4323,7 @@ INSN_ENTRY(opt_empty_p)
4146
4323
 
4147
4324
  /* ### Here we do the instruction body. ### */
4148
4325
  # define NAME_OF_CURRENT_INSN opt_empty_p
4149
- # line 1480 "insns.def"
4326
+ # line 1589 "insns.def"
4150
4327
  {
4151
4328
  val = vm_opt_empty_p(recv);
4152
4329
 
@@ -4154,7 +4331,7 @@ INSN_ENTRY(opt_empty_p)
4154
4331
  CALL_SIMPLE_METHOD();
4155
4332
  }
4156
4333
  }
4157
- # line 4158 "vm.inc"
4334
+ # line 4335 "vm.inc"
4158
4335
  # undef NAME_OF_CURRENT_INSN
4159
4336
 
4160
4337
  /* ### Instruction trailers. ### */
@@ -4192,7 +4369,7 @@ INSN_ENTRY(opt_succ)
4192
4369
 
4193
4370
  /* ### Here we do the instruction body. ### */
4194
4371
  # define NAME_OF_CURRENT_INSN opt_succ
4195
- # line 1494 "insns.def"
4372
+ # line 1604 "insns.def"
4196
4373
  {
4197
4374
  val = vm_opt_succ(recv);
4198
4375
 
@@ -4200,7 +4377,7 @@ INSN_ENTRY(opt_succ)
4200
4377
  CALL_SIMPLE_METHOD();
4201
4378
  }
4202
4379
  }
4203
- # line 4204 "vm.inc"
4380
+ # line 4381 "vm.inc"
4204
4381
  # undef NAME_OF_CURRENT_INSN
4205
4382
 
4206
4383
  /* ### Instruction trailers. ### */
@@ -4238,7 +4415,7 @@ INSN_ENTRY(opt_not)
4238
4415
 
4239
4416
  /* ### Here we do the instruction body. ### */
4240
4417
  # define NAME_OF_CURRENT_INSN opt_not
4241
- # line 1508 "insns.def"
4418
+ # line 1619 "insns.def"
4242
4419
  {
4243
4420
  val = vm_opt_not(GET_ISEQ(), cd, recv);
4244
4421
 
@@ -4246,7 +4423,7 @@ INSN_ENTRY(opt_not)
4246
4423
  CALL_SIMPLE_METHOD();
4247
4424
  }
4248
4425
  }
4249
- # line 4250 "vm.inc"
4426
+ # line 4427 "vm.inc"
4250
4427
  # undef NAME_OF_CURRENT_INSN
4251
4428
 
4252
4429
  /* ### Instruction trailers. ### */
@@ -4285,7 +4462,7 @@ INSN_ENTRY(opt_regexpmatch2)
4285
4462
 
4286
4463
  /* ### Here we do the instruction body. ### */
4287
4464
  # define NAME_OF_CURRENT_INSN opt_regexpmatch2
4288
- # line 1523 "insns.def"
4465
+ # line 1635 "insns.def"
4289
4466
  {
4290
4467
  val = vm_opt_regexpmatch2(obj2, obj1);
4291
4468
 
@@ -4293,7 +4470,7 @@ INSN_ENTRY(opt_regexpmatch2)
4293
4470
  CALL_SIMPLE_METHOD();
4294
4471
  }
4295
4472
  }
4296
- # line 4297 "vm.inc"
4473
+ # line 4474 "vm.inc"
4297
4474
  # undef NAME_OF_CURRENT_INSN
4298
4475
 
4299
4476
  /* ### Instruction trailers. ### */
@@ -4330,11 +4507,11 @@ INSN_ENTRY(invokebuiltin)
4330
4507
 
4331
4508
  /* ### Here we do the instruction body. ### */
4332
4509
  # define NAME_OF_CURRENT_INSN invokebuiltin
4333
- # line 1539 "insns.def"
4510
+ # line 1651 "insns.def"
4334
4511
  {
4335
4512
  val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
4336
4513
  }
4337
- # line 4338 "vm.inc"
4514
+ # line 4515 "vm.inc"
4338
4515
  # undef NAME_OF_CURRENT_INSN
4339
4516
 
4340
4517
  /* ### Instruction trailers. ### */
@@ -4373,11 +4550,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
4373
4550
 
4374
4551
  /* ### Here we do the instruction body. ### */
4375
4552
  # define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate
4376
- # line 1550 "insns.def"
4553
+ # line 1662 "insns.def"
4377
4554
  {
4378
4555
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4379
4556
  }
4380
- # line 4381 "vm.inc"
4557
+ # line 4558 "vm.inc"
4381
4558
  # undef NAME_OF_CURRENT_INSN
4382
4559
 
4383
4560
  /* ### Instruction trailers. ### */
@@ -4416,7 +4593,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4416
4593
 
4417
4594
  /* ### Here we do the instruction body. ### */
4418
4595
  # define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate_leave
4419
- # line 1561 "insns.def"
4596
+ # line 1673 "insns.def"
4420
4597
  {
4421
4598
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4422
4599
 
@@ -4434,7 +4611,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4434
4611
  RESTORE_REGS();
4435
4612
  }
4436
4613
  }
4437
- # line 4438 "vm.inc"
4614
+ # line 4615 "vm.inc"
4438
4615
  # undef NAME_OF_CURRENT_INSN
4439
4616
 
4440
4617
  /* ### Instruction trailers. ### */
@@ -4460,7 +4637,7 @@ INSN_ENTRY(getlocal_WC_0)
4460
4637
  /* ### Declare and assign variables. ### */
4461
4638
  #line 10 "defs/opt_operand.def"
4462
4639
  const rb_num_t level = 0;
4463
- #line 4464 "vm.inc"
4640
+ #line 4641 "vm.inc"
4464
4641
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4465
4642
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_0(idx)
4466
4643
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4480,7 +4657,7 @@ INSN_ENTRY(getlocal_WC_0)
4480
4657
  RB_DEBUG_COUNTER_INC(lvar_get);
4481
4658
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4482
4659
  }
4483
- # line 4484 "vm.inc"
4660
+ # line 4661 "vm.inc"
4484
4661
  # undef NAME_OF_CURRENT_INSN
4485
4662
 
4486
4663
  /* ### Instruction trailers. ### */
@@ -4506,7 +4683,7 @@ INSN_ENTRY(getlocal_WC_1)
4506
4683
  /* ### Declare and assign variables. ### */
4507
4684
  #line 11 "defs/opt_operand.def"
4508
4685
  const rb_num_t level = 1;
4509
- #line 4510 "vm.inc"
4686
+ #line 4687 "vm.inc"
4510
4687
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4511
4688
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_1(idx)
4512
4689
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4526,7 +4703,7 @@ INSN_ENTRY(getlocal_WC_1)
4526
4703
  RB_DEBUG_COUNTER_INC(lvar_get);
4527
4704
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4528
4705
  }
4529
- # line 4530 "vm.inc"
4706
+ # line 4707 "vm.inc"
4530
4707
  # undef NAME_OF_CURRENT_INSN
4531
4708
 
4532
4709
  /* ### Instruction trailers. ### */
@@ -4552,7 +4729,7 @@ INSN_ENTRY(setlocal_WC_0)
4552
4729
  /* ### Declare and assign variables. ### */
4553
4730
  #line 12 "defs/opt_operand.def"
4554
4731
  const rb_num_t level = 0;
4555
- #line 4556 "vm.inc"
4732
+ #line 4733 "vm.inc"
4556
4733
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4557
4734
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_0(idx)
4558
4735
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4572,7 +4749,7 @@ INSN_ENTRY(setlocal_WC_0)
4572
4749
  RB_DEBUG_COUNTER_INC(lvar_set);
4573
4750
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4574
4751
  }
4575
- # line 4576 "vm.inc"
4752
+ # line 4753 "vm.inc"
4576
4753
  # undef NAME_OF_CURRENT_INSN
4577
4754
 
4578
4755
  /* ### Instruction trailers. ### */
@@ -4595,7 +4772,7 @@ INSN_ENTRY(setlocal_WC_1)
4595
4772
  /* ### Declare and assign variables. ### */
4596
4773
  #line 13 "defs/opt_operand.def"
4597
4774
  const rb_num_t level = 1;
4598
- #line 4599 "vm.inc"
4775
+ #line 4776 "vm.inc"
4599
4776
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4600
4777
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_1(idx)
4601
4778
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4615,7 +4792,7 @@ INSN_ENTRY(setlocal_WC_1)
4615
4792
  RB_DEBUG_COUNTER_INC(lvar_set);
4616
4793
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4617
4794
  }
4618
- # line 4619 "vm.inc"
4795
+ # line 4796 "vm.inc"
4619
4796
  # undef NAME_OF_CURRENT_INSN
4620
4797
 
4621
4798
  /* ### Instruction trailers. ### */
@@ -4638,7 +4815,7 @@ INSN_ENTRY(putobject_INT2FIX_0_)
4638
4815
  /* ### Declare and assign variables. ### */
4639
4816
  #line 15 "defs/opt_operand.def"
4640
4817
  const VALUE val = INT2FIX(0);
4641
- #line 4642 "vm.inc"
4818
+ #line 4819 "vm.inc"
4642
4819
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_0_()
4643
4820
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4644
4821
 
@@ -4668,7 +4845,7 @@ INSN_ENTRY(putobject_INT2FIX_1_)
4668
4845
  /* ### Declare and assign variables. ### */
4669
4846
  #line 16 "defs/opt_operand.def"
4670
4847
  const VALUE val = INT2FIX(1);
4671
- #line 4672 "vm.inc"
4848
+ #line 4849 "vm.inc"
4672
4849
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_1_()
4673
4850
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4674
4851
 
@@ -4687,6 +4864,342 @@ INSN_ENTRY(putobject_INT2FIX_1_)
4687
4864
  /* ### Leave the instruction. ### */
4688
4865
  END_INSN(putobject_INT2FIX_1_);
4689
4866
  }
4867
+ #if USE_ZJIT
4868
+
4869
+ /* insn zjit_getinstancevariable(...)(...)(...) */
4870
+ INSN_ENTRY(zjit_getinstancevariable)
4871
+ {
4872
+ START_OF_ORIGINAL_INSN(zjit_getinstancevariable);
4873
+ rb_zjit_profile_insn(BIN(getinstancevariable), ec);
4874
+ DISPATCH_ORIGINAL_INSN(getinstancevariable);
4875
+ END_INSN(zjit_getinstancevariable);
4876
+ }
4877
+
4878
+ #endif
4879
+ #if USE_ZJIT
4880
+
4881
+ /* insn zjit_send(...)(...)(...) */
4882
+ INSN_ENTRY(zjit_send)
4883
+ {
4884
+ START_OF_ORIGINAL_INSN(zjit_send);
4885
+ rb_zjit_profile_insn(BIN(send), ec);
4886
+ DISPATCH_ORIGINAL_INSN(send);
4887
+ END_INSN(zjit_send);
4888
+ }
4889
+
4890
+ #endif
4891
+ #if USE_ZJIT
4892
+
4893
+ /* insn zjit_opt_send_without_block(...)(...)(...) */
4894
+ INSN_ENTRY(zjit_opt_send_without_block)
4895
+ {
4896
+ START_OF_ORIGINAL_INSN(zjit_opt_send_without_block);
4897
+ rb_zjit_profile_insn(BIN(opt_send_without_block), ec);
4898
+ DISPATCH_ORIGINAL_INSN(opt_send_without_block);
4899
+ END_INSN(zjit_opt_send_without_block);
4900
+ }
4901
+
4902
+ #endif
4903
+ #if USE_ZJIT
4904
+
4905
+ /* insn zjit_objtostring(...)(...)(...) */
4906
+ INSN_ENTRY(zjit_objtostring)
4907
+ {
4908
+ START_OF_ORIGINAL_INSN(zjit_objtostring);
4909
+ rb_zjit_profile_insn(BIN(objtostring), ec);
4910
+ DISPATCH_ORIGINAL_INSN(objtostring);
4911
+ END_INSN(zjit_objtostring);
4912
+ }
4913
+
4914
+ #endif
4915
+ #if USE_ZJIT
4916
+
4917
+ /* insn zjit_opt_nil_p(...)(...)(...) */
4918
+ INSN_ENTRY(zjit_opt_nil_p)
4919
+ {
4920
+ START_OF_ORIGINAL_INSN(zjit_opt_nil_p);
4921
+ rb_zjit_profile_insn(BIN(opt_nil_p), ec);
4922
+ DISPATCH_ORIGINAL_INSN(opt_nil_p);
4923
+ END_INSN(zjit_opt_nil_p);
4924
+ }
4925
+
4926
+ #endif
4927
+ #if USE_ZJIT
4928
+
4929
+ /* insn zjit_invokeblock(...)(...)(...) */
4930
+ INSN_ENTRY(zjit_invokeblock)
4931
+ {
4932
+ START_OF_ORIGINAL_INSN(zjit_invokeblock);
4933
+ rb_zjit_profile_insn(BIN(invokeblock), ec);
4934
+ DISPATCH_ORIGINAL_INSN(invokeblock);
4935
+ END_INSN(zjit_invokeblock);
4936
+ }
4937
+
4938
+ #endif
4939
+ #if USE_ZJIT
4940
+
4941
+ /* insn zjit_opt_plus(...)(...)(...) */
4942
+ INSN_ENTRY(zjit_opt_plus)
4943
+ {
4944
+ START_OF_ORIGINAL_INSN(zjit_opt_plus);
4945
+ rb_zjit_profile_insn(BIN(opt_plus), ec);
4946
+ DISPATCH_ORIGINAL_INSN(opt_plus);
4947
+ END_INSN(zjit_opt_plus);
4948
+ }
4949
+
4950
+ #endif
4951
+ #if USE_ZJIT
4952
+
4953
+ /* insn zjit_opt_minus(...)(...)(...) */
4954
+ INSN_ENTRY(zjit_opt_minus)
4955
+ {
4956
+ START_OF_ORIGINAL_INSN(zjit_opt_minus);
4957
+ rb_zjit_profile_insn(BIN(opt_minus), ec);
4958
+ DISPATCH_ORIGINAL_INSN(opt_minus);
4959
+ END_INSN(zjit_opt_minus);
4960
+ }
4961
+
4962
+ #endif
4963
+ #if USE_ZJIT
4964
+
4965
+ /* insn zjit_opt_mult(...)(...)(...) */
4966
+ INSN_ENTRY(zjit_opt_mult)
4967
+ {
4968
+ START_OF_ORIGINAL_INSN(zjit_opt_mult);
4969
+ rb_zjit_profile_insn(BIN(opt_mult), ec);
4970
+ DISPATCH_ORIGINAL_INSN(opt_mult);
4971
+ END_INSN(zjit_opt_mult);
4972
+ }
4973
+
4974
+ #endif
4975
+ #if USE_ZJIT
4976
+
4977
+ /* insn zjit_opt_div(...)(...)(...) */
4978
+ INSN_ENTRY(zjit_opt_div)
4979
+ {
4980
+ START_OF_ORIGINAL_INSN(zjit_opt_div);
4981
+ rb_zjit_profile_insn(BIN(opt_div), ec);
4982
+ DISPATCH_ORIGINAL_INSN(opt_div);
4983
+ END_INSN(zjit_opt_div);
4984
+ }
4985
+
4986
+ #endif
4987
+ #if USE_ZJIT
4988
+
4989
+ /* insn zjit_opt_mod(...)(...)(...) */
4990
+ INSN_ENTRY(zjit_opt_mod)
4991
+ {
4992
+ START_OF_ORIGINAL_INSN(zjit_opt_mod);
4993
+ rb_zjit_profile_insn(BIN(opt_mod), ec);
4994
+ DISPATCH_ORIGINAL_INSN(opt_mod);
4995
+ END_INSN(zjit_opt_mod);
4996
+ }
4997
+
4998
+ #endif
4999
+ #if USE_ZJIT
5000
+
5001
+ /* insn zjit_opt_eq(...)(...)(...) */
5002
+ INSN_ENTRY(zjit_opt_eq)
5003
+ {
5004
+ START_OF_ORIGINAL_INSN(zjit_opt_eq);
5005
+ rb_zjit_profile_insn(BIN(opt_eq), ec);
5006
+ DISPATCH_ORIGINAL_INSN(opt_eq);
5007
+ END_INSN(zjit_opt_eq);
5008
+ }
5009
+
5010
+ #endif
5011
+ #if USE_ZJIT
5012
+
5013
+ /* insn zjit_opt_neq(...)(...)(...) */
5014
+ INSN_ENTRY(zjit_opt_neq)
5015
+ {
5016
+ START_OF_ORIGINAL_INSN(zjit_opt_neq);
5017
+ rb_zjit_profile_insn(BIN(opt_neq), ec);
5018
+ DISPATCH_ORIGINAL_INSN(opt_neq);
5019
+ END_INSN(zjit_opt_neq);
5020
+ }
5021
+
5022
+ #endif
5023
+ #if USE_ZJIT
5024
+
5025
+ /* insn zjit_opt_lt(...)(...)(...) */
5026
+ INSN_ENTRY(zjit_opt_lt)
5027
+ {
5028
+ START_OF_ORIGINAL_INSN(zjit_opt_lt);
5029
+ rb_zjit_profile_insn(BIN(opt_lt), ec);
5030
+ DISPATCH_ORIGINAL_INSN(opt_lt);
5031
+ END_INSN(zjit_opt_lt);
5032
+ }
5033
+
5034
+ #endif
5035
+ #if USE_ZJIT
5036
+
5037
+ /* insn zjit_opt_le(...)(...)(...) */
5038
+ INSN_ENTRY(zjit_opt_le)
5039
+ {
5040
+ START_OF_ORIGINAL_INSN(zjit_opt_le);
5041
+ rb_zjit_profile_insn(BIN(opt_le), ec);
5042
+ DISPATCH_ORIGINAL_INSN(opt_le);
5043
+ END_INSN(zjit_opt_le);
5044
+ }
5045
+
5046
+ #endif
5047
+ #if USE_ZJIT
5048
+
5049
+ /* insn zjit_opt_gt(...)(...)(...) */
5050
+ INSN_ENTRY(zjit_opt_gt)
5051
+ {
5052
+ START_OF_ORIGINAL_INSN(zjit_opt_gt);
5053
+ rb_zjit_profile_insn(BIN(opt_gt), ec);
5054
+ DISPATCH_ORIGINAL_INSN(opt_gt);
5055
+ END_INSN(zjit_opt_gt);
5056
+ }
5057
+
5058
+ #endif
5059
+ #if USE_ZJIT
5060
+
5061
+ /* insn zjit_opt_ge(...)(...)(...) */
5062
+ INSN_ENTRY(zjit_opt_ge)
5063
+ {
5064
+ START_OF_ORIGINAL_INSN(zjit_opt_ge);
5065
+ rb_zjit_profile_insn(BIN(opt_ge), ec);
5066
+ DISPATCH_ORIGINAL_INSN(opt_ge);
5067
+ END_INSN(zjit_opt_ge);
5068
+ }
5069
+
5070
+ #endif
5071
+ #if USE_ZJIT
5072
+
5073
+ /* insn zjit_opt_ltlt(...)(...)(...) */
5074
+ INSN_ENTRY(zjit_opt_ltlt)
5075
+ {
5076
+ START_OF_ORIGINAL_INSN(zjit_opt_ltlt);
5077
+ rb_zjit_profile_insn(BIN(opt_ltlt), ec);
5078
+ DISPATCH_ORIGINAL_INSN(opt_ltlt);
5079
+ END_INSN(zjit_opt_ltlt);
5080
+ }
5081
+
5082
+ #endif
5083
+ #if USE_ZJIT
5084
+
5085
+ /* insn zjit_opt_and(...)(...)(...) */
5086
+ INSN_ENTRY(zjit_opt_and)
5087
+ {
5088
+ START_OF_ORIGINAL_INSN(zjit_opt_and);
5089
+ rb_zjit_profile_insn(BIN(opt_and), ec);
5090
+ DISPATCH_ORIGINAL_INSN(opt_and);
5091
+ END_INSN(zjit_opt_and);
5092
+ }
5093
+
5094
+ #endif
5095
+ #if USE_ZJIT
5096
+
5097
+ /* insn zjit_opt_or(...)(...)(...) */
5098
+ INSN_ENTRY(zjit_opt_or)
5099
+ {
5100
+ START_OF_ORIGINAL_INSN(zjit_opt_or);
5101
+ rb_zjit_profile_insn(BIN(opt_or), ec);
5102
+ DISPATCH_ORIGINAL_INSN(opt_or);
5103
+ END_INSN(zjit_opt_or);
5104
+ }
5105
+
5106
+ #endif
5107
+ #if USE_ZJIT
5108
+
5109
+ /* insn zjit_opt_aref(...)(...)(...) */
5110
+ INSN_ENTRY(zjit_opt_aref)
5111
+ {
5112
+ START_OF_ORIGINAL_INSN(zjit_opt_aref);
5113
+ rb_zjit_profile_insn(BIN(opt_aref), ec);
5114
+ DISPATCH_ORIGINAL_INSN(opt_aref);
5115
+ END_INSN(zjit_opt_aref);
5116
+ }
5117
+
5118
+ #endif
5119
+ #if USE_ZJIT
5120
+
5121
+ /* insn zjit_opt_aset(...)(...)(...) */
5122
+ INSN_ENTRY(zjit_opt_aset)
5123
+ {
5124
+ START_OF_ORIGINAL_INSN(zjit_opt_aset);
5125
+ rb_zjit_profile_insn(BIN(opt_aset), ec);
5126
+ DISPATCH_ORIGINAL_INSN(opt_aset);
5127
+ END_INSN(zjit_opt_aset);
5128
+ }
5129
+
5130
+ #endif
5131
+ #if USE_ZJIT
5132
+
5133
+ /* insn zjit_opt_length(...)(...)(...) */
5134
+ INSN_ENTRY(zjit_opt_length)
5135
+ {
5136
+ START_OF_ORIGINAL_INSN(zjit_opt_length);
5137
+ rb_zjit_profile_insn(BIN(opt_length), ec);
5138
+ DISPATCH_ORIGINAL_INSN(opt_length);
5139
+ END_INSN(zjit_opt_length);
5140
+ }
5141
+
5142
+ #endif
5143
+ #if USE_ZJIT
5144
+
5145
+ /* insn zjit_opt_size(...)(...)(...) */
5146
+ INSN_ENTRY(zjit_opt_size)
5147
+ {
5148
+ START_OF_ORIGINAL_INSN(zjit_opt_size);
5149
+ rb_zjit_profile_insn(BIN(opt_size), ec);
5150
+ DISPATCH_ORIGINAL_INSN(opt_size);
5151
+ END_INSN(zjit_opt_size);
5152
+ }
5153
+
5154
+ #endif
5155
+ #if USE_ZJIT
5156
+
5157
+ /* insn zjit_opt_empty_p(...)(...)(...) */
5158
+ INSN_ENTRY(zjit_opt_empty_p)
5159
+ {
5160
+ START_OF_ORIGINAL_INSN(zjit_opt_empty_p);
5161
+ rb_zjit_profile_insn(BIN(opt_empty_p), ec);
5162
+ DISPATCH_ORIGINAL_INSN(opt_empty_p);
5163
+ END_INSN(zjit_opt_empty_p);
5164
+ }
5165
+
5166
+ #endif
5167
+ #if USE_ZJIT
5168
+
5169
+ /* insn zjit_opt_succ(...)(...)(...) */
5170
+ INSN_ENTRY(zjit_opt_succ)
5171
+ {
5172
+ START_OF_ORIGINAL_INSN(zjit_opt_succ);
5173
+ rb_zjit_profile_insn(BIN(opt_succ), ec);
5174
+ DISPATCH_ORIGINAL_INSN(opt_succ);
5175
+ END_INSN(zjit_opt_succ);
5176
+ }
5177
+
5178
+ #endif
5179
+ #if USE_ZJIT
5180
+
5181
+ /* insn zjit_opt_not(...)(...)(...) */
5182
+ INSN_ENTRY(zjit_opt_not)
5183
+ {
5184
+ START_OF_ORIGINAL_INSN(zjit_opt_not);
5185
+ rb_zjit_profile_insn(BIN(opt_not), ec);
5186
+ DISPATCH_ORIGINAL_INSN(opt_not);
5187
+ END_INSN(zjit_opt_not);
5188
+ }
5189
+
5190
+ #endif
5191
+ #if USE_ZJIT
5192
+
5193
+ /* insn zjit_opt_regexpmatch2(...)(...)(...) */
5194
+ INSN_ENTRY(zjit_opt_regexpmatch2)
5195
+ {
5196
+ START_OF_ORIGINAL_INSN(zjit_opt_regexpmatch2);
5197
+ rb_zjit_profile_insn(BIN(opt_regexpmatch2), ec);
5198
+ DISPATCH_ORIGINAL_INSN(opt_regexpmatch2);
5199
+ END_INSN(zjit_opt_regexpmatch2);
5200
+ }
5201
+
5202
+ #endif
4690
5203
 
4691
5204
  /* insn trace_nop(...)(...)(...) */
4692
5205
  INSN_ENTRY(trace_nop)
@@ -4940,15 +5453,6 @@ INSN_ENTRY(trace_newarray)
4940
5453
  END_INSN(trace_newarray);
4941
5454
  }
4942
5455
 
4943
- /* insn trace_newarraykwsplat(...)(...)(...) */
4944
- INSN_ENTRY(trace_newarraykwsplat)
4945
- {
4946
- vm_trace(ec, GET_CFP());
4947
-
4948
- DISPATCH_ORIGINAL_INSN(newarraykwsplat);
4949
- END_INSN(trace_newarraykwsplat);
4950
- }
4951
-
4952
5456
  /* insn trace_pushtoarraykwsplat(...)(...)(...) */
4953
5457
  INSN_ENTRY(trace_pushtoarraykwsplat)
4954
5458
  {
@@ -5201,6 +5705,15 @@ INSN_ENTRY(trace_send)
5201
5705
  END_INSN(trace_send);
5202
5706
  }
5203
5707
 
5708
+ /* insn trace_sendforward(...)(...)(...) */
5709
+ INSN_ENTRY(trace_sendforward)
5710
+ {
5711
+ vm_trace(ec, GET_CFP());
5712
+
5713
+ DISPATCH_ORIGINAL_INSN(sendforward);
5714
+ END_INSN(trace_sendforward);
5715
+ }
5716
+
5204
5717
  /* insn trace_opt_send_without_block(...)(...)(...) */
5205
5718
  INSN_ENTRY(trace_opt_send_without_block)
5206
5719
  {
@@ -5210,6 +5723,15 @@ INSN_ENTRY(trace_opt_send_without_block)
5210
5723
  END_INSN(trace_opt_send_without_block);
5211
5724
  }
5212
5725
 
5726
+ /* insn trace_opt_new(...)(...)(...) */
5727
+ INSN_ENTRY(trace_opt_new)
5728
+ {
5729
+ vm_trace(ec, GET_CFP());
5730
+
5731
+ DISPATCH_ORIGINAL_INSN(opt_new);
5732
+ END_INSN(trace_opt_new);
5733
+ }
5734
+
5213
5735
  /* insn trace_objtostring(...)(...)(...) */
5214
5736
  INSN_ENTRY(trace_objtostring)
5215
5737
  {
@@ -5219,6 +5741,24 @@ INSN_ENTRY(trace_objtostring)
5219
5741
  END_INSN(trace_objtostring);
5220
5742
  }
5221
5743
 
5744
+ /* insn trace_opt_ary_freeze(...)(...)(...) */
5745
+ INSN_ENTRY(trace_opt_ary_freeze)
5746
+ {
5747
+ vm_trace(ec, GET_CFP());
5748
+
5749
+ DISPATCH_ORIGINAL_INSN(opt_ary_freeze);
5750
+ END_INSN(trace_opt_ary_freeze);
5751
+ }
5752
+
5753
+ /* insn trace_opt_hash_freeze(...)(...)(...) */
5754
+ INSN_ENTRY(trace_opt_hash_freeze)
5755
+ {
5756
+ vm_trace(ec, GET_CFP());
5757
+
5758
+ DISPATCH_ORIGINAL_INSN(opt_hash_freeze);
5759
+ END_INSN(trace_opt_hash_freeze);
5760
+ }
5761
+
5222
5762
  /* insn trace_opt_str_freeze(...)(...)(...) */
5223
5763
  INSN_ENTRY(trace_opt_str_freeze)
5224
5764
  {
@@ -5246,6 +5786,15 @@ INSN_ENTRY(trace_opt_str_uminus)
5246
5786
  END_INSN(trace_opt_str_uminus);
5247
5787
  }
5248
5788
 
5789
+ /* insn trace_opt_duparray_send(...)(...)(...) */
5790
+ INSN_ENTRY(trace_opt_duparray_send)
5791
+ {
5792
+ vm_trace(ec, GET_CFP());
5793
+
5794
+ DISPATCH_ORIGINAL_INSN(opt_duparray_send);
5795
+ END_INSN(trace_opt_duparray_send);
5796
+ }
5797
+
5249
5798
  /* insn trace_opt_newarray_send(...)(...)(...) */
5250
5799
  INSN_ENTRY(trace_opt_newarray_send)
5251
5800
  {
@@ -5264,6 +5813,15 @@ INSN_ENTRY(trace_invokesuper)
5264
5813
  END_INSN(trace_invokesuper);
5265
5814
  }
5266
5815
 
5816
+ /* insn trace_invokesuperforward(...)(...)(...) */
5817
+ INSN_ENTRY(trace_invokesuperforward)
5818
+ {
5819
+ vm_trace(ec, GET_CFP());
5820
+
5821
+ DISPATCH_ORIGINAL_INSN(invokesuperforward);
5822
+ END_INSN(trace_invokesuperforward);
5823
+ }
5824
+
5267
5825
  /* insn trace_invokeblock(...)(...)(...) */
5268
5826
  INSN_ENTRY(trace_invokeblock)
5269
5827
  {
@@ -5489,24 +6047,6 @@ INSN_ENTRY(trace_opt_aset)
5489
6047
  END_INSN(trace_opt_aset);
5490
6048
  }
5491
6049
 
5492
- /* insn trace_opt_aset_with(...)(...)(...) */
5493
- INSN_ENTRY(trace_opt_aset_with)
5494
- {
5495
- vm_trace(ec, GET_CFP());
5496
-
5497
- DISPATCH_ORIGINAL_INSN(opt_aset_with);
5498
- END_INSN(trace_opt_aset_with);
5499
- }
5500
-
5501
- /* insn trace_opt_aref_with(...)(...)(...) */
5502
- INSN_ENTRY(trace_opt_aref_with)
5503
- {
5504
- vm_trace(ec, GET_CFP());
5505
-
5506
- DISPATCH_ORIGINAL_INSN(opt_aref_with);
5507
- END_INSN(trace_opt_aref_with);
5508
- }
5509
-
5510
6050
  /* insn trace_opt_length(...)(...)(...) */
5511
6051
  INSN_ENTRY(trace_opt_length)
5512
6052
  {