debase-ruby_core_source 3.3.5 → 3.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.idea/vcs.xml +28 -0
  4. data/.ruby-version +1 -0
  5. data/CHANGELOG.md +14 -0
  6. data/Rakefile +3 -1
  7. data/debase-ruby_core_source.gemspec +1 -0
  8. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/builtin.h +7 -1
  9. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/darray.h +22 -6
  10. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/debug_counter.h +1 -1
  11. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/dln.h +0 -2
  12. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/id.h +9 -0
  13. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/insns.inc +10 -2
  14. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/insns_info.inc +819 -312
  15. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/array.h +1 -0
  16. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/basic_operators.h +2 -0
  17. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/bits.h +82 -0
  18. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/class.h +1 -1
  19. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/encoding.h +2 -0
  20. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/error.h +28 -0
  21. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/fixnum.h +1 -0
  22. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/gc.h +24 -28
  23. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/hash.h +1 -0
  24. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/imemo.h +7 -1
  25. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/io.h +4 -1
  26. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/parse.h +16 -3
  27. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/proc.h +1 -0
  28. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/ractor.h +4 -0
  29. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/sanitizers.h +60 -39
  30. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/string.h +34 -18
  31. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/thread.h +29 -0
  32. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/vm.h +3 -3
  33. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/known_errors.inc +103 -103
  34. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/method.h +1 -0
  35. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/optunifs.inc +1 -1
  36. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parse.h +5 -4
  37. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/ast.h +2156 -453
  38. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/defines.h +44 -7
  39. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/diagnostic.h +24 -6
  40. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/extension.h +2 -2
  41. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/node.h +0 -21
  42. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/options.h +94 -3
  43. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/parser.h +82 -40
  44. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/prism.h +47 -11
  45. data/lib/debase/ruby_core_source/ruby-3.4.0-p-1/prism/regexp.h +43 -0
  46. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/static_literals.h +3 -2
  47. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_char.h +1 -2
  48. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_constant_pool.h +0 -8
  49. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_integer.h +22 -15
  50. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_newline_list.h +11 -0
  51. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_string.h +28 -12
  52. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/version.h +3 -3
  53. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism_compile.h +23 -12
  54. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ractor_core.h +9 -20
  55. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/regint.h +0 -4
  56. data/lib/debase/ruby_core_source/ruby-3.4.0-p-1/revision.h +5 -0
  57. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/rubyparser.h +171 -250
  58. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/shape.h +2 -1
  59. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/symbol.h +6 -1
  60. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/thread_pthread.h +26 -25
  61. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/version.h +1 -1
  62. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm.inc +467 -207
  63. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_callinfo.h +24 -2
  64. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_core.h +62 -48
  65. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_insnhelper.h +7 -2
  66. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_sync.h +3 -3
  67. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vmtc.inc +10 -2
  68. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/yjit.h +1 -0
  69. data/lib/debase/ruby_core_source/version.rb +1 -1
  70. data/lib/debase/ruby_core_source.rb +4 -2
  71. data/test/deduce_source_dir_test.rb +31 -0
  72. metadata +163 -150
  73. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/regexp.h +0 -33
  74. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string_list.h +0 -44
  75. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/revision.h +0 -5
  76. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/addr2line.h +0 -0
  77. /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
  78. /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
  79. /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
  80. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/list/list.h +0 -0
  81. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ccan/str/str.h +0 -0
  82. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/constant.h +0 -0
  83. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/encindex.h +0 -0
  84. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/eval_intern.h +0 -0
  85. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/hrtime.h +0 -0
  86. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/id_table.h +0 -0
  87. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/bignum.h +0 -0
  88. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/cmdlineopt.h +0 -0
  89. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compar.h +0 -0
  90. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compile.h +0 -0
  91. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/compilers.h +0 -0
  92. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/complex.h +0 -0
  93. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/cont.h +0 -0
  94. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/dir.h +0 -0
  95. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enc.h +0 -0
  96. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enum.h +0 -0
  97. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/enumerator.h +0 -0
  98. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/eval.h +0 -0
  99. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/file.h +0 -0
  100. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/inits.h +0 -0
  101. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/load.h +0 -0
  102. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/loadpath.h +0 -0
  103. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/math.h +0 -0
  104. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/missing.h +0 -0
  105. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/numeric.h +0 -0
  106. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/object.h +0 -0
  107. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/process.h +0 -0
  108. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/random.h +0 -0
  109. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/range.h +0 -0
  110. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/rational.h +0 -0
  111. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/re.h +0 -0
  112. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/ruby_parser.h +0 -0
  113. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/serial.h +0 -0
  114. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/signal.h +0 -0
  115. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/st.h +0 -0
  116. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/static_assert.h +0 -0
  117. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/struct.h +0 -0
  118. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/symbol.h +0 -0
  119. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/time.h +0 -0
  120. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/transcode.h +0 -0
  121. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/util.h +0 -0
  122. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/variable.h +0 -0
  123. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal/warnings.h +0 -0
  124. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/internal.h +0 -0
  125. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/iseq.h +0 -0
  126. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/node.h +0 -0
  127. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/node_name.inc +0 -0
  128. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/optinsn.inc +0 -0
  129. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_bits.h +0 -0
  130. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_node.h +0 -0
  131. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_st.h +0 -0
  132. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/parser_value.h +0 -0
  133. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/encoding.h +0 -0
  134. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/pack.h +0 -0
  135. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/prettyprint.h +0 -0
  136. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_buffer.h +0 -0
  137. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_list.h +0 -0
  138. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_memchr.h +0 -0
  139. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_strncasecmp.h +0 -0
  140. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/prism/util/pm_strpbrk.h +0 -0
  141. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/probes_helper.h +0 -0
  142. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/regenc.h +0 -0
  143. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/regparse.h +0 -0
  144. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/rjit.h +0 -0
  145. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/rjit_c.h +0 -0
  146. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ruby_assert.h +0 -0
  147. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/ruby_atomic.h +0 -0
  148. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/siphash.h +0 -0
  149. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/thread_none.h +0 -0
  150. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/thread_win32.h +0 -0
  151. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/timev.h +0 -0
  152. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/transcode_data.h +0 -0
  153. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/variable.h +0 -0
  154. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_call_iseq_optimized.inc +0 -0
  155. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_debug.h +0 -0
  156. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_exec.h +0 -0
  157. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0-p-1}/vm_opts.h +0 -0
@@ -113,7 +113,6 @@ const char rb_vm_insn_name_base[] =
113
113
  "toregexp" "\0"
114
114
  "intern" "\0"
115
115
  "newarray" "\0"
116
- "newarraykwsplat" "\0"
117
116
  "pushtoarraykwsplat" "\0"
118
117
  "duparray" "\0"
119
118
  "duphash" "\0"
@@ -142,13 +141,18 @@ const char rb_vm_insn_name_base[] =
142
141
  "definemethod" "\0"
143
142
  "definesmethod" "\0"
144
143
  "send" "\0"
144
+ "sendforward" "\0"
145
145
  "opt_send_without_block" "\0"
146
146
  "objtostring" "\0"
147
+ "opt_ary_freeze" "\0"
148
+ "opt_hash_freeze" "\0"
147
149
  "opt_str_freeze" "\0"
148
150
  "opt_nil_p" "\0"
149
151
  "opt_str_uminus" "\0"
152
+ "opt_duparray_send" "\0"
150
153
  "opt_newarray_send" "\0"
151
154
  "invokesuper" "\0"
155
+ "invokesuperforward" "\0"
152
156
  "invokeblock" "\0"
153
157
  "leave" "\0"
154
158
  "throw" "\0"
@@ -219,7 +223,6 @@ const char rb_vm_insn_name_base[] =
219
223
  "trace_toregexp" "\0"
220
224
  "trace_intern" "\0"
221
225
  "trace_newarray" "\0"
222
- "trace_newarraykwsplat" "\0"
223
226
  "trace_pushtoarraykwsplat" "\0"
224
227
  "trace_duparray" "\0"
225
228
  "trace_duphash" "\0"
@@ -248,13 +251,18 @@ const char rb_vm_insn_name_base[] =
248
251
  "trace_definemethod" "\0"
249
252
  "trace_definesmethod" "\0"
250
253
  "trace_send" "\0"
254
+ "trace_sendforward" "\0"
251
255
  "trace_opt_send_without_block" "\0"
252
256
  "trace_objtostring" "\0"
257
+ "trace_opt_ary_freeze" "\0"
258
+ "trace_opt_hash_freeze" "\0"
253
259
  "trace_opt_str_freeze" "\0"
254
260
  "trace_opt_nil_p" "\0"
255
261
  "trace_opt_str_uminus" "\0"
262
+ "trace_opt_duparray_send" "\0"
256
263
  "trace_opt_newarray_send" "\0"
257
264
  "trace_invokesuper" "\0"
265
+ "trace_invokesuperforward" "\0"
258
266
  "trace_invokeblock" "\0"
259
267
  "trace_leave" "\0"
260
268
  "trace_throw" "\0"
@@ -302,22 +310,23 @@ const char rb_vm_insn_name_base[] =
302
310
  const unsigned short rb_vm_insn_name_offset[] = {
303
311
  0, 4, 13, 22, 36, 50, 69, 80, 91, 111, 131, 148,
304
312
  165, 186, 198, 210, 220, 230, 237, 245, 255, 272, 282, 299,
305
- 313, 325, 334, 341, 350, 366, 385, 394, 402, 414, 426, 440,
306
- 452, 463, 471, 479, 488, 492, 496, 501, 506, 518, 523, 528,
307
- 540, 548, 560, 571, 584, 594, 606, 619, 633, 638, 661, 673,
308
- 688, 698, 713, 731, 743, 755, 761, 767, 772, 781, 794, 804,
309
- 809, 827, 836, 846, 855, 863, 871, 878, 886, 893, 900, 907,
310
- 914, 923, 931, 938, 947, 956, 970, 984, 995, 1004, 1016, 1025,
311
- 1033, 1050, 1064, 1091, 1124, 1138, 1152, 1166, 1180, 1201, 1222, 1232,
312
- 1247, 1262, 1282, 1302, 1327, 1344, 1361, 1387, 1413, 1436, 1459, 1486,
313
- 1504, 1522, 1538, 1554, 1567, 1581, 1597, 1620, 1636, 1659, 1679, 1697,
314
- 1712, 1725, 1740, 1762, 1787, 1802, 1816, 1834, 1852, 1872, 1890, 1907,
315
- 1921, 1935, 1950, 1960, 1970, 1981, 1992, 2010, 2021, 2032, 2050, 2064,
316
- 2082, 2099, 2118, 2134, 2152, 2171, 2191, 2202, 2231, 2249, 2270, 2286,
317
- 2307, 2331, 2349, 2367, 2379, 2391, 2402, 2417, 2436, 2452, 2463, 2487,
318
- 2502, 2518, 2533, 2547, 2561, 2574, 2588, 2601, 2614, 2627, 2640, 2655,
319
- 2669, 2682, 2697, 2712, 2732, 2752, 2769, 2784, 2802, 2817, 2831, 2854,
320
- 2874, 2907, 2946, 2966, 2986, 3006, 3026, 3053,
313
+ 313, 325, 334, 341, 350, 369, 378, 386, 398, 410, 424, 436,
314
+ 447, 455, 463, 472, 476, 480, 485, 490, 502, 507, 512, 524,
315
+ 532, 544, 555, 568, 578, 590, 603, 617, 622, 634, 657, 669,
316
+ 684, 700, 715, 725, 740, 758, 776, 788, 807, 819, 825, 831,
317
+ 836, 845, 858, 868, 873, 891, 900, 910, 919, 927, 935, 942,
318
+ 950, 957, 964, 971, 978, 987, 995, 1002, 1011, 1020, 1034, 1048,
319
+ 1059, 1068, 1080, 1089, 1097, 1114, 1128, 1155, 1188, 1202, 1216, 1230,
320
+ 1244, 1265, 1286, 1296, 1311, 1326, 1346, 1366, 1391, 1408, 1425, 1451,
321
+ 1477, 1500, 1523, 1550, 1568, 1586, 1602, 1618, 1631, 1645, 1661, 1684,
322
+ 1700, 1723, 1743, 1761, 1776, 1789, 1804, 1829, 1844, 1858, 1876, 1894,
323
+ 1914, 1932, 1949, 1963, 1977, 1992, 2002, 2012, 2023, 2034, 2052, 2063,
324
+ 2074, 2092, 2106, 2124, 2141, 2160, 2176, 2194, 2213, 2233, 2244, 2262,
325
+ 2291, 2309, 2330, 2352, 2373, 2389, 2410, 2434, 2458, 2476, 2501, 2519,
326
+ 2531, 2543, 2554, 2569, 2588, 2604, 2615, 2639, 2654, 2670, 2685, 2699,
327
+ 2713, 2726, 2740, 2753, 2766, 2779, 2792, 2807, 2821, 2834, 2849, 2864,
328
+ 2884, 2904, 2921, 2936, 2954, 2969, 2983, 3006, 3026, 3059, 3098, 3118,
329
+ 3138, 3158, 3178, 3205,
321
330
  };
322
331
 
323
332
  ASSERT_VM_INSTRUCTION_SIZE(rb_vm_insn_name_offset);
@@ -338,15 +347,15 @@ RUBY_SYMBOL_EXPORT_END
338
347
  #ifdef RUBY_VM_INSNS_INFO
339
348
  const uint8_t rb_vm_insn_len_info[] = {
340
349
  1, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2,
341
- 2, 1, 3, 1, 2, 2, 1, 2, 2, 3, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2,
342
- 2, 2, 4, 4, 2, 3, 2, 4, 3, 3, 3, 2, 2, 3, 2, 3, 3, 3, 2, 1, 2, 2, 2,
343
- 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2,
344
- 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 2, 3,
345
- 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 3, 1, 2, 2, 1, 2, 2,
346
- 3, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2, 4, 4, 2, 3, 2, 4, 3,
347
- 3, 3, 2, 2, 3, 2, 3, 3, 3, 2, 1, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2,
348
- 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2,
349
- 2, 2, 2, 1, 1,
350
+ 2, 1, 3, 1, 2, 1, 2, 2, 3, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 2,
351
+ 2, 4, 4, 2, 3, 2, 4, 3, 3, 3, 3, 2, 2, 3, 3, 3, 2, 3, 4, 3, 3, 3, 2,
352
+ 1, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2,
353
+ 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 1, 1, 1, 3, 3, 3, 3,
354
+ 3, 3, 2, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 3, 1, 2,
355
+ 1, 2, 2, 3, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2, 4, 4, 2, 3,
356
+ 2, 4, 3, 3, 3, 3, 2, 2, 3, 3, 3, 2, 3, 4, 3, 3, 3, 2, 1, 2, 2, 2, 2,
357
+ 2, 3, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2,
358
+ 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 1, 1,
350
359
  };
351
360
 
352
361
  ASSERT_VM_INSTRUCTION_SIZE(rb_vm_insn_len_info);
@@ -373,65 +382,67 @@ const char rb_vm_insn_op_base[] =
373
382
  "IJ" "\0" "IJ" "\0" "K" "\0" "I" "\0" "I" "\0"
374
383
  "I" "\0" "I" "\0" "" "\0" "" "\0" "V" "\0"
375
384
  "N" "\0" "V" "\0" "V" "\0" "N" "\0" "" "\0"
376
- "NN" "\0" "" "\0" "N" "\0" "N" "\0" "" "\0"
377
- "V" "\0" "V" "\0" "NN" "\0" "" "\0" "" "\0"
378
- "N" "\0" "V" "\0" "" "\0" "N" "\0" "N" "\0"
379
- "" "\0" "" "\0" "N" "\0" "" "\0" "N" "\0"
380
- "N" "\0" "N" "\0" "N" "\0" "NVV" "\0" "IAV" "\0"
381
- "N" "\0" "LL" "\0" "N" "\0" "ISN" "\0" "IS" "\0"
382
- "IS" "\0" "CS" "\0" "C" "\0" "C" "\0" "VC" "\0"
383
- "C" "\0" "VC" "\0" "NI" "\0" "CS" "\0" "C" "\0"
384
- "" "\0" "N" "\0" "O" "\0" "O" "\0" "O" "\0"
385
- "O" "\0" "ST" "\0" "HO" "\0" "C" "\0" "C" "\0"
386
- "C" "\0" "C" "\0" "C" "\0" "C" "\0" "CC" "\0"
385
+ "NN" "\0" "" "\0" "N" "\0" "" "\0" "V" "\0"
386
+ "V" "\0" "NN" "\0" "" "\0" "" "\0" "N" "\0"
387
+ "V" "\0" "" "\0" "N" "\0" "N" "\0" "" "\0"
388
+ "" "\0" "N" "\0" "" "\0" "N" "\0" "N" "\0"
389
+ "N" "\0" "N" "\0" "NVV" "\0" "IAV" "\0" "N" "\0"
390
+ "LL" "\0" "N" "\0" "ISN" "\0" "IS" "\0" "IS" "\0"
391
+ "CS" "\0" "CS" "\0" "C" "\0" "C" "\0" "VC" "\0"
392
+ "VC" "\0" "VC" "\0" "C" "\0" "VC" "\0" "VIN" "\0"
393
+ "NN" "\0" "CS" "\0" "CS" "\0" "C" "\0" "" "\0"
394
+ "N" "\0" "O" "\0" "O" "\0" "O" "\0" "O" "\0"
395
+ "ST" "\0" "HO" "\0" "C" "\0" "C" "\0" "C" "\0"
396
+ "C" "\0" "C" "\0" "C" "\0" "CC" "\0" "C" "\0"
387
397
  "C" "\0" "C" "\0" "C" "\0" "C" "\0" "C" "\0"
388
- "C" "\0" "C" "\0" "C" "\0" "C" "\0" "VC" "\0"
389
- "VC" "\0" "C" "\0" "C" "\0" "C" "\0" "C" "\0"
390
- "C" "\0" "C" "\0" "R" "\0" "RN" "\0" "RN" "\0"
391
- "L" "\0" "L" "\0" "L" "\0" "L" "\0" "" "\0"
392
- "" "\0" "" "\0" "LN" "\0" "LN" "\0" "LN" "\0"
393
- "LN" "\0" "LN" "\0" "NN" "\0" "N" "\0" "IA" "\0"
394
- "IA" "\0" "IJ" "\0" "IJ" "\0" "K" "\0" "I" "\0"
395
- "I" "\0" "I" "\0" "I" "\0" "" "\0" "" "\0"
396
- "V" "\0" "N" "\0" "V" "\0" "V" "\0" "N" "\0"
397
- "" "\0" "NN" "\0" "" "\0" "N" "\0" "N" "\0"
398
- "" "\0" "V" "\0" "V" "\0" "NN" "\0" "" "\0"
399
- "" "\0" "N" "\0" "V" "\0" "" "\0" "N" "\0"
400
- "N" "\0" "" "\0" "" "\0" "N" "\0" "" "\0"
401
- "N" "\0" "N" "\0" "N" "\0" "N" "\0" "NVV" "\0"
402
- "IAV" "\0" "N" "\0" "LL" "\0" "N" "\0" "ISN" "\0"
403
- "IS" "\0" "IS" "\0" "CS" "\0" "C" "\0" "C" "\0"
404
- "VC" "\0" "C" "\0" "VC" "\0" "NI" "\0" "CS" "\0"
405
- "C" "\0" "" "\0" "N" "\0" "O" "\0" "O" "\0"
406
- "O" "\0" "O" "\0" "ST" "\0" "HO" "\0" "C" "\0"
398
+ "C" "\0" "C" "\0" "C" "\0" "VC" "\0" "VC" "\0"
407
399
  "C" "\0" "C" "\0" "C" "\0" "C" "\0" "C" "\0"
408
- "CC" "\0" "C" "\0" "C" "\0" "C" "\0" "C" "\0"
400
+ "C" "\0" "R" "\0" "RN" "\0" "RN" "\0" "L" "\0"
401
+ "L" "\0" "L" "\0" "L" "\0" "" "\0" "" "\0"
402
+ "" "\0" "LN" "\0" "LN" "\0" "LN" "\0" "LN" "\0"
403
+ "LN" "\0" "NN" "\0" "N" "\0" "IA" "\0" "IA" "\0"
404
+ "IJ" "\0" "IJ" "\0" "K" "\0" "I" "\0" "I" "\0"
405
+ "I" "\0" "I" "\0" "" "\0" "" "\0" "V" "\0"
406
+ "N" "\0" "V" "\0" "V" "\0" "N" "\0" "" "\0"
407
+ "NN" "\0" "" "\0" "N" "\0" "" "\0" "V" "\0"
408
+ "V" "\0" "NN" "\0" "" "\0" "" "\0" "N" "\0"
409
+ "V" "\0" "" "\0" "N" "\0" "N" "\0" "" "\0"
410
+ "" "\0" "N" "\0" "" "\0" "N" "\0" "N" "\0"
411
+ "N" "\0" "N" "\0" "NVV" "\0" "IAV" "\0" "N" "\0"
412
+ "LL" "\0" "N" "\0" "ISN" "\0" "IS" "\0" "IS" "\0"
413
+ "CS" "\0" "CS" "\0" "C" "\0" "C" "\0" "VC" "\0"
414
+ "VC" "\0" "VC" "\0" "C" "\0" "VC" "\0" "VIN" "\0"
415
+ "NN" "\0" "CS" "\0" "CS" "\0" "C" "\0" "" "\0"
416
+ "N" "\0" "O" "\0" "O" "\0" "O" "\0" "O" "\0"
417
+ "ST" "\0" "HO" "\0" "C" "\0" "C" "\0" "C" "\0"
418
+ "C" "\0" "C" "\0" "C" "\0" "CC" "\0" "C" "\0"
419
+ "C" "\0" "C" "\0" "C" "\0" "C" "\0" "C" "\0"
420
+ "C" "\0" "C" "\0" "C" "\0" "VC" "\0" "VC" "\0"
409
421
  "C" "\0" "C" "\0" "C" "\0" "C" "\0" "C" "\0"
410
- "VC" "\0" "VC" "\0" "C" "\0" "C" "\0" "C" "\0"
411
- "C" "\0" "C" "\0" "C" "\0" "R" "\0" "RN" "\0"
412
- "RN" "\0" "L" "\0" "L" "\0" "L" "\0" "L" "\0"
413
- "" "\0" "" "\0"
422
+ "C" "\0" "R" "\0" "RN" "\0" "RN" "\0" "L" "\0"
423
+ "L" "\0" "L" "\0" "L" "\0" "" "\0" "" "\0"
414
424
  ;
415
425
 
416
426
  const unsigned short rb_vm_insn_op_offset[] = {
417
427
  0, 1, 4, 7, 10, 13, 16, 19, 21, 24, 27, 30,
418
428
  33, 35, 37, 39, 41, 43, 44, 45, 47, 49, 51, 53,
419
- 55, 56, 59, 60, 62, 64, 65, 67, 69, 72, 73, 74,
420
- 76, 78, 79, 81, 83, 84, 85, 87, 88, 90, 92, 94,
421
- 96, 100, 104, 106, 109, 111, 115, 118, 121, 124, 126, 128,
422
- 131, 133, 136, 139, 142, 144, 145, 147, 149, 151, 153, 155,
423
- 158, 161, 163, 165, 167, 169, 171, 173, 176, 178, 180, 182,
424
- 184, 186, 188, 190, 192, 194, 197, 200, 202, 204, 206, 208,
425
- 210, 212, 214, 217, 220, 222, 224, 226, 228, 229, 230, 231,
426
- 234, 237, 240, 243, 246, 249, 251, 254, 257, 260, 263, 265,
427
- 267, 269, 271, 273, 274, 275, 277, 279, 281, 283, 285, 286,
428
- 289, 290, 292, 294, 295, 297, 299, 302, 303, 304, 306, 308,
429
- 309, 311, 313, 314, 315, 317, 318, 320, 322, 324, 326, 330,
430
- 334, 336, 339, 341, 345, 348, 351, 354, 356, 358, 361, 363,
431
- 366, 369, 372, 374, 375, 377, 379, 381, 383, 385, 388, 391,
432
- 393, 395, 397, 399, 401, 403, 406, 408, 410, 412, 414, 416,
433
- 418, 420, 422, 424, 427, 430, 432, 434, 436, 438, 440, 442,
434
- 444, 447, 450, 452, 454, 456, 458, 459,
429
+ 55, 56, 59, 60, 62, 63, 65, 67, 70, 71, 72, 74,
430
+ 76, 77, 79, 81, 82, 83, 85, 86, 88, 90, 92, 94,
431
+ 98, 102, 104, 107, 109, 113, 116, 119, 122, 125, 127, 129,
432
+ 132, 135, 138, 140, 143, 147, 150, 153, 156, 158, 159, 161,
433
+ 163, 165, 167, 169, 172, 175, 177, 179, 181, 183, 185, 187,
434
+ 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 211, 214,
435
+ 216, 218, 220, 222, 224, 226, 228, 231, 234, 236, 238, 240,
436
+ 242, 243, 244, 245, 248, 251, 254, 257, 260, 263, 265, 268,
437
+ 271, 274, 277, 279, 281, 283, 285, 287, 288, 289, 291, 293,
438
+ 295, 297, 299, 300, 303, 304, 306, 307, 309, 311, 314, 315,
439
+ 316, 318, 320, 321, 323, 325, 326, 327, 329, 330, 332, 334,
440
+ 336, 338, 342, 346, 348, 351, 353, 357, 360, 363, 366, 369,
441
+ 371, 373, 376, 379, 382, 384, 387, 391, 394, 397, 400, 402,
442
+ 403, 405, 407, 409, 411, 413, 416, 419, 421, 423, 425, 427,
443
+ 429, 431, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452,
444
+ 455, 458, 460, 462, 464, 466, 468, 470, 472, 475, 478, 480,
445
+ 482, 484, 486, 487,
435
446
  };
436
447
 
437
448
  ASSERT_VM_INSTRUCTION_SIZE(rb_vm_insn_op_offset);
@@ -499,7 +510,7 @@ leafness_of_checkmatch(rb_num_t flag)
499
510
  return false;
500
511
  }
501
512
  }
502
- #line 503 "insns_info.inc"
513
+ #line 514 "insns_info.inc"
503
514
 
504
515
  #line 10 "tool/ruby_vm/views/_sp_inc_helpers.erb"
505
516
 
@@ -513,7 +524,7 @@ sp_inc_of_sendish(const struct rb_callinfo *ci)
513
524
  * 3. Pop receiver.
514
525
  * 4. Push return value.
515
526
  */
516
- const int argb = (vm_ci_flag(ci) & VM_CALL_ARGS_BLOCKARG) ? 1 : 0;
527
+ const int argb = (vm_ci_flag(ci) & (VM_CALL_ARGS_BLOCKARG | VM_CALL_FORWARDING)) ? 1 : 0;
517
528
  const int argc = vm_ci_argc(ci);
518
529
  const int recv = 1;
519
530
  const int retn = 1;
@@ -529,7 +540,7 @@ sp_inc_of_invokeblock(const struct rb_callinfo *ci)
529
540
  * instructions, except that it does not pop receiver. */
530
541
  return sp_inc_of_sendish(ci) + 1;
531
542
  }
532
- #line 533 "insns_info.inc"
543
+ #line 544 "insns_info.inc"
533
544
 
534
545
  #ifndef RUBY_VM_EXEC_H
535
546
  /* can't #include "vm_exec.h" here... */
@@ -791,15 +802,6 @@ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_newarray(rb_num_t num)));
791
802
  PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_newarray(rb_num_t num)));
792
803
  PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_newarray(rb_num_t num)));
793
804
  PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_newarray(rb_num_t num)));
794
- PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_newarraykwsplat(rb_num_t num)));
795
- PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_newarraykwsplat(rb_num_t num)));
796
- PUREFUNC(MAYBE_UNUSED(static bool attr_leaf_newarraykwsplat(rb_num_t num)));
797
- PUREFUNC(MAYBE_UNUSED(static const char* attr_name_newarraykwsplat(rb_num_t num)));
798
- PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_open_newarraykwsplat(rb_num_t num)));
799
- PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_newarraykwsplat(rb_num_t num)));
800
- PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_newarraykwsplat(rb_num_t num)));
801
- PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_newarraykwsplat(rb_num_t num)));
802
- PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_newarraykwsplat(rb_num_t num)));
803
805
  PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_pushtoarraykwsplat(void)));
804
806
  PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_pushtoarraykwsplat(void)));
805
807
  PUREFUNC(MAYBE_UNUSED(static bool attr_leaf_pushtoarraykwsplat(void)));
@@ -1053,6 +1055,16 @@ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_send(CALL_DATA cd, ISEQ blockise
1053
1055
  PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_send(CALL_DATA cd, ISEQ blockiseq)));
1054
1056
  PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_send(CALL_DATA cd, ISEQ blockiseq)));
1055
1057
  PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_send(CALL_DATA cd, ISEQ blockiseq)));
1058
+ PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_sendforward(CALL_DATA cd, ISEQ blockiseq)));
1059
+ PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_comptime_sp_inc_sendforward(CALL_INFO ci, ISEQ blockiseq)));
1060
+ PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_sendforward(CALL_DATA cd, ISEQ blockiseq)));
1061
+ PUREFUNC(MAYBE_UNUSED(static bool attr_leaf_sendforward(CALL_DATA cd, ISEQ blockiseq)));
1062
+ PUREFUNC(MAYBE_UNUSED(static const char* attr_name_sendforward(CALL_DATA cd, ISEQ blockiseq)));
1063
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_open_sendforward(CALL_DATA cd, ISEQ blockiseq)));
1064
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_sendforward(CALL_DATA cd, ISEQ blockiseq)));
1065
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_sendforward(CALL_DATA cd, ISEQ blockiseq)));
1066
+ PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_sendforward(CALL_DATA cd, ISEQ blockiseq)));
1067
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_sendforward(CALL_DATA cd, ISEQ blockiseq)));
1056
1068
  PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_opt_send_without_block(CALL_DATA cd)));
1057
1069
  PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_comptime_sp_inc_opt_send_without_block(CALL_INFO ci)));
1058
1070
  PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_opt_send_without_block(CALL_DATA cd)));
@@ -1072,6 +1084,24 @@ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_objtostring(CALL_DATA cd)));
1072
1084
  PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_objtostring(CALL_DATA cd)));
1073
1085
  PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_objtostring(CALL_DATA cd)));
1074
1086
  PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_objtostring(CALL_DATA cd)));
1087
+ PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_opt_ary_freeze(VALUE ary, CALL_DATA cd)));
1088
+ PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_opt_ary_freeze(VALUE ary, CALL_DATA cd)));
1089
+ PUREFUNC(MAYBE_UNUSED(static bool attr_leaf_opt_ary_freeze(VALUE ary, CALL_DATA cd)));
1090
+ PUREFUNC(MAYBE_UNUSED(static const char* attr_name_opt_ary_freeze(VALUE ary, CALL_DATA cd)));
1091
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_open_opt_ary_freeze(VALUE ary, CALL_DATA cd)));
1092
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_opt_ary_freeze(VALUE ary, CALL_DATA cd)));
1093
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_opt_ary_freeze(VALUE ary, CALL_DATA cd)));
1094
+ PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_opt_ary_freeze(VALUE ary, CALL_DATA cd)));
1095
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_opt_ary_freeze(VALUE ary, CALL_DATA cd)));
1096
+ PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_opt_hash_freeze(VALUE hash, CALL_DATA cd)));
1097
+ PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_opt_hash_freeze(VALUE hash, CALL_DATA cd)));
1098
+ PUREFUNC(MAYBE_UNUSED(static bool attr_leaf_opt_hash_freeze(VALUE hash, CALL_DATA cd)));
1099
+ PUREFUNC(MAYBE_UNUSED(static const char* attr_name_opt_hash_freeze(VALUE hash, CALL_DATA cd)));
1100
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_open_opt_hash_freeze(VALUE hash, CALL_DATA cd)));
1101
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_opt_hash_freeze(VALUE hash, CALL_DATA cd)));
1102
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_opt_hash_freeze(VALUE hash, CALL_DATA cd)));
1103
+ PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_opt_hash_freeze(VALUE hash, CALL_DATA cd)));
1104
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_opt_hash_freeze(VALUE hash, CALL_DATA cd)));
1075
1105
  PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_opt_str_freeze(VALUE str, CALL_DATA cd)));
1076
1106
  PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_opt_str_freeze(VALUE str, CALL_DATA cd)));
1077
1107
  PUREFUNC(MAYBE_UNUSED(static bool attr_leaf_opt_str_freeze(VALUE str, CALL_DATA cd)));
@@ -1099,16 +1129,26 @@ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_opt_str_uminus(VALUE str, CALL_D
1099
1129
  PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_opt_str_uminus(VALUE str, CALL_DATA cd)));
1100
1130
  PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_opt_str_uminus(VALUE str, CALL_DATA cd)));
1101
1131
  PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_opt_str_uminus(VALUE str, CALL_DATA cd)));
1102
- PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_opt_newarray_send(rb_num_t num, ID method)));
1103
- PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_comptime_sp_inc_opt_newarray_send(rb_num_t num, ID method)));
1104
- PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_opt_newarray_send(rb_num_t num, ID method)));
1105
- PUREFUNC(MAYBE_UNUSED(static bool attr_leaf_opt_newarray_send(rb_num_t num, ID method)));
1106
- PUREFUNC(MAYBE_UNUSED(static const char* attr_name_opt_newarray_send(rb_num_t num, ID method)));
1107
- PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_open_opt_newarray_send(rb_num_t num, ID method)));
1108
- PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_opt_newarray_send(rb_num_t num, ID method)));
1109
- PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_opt_newarray_send(rb_num_t num, ID method)));
1110
- PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_opt_newarray_send(rb_num_t num, ID method)));
1111
- PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_opt_newarray_send(rb_num_t num, ID method)));
1132
+ PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_opt_duparray_send(VALUE ary, ID method, rb_num_t argc)));
1133
+ PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_comptime_sp_inc_opt_duparray_send(VALUE ary, ID method, rb_num_t argc)));
1134
+ PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_opt_duparray_send(VALUE ary, ID method, rb_num_t argc)));
1135
+ PUREFUNC(MAYBE_UNUSED(static bool attr_leaf_opt_duparray_send(VALUE ary, ID method, rb_num_t argc)));
1136
+ PUREFUNC(MAYBE_UNUSED(static const char* attr_name_opt_duparray_send(VALUE ary, ID method, rb_num_t argc)));
1137
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_open_opt_duparray_send(VALUE ary, ID method, rb_num_t argc)));
1138
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_opt_duparray_send(VALUE ary, ID method, rb_num_t argc)));
1139
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_opt_duparray_send(VALUE ary, ID method, rb_num_t argc)));
1140
+ PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_opt_duparray_send(VALUE ary, ID method, rb_num_t argc)));
1141
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_opt_duparray_send(VALUE ary, ID method, rb_num_t argc)));
1142
+ PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_opt_newarray_send(rb_num_t num, rb_num_t method)));
1143
+ PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_comptime_sp_inc_opt_newarray_send(rb_num_t num, rb_num_t method)));
1144
+ PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_opt_newarray_send(rb_num_t num, rb_num_t method)));
1145
+ PUREFUNC(MAYBE_UNUSED(static bool attr_leaf_opt_newarray_send(rb_num_t num, rb_num_t method)));
1146
+ PUREFUNC(MAYBE_UNUSED(static const char* attr_name_opt_newarray_send(rb_num_t num, rb_num_t method)));
1147
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_open_opt_newarray_send(rb_num_t num, rb_num_t method)));
1148
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_opt_newarray_send(rb_num_t num, rb_num_t method)));
1149
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_opt_newarray_send(rb_num_t num, rb_num_t method)));
1150
+ PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_opt_newarray_send(rb_num_t num, rb_num_t method)));
1151
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_opt_newarray_send(rb_num_t num, rb_num_t method)));
1112
1152
  PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_invokesuper(CALL_DATA cd, ISEQ blockiseq)));
1113
1153
  PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_comptime_sp_inc_invokesuper(CALL_INFO ci, ISEQ blockiseq)));
1114
1154
  PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_invokesuper(CALL_DATA cd, ISEQ blockiseq)));
@@ -1119,6 +1159,16 @@ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_invokesuper(CALL_DATA cd, ISEQ b
1119
1159
  PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_invokesuper(CALL_DATA cd, ISEQ blockiseq)));
1120
1160
  PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_invokesuper(CALL_DATA cd, ISEQ blockiseq)));
1121
1161
  PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_invokesuper(CALL_DATA cd, ISEQ blockiseq)));
1162
+ PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_invokesuperforward(CALL_DATA cd, ISEQ blockiseq)));
1163
+ PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_comptime_sp_inc_invokesuperforward(CALL_INFO ci, ISEQ blockiseq)));
1164
+ PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_invokesuperforward(CALL_DATA cd, ISEQ blockiseq)));
1165
+ PUREFUNC(MAYBE_UNUSED(static bool attr_leaf_invokesuperforward(CALL_DATA cd, ISEQ blockiseq)));
1166
+ PUREFUNC(MAYBE_UNUSED(static const char* attr_name_invokesuperforward(CALL_DATA cd, ISEQ blockiseq)));
1167
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_open_invokesuperforward(CALL_DATA cd, ISEQ blockiseq)));
1168
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_popn_invokesuperforward(CALL_DATA cd, ISEQ blockiseq)));
1169
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_retn_invokesuperforward(CALL_DATA cd, ISEQ blockiseq)));
1170
+ PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_sp_inc_invokesuperforward(CALL_DATA cd, ISEQ blockiseq)));
1171
+ PUREFUNC(MAYBE_UNUSED(static rb_num_t attr_width_invokesuperforward(CALL_DATA cd, ISEQ blockiseq)));
1122
1172
  PUREFUNC(MAYBE_UNUSED(static enum ruby_vminsn_type attr_bin_invokeblock(CALL_DATA cd)));
1123
1173
  PUREFUNC(MAYBE_UNUSED(static rb_snum_t attr_comptime_sp_inc_invokeblock(CALL_INFO ci)));
1124
1174
  PUREFUNC(MAYBE_UNUSED(static bool attr_handles_sp_invokeblock(CALL_DATA cd)));
@@ -2042,7 +2092,7 @@ attr_leaf_getspecial(
2042
2092
  return
2043
2093
  #line 192 "insns.def"
2044
2094
  (type == 0) ? true : false;
2045
- #line 2046 "insns_info.inc"
2095
+ #line 2096 "insns_info.inc"
2046
2096
  }
2047
2097
 
2048
2098
  /* attr const char* name @ getspecial(key, type)()(val) */
@@ -2198,7 +2248,7 @@ attr_leaf_getinstancevariable(
2198
2248
  return
2199
2249
  #line 214 "insns.def"
2200
2250
  false;
2201
- #line 2202 "insns_info.inc"
2251
+ #line 2252 "insns_info.inc"
2202
2252
  }
2203
2253
 
2204
2254
  /* attr const char* name @ getinstancevariable(id, ic)()(val) */
@@ -2291,7 +2341,7 @@ attr_leaf_setinstancevariable(
2291
2341
  return
2292
2342
  #line 225 "insns.def"
2293
2343
  false;
2294
- #line 2295 "insns_info.inc"
2344
+ #line 2345 "insns_info.inc"
2295
2345
  }
2296
2346
 
2297
2347
  /* attr const char* name @ setinstancevariable(id, ic)(val)() */
@@ -2384,7 +2434,7 @@ attr_leaf_getclassvariable(
2384
2434
  return
2385
2435
  #line 237 "insns.def"
2386
2436
  false;
2387
- #line 2388 "insns_info.inc"
2437
+ #line 2438 "insns_info.inc"
2388
2438
  }
2389
2439
 
2390
2440
  /* attr const char* name @ getclassvariable(id, ic)()(val) */
@@ -2477,7 +2527,7 @@ attr_leaf_setclassvariable(
2477
2527
  return
2478
2528
  #line 250 "insns.def"
2479
2529
  false;
2480
- #line 2481 "insns_info.inc"
2530
+ #line 2531 "insns_info.inc"
2481
2531
  }
2482
2532
 
2483
2533
  /* attr const char* name @ setclassvariable(id, ic)(val)() */
@@ -2561,7 +2611,7 @@ attr_leaf_opt_getconstant_path(MAYBE_UNUSED(IC ic))
2561
2611
  return
2562
2612
  #line 261 "insns.def"
2563
2613
  false;
2564
- #line 2565 "insns_info.inc"
2614
+ #line 2615 "insns_info.inc"
2565
2615
  }
2566
2616
 
2567
2617
  /* attr const char* name @ opt_getconstant_path(ic)()(val) */
@@ -2627,7 +2677,7 @@ attr_leaf_getconstant(MAYBE_UNUSED(ID id))
2627
2677
  return
2628
2678
  #line 276 "insns.def"
2629
2679
  false;
2630
- #line 2631 "insns_info.inc"
2680
+ #line 2681 "insns_info.inc"
2631
2681
  }
2632
2682
 
2633
2683
  /* attr const char* name @ getconstant(id)(klass, allow_nil)(val) */
@@ -2693,7 +2743,7 @@ attr_leaf_setconstant(MAYBE_UNUSED(ID id))
2693
2743
  return
2694
2744
  #line 292 "insns.def"
2695
2745
  false;
2696
- #line 2697 "insns_info.inc"
2746
+ #line 2747 "insns_info.inc"
2697
2747
  }
2698
2748
 
2699
2749
  /* attr const char* name @ setconstant(id)(val, cbase)() */
@@ -2759,7 +2809,7 @@ attr_leaf_getglobal(MAYBE_UNUSED(ID gid))
2759
2809
  return
2760
2810
  #line 305 "insns.def"
2761
2811
  false;
2762
- #line 2763 "insns_info.inc"
2812
+ #line 2813 "insns_info.inc"
2763
2813
  }
2764
2814
 
2765
2815
  /* attr const char* name @ getglobal(gid)()(val) */
@@ -2825,7 +2875,7 @@ attr_leaf_setglobal(MAYBE_UNUSED(ID gid))
2825
2875
  return
2826
2876
  #line 316 "insns.def"
2827
2877
  false;
2828
- #line 2829 "insns_info.inc"
2878
+ #line 2879 "insns_info.inc"
2829
2879
  }
2830
2880
 
2831
2881
  /* attr const char* name @ setglobal(gid)(val)() */
@@ -3080,7 +3130,7 @@ attr_leaf_putspecialobject(MAYBE_UNUSED(rb_num_t value_type))
3080
3130
  return
3081
3131
  #line 363 "insns.def"
3082
3132
  (value_type == VM_SPECIAL_OBJECT_VMCORE);
3083
- #line 3084 "insns_info.inc"
3133
+ #line 3134 "insns_info.inc"
3084
3134
  }
3085
3135
 
3086
3136
  /* attr const char* name @ putspecialobject(value_type)()(val) */
@@ -3272,7 +3322,7 @@ attr_leaf_concatstrings(MAYBE_UNUSED(rb_num_t num))
3272
3322
  return
3273
3323
  #line 399 "insns.def"
3274
3324
  false;
3275
- #line 3276 "insns_info.inc"
3325
+ #line 3326 "insns_info.inc"
3276
3326
  }
3277
3327
 
3278
3328
  /* attr const char* name @ concatstrings(num)(...)(val) */
@@ -3310,7 +3360,7 @@ attr_sp_inc_concatstrings(MAYBE_UNUSED(rb_num_t num))
3310
3360
  return
3311
3361
  #line 400 "insns.def"
3312
3362
  1 - (rb_snum_t)num;
3313
- #line 3314 "insns_info.inc"
3363
+ #line 3364 "insns_info.inc"
3314
3364
  }
3315
3365
 
3316
3366
  /* attr rb_num_t width @ concatstrings(num)(...)(val) */
@@ -3413,7 +3463,7 @@ attr_leaf_toregexp(
3413
3463
  return
3414
3464
  #line 426 "insns.def"
3415
3465
  false;
3416
- #line 3417 "insns_info.inc"
3466
+ #line 3467 "insns_info.inc"
3417
3467
  }
3418
3468
 
3419
3469
  /* attr const char* name @ toregexp(opt, cnt)(...)(val) */
@@ -3466,7 +3516,7 @@ attr_sp_inc_toregexp(
3466
3516
  return
3467
3517
  #line 427 "insns.def"
3468
3518
  1 - (rb_snum_t)cnt;
3469
- #line 3470 "insns_info.inc"
3519
+ #line 3520 "insns_info.inc"
3470
3520
  }
3471
3521
 
3472
3522
  /* attr rb_num_t width @ toregexp(opt, cnt)(...)(val) */
@@ -3598,7 +3648,7 @@ attr_sp_inc_newarray(MAYBE_UNUSED(rb_num_t num))
3598
3648
  return
3599
3649
  #line 450 "insns.def"
3600
3650
  1 - (rb_snum_t)num;
3601
- #line 3602 "insns_info.inc"
3651
+ #line 3652 "insns_info.inc"
3602
3652
  }
3603
3653
 
3604
3654
  /* attr rb_num_t width @ newarray(num)(...)(val) */
@@ -3608,72 +3658,6 @@ attr_width_newarray(MAYBE_UNUSED(rb_num_t num))
3608
3658
  return 2;
3609
3659
  }
3610
3660
 
3611
- /* attr enum ruby_vminsn_type bin @ newarraykwsplat(num)(...)(val) */
3612
- enum ruby_vminsn_type
3613
- attr_bin_newarraykwsplat(MAYBE_UNUSED(rb_num_t num))
3614
- {
3615
- return BIN(newarraykwsplat);
3616
- }
3617
-
3618
- /* attr bool handles_sp @ newarraykwsplat(num)(...)(val) */
3619
- bool
3620
- attr_handles_sp_newarraykwsplat(MAYBE_UNUSED(rb_num_t num))
3621
- {
3622
- return false;
3623
- }
3624
-
3625
- /* attr bool leaf @ newarraykwsplat(num)(...)(val) */
3626
- bool
3627
- attr_leaf_newarraykwsplat(MAYBE_UNUSED(rb_num_t num))
3628
- {
3629
- return true;
3630
- }
3631
-
3632
- /* attr const char* name @ newarraykwsplat(num)(...)(val) */
3633
- const char*
3634
- attr_name_newarraykwsplat(MAYBE_UNUSED(rb_num_t num))
3635
- {
3636
- return insn_name(BIN(newarraykwsplat));
3637
- }
3638
-
3639
- /* attr rb_num_t open @ newarraykwsplat(num)(...)(val) */
3640
- rb_num_t
3641
- attr_open_newarraykwsplat(MAYBE_UNUSED(rb_num_t num))
3642
- {
3643
- return 1;
3644
- }
3645
-
3646
- /* attr rb_num_t popn @ newarraykwsplat(num)(...)(val) */
3647
- rb_num_t
3648
- attr_popn_newarraykwsplat(MAYBE_UNUSED(rb_num_t num))
3649
- {
3650
- return 0;
3651
- }
3652
-
3653
- /* attr rb_num_t retn @ newarraykwsplat(num)(...)(val) */
3654
- rb_num_t
3655
- attr_retn_newarraykwsplat(MAYBE_UNUSED(rb_num_t num))
3656
- {
3657
- return 1;
3658
- }
3659
-
3660
- /* attr rb_snum_t sp_inc @ newarraykwsplat(num)(...)(val) */
3661
- rb_snum_t
3662
- attr_sp_inc_newarraykwsplat(MAYBE_UNUSED(rb_num_t num))
3663
- {
3664
- return
3665
- #line 465 "insns.def"
3666
- 1 - (rb_snum_t)num;
3667
- #line 3668 "insns_info.inc"
3668
- }
3669
-
3670
- /* attr rb_num_t width @ newarraykwsplat(num)(...)(val) */
3671
- rb_num_t
3672
- attr_width_newarraykwsplat(MAYBE_UNUSED(rb_num_t num))
3673
- {
3674
- return 2;
3675
- }
3676
-
3677
3661
  /* attr enum ruby_vminsn_type bin @ pushtoarraykwsplat()(ary, hash)(ary) */
3678
3662
  enum ruby_vminsn_type
3679
3663
  attr_bin_pushtoarraykwsplat(void)
@@ -3881,9 +3865,9 @@ attr_handles_sp_expandarray(
3881
3865
  )
3882
3866
  {
3883
3867
  return
3884
- #line 525 "insns.def"
3868
+ #line 505 "insns.def"
3885
3869
  true;
3886
- #line 3887 "insns_info.inc"
3870
+ #line 3871 "insns_info.inc"
3887
3871
  }
3888
3872
 
3889
3873
  /* attr bool leaf @ expandarray(num, flag)(..., ary)(...) */
@@ -3894,9 +3878,9 @@ attr_leaf_expandarray(
3894
3878
  )
3895
3879
  {
3896
3880
  return
3897
- #line 526 "insns.def"
3881
+ #line 506 "insns.def"
3898
3882
  false;
3899
- #line 3900 "insns_info.inc"
3883
+ #line 3884 "insns_info.inc"
3900
3884
  }
3901
3885
 
3902
3886
  /* attr const char* name @ expandarray(num, flag)(..., ary)(...) */
@@ -3947,9 +3931,9 @@ attr_sp_inc_expandarray(
3947
3931
  )
3948
3932
  {
3949
3933
  return
3950
- #line 527 "insns.def"
3934
+ #line 507 "insns.def"
3951
3935
  (rb_snum_t)num - 1 + (flag & 1 ? 1 : 0);
3952
- #line 3953 "insns_info.inc"
3936
+ #line 3937 "insns_info.inc"
3953
3937
  }
3954
3938
 
3955
3939
  /* attr rb_num_t width @ expandarray(num, flag)(..., ary)(...) */
@@ -3981,9 +3965,9 @@ bool
3981
3965
  attr_leaf_concatarray(void)
3982
3966
  {
3983
3967
  return
3984
- #line 540 "insns.def"
3968
+ #line 520 "insns.def"
3985
3969
  false;
3986
- #line 3987 "insns_info.inc"
3970
+ #line 3971 "insns_info.inc"
3987
3971
  }
3988
3972
 
3989
3973
  /* attr const char* name @ concatarray()(ary1, ary2)(ary) */
@@ -4047,9 +4031,9 @@ bool
4047
4031
  attr_leaf_concattoarray(void)
4048
4032
  {
4049
4033
  return
4050
- #line 554 "insns.def"
4034
+ #line 534 "insns.def"
4051
4035
  false;
4052
- #line 4053 "insns_info.inc"
4036
+ #line 4037 "insns_info.inc"
4053
4037
  }
4054
4038
 
4055
4039
  /* attr const char* name @ concattoarray()(ary1, ary2)(ary) */
@@ -4148,9 +4132,9 @@ rb_snum_t
4148
4132
  attr_sp_inc_pushtoarray(MAYBE_UNUSED(rb_num_t num))
4149
4133
  {
4150
4134
  return
4151
- #line 565 "insns.def"
4135
+ #line 545 "insns.def"
4152
4136
  -(rb_snum_t)num;
4153
- #line 4154 "insns_info.inc"
4137
+ #line 4138 "insns_info.inc"
4154
4138
  }
4155
4139
 
4156
4140
  /* attr rb_num_t width @ pushtoarray(num)(...)(val) */
@@ -4179,9 +4163,9 @@ bool
4179
4163
  attr_leaf_splatarray(MAYBE_UNUSED(VALUE flag))
4180
4164
  {
4181
4165
  return
4182
- #line 577 "insns.def"
4166
+ #line 557 "insns.def"
4183
4167
  false;
4184
- #line 4185 "insns_info.inc"
4168
+ #line 4169 "insns_info.inc"
4185
4169
  }
4186
4170
 
4187
4171
  /* attr const char* name @ splatarray(flag)(ary)(obj) */
@@ -4245,9 +4229,9 @@ bool
4245
4229
  attr_leaf_splatkw(void)
4246
4230
  {
4247
4231
  return
4248
- #line 588 "insns.def"
4232
+ #line 568 "insns.def"
4249
4233
  false;
4250
- #line 4251 "insns_info.inc"
4234
+ #line 4235 "insns_info.inc"
4251
4235
  }
4252
4236
 
4253
4237
  /* attr const char* name @ splatkw()(hash, block)(obj, block) */
@@ -4311,9 +4295,9 @@ bool
4311
4295
  attr_leaf_newhash(MAYBE_UNUSED(rb_num_t num))
4312
4296
  {
4313
4297
  return
4314
- #line 604 "insns.def"
4298
+ #line 584 "insns.def"
4315
4299
  false;
4316
- #line 4317 "insns_info.inc"
4300
+ #line 4301 "insns_info.inc"
4317
4301
  }
4318
4302
 
4319
4303
  /* attr const char* name @ newhash(num)(...)(val) */
@@ -4349,9 +4333,9 @@ rb_snum_t
4349
4333
  attr_sp_inc_newhash(MAYBE_UNUSED(rb_num_t num))
4350
4334
  {
4351
4335
  return
4352
- #line 605 "insns.def"
4336
+ #line 585 "insns.def"
4353
4337
  1 - (rb_snum_t)num;
4354
- #line 4355 "insns_info.inc"
4338
+ #line 4339 "insns_info.inc"
4355
4339
  }
4356
4340
 
4357
4341
  /* attr rb_num_t width @ newhash(num)(...)(val) */
@@ -4380,9 +4364,9 @@ bool
4380
4364
  attr_leaf_newrange(MAYBE_UNUSED(rb_num_t flag))
4381
4365
  {
4382
4366
  return
4383
- #line 625 "insns.def"
4367
+ #line 605 "insns.def"
4384
4368
  false;
4385
- #line 4386 "insns_info.inc"
4369
+ #line 4370 "insns_info.inc"
4386
4370
  }
4387
4371
 
4388
4372
  /* attr const char* name @ newrange(flag)(low, high)(val) */
@@ -4607,9 +4591,9 @@ rb_snum_t
4607
4591
  attr_sp_inc_dupn(MAYBE_UNUSED(rb_num_t n))
4608
4592
  {
4609
4593
  return
4610
- #line 661 "insns.def"
4594
+ #line 641 "insns.def"
4611
4595
  n;
4612
- #line 4613 "insns_info.inc"
4596
+ #line 4597 "insns_info.inc"
4613
4597
  }
4614
4598
 
4615
4599
  /* attr rb_num_t width @ dupn(n)(...)(...) */
@@ -4736,9 +4720,9 @@ rb_snum_t
4736
4720
  attr_sp_inc_opt_reverse(MAYBE_UNUSED(rb_num_t n))
4737
4721
  {
4738
4722
  return
4739
- #line 685 "insns.def"
4723
+ #line 665 "insns.def"
4740
4724
  0;
4741
- #line 4742 "insns_info.inc"
4725
+ #line 4726 "insns_info.inc"
4742
4726
  }
4743
4727
 
4744
4728
  /* attr rb_num_t width @ opt_reverse(n)(...)(...) */
@@ -4802,9 +4786,9 @@ rb_snum_t
4802
4786
  attr_sp_inc_topn(MAYBE_UNUSED(rb_num_t n))
4803
4787
  {
4804
4788
  return
4805
- #line 715 "insns.def"
4789
+ #line 695 "insns.def"
4806
4790
  1;
4807
- #line 4808 "insns_info.inc"
4791
+ #line 4792 "insns_info.inc"
4808
4792
  }
4809
4793
 
4810
4794
  /* attr rb_num_t width @ topn(n)(...)(val) */
@@ -4868,9 +4852,9 @@ rb_snum_t
4868
4852
  attr_sp_inc_setn(MAYBE_UNUSED(rb_num_t n))
4869
4853
  {
4870
4854
  return
4871
- #line 726 "insns.def"
4855
+ #line 706 "insns.def"
4872
4856
  0;
4873
- #line 4874 "insns_info.inc"
4857
+ #line 4858 "insns_info.inc"
4874
4858
  }
4875
4859
 
4876
4860
  /* attr rb_num_t width @ setn(n)(..., val)(val) */
@@ -4934,9 +4918,9 @@ rb_snum_t
4934
4918
  attr_sp_inc_adjuststack(MAYBE_UNUSED(rb_num_t n))
4935
4919
  {
4936
4920
  return
4937
- #line 737 "insns.def"
4921
+ #line 717 "insns.def"
4938
4922
  -(rb_snum_t)n;
4939
- #line 4940 "insns_info.inc"
4923
+ #line 4924 "insns_info.inc"
4940
4924
  }
4941
4925
 
4942
4926
  /* attr rb_num_t width @ adjuststack(n)(...)(...) */
@@ -4977,9 +4961,9 @@ attr_leaf_defined(
4977
4961
  )
4978
4962
  {
4979
4963
  return
4980
- #line 752 "insns.def"
4964
+ #line 732 "insns.def"
4981
4965
  leafness_of_defined(op_type);
4982
- #line 4983 "insns_info.inc"
4966
+ #line 4967 "insns_info.inc"
4983
4967
  }
4984
4968
 
4985
4969
  /* attr const char* name @ defined(op_type, obj, pushval)(v)(val) */
@@ -5079,9 +5063,9 @@ attr_leaf_definedivar(
5079
5063
  )
5080
5064
  {
5081
5065
  return
5082
- #line 766 "insns.def"
5066
+ #line 746 "insns.def"
5083
5067
  false;
5084
- #line 5085 "insns_info.inc"
5068
+ #line 5069 "insns_info.inc"
5085
5069
  }
5086
5070
 
5087
5071
  /* attr const char* name @ definedivar(id, ic, pushval)()(val) */
@@ -5169,9 +5153,9 @@ bool
5169
5153
  attr_leaf_checkmatch(MAYBE_UNUSED(rb_num_t flag))
5170
5154
  {
5171
5155
  return
5172
- #line 786 "insns.def"
5156
+ #line 766 "insns.def"
5173
5157
  leafness_of_checkmatch(flag);
5174
- #line 5175 "insns_info.inc"
5158
+ #line 5159 "insns_info.inc"
5175
5159
  }
5176
5160
 
5177
5161
  /* attr const char* name @ checkmatch(flag)(target, pattern)(result) */
@@ -5666,9 +5650,9 @@ attr_comptime_sp_inc_send(
5666
5650
  )
5667
5651
  {
5668
5652
  return
5669
- #line 868 "insns.def"
5653
+ #line 848 "insns.def"
5670
5654
  sp_inc_of_sendish(ci);
5671
- #line 5672 "insns_info.inc"
5655
+ #line 5656 "insns_info.inc"
5672
5656
  }
5673
5657
 
5674
5658
  /* attr bool handles_sp @ send(cd, blockiseq)(...)(val) */
@@ -5739,9 +5723,9 @@ attr_sp_inc_send(
5739
5723
  )
5740
5724
  {
5741
5725
  return
5742
- #line 867 "insns.def"
5726
+ #line 847 "insns.def"
5743
5727
  sp_inc_of_sendish(cd->ci);
5744
- #line 5745 "insns_info.inc"
5728
+ #line 5729 "insns_info.inc"
5745
5729
  }
5746
5730
 
5747
5731
  /* attr rb_num_t width @ send(cd, blockiseq)(...)(val) */
@@ -5754,6 +5738,112 @@ attr_width_send(
5754
5738
  return 3;
5755
5739
  }
5756
5740
 
5741
+ /* attr enum ruby_vminsn_type bin @ sendforward(cd, blockiseq)(...)(val) */
5742
+ enum ruby_vminsn_type
5743
+ attr_bin_sendforward(
5744
+ MAYBE_UNUSED(CALL_DATA cd),
5745
+ MAYBE_UNUSED(ISEQ blockiseq)
5746
+ )
5747
+ {
5748
+ return BIN(sendforward);
5749
+ }
5750
+
5751
+ /* attr rb_snum_t comptime_sp_inc @ sendforward(cd, blockiseq)(...)(val) */
5752
+ rb_snum_t
5753
+ attr_comptime_sp_inc_sendforward(
5754
+ MAYBE_UNUSED(CALL_INFO ci),
5755
+ MAYBE_UNUSED(ISEQ blockiseq)
5756
+ )
5757
+ {
5758
+ return
5759
+ #line 867 "insns.def"
5760
+ sp_inc_of_sendish(ci);
5761
+ #line 5762 "insns_info.inc"
5762
+ }
5763
+
5764
+ /* attr bool handles_sp @ sendforward(cd, blockiseq)(...)(val) */
5765
+ bool
5766
+ attr_handles_sp_sendforward(
5767
+ MAYBE_UNUSED(CALL_DATA cd),
5768
+ MAYBE_UNUSED(ISEQ blockiseq)
5769
+ )
5770
+ {
5771
+ return true;
5772
+ }
5773
+
5774
+ /* attr bool leaf @ sendforward(cd, blockiseq)(...)(val) */
5775
+ bool
5776
+ attr_leaf_sendforward(
5777
+ MAYBE_UNUSED(CALL_DATA cd),
5778
+ MAYBE_UNUSED(ISEQ blockiseq)
5779
+ )
5780
+ {
5781
+ return false;
5782
+ }
5783
+
5784
+ /* attr const char* name @ sendforward(cd, blockiseq)(...)(val) */
5785
+ const char*
5786
+ attr_name_sendforward(
5787
+ MAYBE_UNUSED(CALL_DATA cd),
5788
+ MAYBE_UNUSED(ISEQ blockiseq)
5789
+ )
5790
+ {
5791
+ return insn_name(BIN(sendforward));
5792
+ }
5793
+
5794
+ /* attr rb_num_t open @ sendforward(cd, blockiseq)(...)(val) */
5795
+ rb_num_t
5796
+ attr_open_sendforward(
5797
+ MAYBE_UNUSED(CALL_DATA cd),
5798
+ MAYBE_UNUSED(ISEQ blockiseq)
5799
+ )
5800
+ {
5801
+ return 2;
5802
+ }
5803
+
5804
+ /* attr rb_num_t popn @ sendforward(cd, blockiseq)(...)(val) */
5805
+ rb_num_t
5806
+ attr_popn_sendforward(
5807
+ MAYBE_UNUSED(CALL_DATA cd),
5808
+ MAYBE_UNUSED(ISEQ blockiseq)
5809
+ )
5810
+ {
5811
+ return 0;
5812
+ }
5813
+
5814
+ /* attr rb_num_t retn @ sendforward(cd, blockiseq)(...)(val) */
5815
+ rb_num_t
5816
+ attr_retn_sendforward(
5817
+ MAYBE_UNUSED(CALL_DATA cd),
5818
+ MAYBE_UNUSED(ISEQ blockiseq)
5819
+ )
5820
+ {
5821
+ return 1;
5822
+ }
5823
+
5824
+ /* attr rb_snum_t sp_inc @ sendforward(cd, blockiseq)(...)(val) */
5825
+ rb_snum_t
5826
+ attr_sp_inc_sendforward(
5827
+ MAYBE_UNUSED(CALL_DATA cd),
5828
+ MAYBE_UNUSED(ISEQ blockiseq)
5829
+ )
5830
+ {
5831
+ return
5832
+ #line 866 "insns.def"
5833
+ sp_inc_of_sendish(cd->ci);
5834
+ #line 5835 "insns_info.inc"
5835
+ }
5836
+
5837
+ /* attr rb_num_t width @ sendforward(cd, blockiseq)(...)(val) */
5838
+ rb_num_t
5839
+ attr_width_sendforward(
5840
+ MAYBE_UNUSED(CALL_DATA cd),
5841
+ MAYBE_UNUSED(ISEQ blockiseq)
5842
+ )
5843
+ {
5844
+ return 3;
5845
+ }
5846
+
5757
5847
  /* attr enum ruby_vminsn_type bin @ opt_send_without_block(cd)(...)(val) */
5758
5848
  enum ruby_vminsn_type
5759
5849
  attr_bin_opt_send_without_block(MAYBE_UNUSED(CALL_DATA cd))
@@ -5766,9 +5856,9 @@ rb_snum_t
5766
5856
  attr_comptime_sp_inc_opt_send_without_block(MAYBE_UNUSED(CALL_INFO ci))
5767
5857
  {
5768
5858
  return
5769
- #line 888 "insns.def"
5859
+ #line 895 "insns.def"
5770
5860
  sp_inc_of_sendish(ci);
5771
- #line 5772 "insns_info.inc"
5861
+ #line 5862 "insns_info.inc"
5772
5862
  }
5773
5863
 
5774
5864
  /* attr bool handles_sp @ opt_send_without_block(cd)(...)(val) */
@@ -5776,9 +5866,9 @@ bool
5776
5866
  attr_handles_sp_opt_send_without_block(MAYBE_UNUSED(CALL_DATA cd))
5777
5867
  {
5778
5868
  return
5779
- #line 886 "insns.def"
5869
+ #line 893 "insns.def"
5780
5870
  true;
5781
- #line 5782 "insns_info.inc"
5871
+ #line 5872 "insns_info.inc"
5782
5872
  }
5783
5873
 
5784
5874
  /* attr bool leaf @ opt_send_without_block(cd)(...)(val) */
@@ -5821,9 +5911,9 @@ rb_snum_t
5821
5911
  attr_sp_inc_opt_send_without_block(MAYBE_UNUSED(CALL_DATA cd))
5822
5912
  {
5823
5913
  return
5824
- #line 887 "insns.def"
5914
+ #line 894 "insns.def"
5825
5915
  sp_inc_of_sendish(cd->ci);
5826
- #line 5827 "insns_info.inc"
5916
+ #line 5917 "insns_info.inc"
5827
5917
  }
5828
5918
 
5829
5919
  /* attr rb_num_t width @ opt_send_without_block(cd)(...)(val) */
@@ -5852,9 +5942,9 @@ bool
5852
5942
  attr_leaf_objtostring(MAYBE_UNUSED(CALL_DATA cd))
5853
5943
  {
5854
5944
  return
5855
- #line 906 "insns.def"
5945
+ #line 913 "insns.def"
5856
5946
  false;
5857
- #line 5858 "insns_info.inc"
5947
+ #line 5948 "insns_info.inc"
5858
5948
  }
5859
5949
 
5860
5950
  /* attr const char* name @ objtostring(cd)(recv)(val) */
@@ -5899,6 +5989,186 @@ attr_width_objtostring(MAYBE_UNUSED(CALL_DATA cd))
5899
5989
  return 2;
5900
5990
  }
5901
5991
 
5992
+ /* attr enum ruby_vminsn_type bin @ opt_ary_freeze(ary, cd)()(val) */
5993
+ enum ruby_vminsn_type
5994
+ attr_bin_opt_ary_freeze(
5995
+ MAYBE_UNUSED(VALUE ary),
5996
+ MAYBE_UNUSED(CALL_DATA cd)
5997
+ )
5998
+ {
5999
+ return BIN(opt_ary_freeze);
6000
+ }
6001
+
6002
+ /* attr bool handles_sp @ opt_ary_freeze(ary, cd)()(val) */
6003
+ bool
6004
+ attr_handles_sp_opt_ary_freeze(
6005
+ MAYBE_UNUSED(VALUE ary),
6006
+ MAYBE_UNUSED(CALL_DATA cd)
6007
+ )
6008
+ {
6009
+ return false;
6010
+ }
6011
+
6012
+ /* attr bool leaf @ opt_ary_freeze(ary, cd)()(val) */
6013
+ bool
6014
+ attr_leaf_opt_ary_freeze(
6015
+ MAYBE_UNUSED(VALUE ary),
6016
+ MAYBE_UNUSED(CALL_DATA cd)
6017
+ )
6018
+ {
6019
+ return true;
6020
+ }
6021
+
6022
+ /* attr const char* name @ opt_ary_freeze(ary, cd)()(val) */
6023
+ const char*
6024
+ attr_name_opt_ary_freeze(
6025
+ MAYBE_UNUSED(VALUE ary),
6026
+ MAYBE_UNUSED(CALL_DATA cd)
6027
+ )
6028
+ {
6029
+ return insn_name(BIN(opt_ary_freeze));
6030
+ }
6031
+
6032
+ /* attr rb_num_t open @ opt_ary_freeze(ary, cd)()(val) */
6033
+ rb_num_t
6034
+ attr_open_opt_ary_freeze(
6035
+ MAYBE_UNUSED(VALUE ary),
6036
+ MAYBE_UNUSED(CALL_DATA cd)
6037
+ )
6038
+ {
6039
+ return 2;
6040
+ }
6041
+
6042
+ /* attr rb_num_t popn @ opt_ary_freeze(ary, cd)()(val) */
6043
+ rb_num_t
6044
+ attr_popn_opt_ary_freeze(
6045
+ MAYBE_UNUSED(VALUE ary),
6046
+ MAYBE_UNUSED(CALL_DATA cd)
6047
+ )
6048
+ {
6049
+ return 0;
6050
+ }
6051
+
6052
+ /* attr rb_num_t retn @ opt_ary_freeze(ary, cd)()(val) */
6053
+ rb_num_t
6054
+ attr_retn_opt_ary_freeze(
6055
+ MAYBE_UNUSED(VALUE ary),
6056
+ MAYBE_UNUSED(CALL_DATA cd)
6057
+ )
6058
+ {
6059
+ return 1;
6060
+ }
6061
+
6062
+ /* attr rb_snum_t sp_inc @ opt_ary_freeze(ary, cd)()(val) */
6063
+ rb_snum_t
6064
+ attr_sp_inc_opt_ary_freeze(
6065
+ MAYBE_UNUSED(VALUE ary),
6066
+ MAYBE_UNUSED(CALL_DATA cd)
6067
+ )
6068
+ {
6069
+ return 1;
6070
+ }
6071
+
6072
+ /* attr rb_num_t width @ opt_ary_freeze(ary, cd)()(val) */
6073
+ rb_num_t
6074
+ attr_width_opt_ary_freeze(
6075
+ MAYBE_UNUSED(VALUE ary),
6076
+ MAYBE_UNUSED(CALL_DATA cd)
6077
+ )
6078
+ {
6079
+ return 3;
6080
+ }
6081
+
6082
+ /* attr enum ruby_vminsn_type bin @ opt_hash_freeze(hash, cd)()(val) */
6083
+ enum ruby_vminsn_type
6084
+ attr_bin_opt_hash_freeze(
6085
+ MAYBE_UNUSED(VALUE hash),
6086
+ MAYBE_UNUSED(CALL_DATA cd)
6087
+ )
6088
+ {
6089
+ return BIN(opt_hash_freeze);
6090
+ }
6091
+
6092
+ /* attr bool handles_sp @ opt_hash_freeze(hash, cd)()(val) */
6093
+ bool
6094
+ attr_handles_sp_opt_hash_freeze(
6095
+ MAYBE_UNUSED(VALUE hash),
6096
+ MAYBE_UNUSED(CALL_DATA cd)
6097
+ )
6098
+ {
6099
+ return false;
6100
+ }
6101
+
6102
+ /* attr bool leaf @ opt_hash_freeze(hash, cd)()(val) */
6103
+ bool
6104
+ attr_leaf_opt_hash_freeze(
6105
+ MAYBE_UNUSED(VALUE hash),
6106
+ MAYBE_UNUSED(CALL_DATA cd)
6107
+ )
6108
+ {
6109
+ return true;
6110
+ }
6111
+
6112
+ /* attr const char* name @ opt_hash_freeze(hash, cd)()(val) */
6113
+ const char*
6114
+ attr_name_opt_hash_freeze(
6115
+ MAYBE_UNUSED(VALUE hash),
6116
+ MAYBE_UNUSED(CALL_DATA cd)
6117
+ )
6118
+ {
6119
+ return insn_name(BIN(opt_hash_freeze));
6120
+ }
6121
+
6122
+ /* attr rb_num_t open @ opt_hash_freeze(hash, cd)()(val) */
6123
+ rb_num_t
6124
+ attr_open_opt_hash_freeze(
6125
+ MAYBE_UNUSED(VALUE hash),
6126
+ MAYBE_UNUSED(CALL_DATA cd)
6127
+ )
6128
+ {
6129
+ return 2;
6130
+ }
6131
+
6132
+ /* attr rb_num_t popn @ opt_hash_freeze(hash, cd)()(val) */
6133
+ rb_num_t
6134
+ attr_popn_opt_hash_freeze(
6135
+ MAYBE_UNUSED(VALUE hash),
6136
+ MAYBE_UNUSED(CALL_DATA cd)
6137
+ )
6138
+ {
6139
+ return 0;
6140
+ }
6141
+
6142
+ /* attr rb_num_t retn @ opt_hash_freeze(hash, cd)()(val) */
6143
+ rb_num_t
6144
+ attr_retn_opt_hash_freeze(
6145
+ MAYBE_UNUSED(VALUE hash),
6146
+ MAYBE_UNUSED(CALL_DATA cd)
6147
+ )
6148
+ {
6149
+ return 1;
6150
+ }
6151
+
6152
+ /* attr rb_snum_t sp_inc @ opt_hash_freeze(hash, cd)()(val) */
6153
+ rb_snum_t
6154
+ attr_sp_inc_opt_hash_freeze(
6155
+ MAYBE_UNUSED(VALUE hash),
6156
+ MAYBE_UNUSED(CALL_DATA cd)
6157
+ )
6158
+ {
6159
+ return 1;
6160
+ }
6161
+
6162
+ /* attr rb_num_t width @ opt_hash_freeze(hash, cd)()(val) */
6163
+ rb_num_t
6164
+ attr_width_opt_hash_freeze(
6165
+ MAYBE_UNUSED(VALUE hash),
6166
+ MAYBE_UNUSED(CALL_DATA cd)
6167
+ )
6168
+ {
6169
+ return 3;
6170
+ }
6171
+
5902
6172
  /* attr enum ruby_vminsn_type bin @ opt_str_freeze(str, cd)()(val) */
5903
6173
  enum ruby_vminsn_type
5904
6174
  attr_bin_opt_str_freeze(
@@ -6142,11 +6412,130 @@ attr_width_opt_str_uminus(
6142
6412
  return 3;
6143
6413
  }
6144
6414
 
6415
+ /* attr enum ruby_vminsn_type bin @ opt_duparray_send(ary, method, argc)(...)(val) */
6416
+ enum ruby_vminsn_type
6417
+ attr_bin_opt_duparray_send(
6418
+ MAYBE_UNUSED(VALUE ary),
6419
+ MAYBE_UNUSED(ID method),
6420
+ MAYBE_UNUSED(rb_num_t argc)
6421
+ )
6422
+ {
6423
+ return BIN(opt_duparray_send);
6424
+ }
6425
+
6426
+ /* attr rb_snum_t comptime_sp_inc @ opt_duparray_send(ary, method, argc)(...)(val) */
6427
+ rb_snum_t
6428
+ attr_comptime_sp_inc_opt_duparray_send(
6429
+ MAYBE_UNUSED(VALUE ary),
6430
+ MAYBE_UNUSED(ID method),
6431
+ MAYBE_UNUSED(rb_num_t argc)
6432
+ )
6433
+ {
6434
+ return
6435
+ #line 1005 "insns.def"
6436
+ 1 - (rb_snum_t)argc;
6437
+ #line 6438 "insns_info.inc"
6438
+ }
6439
+
6440
+ /* attr bool handles_sp @ opt_duparray_send(ary, method, argc)(...)(val) */
6441
+ bool
6442
+ attr_handles_sp_opt_duparray_send(
6443
+ MAYBE_UNUSED(VALUE ary),
6444
+ MAYBE_UNUSED(ID method),
6445
+ MAYBE_UNUSED(rb_num_t argc)
6446
+ )
6447
+ {
6448
+ return false;
6449
+ }
6450
+
6451
+ /* attr bool leaf @ opt_duparray_send(ary, method, argc)(...)(val) */
6452
+ bool
6453
+ attr_leaf_opt_duparray_send(
6454
+ MAYBE_UNUSED(VALUE ary),
6455
+ MAYBE_UNUSED(ID method),
6456
+ MAYBE_UNUSED(rb_num_t argc)
6457
+ )
6458
+ {
6459
+ return
6460
+ #line 1003 "insns.def"
6461
+ false;
6462
+ #line 6463 "insns_info.inc"
6463
+ }
6464
+
6465
+ /* attr const char* name @ opt_duparray_send(ary, method, argc)(...)(val) */
6466
+ const char*
6467
+ attr_name_opt_duparray_send(
6468
+ MAYBE_UNUSED(VALUE ary),
6469
+ MAYBE_UNUSED(ID method),
6470
+ MAYBE_UNUSED(rb_num_t argc)
6471
+ )
6472
+ {
6473
+ return insn_name(BIN(opt_duparray_send));
6474
+ }
6475
+
6476
+ /* attr rb_num_t open @ opt_duparray_send(ary, method, argc)(...)(val) */
6477
+ rb_num_t
6478
+ attr_open_opt_duparray_send(
6479
+ MAYBE_UNUSED(VALUE ary),
6480
+ MAYBE_UNUSED(ID method),
6481
+ MAYBE_UNUSED(rb_num_t argc)
6482
+ )
6483
+ {
6484
+ return 3;
6485
+ }
6486
+
6487
+ /* attr rb_num_t popn @ opt_duparray_send(ary, method, argc)(...)(val) */
6488
+ rb_num_t
6489
+ attr_popn_opt_duparray_send(
6490
+ MAYBE_UNUSED(VALUE ary),
6491
+ MAYBE_UNUSED(ID method),
6492
+ MAYBE_UNUSED(rb_num_t argc)
6493
+ )
6494
+ {
6495
+ return 0;
6496
+ }
6497
+
6498
+ /* attr rb_num_t retn @ opt_duparray_send(ary, method, argc)(...)(val) */
6499
+ rb_num_t
6500
+ attr_retn_opt_duparray_send(
6501
+ MAYBE_UNUSED(VALUE ary),
6502
+ MAYBE_UNUSED(ID method),
6503
+ MAYBE_UNUSED(rb_num_t argc)
6504
+ )
6505
+ {
6506
+ return 1;
6507
+ }
6508
+
6509
+ /* attr rb_snum_t sp_inc @ opt_duparray_send(ary, method, argc)(...)(val) */
6510
+ rb_snum_t
6511
+ attr_sp_inc_opt_duparray_send(
6512
+ MAYBE_UNUSED(VALUE ary),
6513
+ MAYBE_UNUSED(ID method),
6514
+ MAYBE_UNUSED(rb_num_t argc)
6515
+ )
6516
+ {
6517
+ return
6518
+ #line 1004 "insns.def"
6519
+ 1 - (rb_snum_t)argc;
6520
+ #line 6521 "insns_info.inc"
6521
+ }
6522
+
6523
+ /* attr rb_num_t width @ opt_duparray_send(ary, method, argc)(...)(val) */
6524
+ rb_num_t
6525
+ attr_width_opt_duparray_send(
6526
+ MAYBE_UNUSED(VALUE ary),
6527
+ MAYBE_UNUSED(ID method),
6528
+ MAYBE_UNUSED(rb_num_t argc)
6529
+ )
6530
+ {
6531
+ return 4;
6532
+ }
6533
+
6145
6534
  /* attr enum ruby_vminsn_type bin @ opt_newarray_send(num, method)(...)(val) */
6146
6535
  enum ruby_vminsn_type
6147
6536
  attr_bin_opt_newarray_send(
6148
6537
  MAYBE_UNUSED(rb_num_t num),
6149
- MAYBE_UNUSED(ID method)
6538
+ MAYBE_UNUSED(rb_num_t method)
6150
6539
  )
6151
6540
  {
6152
6541
  return BIN(opt_newarray_send);
@@ -6156,20 +6545,20 @@ attr_bin_opt_newarray_send(
6156
6545
  rb_snum_t
6157
6546
  attr_comptime_sp_inc_opt_newarray_send(
6158
6547
  MAYBE_UNUSED(rb_num_t num),
6159
- MAYBE_UNUSED(ID method)
6548
+ MAYBE_UNUSED(rb_num_t method)
6160
6549
  )
6161
6550
  {
6162
6551
  return
6163
- #line 968 "insns.def"
6552
+ #line 1027 "insns.def"
6164
6553
  1 - (rb_snum_t)num;
6165
- #line 6166 "insns_info.inc"
6554
+ #line 6555 "insns_info.inc"
6166
6555
  }
6167
6556
 
6168
6557
  /* attr bool handles_sp @ opt_newarray_send(num, method)(...)(val) */
6169
6558
  bool
6170
6559
  attr_handles_sp_opt_newarray_send(
6171
6560
  MAYBE_UNUSED(rb_num_t num),
6172
- MAYBE_UNUSED(ID method)
6561
+ MAYBE_UNUSED(rb_num_t method)
6173
6562
  )
6174
6563
  {
6175
6564
  return false;
@@ -6179,20 +6568,20 @@ attr_handles_sp_opt_newarray_send(
6179
6568
  bool
6180
6569
  attr_leaf_opt_newarray_send(
6181
6570
  MAYBE_UNUSED(rb_num_t num),
6182
- MAYBE_UNUSED(ID method)
6571
+ MAYBE_UNUSED(rb_num_t method)
6183
6572
  )
6184
6573
  {
6185
6574
  return
6186
- #line 966 "insns.def"
6575
+ #line 1025 "insns.def"
6187
6576
  false;
6188
- #line 6189 "insns_info.inc"
6577
+ #line 6578 "insns_info.inc"
6189
6578
  }
6190
6579
 
6191
6580
  /* attr const char* name @ opt_newarray_send(num, method)(...)(val) */
6192
6581
  const char*
6193
6582
  attr_name_opt_newarray_send(
6194
6583
  MAYBE_UNUSED(rb_num_t num),
6195
- MAYBE_UNUSED(ID method)
6584
+ MAYBE_UNUSED(rb_num_t method)
6196
6585
  )
6197
6586
  {
6198
6587
  return insn_name(BIN(opt_newarray_send));
@@ -6202,7 +6591,7 @@ attr_name_opt_newarray_send(
6202
6591
  rb_num_t
6203
6592
  attr_open_opt_newarray_send(
6204
6593
  MAYBE_UNUSED(rb_num_t num),
6205
- MAYBE_UNUSED(ID method)
6594
+ MAYBE_UNUSED(rb_num_t method)
6206
6595
  )
6207
6596
  {
6208
6597
  return 2;
@@ -6212,7 +6601,7 @@ attr_open_opt_newarray_send(
6212
6601
  rb_num_t
6213
6602
  attr_popn_opt_newarray_send(
6214
6603
  MAYBE_UNUSED(rb_num_t num),
6215
- MAYBE_UNUSED(ID method)
6604
+ MAYBE_UNUSED(rb_num_t method)
6216
6605
  )
6217
6606
  {
6218
6607
  return 0;
@@ -6222,7 +6611,7 @@ attr_popn_opt_newarray_send(
6222
6611
  rb_num_t
6223
6612
  attr_retn_opt_newarray_send(
6224
6613
  MAYBE_UNUSED(rb_num_t num),
6225
- MAYBE_UNUSED(ID method)
6614
+ MAYBE_UNUSED(rb_num_t method)
6226
6615
  )
6227
6616
  {
6228
6617
  return 1;
@@ -6232,20 +6621,20 @@ attr_retn_opt_newarray_send(
6232
6621
  rb_snum_t
6233
6622
  attr_sp_inc_opt_newarray_send(
6234
6623
  MAYBE_UNUSED(rb_num_t num),
6235
- MAYBE_UNUSED(ID method)
6624
+ MAYBE_UNUSED(rb_num_t method)
6236
6625
  )
6237
6626
  {
6238
6627
  return
6239
- #line 967 "insns.def"
6628
+ #line 1026 "insns.def"
6240
6629
  1 - (rb_snum_t)num;
6241
- #line 6242 "insns_info.inc"
6630
+ #line 6631 "insns_info.inc"
6242
6631
  }
6243
6632
 
6244
6633
  /* attr rb_num_t width @ opt_newarray_send(num, method)(...)(val) */
6245
6634
  rb_num_t
6246
6635
  attr_width_opt_newarray_send(
6247
6636
  MAYBE_UNUSED(rb_num_t num),
6248
- MAYBE_UNUSED(ID method)
6637
+ MAYBE_UNUSED(rb_num_t method)
6249
6638
  )
6250
6639
  {
6251
6640
  return 3;
@@ -6269,9 +6658,9 @@ attr_comptime_sp_inc_invokesuper(
6269
6658
  )
6270
6659
  {
6271
6660
  return
6272
- #line 992 "insns.def"
6661
+ #line 1060 "insns.def"
6273
6662
  sp_inc_of_sendish(ci);
6274
- #line 6275 "insns_info.inc"
6663
+ #line 6664 "insns_info.inc"
6275
6664
  }
6276
6665
 
6277
6666
  /* attr bool handles_sp @ invokesuper(cd, blockiseq)(...)(val) */
@@ -6342,9 +6731,9 @@ attr_sp_inc_invokesuper(
6342
6731
  )
6343
6732
  {
6344
6733
  return
6345
- #line 991 "insns.def"
6734
+ #line 1059 "insns.def"
6346
6735
  sp_inc_of_sendish(cd->ci);
6347
- #line 6348 "insns_info.inc"
6736
+ #line 6737 "insns_info.inc"
6348
6737
  }
6349
6738
 
6350
6739
  /* attr rb_num_t width @ invokesuper(cd, blockiseq)(...)(val) */
@@ -6357,6 +6746,112 @@ attr_width_invokesuper(
6357
6746
  return 3;
6358
6747
  }
6359
6748
 
6749
+ /* attr enum ruby_vminsn_type bin @ invokesuperforward(cd, blockiseq)(...)(val) */
6750
+ enum ruby_vminsn_type
6751
+ attr_bin_invokesuperforward(
6752
+ MAYBE_UNUSED(CALL_DATA cd),
6753
+ MAYBE_UNUSED(ISEQ blockiseq)
6754
+ )
6755
+ {
6756
+ return BIN(invokesuperforward);
6757
+ }
6758
+
6759
+ /* attr rb_snum_t comptime_sp_inc @ invokesuperforward(cd, blockiseq)(...)(val) */
6760
+ rb_snum_t
6761
+ attr_comptime_sp_inc_invokesuperforward(
6762
+ MAYBE_UNUSED(CALL_INFO ci),
6763
+ MAYBE_UNUSED(ISEQ blockiseq)
6764
+ )
6765
+ {
6766
+ return
6767
+ #line 1079 "insns.def"
6768
+ sp_inc_of_sendish(ci);
6769
+ #line 6770 "insns_info.inc"
6770
+ }
6771
+
6772
+ /* attr bool handles_sp @ invokesuperforward(cd, blockiseq)(...)(val) */
6773
+ bool
6774
+ attr_handles_sp_invokesuperforward(
6775
+ MAYBE_UNUSED(CALL_DATA cd),
6776
+ MAYBE_UNUSED(ISEQ blockiseq)
6777
+ )
6778
+ {
6779
+ return true;
6780
+ }
6781
+
6782
+ /* attr bool leaf @ invokesuperforward(cd, blockiseq)(...)(val) */
6783
+ bool
6784
+ attr_leaf_invokesuperforward(
6785
+ MAYBE_UNUSED(CALL_DATA cd),
6786
+ MAYBE_UNUSED(ISEQ blockiseq)
6787
+ )
6788
+ {
6789
+ return false;
6790
+ }
6791
+
6792
+ /* attr const char* name @ invokesuperforward(cd, blockiseq)(...)(val) */
6793
+ const char*
6794
+ attr_name_invokesuperforward(
6795
+ MAYBE_UNUSED(CALL_DATA cd),
6796
+ MAYBE_UNUSED(ISEQ blockiseq)
6797
+ )
6798
+ {
6799
+ return insn_name(BIN(invokesuperforward));
6800
+ }
6801
+
6802
+ /* attr rb_num_t open @ invokesuperforward(cd, blockiseq)(...)(val) */
6803
+ rb_num_t
6804
+ attr_open_invokesuperforward(
6805
+ MAYBE_UNUSED(CALL_DATA cd),
6806
+ MAYBE_UNUSED(ISEQ blockiseq)
6807
+ )
6808
+ {
6809
+ return 2;
6810
+ }
6811
+
6812
+ /* attr rb_num_t popn @ invokesuperforward(cd, blockiseq)(...)(val) */
6813
+ rb_num_t
6814
+ attr_popn_invokesuperforward(
6815
+ MAYBE_UNUSED(CALL_DATA cd),
6816
+ MAYBE_UNUSED(ISEQ blockiseq)
6817
+ )
6818
+ {
6819
+ return 0;
6820
+ }
6821
+
6822
+ /* attr rb_num_t retn @ invokesuperforward(cd, blockiseq)(...)(val) */
6823
+ rb_num_t
6824
+ attr_retn_invokesuperforward(
6825
+ MAYBE_UNUSED(CALL_DATA cd),
6826
+ MAYBE_UNUSED(ISEQ blockiseq)
6827
+ )
6828
+ {
6829
+ return 1;
6830
+ }
6831
+
6832
+ /* attr rb_snum_t sp_inc @ invokesuperforward(cd, blockiseq)(...)(val) */
6833
+ rb_snum_t
6834
+ attr_sp_inc_invokesuperforward(
6835
+ MAYBE_UNUSED(CALL_DATA cd),
6836
+ MAYBE_UNUSED(ISEQ blockiseq)
6837
+ )
6838
+ {
6839
+ return
6840
+ #line 1078 "insns.def"
6841
+ sp_inc_of_sendish(cd->ci);
6842
+ #line 6843 "insns_info.inc"
6843
+ }
6844
+
6845
+ /* attr rb_num_t width @ invokesuperforward(cd, blockiseq)(...)(val) */
6846
+ rb_num_t
6847
+ attr_width_invokesuperforward(
6848
+ MAYBE_UNUSED(CALL_DATA cd),
6849
+ MAYBE_UNUSED(ISEQ blockiseq)
6850
+ )
6851
+ {
6852
+ return 3;
6853
+ }
6854
+
6360
6855
  /* attr enum ruby_vminsn_type bin @ invokeblock(cd)(...)(val) */
6361
6856
  enum ruby_vminsn_type
6362
6857
  attr_bin_invokeblock(MAYBE_UNUSED(CALL_DATA cd))
@@ -6369,9 +6864,9 @@ rb_snum_t
6369
6864
  attr_comptime_sp_inc_invokeblock(MAYBE_UNUSED(CALL_INFO ci))
6370
6865
  {
6371
6866
  return
6372
- #line 1012 "insns.def"
6867
+ #line 1107 "insns.def"
6373
6868
  sp_inc_of_invokeblock(ci);
6374
- #line 6375 "insns_info.inc"
6869
+ #line 6870 "insns_info.inc"
6375
6870
  }
6376
6871
 
6377
6872
  /* attr bool handles_sp @ invokeblock(cd)(...)(val) */
@@ -6379,9 +6874,9 @@ bool
6379
6874
  attr_handles_sp_invokeblock(MAYBE_UNUSED(CALL_DATA cd))
6380
6875
  {
6381
6876
  return
6382
- #line 1010 "insns.def"
6877
+ #line 1105 "insns.def"
6383
6878
  true;
6384
- #line 6385 "insns_info.inc"
6879
+ #line 6880 "insns_info.inc"
6385
6880
  }
6386
6881
 
6387
6882
  /* attr bool leaf @ invokeblock(cd)(...)(val) */
@@ -6424,9 +6919,9 @@ rb_snum_t
6424
6919
  attr_sp_inc_invokeblock(MAYBE_UNUSED(CALL_DATA cd))
6425
6920
  {
6426
6921
  return
6427
- #line 1011 "insns.def"
6922
+ #line 1106 "insns.def"
6428
6923
  sp_inc_of_invokeblock(cd->ci);
6429
- #line 6430 "insns_info.inc"
6924
+ #line 6925 "insns_info.inc"
6430
6925
  }
6431
6926
 
6432
6927
  /* attr rb_num_t width @ invokeblock(cd)(...)(val) */
@@ -6448,9 +6943,9 @@ bool
6448
6943
  attr_handles_sp_leave(void)
6449
6944
  {
6450
6945
  return
6451
- #line 1034 "insns.def"
6946
+ #line 1129 "insns.def"
6452
6947
  true;
6453
- #line 6454 "insns_info.inc"
6948
+ #line 6949 "insns_info.inc"
6454
6949
  }
6455
6950
 
6456
6951
  /* attr bool leaf @ leave()(val)(val) */
@@ -6458,9 +6953,9 @@ bool
6458
6953
  attr_leaf_leave(void)
6459
6954
  {
6460
6955
  return
6461
- #line 1033 "insns.def"
6956
+ #line 1128 "insns.def"
6462
6957
  false;
6463
- #line 6464 "insns_info.inc"
6958
+ #line 6959 "insns_info.inc"
6464
6959
  }
6465
6960
 
6466
6961
  /* attr const char* name @ leave()(val)(val) */
@@ -6524,9 +7019,9 @@ bool
6524
7019
  attr_leaf_throw(MAYBE_UNUSED(rb_num_t throw_state))
6525
7020
  {
6526
7021
  return
6527
- #line 1067 "insns.def"
7022
+ #line 1162 "insns.def"
6528
7023
  false;
6529
- #line 6530 "insns_info.inc"
7024
+ #line 7025 "insns_info.inc"
6530
7025
  }
6531
7026
 
6532
7027
  /* attr const char* name @ throw(throw_state)(throwobj)(val) */
@@ -6590,9 +7085,9 @@ bool
6590
7085
  attr_leaf_jump(MAYBE_UNUSED(OFFSET dst))
6591
7086
  {
6592
7087
  return
6593
- #line 1085 "insns.def"
7088
+ #line 1180 "insns.def"
6594
7089
  leafness_of_check_ints;
6595
- #line 6596 "insns_info.inc"
7090
+ #line 7091 "insns_info.inc"
6596
7091
  }
6597
7092
 
6598
7093
  /* attr const char* name @ jump(dst)()() */
@@ -6656,9 +7151,9 @@ bool
6656
7151
  attr_leaf_branchif(MAYBE_UNUSED(OFFSET dst))
6657
7152
  {
6658
7153
  return
6659
- #line 1098 "insns.def"
7154
+ #line 1193 "insns.def"
6660
7155
  leafness_of_check_ints;
6661
- #line 6662 "insns_info.inc"
7156
+ #line 7157 "insns_info.inc"
6662
7157
  }
6663
7158
 
6664
7159
  /* attr const char* name @ branchif(dst)(val)() */
@@ -6722,9 +7217,9 @@ bool
6722
7217
  attr_leaf_branchunless(MAYBE_UNUSED(OFFSET dst))
6723
7218
  {
6724
7219
  return
6725
- #line 1113 "insns.def"
7220
+ #line 1208 "insns.def"
6726
7221
  leafness_of_check_ints;
6727
- #line 6728 "insns_info.inc"
7222
+ #line 7223 "insns_info.inc"
6728
7223
  }
6729
7224
 
6730
7225
  /* attr const char* name @ branchunless(dst)(val)() */
@@ -6788,9 +7283,9 @@ bool
6788
7283
  attr_leaf_branchnil(MAYBE_UNUSED(OFFSET dst))
6789
7284
  {
6790
7285
  return
6791
- #line 1128 "insns.def"
7286
+ #line 1223 "insns.def"
6792
7287
  leafness_of_check_ints;
6793
- #line 6794 "insns_info.inc"
7288
+ #line 7289 "insns_info.inc"
6794
7289
  }
6795
7290
 
6796
7291
  /* attr const char* name @ branchnil(dst)(val)() */
@@ -7003,9 +7498,9 @@ attr_sp_inc_opt_case_dispatch(
7003
7498
  )
7004
7499
  {
7005
7500
  return
7006
- #line 1156 "insns.def"
7501
+ #line 1251 "insns.def"
7007
7502
  -1;
7008
- #line 7009 "insns_info.inc"
7503
+ #line 7504 "insns_info.inc"
7009
7504
  }
7010
7505
 
7011
7506
  /* attr rb_num_t width @ opt_case_dispatch(hash, else_offset)(..., key)() */
@@ -7226,9 +7721,9 @@ bool
7226
7721
  attr_leaf_opt_div(MAYBE_UNUSED(CALL_DATA cd))
7227
7722
  {
7228
7723
  return
7229
- #line 1217 "insns.def"
7724
+ #line 1312 "insns.def"
7230
7725
  false;
7231
- #line 7232 "insns_info.inc"
7726
+ #line 7727 "insns_info.inc"
7232
7727
  }
7233
7728
 
7234
7729
  /* attr const char* name @ opt_div(cd)(recv, obj)(val) */
@@ -7292,9 +7787,9 @@ bool
7292
7787
  attr_leaf_opt_mod(MAYBE_UNUSED(CALL_DATA cd))
7293
7788
  {
7294
7789
  return
7295
- #line 1233 "insns.def"
7790
+ #line 1328 "insns.def"
7296
7791
  false;
7297
- #line 7298 "insns_info.inc"
7792
+ #line 7793 "insns_info.inc"
7298
7793
  }
7299
7794
 
7300
7795
  /* attr const char* name @ opt_mod(cd)(recv, obj)(val) */
@@ -7763,9 +8258,9 @@ bool
7763
8258
  attr_leaf_opt_ltlt(MAYBE_UNUSED(CALL_DATA cd))
7764
8259
  {
7765
8260
  return
7766
- #line 1335 "insns.def"
8261
+ #line 1430 "insns.def"
7767
8262
  false;
7768
- #line 7769 "insns_info.inc"
8263
+ #line 8264 "insns_info.inc"
7769
8264
  }
7770
8265
 
7771
8266
  /* attr const char* name @ opt_ltlt(cd)(recv, obj)(val) */
@@ -7955,9 +8450,9 @@ bool
7955
8450
  attr_leaf_opt_aref(MAYBE_UNUSED(CALL_DATA cd))
7956
8451
  {
7957
8452
  return
7958
- #line 1382 "insns.def"
8453
+ #line 1477 "insns.def"
7959
8454
  false;
7960
- #line 7961 "insns_info.inc"
8455
+ #line 8456 "insns_info.inc"
7961
8456
  }
7962
8457
 
7963
8458
  /* attr const char* name @ opt_aref(cd)(recv, obj)(val) */
@@ -8021,9 +8516,9 @@ bool
8021
8516
  attr_leaf_opt_aset(MAYBE_UNUSED(CALL_DATA cd))
8022
8517
  {
8023
8518
  return
8024
- #line 1399 "insns.def"
8519
+ #line 1494 "insns.def"
8025
8520
  false;
8026
- #line 8027 "insns_info.inc"
8521
+ #line 8522 "insns_info.inc"
8027
8522
  }
8028
8523
 
8029
8524
  /* attr const char* name @ opt_aset(cd)(recv, obj, set)(val) */
@@ -8096,9 +8591,9 @@ attr_leaf_opt_aset_with(
8096
8591
  )
8097
8592
  {
8098
8593
  return
8099
- #line 1415 "insns.def"
8594
+ #line 1510 "insns.def"
8100
8595
  false;
8101
- #line 8102 "insns_info.inc"
8596
+ #line 8597 "insns_info.inc"
8102
8597
  }
8103
8598
 
8104
8599
  /* attr const char* name @ opt_aset_with(key, cd)(recv, val)(val) */
@@ -8189,9 +8684,9 @@ attr_leaf_opt_aref_with(
8189
8684
  )
8190
8685
  {
8191
8686
  return
8192
- #line 1436 "insns.def"
8687
+ #line 1531 "insns.def"
8193
8688
  false;
8194
- #line 8195 "insns_info.inc"
8689
+ #line 8690 "insns_info.inc"
8195
8690
  }
8196
8691
 
8197
8692
  /* attr const char* name @ opt_aref_with(key, cd)(recv)(val) */
@@ -8588,9 +9083,9 @@ bool
8588
9083
  attr_leaf_opt_regexpmatch2(MAYBE_UNUSED(CALL_DATA cd))
8589
9084
  {
8590
9085
  return
8591
- #line 1522 "insns.def"
9086
+ #line 1617 "insns.def"
8592
9087
  false;
8593
- #line 8594 "insns_info.inc"
9088
+ #line 9089 "insns_info.inc"
8594
9089
  }
8595
9090
 
8596
9091
  /* attr const char* name @ opt_regexpmatch2(cd)(obj2, obj1)(val) */
@@ -8654,9 +9149,9 @@ bool
8654
9149
  attr_leaf_invokebuiltin(MAYBE_UNUSED(RB_BUILTIN bf))
8655
9150
  {
8656
9151
  return
8657
- #line 1537 "insns.def"
9152
+ #line 1632 "insns.def"
8658
9153
  false;
8659
- #line 8660 "insns_info.inc"
9154
+ #line 9155 "insns_info.inc"
8660
9155
  }
8661
9156
 
8662
9157
  /* attr const char* name @ invokebuiltin(bf)(...)(val) */
@@ -8692,9 +9187,9 @@ rb_snum_t
8692
9187
  attr_sp_inc_invokebuiltin(MAYBE_UNUSED(RB_BUILTIN bf))
8693
9188
  {
8694
9189
  return
8695
- #line 1538 "insns.def"
9190
+ #line 1633 "insns.def"
8696
9191
  1 - bf->argc;
8697
- #line 8698 "insns_info.inc"
9192
+ #line 9193 "insns_info.inc"
8698
9193
  }
8699
9194
 
8700
9195
  /* attr rb_num_t width @ invokebuiltin(bf)(...)(val) */
@@ -8732,9 +9227,9 @@ attr_leaf_opt_invokebuiltin_delegate(
8732
9227
  )
8733
9228
  {
8734
9229
  return
8735
- #line 1549 "insns.def"
9230
+ #line 1644 "insns.def"
8736
9231
  false;
8737
- #line 8738 "insns_info.inc"
9232
+ #line 9233 "insns_info.inc"
8738
9233
  }
8739
9234
 
8740
9235
  /* attr const char* name @ opt_invokebuiltin_delegate(bf, index)()(val) */
@@ -8825,9 +9320,9 @@ attr_leaf_opt_invokebuiltin_delegate_leave(
8825
9320
  )
8826
9321
  {
8827
9322
  return
8828
- #line 1560 "insns.def"
9323
+ #line 1655 "insns.def"
8829
9324
  false;
8830
- #line 8831 "insns_info.inc"
9325
+ #line 9326 "insns_info.inc"
8831
9326
  }
8832
9327
 
8833
9328
  /* attr const char* name @ opt_invokebuiltin_delegate_leave(bf, index)()(val) */
@@ -9278,17 +9773,18 @@ comptime_insn_stack_increase_dispatch(enum ruby_vminsn_type insn, const VALUE *o
9278
9773
  0, 1, -1, 1, -1, 1, 1, -1,
9279
9774
  1, -1, 1, -1, 1, -1, -2, 1,
9280
9775
  -1, 1, 1, 1, 1, 1, 1, -127,
9281
- -1, -127, 0, -127, -127, -1, 1, 1,
9282
- -127, -1, -1, -127, 0, 0, -127, -1,
9283
- -1, 1, -127, 0, -127, -127, -127, -127,
9284
- 0, 1, -1, 1, 0, -1, 0, -1,
9285
- -127, -127, 0, 1, 0, 1, -127, -127,
9286
- -127, 0, 0, 0, -1, -1, -1, 1,
9287
- -127, -1, -1, -1, -1, -1, -1, -1,
9776
+ -1, -127, 0, -127, -1, 1, 1, -127,
9777
+ -1, -1, -127, 0, 0, -127, -1, -1,
9778
+ 1, -127, 0, -127, -127, -127, -127, 0,
9779
+ 1, -1, 1, 0, -1, 0, -1, -127,
9780
+ -127, -127, 0, 1, 1, 1, 0, 1,
9781
+ -127, -127, -127, -127, -127, 0, 0, 0,
9782
+ -1, -1, -1, 1, -127, -1, -1, -1,
9288
9783
  -1, -1, -1, -1, -1, -1, -1, -1,
9289
- -2, -1, 0, 0, 0, 0, 0, 0,
9290
- -1, -127, 1, 1, 1, 1, -1, -1,
9291
- 1, 1, 0, 0, 0, 0, 0, 0,
9784
+ -1, -1, -1, -1, -2, -1, 0, 0,
9785
+ 0, 0, 0, 0, -1, -127, 1, 1,
9786
+ 1, 1, -1, -1, 1, 1, 0, 0,
9787
+ 0, 0, 0, 0, 0, 0, 0, 0,
9292
9788
  0, 0, 0, 0, 0, 0, 0, 0,
9293
9789
  0, 0, 0, 0, 0, 0, 0, 0,
9294
9790
  0, 0, 0, 0, 0, 0, 0, 0,
@@ -9318,8 +9814,6 @@ comptime_insn_stack_increase_dispatch(enum ruby_vminsn_type insn, const VALUE *o
9318
9814
  return attr_sp_inc_toregexp(NUM2LONG(opes[0]), NUM2LONG(opes[1]));
9319
9815
  case BIN(newarray):
9320
9816
  return attr_sp_inc_newarray(NUM2LONG(opes[0]));
9321
- case BIN(newarraykwsplat):
9322
- return attr_sp_inc_newarraykwsplat(NUM2LONG(opes[0]));
9323
9817
  case BIN(expandarray):
9324
9818
  return attr_sp_inc_expandarray(NUM2LONG(opes[0]), NUM2LONG(opes[1]));
9325
9819
  case BIN(pushtoarray):
@@ -9338,12 +9832,18 @@ comptime_insn_stack_increase_dispatch(enum ruby_vminsn_type insn, const VALUE *o
9338
9832
  return attr_sp_inc_adjuststack(NUM2LONG(opes[0]));
9339
9833
  case BIN(send):
9340
9834
  return attr_comptime_sp_inc_send((CALL_INFO)(opes[0]), (ISEQ)(opes[1]));
9835
+ case BIN(sendforward):
9836
+ return attr_comptime_sp_inc_sendforward((CALL_INFO)(opes[0]), (ISEQ)(opes[1]));
9341
9837
  case BIN(opt_send_without_block):
9342
9838
  return attr_comptime_sp_inc_opt_send_without_block((CALL_INFO)(opes[0]));
9839
+ case BIN(opt_duparray_send):
9840
+ return attr_comptime_sp_inc_opt_duparray_send(opes[0], SYM2ID(opes[1]), NUM2LONG(opes[2]));
9343
9841
  case BIN(opt_newarray_send):
9344
- return attr_comptime_sp_inc_opt_newarray_send(NUM2LONG(opes[0]), SYM2ID(opes[1]));
9842
+ return attr_comptime_sp_inc_opt_newarray_send(NUM2LONG(opes[0]), NUM2LONG(opes[1]));
9345
9843
  case BIN(invokesuper):
9346
9844
  return attr_comptime_sp_inc_invokesuper((CALL_INFO)(opes[0]), (ISEQ)(opes[1]));
9845
+ case BIN(invokesuperforward):
9846
+ return attr_comptime_sp_inc_invokesuperforward((CALL_INFO)(opes[0]), (ISEQ)(opes[1]));
9347
9847
  case BIN(invokeblock):
9348
9848
  return attr_comptime_sp_inc_invokeblock((CALL_INFO)(opes[0]));
9349
9849
  case BIN(opt_case_dispatch):
@@ -9393,10 +9893,13 @@ insn_may_depend_on_sp_or_pc(int insn, const VALUE *opes)
9393
9893
  case BIN(definemethod):
9394
9894
  case BIN(definesmethod):
9395
9895
  case BIN(send):
9896
+ case BIN(sendforward):
9396
9897
  case BIN(opt_send_without_block):
9397
9898
  case BIN(objtostring):
9899
+ case BIN(opt_duparray_send):
9398
9900
  case BIN(opt_newarray_send):
9399
9901
  case BIN(invokesuper):
9902
+ case BIN(invokesuperforward):
9400
9903
  case BIN(invokeblock):
9401
9904
  case BIN(leave):
9402
9905
  case BIN(throw):
@@ -9444,7 +9947,6 @@ insn_may_depend_on_sp_or_pc(int insn, const VALUE *opes)
9444
9947
  case BIN(trace_toregexp):
9445
9948
  case BIN(trace_intern):
9446
9949
  case BIN(trace_newarray):
9447
- case BIN(trace_newarraykwsplat):
9448
9950
  case BIN(trace_pushtoarraykwsplat):
9449
9951
  case BIN(trace_duparray):
9450
9952
  case BIN(trace_duphash):
@@ -9473,13 +9975,18 @@ insn_may_depend_on_sp_or_pc(int insn, const VALUE *opes)
9473
9975
  case BIN(trace_definemethod):
9474
9976
  case BIN(trace_definesmethod):
9475
9977
  case BIN(trace_send):
9978
+ case BIN(trace_sendforward):
9476
9979
  case BIN(trace_opt_send_without_block):
9477
9980
  case BIN(trace_objtostring):
9981
+ case BIN(trace_opt_ary_freeze):
9982
+ case BIN(trace_opt_hash_freeze):
9478
9983
  case BIN(trace_opt_str_freeze):
9479
9984
  case BIN(trace_opt_nil_p):
9480
9985
  case BIN(trace_opt_str_uminus):
9986
+ case BIN(trace_opt_duparray_send):
9481
9987
  case BIN(trace_opt_newarray_send):
9482
9988
  case BIN(trace_invokesuper):
9989
+ case BIN(trace_invokesuperforward):
9483
9990
  case BIN(trace_invokeblock):
9484
9991
  case BIN(trace_leave):
9485
9992
  case BIN(trace_throw):