debase-ruby_core_source 3.3.5 → 3.4.1

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 (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
@@ -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 463 "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 475 "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 486 "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 508 "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 521 "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 535 "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 546 "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 558 "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 569 "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 586 "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 606 "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 620 "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 631 "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 642 "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 666 "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 696 "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 707 "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 733 "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 747 "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 767 "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 777 "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 787 "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,7 +2246,7 @@ 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 803 "insns.def"
2296
2250
  {
2297
2251
  VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
2298
2252
 
@@ -2308,7 +2262,7 @@ INSN_ENTRY(defineclass)
2308
2262
  RESTORE_REGS();
2309
2263
  NEXT_INSN();
2310
2264
  }
2311
- # line 2312 "vm.inc"
2265
+ # line 2266 "vm.inc"
2312
2266
  # undef NAME_OF_CURRENT_INSN
2313
2267
 
2314
2268
  /* ### Instruction trailers. ### */
@@ -2344,11 +2298,11 @@ INSN_ENTRY(definemethod)
2344
2298
 
2345
2299
  /* ### Here we do the instruction body. ### */
2346
2300
  # define NAME_OF_CURRENT_INSN definemethod
2347
- # line 844 "insns.def"
2301
+ # line 824 "insns.def"
2348
2302
  {
2349
2303
  vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);
2350
2304
  }
2351
- # line 2352 "vm.inc"
2305
+ # line 2306 "vm.inc"
2352
2306
  # undef NAME_OF_CURRENT_INSN
2353
2307
 
2354
2308
  /* ### Instruction trailers. ### */
@@ -2384,11 +2338,11 @@ INSN_ENTRY(definesmethod)
2384
2338
 
2385
2339
  /* ### Here we do the instruction body. ### */
2386
2340
  # define NAME_OF_CURRENT_INSN definesmethod
2387
- # line 853 "insns.def"
2341
+ # line 833 "insns.def"
2388
2342
  {
2389
2343
  vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);
2390
2344
  }
2391
- # line 2392 "vm.inc"
2345
+ # line 2346 "vm.inc"
2392
2346
  # undef NAME_OF_CURRENT_INSN
2393
2347
 
2394
2348
  /* ### Instruction trailers. ### */
@@ -2424,7 +2378,7 @@ INSN_ENTRY(send)
2424
2378
 
2425
2379
  /* ### Here we do the instruction body. ### */
2426
2380
  # define NAME_OF_CURRENT_INSN send
2427
- # line 869 "insns.def"
2381
+ # line 849 "insns.def"
2428
2382
  {
2429
2383
  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, false);
2430
2384
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
@@ -2435,7 +2389,7 @@ INSN_ENTRY(send)
2435
2389
  NEXT_INSN();
2436
2390
  }
2437
2391
  }
2438
- # line 2439 "vm.inc"
2392
+ # line 2393 "vm.inc"
2439
2393
  # undef NAME_OF_CURRENT_INSN
2440
2394
 
2441
2395
  /* ### Instruction trailers. ### */
@@ -2448,6 +2402,62 @@ INSN_ENTRY(send)
2448
2402
  END_INSN(send);
2449
2403
  }
2450
2404
 
2405
+ /* insn sendforward(cd, blockiseq)(...)(val) */
2406
+ INSN_ENTRY(sendforward)
2407
+ {
2408
+ /* ### Declare that we have just entered into an instruction. ### */
2409
+ START_OF_ORIGINAL_INSN(sendforward);
2410
+ DEBUG_ENTER_INSN("sendforward");
2411
+
2412
+ /* ### Declare and assign variables. ### */
2413
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2414
+ ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
2415
+ # define INSN_ATTR(x) attr_ ## x ## _sendforward(cd, blockiseq)
2416
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2417
+ VALUE val;
2418
+
2419
+ /* ### Instruction preambles. ### */
2420
+ ADD_PC(INSN_ATTR(width));
2421
+ POPN(INSN_ATTR(popn));
2422
+ SETUP_CANARY(leaf);
2423
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2424
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
2425
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, blockiseq);
2426
+
2427
+ /* ### Here we do the instruction body. ### */
2428
+ # define NAME_OF_CURRENT_INSN sendforward
2429
+ # line 868 "insns.def"
2430
+ {
2431
+ struct rb_forwarding_call_data adjusted_cd;
2432
+ struct rb_callinfo adjusted_ci;
2433
+
2434
+ VALUE bh = vm_caller_setup_fwd_args(GET_EC(), GET_CFP(), cd, blockiseq, 0, &adjusted_cd, &adjusted_ci);
2435
+
2436
+ val = vm_sendish(ec, GET_CFP(), &adjusted_cd.cd, bh, mexp_search_method);
2437
+ JIT_EXEC(ec, val);
2438
+
2439
+ if (cd->cc != adjusted_cd.cd.cc && vm_cc_markable(adjusted_cd.cd.cc)) {
2440
+ RB_OBJ_WRITE(GET_ISEQ(), &cd->cc, adjusted_cd.cd.cc);
2441
+ }
2442
+
2443
+ if (UNDEF_P(val)) {
2444
+ RESTORE_REGS();
2445
+ NEXT_INSN();
2446
+ }
2447
+ }
2448
+ # line 2449 "vm.inc"
2449
+ # undef NAME_OF_CURRENT_INSN
2450
+
2451
+ /* ### Instruction trailers. ### */
2452
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2453
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2454
+ PUSH(val);
2455
+ # undef INSN_ATTR
2456
+
2457
+ /* ### Leave the instruction. ### */
2458
+ END_INSN(sendforward);
2459
+ }
2460
+
2451
2461
  /* insn opt_send_without_block(cd)(...)(val) */
2452
2462
  INSN_ENTRY(opt_send_without_block)
2453
2463
  {
@@ -2470,7 +2480,7 @@ INSN_ENTRY(opt_send_without_block)
2470
2480
 
2471
2481
  /* ### Here we do the instruction body. ### */
2472
2482
  # define NAME_OF_CURRENT_INSN opt_send_without_block
2473
- # line 889 "insns.def"
2483
+ # line 896 "insns.def"
2474
2484
  {
2475
2485
  VALUE bh = VM_BLOCK_HANDLER_NONE;
2476
2486
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
@@ -2481,7 +2491,7 @@ INSN_ENTRY(opt_send_without_block)
2481
2491
  NEXT_INSN();
2482
2492
  }
2483
2493
  }
2484
- # line 2485 "vm.inc"
2494
+ # line 2495 "vm.inc"
2485
2495
  # undef NAME_OF_CURRENT_INSN
2486
2496
 
2487
2497
  /* ### Instruction trailers. ### */
@@ -2516,7 +2526,7 @@ INSN_ENTRY(objtostring)
2516
2526
 
2517
2527
  /* ### Here we do the instruction body. ### */
2518
2528
  # define NAME_OF_CURRENT_INSN objtostring
2519
- # line 907 "insns.def"
2529
+ # line 914 "insns.def"
2520
2530
  {
2521
2531
  val = vm_objtostring(GET_ISEQ(), recv, cd);
2522
2532
 
@@ -2524,7 +2534,7 @@ INSN_ENTRY(objtostring)
2524
2534
  CALL_SIMPLE_METHOD();
2525
2535
  }
2526
2536
  }
2527
- # line 2528 "vm.inc"
2537
+ # line 2538 "vm.inc"
2528
2538
  # undef NAME_OF_CURRENT_INSN
2529
2539
 
2530
2540
  /* ### Instruction trailers. ### */
@@ -2540,6 +2550,104 @@ INSN_ENTRY(objtostring)
2540
2550
  END_INSN(objtostring);
2541
2551
  }
2542
2552
 
2553
+ /* insn opt_ary_freeze(ary, cd)()(val) */
2554
+ INSN_ENTRY(opt_ary_freeze)
2555
+ {
2556
+ /* ### Declare that we have just entered into an instruction. ### */
2557
+ START_OF_ORIGINAL_INSN(opt_ary_freeze);
2558
+ DEBUG_ENTER_INSN("opt_ary_freeze");
2559
+
2560
+ /* ### Declare and assign variables. ### */
2561
+ VALUE ary = (VALUE)GET_OPERAND(1);
2562
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
2563
+ # define INSN_ATTR(x) attr_ ## x ## _opt_ary_freeze(ary, cd)
2564
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2565
+ VALUE val;
2566
+
2567
+ /* ### Instruction preambles. ### */
2568
+ ADD_PC(INSN_ATTR(width));
2569
+ SETUP_CANARY(leaf);
2570
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2571
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ary);
2572
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
2573
+
2574
+ /* ### Here we do the instruction body. ### */
2575
+ # define NAME_OF_CURRENT_INSN opt_ary_freeze
2576
+ # line 927 "insns.def"
2577
+ {
2578
+ val = vm_opt_ary_freeze(ary, BOP_FREEZE, idFreeze);
2579
+
2580
+ if (UNDEF_P(val)) {
2581
+ RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
2582
+ PUSH(rb_ary_resurrect(ary));
2583
+ CALL_SIMPLE_METHOD();
2584
+ }
2585
+ }
2586
+ # line 2587 "vm.inc"
2587
+ # undef NAME_OF_CURRENT_INSN
2588
+
2589
+ /* ### Instruction trailers. ### */
2590
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2591
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2592
+ INC_SP(INSN_ATTR(sp_inc));
2593
+ TOPN(0) = val;
2594
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2595
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2596
+ # undef INSN_ATTR
2597
+
2598
+ /* ### Leave the instruction. ### */
2599
+ END_INSN(opt_ary_freeze);
2600
+ }
2601
+
2602
+ /* insn opt_hash_freeze(hash, cd)()(val) */
2603
+ INSN_ENTRY(opt_hash_freeze)
2604
+ {
2605
+ /* ### Declare that we have just entered into an instruction. ### */
2606
+ START_OF_ORIGINAL_INSN(opt_hash_freeze);
2607
+ DEBUG_ENTER_INSN("opt_hash_freeze");
2608
+
2609
+ /* ### Declare and assign variables. ### */
2610
+ VALUE hash = (VALUE)GET_OPERAND(1);
2611
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
2612
+ # define INSN_ATTR(x) attr_ ## x ## _opt_hash_freeze(hash, cd)
2613
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2614
+ VALUE val;
2615
+
2616
+ /* ### Instruction preambles. ### */
2617
+ ADD_PC(INSN_ATTR(width));
2618
+ SETUP_CANARY(leaf);
2619
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2620
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, hash);
2621
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, cd);
2622
+
2623
+ /* ### Here we do the instruction body. ### */
2624
+ # define NAME_OF_CURRENT_INSN opt_hash_freeze
2625
+ # line 942 "insns.def"
2626
+ {
2627
+ val = vm_opt_hash_freeze(hash, BOP_FREEZE, idFreeze);
2628
+
2629
+ if (UNDEF_P(val)) {
2630
+ RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
2631
+ PUSH(rb_hash_resurrect(hash));
2632
+ CALL_SIMPLE_METHOD();
2633
+ }
2634
+ }
2635
+ # line 2636 "vm.inc"
2636
+ # undef NAME_OF_CURRENT_INSN
2637
+
2638
+ /* ### Instruction trailers. ### */
2639
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2640
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2641
+ INC_SP(INSN_ATTR(sp_inc));
2642
+ TOPN(0) = val;
2643
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2644
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2645
+ # undef INSN_ATTR
2646
+
2647
+ /* ### Leave the instruction. ### */
2648
+ END_INSN(opt_hash_freeze);
2649
+ }
2650
+
2543
2651
  /* insn opt_str_freeze(str, cd)()(val) */
2544
2652
  INSN_ENTRY(opt_str_freeze)
2545
2653
  {
@@ -2563,7 +2671,7 @@ INSN_ENTRY(opt_str_freeze)
2563
2671
 
2564
2672
  /* ### Here we do the instruction body. ### */
2565
2673
  # define NAME_OF_CURRENT_INSN opt_str_freeze
2566
- # line 920 "insns.def"
2674
+ # line 957 "insns.def"
2567
2675
  {
2568
2676
  val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze);
2569
2677
 
@@ -2572,7 +2680,7 @@ INSN_ENTRY(opt_str_freeze)
2572
2680
  CALL_SIMPLE_METHOD();
2573
2681
  }
2574
2682
  }
2575
- # line 2576 "vm.inc"
2683
+ # line 2684 "vm.inc"
2576
2684
  # undef NAME_OF_CURRENT_INSN
2577
2685
 
2578
2686
  /* ### Instruction trailers. ### */
@@ -2610,7 +2718,7 @@ INSN_ENTRY(opt_nil_p)
2610
2718
 
2611
2719
  /* ### Here we do the instruction body. ### */
2612
2720
  # define NAME_OF_CURRENT_INSN opt_nil_p
2613
- # line 935 "insns.def"
2721
+ # line 972 "insns.def"
2614
2722
  {
2615
2723
  val = vm_opt_nil_p(GET_ISEQ(), cd, recv);
2616
2724
 
@@ -2618,7 +2726,7 @@ INSN_ENTRY(opt_nil_p)
2618
2726
  CALL_SIMPLE_METHOD();
2619
2727
  }
2620
2728
  }
2621
- # line 2622 "vm.inc"
2729
+ # line 2730 "vm.inc"
2622
2730
  # undef NAME_OF_CURRENT_INSN
2623
2731
 
2624
2732
  /* ### Instruction trailers. ### */
@@ -2657,7 +2765,7 @@ INSN_ENTRY(opt_str_uminus)
2657
2765
 
2658
2766
  /* ### Here we do the instruction body. ### */
2659
2767
  # define NAME_OF_CURRENT_INSN opt_str_uminus
2660
- # line 948 "insns.def"
2768
+ # line 985 "insns.def"
2661
2769
  {
2662
2770
  val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus);
2663
2771
 
@@ -2666,7 +2774,7 @@ INSN_ENTRY(opt_str_uminus)
2666
2774
  CALL_SIMPLE_METHOD();
2667
2775
  }
2668
2776
  }
2669
- # line 2670 "vm.inc"
2777
+ # line 2778 "vm.inc"
2670
2778
  # undef NAME_OF_CURRENT_INSN
2671
2779
 
2672
2780
  /* ### Instruction trailers. ### */
@@ -2682,6 +2790,57 @@ INSN_ENTRY(opt_str_uminus)
2682
2790
  END_INSN(opt_str_uminus);
2683
2791
  }
2684
2792
 
2793
+ /* insn opt_duparray_send(ary, method, argc)(...)(val) */
2794
+ INSN_ENTRY(opt_duparray_send)
2795
+ {
2796
+ /* ### Declare that we have just entered into an instruction. ### */
2797
+ START_OF_ORIGINAL_INSN(opt_duparray_send);
2798
+ DEBUG_ENTER_INSN("opt_duparray_send");
2799
+
2800
+ /* ### Declare and assign variables. ### */
2801
+ VALUE ary = (VALUE)GET_OPERAND(1);
2802
+ ID method = (ID)GET_OPERAND(2);
2803
+ rb_num_t argc = (rb_num_t)GET_OPERAND(3);
2804
+ # define INSN_ATTR(x) attr_ ## x ## _opt_duparray_send(ary, method, argc)
2805
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2806
+ VALUE val;
2807
+
2808
+ /* ### Instruction preambles. ### */
2809
+ ADD_PC(INSN_ATTR(width));
2810
+ SETUP_CANARY(leaf);
2811
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2812
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, ary);
2813
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, method);
2814
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 2, argc);
2815
+
2816
+ /* ### Here we do the instruction body. ### */
2817
+ # define NAME_OF_CURRENT_INSN opt_duparray_send
2818
+ # line 1006 "insns.def"
2819
+ {
2820
+ switch(method) {
2821
+ case idIncludeP:
2822
+ val = vm_opt_duparray_include_p(ec, ary, TOPN(0));
2823
+ break;
2824
+ default:
2825
+ rb_bug("unreachable");
2826
+ }
2827
+ }
2828
+ # line 2829 "vm.inc"
2829
+ # undef NAME_OF_CURRENT_INSN
2830
+
2831
+ /* ### Instruction trailers. ### */
2832
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2833
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2834
+ INC_SP(INSN_ATTR(sp_inc));
2835
+ TOPN(0) = val;
2836
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2837
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2838
+ # undef INSN_ATTR
2839
+
2840
+ /* ### Leave the instruction. ### */
2841
+ END_INSN(opt_duparray_send);
2842
+ }
2843
+
2685
2844
  /* insn opt_newarray_send(num, method)(...)(val) */
2686
2845
  INSN_ENTRY(opt_newarray_send)
2687
2846
  {
@@ -2691,7 +2850,7 @@ INSN_ENTRY(opt_newarray_send)
2691
2850
 
2692
2851
  /* ### Declare and assign variables. ### */
2693
2852
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
2694
- ID method = (ID)GET_OPERAND(2);
2853
+ rb_num_t method = (rb_num_t)GET_OPERAND(2);
2695
2854
  # define INSN_ATTR(x) attr_ ## x ## _opt_newarray_send(num, method)
2696
2855
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2697
2856
  VALUE val;
@@ -2705,23 +2864,32 @@ INSN_ENTRY(opt_newarray_send)
2705
2864
 
2706
2865
  /* ### Here we do the instruction body. ### */
2707
2866
  # define NAME_OF_CURRENT_INSN opt_newarray_send
2708
- # line 969 "insns.def"
2867
+ # line 1028 "insns.def"
2709
2868
  {
2710
2869
  switch(method) {
2711
- case idHash:
2870
+ case VM_OPT_NEWARRAY_SEND_HASH:
2712
2871
  val = vm_opt_newarray_hash(ec, num, STACK_ADDR_FROM_TOP(num));
2713
2872
  break;
2714
- case idMin:
2873
+ case VM_OPT_NEWARRAY_SEND_MIN:
2715
2874
  val = vm_opt_newarray_min(ec, num, STACK_ADDR_FROM_TOP(num));
2716
2875
  break;
2717
- case idMax:
2876
+ case VM_OPT_NEWARRAY_SEND_MAX:
2718
2877
  val = vm_opt_newarray_max(ec, num, STACK_ADDR_FROM_TOP(num));
2719
2878
  break;
2879
+ case VM_OPT_NEWARRAY_SEND_INCLUDE_P:
2880
+ val = vm_opt_newarray_include_p(ec, (long)num-1, STACK_ADDR_FROM_TOP(num), TOPN(0));
2881
+ break;
2882
+ case VM_OPT_NEWARRAY_SEND_PACK:
2883
+ val = vm_opt_newarray_pack_buffer(ec, (long)num-1, STACK_ADDR_FROM_TOP(num), TOPN(0), Qundef);
2884
+ break;
2885
+ case VM_OPT_NEWARRAY_SEND_PACK_BUFFER:
2886
+ val = vm_opt_newarray_pack_buffer(ec, (long)num-2, STACK_ADDR_FROM_TOP(num), TOPN(1), TOPN(0));
2887
+ break;
2720
2888
  default:
2721
2889
  rb_bug("unreachable");
2722
2890
  }
2723
2891
  }
2724
- # line 2725 "vm.inc"
2892
+ # line 2893 "vm.inc"
2725
2893
  # undef NAME_OF_CURRENT_INSN
2726
2894
 
2727
2895
  /* ### Instruction trailers. ### */
@@ -2761,7 +2929,7 @@ INSN_ENTRY(invokesuper)
2761
2929
 
2762
2930
  /* ### Here we do the instruction body. ### */
2763
2931
  # define NAME_OF_CURRENT_INSN invokesuper
2764
- # line 993 "insns.def"
2932
+ # line 1061 "insns.def"
2765
2933
  {
2766
2934
  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, true);
2767
2935
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_super);
@@ -2772,7 +2940,7 @@ INSN_ENTRY(invokesuper)
2772
2940
  NEXT_INSN();
2773
2941
  }
2774
2942
  }
2775
- # line 2776 "vm.inc"
2943
+ # line 2944 "vm.inc"
2776
2944
  # undef NAME_OF_CURRENT_INSN
2777
2945
 
2778
2946
  /* ### Instruction trailers. ### */
@@ -2785,6 +2953,62 @@ INSN_ENTRY(invokesuper)
2785
2953
  END_INSN(invokesuper);
2786
2954
  }
2787
2955
 
2956
+ /* insn invokesuperforward(cd, blockiseq)(...)(val) */
2957
+ INSN_ENTRY(invokesuperforward)
2958
+ {
2959
+ /* ### Declare that we have just entered into an instruction. ### */
2960
+ START_OF_ORIGINAL_INSN(invokesuperforward);
2961
+ DEBUG_ENTER_INSN("invokesuperforward");
2962
+
2963
+ /* ### Declare and assign variables. ### */
2964
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2965
+ ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
2966
+ # define INSN_ATTR(x) attr_ ## x ## _invokesuperforward(cd, blockiseq)
2967
+ const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
2968
+ VALUE val;
2969
+
2970
+ /* ### Instruction preambles. ### */
2971
+ ADD_PC(INSN_ATTR(width));
2972
+ POPN(INSN_ATTR(popn));
2973
+ SETUP_CANARY(leaf);
2974
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2975
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
2976
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 1, blockiseq);
2977
+
2978
+ /* ### Here we do the instruction body. ### */
2979
+ # define NAME_OF_CURRENT_INSN invokesuperforward
2980
+ # line 1080 "insns.def"
2981
+ {
2982
+ struct rb_forwarding_call_data adjusted_cd;
2983
+ struct rb_callinfo adjusted_ci;
2984
+
2985
+ VALUE bh = vm_caller_setup_fwd_args(GET_EC(), GET_CFP(), cd, blockiseq, 1, &adjusted_cd, &adjusted_ci);
2986
+
2987
+ val = vm_sendish(ec, GET_CFP(), &adjusted_cd.cd, bh, mexp_search_super);
2988
+ JIT_EXEC(ec, val);
2989
+
2990
+ if (cd->cc != adjusted_cd.cd.cc && vm_cc_markable(adjusted_cd.cd.cc)) {
2991
+ RB_OBJ_WRITE(GET_ISEQ(), &cd->cc, adjusted_cd.cd.cc);
2992
+ }
2993
+
2994
+ if (UNDEF_P(val)) {
2995
+ RESTORE_REGS();
2996
+ NEXT_INSN();
2997
+ }
2998
+ }
2999
+ # line 3000 "vm.inc"
3000
+ # undef NAME_OF_CURRENT_INSN
3001
+
3002
+ /* ### Instruction trailers. ### */
3003
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
3004
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
3005
+ PUSH(val);
3006
+ # undef INSN_ATTR
3007
+
3008
+ /* ### Leave the instruction. ### */
3009
+ END_INSN(invokesuperforward);
3010
+ }
3011
+
2788
3012
  /* insn invokeblock(cd)(...)(val) */
2789
3013
  INSN_ENTRY(invokeblock)
2790
3014
  {
@@ -2807,7 +3031,7 @@ INSN_ENTRY(invokeblock)
2807
3031
 
2808
3032
  /* ### Here we do the instruction body. ### */
2809
3033
  # define NAME_OF_CURRENT_INSN invokeblock
2810
- # line 1013 "insns.def"
3034
+ # line 1108 "insns.def"
2811
3035
  {
2812
3036
  VALUE bh = VM_BLOCK_HANDLER_NONE;
2813
3037
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_invokeblock);
@@ -2818,7 +3042,7 @@ INSN_ENTRY(invokeblock)
2818
3042
  NEXT_INSN();
2819
3043
  }
2820
3044
  }
2821
- # line 2822 "vm.inc"
3045
+ # line 3046 "vm.inc"
2822
3046
  # undef NAME_OF_CURRENT_INSN
2823
3047
 
2824
3048
  /* ### Instruction trailers. ### */
@@ -2851,7 +3075,7 @@ INSN_ENTRY(leave)
2851
3075
 
2852
3076
  /* ### Here we do the instruction body. ### */
2853
3077
  # define NAME_OF_CURRENT_INSN leave
2854
- # line 1035 "insns.def"
3078
+ # line 1130 "insns.def"
2855
3079
  {
2856
3080
  if (OPT_CHECKED_RUN) {
2857
3081
  const VALUE *const bp = vm_base_ptr(GET_CFP());
@@ -2872,7 +3096,7 @@ INSN_ENTRY(leave)
2872
3096
  RESTORE_REGS();
2873
3097
  }
2874
3098
  }
2875
- # line 2876 "vm.inc"
3099
+ # line 3100 "vm.inc"
2876
3100
  # undef NAME_OF_CURRENT_INSN
2877
3101
 
2878
3102
  /* ### Instruction trailers. ### */
@@ -2907,13 +3131,13 @@ INSN_ENTRY(throw)
2907
3131
 
2908
3132
  /* ### Here we do the instruction body. ### */
2909
3133
  # define NAME_OF_CURRENT_INSN throw
2910
- # line 1068 "insns.def"
3134
+ # line 1163 "insns.def"
2911
3135
  {
2912
3136
  val = vm_throw(ec, GET_CFP(), throw_state, throwobj);
2913
3137
  THROW_EXCEPTION(val);
2914
3138
  /* unreachable */
2915
3139
  }
2916
- # line 2917 "vm.inc"
3140
+ # line 3141 "vm.inc"
2917
3141
  # undef NAME_OF_CURRENT_INSN
2918
3142
 
2919
3143
  /* ### Instruction trailers. ### */
@@ -2949,12 +3173,12 @@ INSN_ENTRY(jump)
2949
3173
 
2950
3174
  /* ### Here we do the instruction body. ### */
2951
3175
  # define NAME_OF_CURRENT_INSN jump
2952
- # line 1086 "insns.def"
3176
+ # line 1181 "insns.def"
2953
3177
  {
2954
3178
  RUBY_VM_CHECK_INTS(ec);
2955
3179
  JUMP(dst);
2956
3180
  }
2957
- # line 2958 "vm.inc"
3181
+ # line 3182 "vm.inc"
2958
3182
  # undef NAME_OF_CURRENT_INSN
2959
3183
 
2960
3184
  /* ### Instruction trailers. ### */
@@ -2988,14 +3212,14 @@ INSN_ENTRY(branchif)
2988
3212
 
2989
3213
  /* ### Here we do the instruction body. ### */
2990
3214
  # define NAME_OF_CURRENT_INSN branchif
2991
- # line 1099 "insns.def"
3215
+ # line 1194 "insns.def"
2992
3216
  {
2993
3217
  if (RTEST(val)) {
2994
3218
  RUBY_VM_CHECK_INTS(ec);
2995
3219
  JUMP(dst);
2996
3220
  }
2997
3221
  }
2998
- # line 2999 "vm.inc"
3222
+ # line 3223 "vm.inc"
2999
3223
  # undef NAME_OF_CURRENT_INSN
3000
3224
 
3001
3225
  /* ### Instruction trailers. ### */
@@ -3029,14 +3253,14 @@ INSN_ENTRY(branchunless)
3029
3253
 
3030
3254
  /* ### Here we do the instruction body. ### */
3031
3255
  # define NAME_OF_CURRENT_INSN branchunless
3032
- # line 1114 "insns.def"
3256
+ # line 1209 "insns.def"
3033
3257
  {
3034
3258
  if (!RTEST(val)) {
3035
3259
  RUBY_VM_CHECK_INTS(ec);
3036
3260
  JUMP(dst);
3037
3261
  }
3038
3262
  }
3039
- # line 3040 "vm.inc"
3263
+ # line 3264 "vm.inc"
3040
3264
  # undef NAME_OF_CURRENT_INSN
3041
3265
 
3042
3266
  /* ### Instruction trailers. ### */
@@ -3070,14 +3294,14 @@ INSN_ENTRY(branchnil)
3070
3294
 
3071
3295
  /* ### Here we do the instruction body. ### */
3072
3296
  # define NAME_OF_CURRENT_INSN branchnil
3073
- # line 1129 "insns.def"
3297
+ # line 1224 "insns.def"
3074
3298
  {
3075
3299
  if (NIL_P(val)) {
3076
3300
  RUBY_VM_CHECK_INTS(ec);
3077
3301
  JUMP(dst);
3078
3302
  }
3079
3303
  }
3080
- # line 3081 "vm.inc"
3304
+ # line 3305 "vm.inc"
3081
3305
  # undef NAME_OF_CURRENT_INSN
3082
3306
 
3083
3307
  /* ### Instruction trailers. ### */
@@ -3114,11 +3338,11 @@ INSN_ENTRY(once)
3114
3338
 
3115
3339
  /* ### Here we do the instruction body. ### */
3116
3340
  # define NAME_OF_CURRENT_INSN once
3117
- # line 1146 "insns.def"
3341
+ # line 1241 "insns.def"
3118
3342
  {
3119
3343
  val = vm_once_dispatch(ec, iseq, ise);
3120
3344
  }
3121
- # line 3122 "vm.inc"
3345
+ # line 3346 "vm.inc"
3122
3346
  # undef NAME_OF_CURRENT_INSN
3123
3347
 
3124
3348
  /* ### Instruction trailers. ### */
@@ -3154,7 +3378,7 @@ INSN_ENTRY(opt_case_dispatch)
3154
3378
 
3155
3379
  /* ### Here we do the instruction body. ### */
3156
3380
  # define NAME_OF_CURRENT_INSN opt_case_dispatch
3157
- # line 1157 "insns.def"
3381
+ # line 1252 "insns.def"
3158
3382
  {
3159
3383
  OFFSET dst = vm_case_dispatch(hash, else_offset, key);
3160
3384
 
@@ -3162,7 +3386,7 @@ INSN_ENTRY(opt_case_dispatch)
3162
3386
  JUMP(dst);
3163
3387
  }
3164
3388
  }
3165
- # line 3166 "vm.inc"
3389
+ # line 3390 "vm.inc"
3166
3390
  # undef NAME_OF_CURRENT_INSN
3167
3391
 
3168
3392
  /* ### Instruction trailers. ### */
@@ -3198,7 +3422,7 @@ INSN_ENTRY(opt_plus)
3198
3422
 
3199
3423
  /* ### Here we do the instruction body. ### */
3200
3424
  # define NAME_OF_CURRENT_INSN opt_plus
3201
- # line 1173 "insns.def"
3425
+ # line 1268 "insns.def"
3202
3426
  {
3203
3427
  val = vm_opt_plus(recv, obj);
3204
3428
 
@@ -3206,7 +3430,7 @@ INSN_ENTRY(opt_plus)
3206
3430
  CALL_SIMPLE_METHOD();
3207
3431
  }
3208
3432
  }
3209
- # line 3210 "vm.inc"
3433
+ # line 3434 "vm.inc"
3210
3434
  # undef NAME_OF_CURRENT_INSN
3211
3435
 
3212
3436
  /* ### Instruction trailers. ### */
@@ -3245,7 +3469,7 @@ INSN_ENTRY(opt_minus)
3245
3469
 
3246
3470
  /* ### Here we do the instruction body. ### */
3247
3471
  # define NAME_OF_CURRENT_INSN opt_minus
3248
- # line 1187 "insns.def"
3472
+ # line 1282 "insns.def"
3249
3473
  {
3250
3474
  val = vm_opt_minus(recv, obj);
3251
3475
 
@@ -3253,7 +3477,7 @@ INSN_ENTRY(opt_minus)
3253
3477
  CALL_SIMPLE_METHOD();
3254
3478
  }
3255
3479
  }
3256
- # line 3257 "vm.inc"
3480
+ # line 3481 "vm.inc"
3257
3481
  # undef NAME_OF_CURRENT_INSN
3258
3482
 
3259
3483
  /* ### Instruction trailers. ### */
@@ -3292,7 +3516,7 @@ INSN_ENTRY(opt_mult)
3292
3516
 
3293
3517
  /* ### Here we do the instruction body. ### */
3294
3518
  # define NAME_OF_CURRENT_INSN opt_mult
3295
- # line 1201 "insns.def"
3519
+ # line 1296 "insns.def"
3296
3520
  {
3297
3521
  val = vm_opt_mult(recv, obj);
3298
3522
 
@@ -3300,7 +3524,7 @@ INSN_ENTRY(opt_mult)
3300
3524
  CALL_SIMPLE_METHOD();
3301
3525
  }
3302
3526
  }
3303
- # line 3304 "vm.inc"
3527
+ # line 3528 "vm.inc"
3304
3528
  # undef NAME_OF_CURRENT_INSN
3305
3529
 
3306
3530
  /* ### Instruction trailers. ### */
@@ -3339,7 +3563,7 @@ INSN_ENTRY(opt_div)
3339
3563
 
3340
3564
  /* ### Here we do the instruction body. ### */
3341
3565
  # define NAME_OF_CURRENT_INSN opt_div
3342
- # line 1218 "insns.def"
3566
+ # line 1313 "insns.def"
3343
3567
  {
3344
3568
  val = vm_opt_div(recv, obj);
3345
3569
 
@@ -3347,7 +3571,7 @@ INSN_ENTRY(opt_div)
3347
3571
  CALL_SIMPLE_METHOD();
3348
3572
  }
3349
3573
  }
3350
- # line 3351 "vm.inc"
3574
+ # line 3575 "vm.inc"
3351
3575
  # undef NAME_OF_CURRENT_INSN
3352
3576
 
3353
3577
  /* ### Instruction trailers. ### */
@@ -3386,7 +3610,7 @@ INSN_ENTRY(opt_mod)
3386
3610
 
3387
3611
  /* ### Here we do the instruction body. ### */
3388
3612
  # define NAME_OF_CURRENT_INSN opt_mod
3389
- # line 1234 "insns.def"
3613
+ # line 1329 "insns.def"
3390
3614
  {
3391
3615
  val = vm_opt_mod(recv, obj);
3392
3616
 
@@ -3394,7 +3618,7 @@ INSN_ENTRY(opt_mod)
3394
3618
  CALL_SIMPLE_METHOD();
3395
3619
  }
3396
3620
  }
3397
- # line 3398 "vm.inc"
3621
+ # line 3622 "vm.inc"
3398
3622
  # undef NAME_OF_CURRENT_INSN
3399
3623
 
3400
3624
  /* ### Instruction trailers. ### */
@@ -3433,7 +3657,7 @@ INSN_ENTRY(opt_eq)
3433
3657
 
3434
3658
  /* ### Here we do the instruction body. ### */
3435
3659
  # define NAME_OF_CURRENT_INSN opt_eq
3436
- # line 1248 "insns.def"
3660
+ # line 1343 "insns.def"
3437
3661
  {
3438
3662
  val = opt_equality(GET_ISEQ(), recv, obj, cd);
3439
3663
 
@@ -3441,7 +3665,7 @@ INSN_ENTRY(opt_eq)
3441
3665
  CALL_SIMPLE_METHOD();
3442
3666
  }
3443
3667
  }
3444
- # line 3445 "vm.inc"
3668
+ # line 3669 "vm.inc"
3445
3669
  # undef NAME_OF_CURRENT_INSN
3446
3670
 
3447
3671
  /* ### Instruction trailers. ### */
@@ -3482,7 +3706,7 @@ INSN_ENTRY(opt_neq)
3482
3706
 
3483
3707
  /* ### Here we do the instruction body. ### */
3484
3708
  # define NAME_OF_CURRENT_INSN opt_neq
3485
- # line 1262 "insns.def"
3709
+ # line 1357 "insns.def"
3486
3710
  {
3487
3711
  val = vm_opt_neq(GET_ISEQ(), cd, cd_eq, recv, obj);
3488
3712
 
@@ -3490,7 +3714,7 @@ INSN_ENTRY(opt_neq)
3490
3714
  CALL_SIMPLE_METHOD();
3491
3715
  }
3492
3716
  }
3493
- # line 3494 "vm.inc"
3717
+ # line 3718 "vm.inc"
3494
3718
  # undef NAME_OF_CURRENT_INSN
3495
3719
 
3496
3720
  /* ### Instruction trailers. ### */
@@ -3529,7 +3753,7 @@ INSN_ENTRY(opt_lt)
3529
3753
 
3530
3754
  /* ### Here we do the instruction body. ### */
3531
3755
  # define NAME_OF_CURRENT_INSN opt_lt
3532
- # line 1276 "insns.def"
3756
+ # line 1371 "insns.def"
3533
3757
  {
3534
3758
  val = vm_opt_lt(recv, obj);
3535
3759
 
@@ -3537,7 +3761,7 @@ INSN_ENTRY(opt_lt)
3537
3761
  CALL_SIMPLE_METHOD();
3538
3762
  }
3539
3763
  }
3540
- # line 3541 "vm.inc"
3764
+ # line 3765 "vm.inc"
3541
3765
  # undef NAME_OF_CURRENT_INSN
3542
3766
 
3543
3767
  /* ### Instruction trailers. ### */
@@ -3576,7 +3800,7 @@ INSN_ENTRY(opt_le)
3576
3800
 
3577
3801
  /* ### Here we do the instruction body. ### */
3578
3802
  # define NAME_OF_CURRENT_INSN opt_le
3579
- # line 1290 "insns.def"
3803
+ # line 1385 "insns.def"
3580
3804
  {
3581
3805
  val = vm_opt_le(recv, obj);
3582
3806
 
@@ -3584,7 +3808,7 @@ INSN_ENTRY(opt_le)
3584
3808
  CALL_SIMPLE_METHOD();
3585
3809
  }
3586
3810
  }
3587
- # line 3588 "vm.inc"
3811
+ # line 3812 "vm.inc"
3588
3812
  # undef NAME_OF_CURRENT_INSN
3589
3813
 
3590
3814
  /* ### Instruction trailers. ### */
@@ -3623,7 +3847,7 @@ INSN_ENTRY(opt_gt)
3623
3847
 
3624
3848
  /* ### Here we do the instruction body. ### */
3625
3849
  # define NAME_OF_CURRENT_INSN opt_gt
3626
- # line 1304 "insns.def"
3850
+ # line 1399 "insns.def"
3627
3851
  {
3628
3852
  val = vm_opt_gt(recv, obj);
3629
3853
 
@@ -3631,7 +3855,7 @@ INSN_ENTRY(opt_gt)
3631
3855
  CALL_SIMPLE_METHOD();
3632
3856
  }
3633
3857
  }
3634
- # line 3635 "vm.inc"
3858
+ # line 3859 "vm.inc"
3635
3859
  # undef NAME_OF_CURRENT_INSN
3636
3860
 
3637
3861
  /* ### Instruction trailers. ### */
@@ -3670,7 +3894,7 @@ INSN_ENTRY(opt_ge)
3670
3894
 
3671
3895
  /* ### Here we do the instruction body. ### */
3672
3896
  # define NAME_OF_CURRENT_INSN opt_ge
3673
- # line 1318 "insns.def"
3897
+ # line 1413 "insns.def"
3674
3898
  {
3675
3899
  val = vm_opt_ge(recv, obj);
3676
3900
 
@@ -3678,7 +3902,7 @@ INSN_ENTRY(opt_ge)
3678
3902
  CALL_SIMPLE_METHOD();
3679
3903
  }
3680
3904
  }
3681
- # line 3682 "vm.inc"
3905
+ # line 3906 "vm.inc"
3682
3906
  # undef NAME_OF_CURRENT_INSN
3683
3907
 
3684
3908
  /* ### Instruction trailers. ### */
@@ -3717,7 +3941,7 @@ INSN_ENTRY(opt_ltlt)
3717
3941
 
3718
3942
  /* ### Here we do the instruction body. ### */
3719
3943
  # define NAME_OF_CURRENT_INSN opt_ltlt
3720
- # line 1336 "insns.def"
3944
+ # line 1431 "insns.def"
3721
3945
  {
3722
3946
  val = vm_opt_ltlt(recv, obj);
3723
3947
 
@@ -3725,7 +3949,7 @@ INSN_ENTRY(opt_ltlt)
3725
3949
  CALL_SIMPLE_METHOD();
3726
3950
  }
3727
3951
  }
3728
- # line 3729 "vm.inc"
3952
+ # line 3953 "vm.inc"
3729
3953
  # undef NAME_OF_CURRENT_INSN
3730
3954
 
3731
3955
  /* ### Instruction trailers. ### */
@@ -3764,7 +3988,7 @@ INSN_ENTRY(opt_and)
3764
3988
 
3765
3989
  /* ### Here we do the instruction body. ### */
3766
3990
  # define NAME_OF_CURRENT_INSN opt_and
3767
- # line 1350 "insns.def"
3991
+ # line 1445 "insns.def"
3768
3992
  {
3769
3993
  val = vm_opt_and(recv, obj);
3770
3994
 
@@ -3772,7 +3996,7 @@ INSN_ENTRY(opt_and)
3772
3996
  CALL_SIMPLE_METHOD();
3773
3997
  }
3774
3998
  }
3775
- # line 3776 "vm.inc"
3999
+ # line 4000 "vm.inc"
3776
4000
  # undef NAME_OF_CURRENT_INSN
3777
4001
 
3778
4002
  /* ### Instruction trailers. ### */
@@ -3811,7 +4035,7 @@ INSN_ENTRY(opt_or)
3811
4035
 
3812
4036
  /* ### Here we do the instruction body. ### */
3813
4037
  # define NAME_OF_CURRENT_INSN opt_or
3814
- # line 1364 "insns.def"
4038
+ # line 1459 "insns.def"
3815
4039
  {
3816
4040
  val = vm_opt_or(recv, obj);
3817
4041
 
@@ -3819,7 +4043,7 @@ INSN_ENTRY(opt_or)
3819
4043
  CALL_SIMPLE_METHOD();
3820
4044
  }
3821
4045
  }
3822
- # line 3823 "vm.inc"
4046
+ # line 4047 "vm.inc"
3823
4047
  # undef NAME_OF_CURRENT_INSN
3824
4048
 
3825
4049
  /* ### Instruction trailers. ### */
@@ -3858,7 +4082,7 @@ INSN_ENTRY(opt_aref)
3858
4082
 
3859
4083
  /* ### Here we do the instruction body. ### */
3860
4084
  # define NAME_OF_CURRENT_INSN opt_aref
3861
- # line 1383 "insns.def"
4085
+ # line 1478 "insns.def"
3862
4086
  {
3863
4087
  val = vm_opt_aref(recv, obj);
3864
4088
 
@@ -3866,7 +4090,7 @@ INSN_ENTRY(opt_aref)
3866
4090
  CALL_SIMPLE_METHOD();
3867
4091
  }
3868
4092
  }
3869
- # line 3870 "vm.inc"
4093
+ # line 4094 "vm.inc"
3870
4094
  # undef NAME_OF_CURRENT_INSN
3871
4095
 
3872
4096
  /* ### Instruction trailers. ### */
@@ -3906,7 +4130,7 @@ INSN_ENTRY(opt_aset)
3906
4130
 
3907
4131
  /* ### Here we do the instruction body. ### */
3908
4132
  # define NAME_OF_CURRENT_INSN opt_aset
3909
- # line 1400 "insns.def"
4133
+ # line 1495 "insns.def"
3910
4134
  {
3911
4135
  val = vm_opt_aset(recv, obj, set);
3912
4136
 
@@ -3914,7 +4138,7 @@ INSN_ENTRY(opt_aset)
3914
4138
  CALL_SIMPLE_METHOD();
3915
4139
  }
3916
4140
  }
3917
- # line 3918 "vm.inc"
4141
+ # line 4142 "vm.inc"
3918
4142
  # undef NAME_OF_CURRENT_INSN
3919
4143
 
3920
4144
  /* ### Instruction trailers. ### */
@@ -3954,7 +4178,7 @@ INSN_ENTRY(opt_aset_with)
3954
4178
 
3955
4179
  /* ### Here we do the instruction body. ### */
3956
4180
  # define NAME_OF_CURRENT_INSN opt_aset_with
3957
- # line 1416 "insns.def"
4181
+ # line 1511 "insns.def"
3958
4182
  {
3959
4183
  VALUE tmp = vm_opt_aset_with(recv, key, val);
3960
4184
 
@@ -3967,7 +4191,7 @@ INSN_ENTRY(opt_aset_with)
3967
4191
  CALL_SIMPLE_METHOD();
3968
4192
  }
3969
4193
  }
3970
- # line 3971 "vm.inc"
4194
+ # line 4195 "vm.inc"
3971
4195
  # undef NAME_OF_CURRENT_INSN
3972
4196
 
3973
4197
  /* ### Instruction trailers. ### */
@@ -4007,7 +4231,7 @@ INSN_ENTRY(opt_aref_with)
4007
4231
 
4008
4232
  /* ### Here we do the instruction body. ### */
4009
4233
  # define NAME_OF_CURRENT_INSN opt_aref_with
4010
- # line 1437 "insns.def"
4234
+ # line 1532 "insns.def"
4011
4235
  {
4012
4236
  val = vm_opt_aref_with(recv, key);
4013
4237
 
@@ -4016,7 +4240,7 @@ INSN_ENTRY(opt_aref_with)
4016
4240
  CALL_SIMPLE_METHOD();
4017
4241
  }
4018
4242
  }
4019
- # line 4020 "vm.inc"
4243
+ # line 4244 "vm.inc"
4020
4244
  # undef NAME_OF_CURRENT_INSN
4021
4245
 
4022
4246
  /* ### Instruction trailers. ### */
@@ -4054,7 +4278,7 @@ INSN_ENTRY(opt_length)
4054
4278
 
4055
4279
  /* ### Here we do the instruction body. ### */
4056
4280
  # define NAME_OF_CURRENT_INSN opt_length
4057
- # line 1452 "insns.def"
4281
+ # line 1547 "insns.def"
4058
4282
  {
4059
4283
  val = vm_opt_length(recv, BOP_LENGTH);
4060
4284
 
@@ -4062,7 +4286,7 @@ INSN_ENTRY(opt_length)
4062
4286
  CALL_SIMPLE_METHOD();
4063
4287
  }
4064
4288
  }
4065
- # line 4066 "vm.inc"
4289
+ # line 4290 "vm.inc"
4066
4290
  # undef NAME_OF_CURRENT_INSN
4067
4291
 
4068
4292
  /* ### Instruction trailers. ### */
@@ -4100,7 +4324,7 @@ INSN_ENTRY(opt_size)
4100
4324
 
4101
4325
  /* ### Here we do the instruction body. ### */
4102
4326
  # define NAME_OF_CURRENT_INSN opt_size
4103
- # line 1466 "insns.def"
4327
+ # line 1561 "insns.def"
4104
4328
  {
4105
4329
  val = vm_opt_length(recv, BOP_SIZE);
4106
4330
 
@@ -4108,7 +4332,7 @@ INSN_ENTRY(opt_size)
4108
4332
  CALL_SIMPLE_METHOD();
4109
4333
  }
4110
4334
  }
4111
- # line 4112 "vm.inc"
4335
+ # line 4336 "vm.inc"
4112
4336
  # undef NAME_OF_CURRENT_INSN
4113
4337
 
4114
4338
  /* ### Instruction trailers. ### */
@@ -4146,7 +4370,7 @@ INSN_ENTRY(opt_empty_p)
4146
4370
 
4147
4371
  /* ### Here we do the instruction body. ### */
4148
4372
  # define NAME_OF_CURRENT_INSN opt_empty_p
4149
- # line 1480 "insns.def"
4373
+ # line 1575 "insns.def"
4150
4374
  {
4151
4375
  val = vm_opt_empty_p(recv);
4152
4376
 
@@ -4154,7 +4378,7 @@ INSN_ENTRY(opt_empty_p)
4154
4378
  CALL_SIMPLE_METHOD();
4155
4379
  }
4156
4380
  }
4157
- # line 4158 "vm.inc"
4381
+ # line 4382 "vm.inc"
4158
4382
  # undef NAME_OF_CURRENT_INSN
4159
4383
 
4160
4384
  /* ### Instruction trailers. ### */
@@ -4192,7 +4416,7 @@ INSN_ENTRY(opt_succ)
4192
4416
 
4193
4417
  /* ### Here we do the instruction body. ### */
4194
4418
  # define NAME_OF_CURRENT_INSN opt_succ
4195
- # line 1494 "insns.def"
4419
+ # line 1589 "insns.def"
4196
4420
  {
4197
4421
  val = vm_opt_succ(recv);
4198
4422
 
@@ -4200,7 +4424,7 @@ INSN_ENTRY(opt_succ)
4200
4424
  CALL_SIMPLE_METHOD();
4201
4425
  }
4202
4426
  }
4203
- # line 4204 "vm.inc"
4427
+ # line 4428 "vm.inc"
4204
4428
  # undef NAME_OF_CURRENT_INSN
4205
4429
 
4206
4430
  /* ### Instruction trailers. ### */
@@ -4238,7 +4462,7 @@ INSN_ENTRY(opt_not)
4238
4462
 
4239
4463
  /* ### Here we do the instruction body. ### */
4240
4464
  # define NAME_OF_CURRENT_INSN opt_not
4241
- # line 1508 "insns.def"
4465
+ # line 1603 "insns.def"
4242
4466
  {
4243
4467
  val = vm_opt_not(GET_ISEQ(), cd, recv);
4244
4468
 
@@ -4246,7 +4470,7 @@ INSN_ENTRY(opt_not)
4246
4470
  CALL_SIMPLE_METHOD();
4247
4471
  }
4248
4472
  }
4249
- # line 4250 "vm.inc"
4473
+ # line 4474 "vm.inc"
4250
4474
  # undef NAME_OF_CURRENT_INSN
4251
4475
 
4252
4476
  /* ### Instruction trailers. ### */
@@ -4285,7 +4509,7 @@ INSN_ENTRY(opt_regexpmatch2)
4285
4509
 
4286
4510
  /* ### Here we do the instruction body. ### */
4287
4511
  # define NAME_OF_CURRENT_INSN opt_regexpmatch2
4288
- # line 1523 "insns.def"
4512
+ # line 1618 "insns.def"
4289
4513
  {
4290
4514
  val = vm_opt_regexpmatch2(obj2, obj1);
4291
4515
 
@@ -4293,7 +4517,7 @@ INSN_ENTRY(opt_regexpmatch2)
4293
4517
  CALL_SIMPLE_METHOD();
4294
4518
  }
4295
4519
  }
4296
- # line 4297 "vm.inc"
4520
+ # line 4521 "vm.inc"
4297
4521
  # undef NAME_OF_CURRENT_INSN
4298
4522
 
4299
4523
  /* ### Instruction trailers. ### */
@@ -4330,11 +4554,11 @@ INSN_ENTRY(invokebuiltin)
4330
4554
 
4331
4555
  /* ### Here we do the instruction body. ### */
4332
4556
  # define NAME_OF_CURRENT_INSN invokebuiltin
4333
- # line 1539 "insns.def"
4557
+ # line 1634 "insns.def"
4334
4558
  {
4335
4559
  val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
4336
4560
  }
4337
- # line 4338 "vm.inc"
4561
+ # line 4562 "vm.inc"
4338
4562
  # undef NAME_OF_CURRENT_INSN
4339
4563
 
4340
4564
  /* ### Instruction trailers. ### */
@@ -4373,11 +4597,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
4373
4597
 
4374
4598
  /* ### Here we do the instruction body. ### */
4375
4599
  # define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate
4376
- # line 1550 "insns.def"
4600
+ # line 1645 "insns.def"
4377
4601
  {
4378
4602
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4379
4603
  }
4380
- # line 4381 "vm.inc"
4604
+ # line 4605 "vm.inc"
4381
4605
  # undef NAME_OF_CURRENT_INSN
4382
4606
 
4383
4607
  /* ### Instruction trailers. ### */
@@ -4416,7 +4640,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4416
4640
 
4417
4641
  /* ### Here we do the instruction body. ### */
4418
4642
  # define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate_leave
4419
- # line 1561 "insns.def"
4643
+ # line 1656 "insns.def"
4420
4644
  {
4421
4645
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4422
4646
 
@@ -4434,7 +4658,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4434
4658
  RESTORE_REGS();
4435
4659
  }
4436
4660
  }
4437
- # line 4438 "vm.inc"
4661
+ # line 4662 "vm.inc"
4438
4662
  # undef NAME_OF_CURRENT_INSN
4439
4663
 
4440
4664
  /* ### Instruction trailers. ### */
@@ -4460,7 +4684,7 @@ INSN_ENTRY(getlocal_WC_0)
4460
4684
  /* ### Declare and assign variables. ### */
4461
4685
  #line 10 "defs/opt_operand.def"
4462
4686
  const rb_num_t level = 0;
4463
- #line 4464 "vm.inc"
4687
+ #line 4688 "vm.inc"
4464
4688
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4465
4689
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_0(idx)
4466
4690
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4480,7 +4704,7 @@ INSN_ENTRY(getlocal_WC_0)
4480
4704
  RB_DEBUG_COUNTER_INC(lvar_get);
4481
4705
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4482
4706
  }
4483
- # line 4484 "vm.inc"
4707
+ # line 4708 "vm.inc"
4484
4708
  # undef NAME_OF_CURRENT_INSN
4485
4709
 
4486
4710
  /* ### Instruction trailers. ### */
@@ -4506,7 +4730,7 @@ INSN_ENTRY(getlocal_WC_1)
4506
4730
  /* ### Declare and assign variables. ### */
4507
4731
  #line 11 "defs/opt_operand.def"
4508
4732
  const rb_num_t level = 1;
4509
- #line 4510 "vm.inc"
4733
+ #line 4734 "vm.inc"
4510
4734
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4511
4735
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_1(idx)
4512
4736
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4526,7 +4750,7 @@ INSN_ENTRY(getlocal_WC_1)
4526
4750
  RB_DEBUG_COUNTER_INC(lvar_get);
4527
4751
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4528
4752
  }
4529
- # line 4530 "vm.inc"
4753
+ # line 4754 "vm.inc"
4530
4754
  # undef NAME_OF_CURRENT_INSN
4531
4755
 
4532
4756
  /* ### Instruction trailers. ### */
@@ -4552,7 +4776,7 @@ INSN_ENTRY(setlocal_WC_0)
4552
4776
  /* ### Declare and assign variables. ### */
4553
4777
  #line 12 "defs/opt_operand.def"
4554
4778
  const rb_num_t level = 0;
4555
- #line 4556 "vm.inc"
4779
+ #line 4780 "vm.inc"
4556
4780
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4557
4781
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_0(idx)
4558
4782
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4572,7 +4796,7 @@ INSN_ENTRY(setlocal_WC_0)
4572
4796
  RB_DEBUG_COUNTER_INC(lvar_set);
4573
4797
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4574
4798
  }
4575
- # line 4576 "vm.inc"
4799
+ # line 4800 "vm.inc"
4576
4800
  # undef NAME_OF_CURRENT_INSN
4577
4801
 
4578
4802
  /* ### Instruction trailers. ### */
@@ -4595,7 +4819,7 @@ INSN_ENTRY(setlocal_WC_1)
4595
4819
  /* ### Declare and assign variables. ### */
4596
4820
  #line 13 "defs/opt_operand.def"
4597
4821
  const rb_num_t level = 1;
4598
- #line 4599 "vm.inc"
4822
+ #line 4823 "vm.inc"
4599
4823
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4600
4824
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_1(idx)
4601
4825
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
@@ -4615,7 +4839,7 @@ INSN_ENTRY(setlocal_WC_1)
4615
4839
  RB_DEBUG_COUNTER_INC(lvar_set);
4616
4840
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4617
4841
  }
4618
- # line 4619 "vm.inc"
4842
+ # line 4843 "vm.inc"
4619
4843
  # undef NAME_OF_CURRENT_INSN
4620
4844
 
4621
4845
  /* ### Instruction trailers. ### */
@@ -4638,7 +4862,7 @@ INSN_ENTRY(putobject_INT2FIX_0_)
4638
4862
  /* ### Declare and assign variables. ### */
4639
4863
  #line 15 "defs/opt_operand.def"
4640
4864
  const VALUE val = INT2FIX(0);
4641
- #line 4642 "vm.inc"
4865
+ #line 4866 "vm.inc"
4642
4866
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_0_()
4643
4867
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4644
4868
 
@@ -4668,7 +4892,7 @@ INSN_ENTRY(putobject_INT2FIX_1_)
4668
4892
  /* ### Declare and assign variables. ### */
4669
4893
  #line 16 "defs/opt_operand.def"
4670
4894
  const VALUE val = INT2FIX(1);
4671
- #line 4672 "vm.inc"
4895
+ #line 4896 "vm.inc"
4672
4896
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_1_()
4673
4897
  const bool MAYBE_UNUSED(leaf) = INSN_ATTR(leaf);
4674
4898
 
@@ -4940,15 +5164,6 @@ INSN_ENTRY(trace_newarray)
4940
5164
  END_INSN(trace_newarray);
4941
5165
  }
4942
5166
 
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
5167
  /* insn trace_pushtoarraykwsplat(...)(...)(...) */
4953
5168
  INSN_ENTRY(trace_pushtoarraykwsplat)
4954
5169
  {
@@ -5201,6 +5416,15 @@ INSN_ENTRY(trace_send)
5201
5416
  END_INSN(trace_send);
5202
5417
  }
5203
5418
 
5419
+ /* insn trace_sendforward(...)(...)(...) */
5420
+ INSN_ENTRY(trace_sendforward)
5421
+ {
5422
+ vm_trace(ec, GET_CFP());
5423
+
5424
+ DISPATCH_ORIGINAL_INSN(sendforward);
5425
+ END_INSN(trace_sendforward);
5426
+ }
5427
+
5204
5428
  /* insn trace_opt_send_without_block(...)(...)(...) */
5205
5429
  INSN_ENTRY(trace_opt_send_without_block)
5206
5430
  {
@@ -5219,6 +5443,24 @@ INSN_ENTRY(trace_objtostring)
5219
5443
  END_INSN(trace_objtostring);
5220
5444
  }
5221
5445
 
5446
+ /* insn trace_opt_ary_freeze(...)(...)(...) */
5447
+ INSN_ENTRY(trace_opt_ary_freeze)
5448
+ {
5449
+ vm_trace(ec, GET_CFP());
5450
+
5451
+ DISPATCH_ORIGINAL_INSN(opt_ary_freeze);
5452
+ END_INSN(trace_opt_ary_freeze);
5453
+ }
5454
+
5455
+ /* insn trace_opt_hash_freeze(...)(...)(...) */
5456
+ INSN_ENTRY(trace_opt_hash_freeze)
5457
+ {
5458
+ vm_trace(ec, GET_CFP());
5459
+
5460
+ DISPATCH_ORIGINAL_INSN(opt_hash_freeze);
5461
+ END_INSN(trace_opt_hash_freeze);
5462
+ }
5463
+
5222
5464
  /* insn trace_opt_str_freeze(...)(...)(...) */
5223
5465
  INSN_ENTRY(trace_opt_str_freeze)
5224
5466
  {
@@ -5246,6 +5488,15 @@ INSN_ENTRY(trace_opt_str_uminus)
5246
5488
  END_INSN(trace_opt_str_uminus);
5247
5489
  }
5248
5490
 
5491
+ /* insn trace_opt_duparray_send(...)(...)(...) */
5492
+ INSN_ENTRY(trace_opt_duparray_send)
5493
+ {
5494
+ vm_trace(ec, GET_CFP());
5495
+
5496
+ DISPATCH_ORIGINAL_INSN(opt_duparray_send);
5497
+ END_INSN(trace_opt_duparray_send);
5498
+ }
5499
+
5249
5500
  /* insn trace_opt_newarray_send(...)(...)(...) */
5250
5501
  INSN_ENTRY(trace_opt_newarray_send)
5251
5502
  {
@@ -5264,6 +5515,15 @@ INSN_ENTRY(trace_invokesuper)
5264
5515
  END_INSN(trace_invokesuper);
5265
5516
  }
5266
5517
 
5518
+ /* insn trace_invokesuperforward(...)(...)(...) */
5519
+ INSN_ENTRY(trace_invokesuperforward)
5520
+ {
5521
+ vm_trace(ec, GET_CFP());
5522
+
5523
+ DISPATCH_ORIGINAL_INSN(invokesuperforward);
5524
+ END_INSN(trace_invokesuperforward);
5525
+ }
5526
+
5267
5527
  /* insn trace_invokeblock(...)(...)(...) */
5268
5528
  INSN_ENTRY(trace_invokeblock)
5269
5529
  {