debase-ruby_core_source 0.10.13 → 0.10.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/debase-ruby_core_source.gemspec +3 -3
  4. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/addr2line.h +1 -1
  5. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-2.5.4-p155}/ccan/build_assert/build_assert.h +0 -0
  6. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-2.5.4-p155}/ccan/check_type/check_type.h +0 -0
  7. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-2.5.4-p155}/ccan/container_of/container_of.h +0 -0
  8. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/ccan/list/list.h +773 -0
  9. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-2.5.4-p155}/ccan/str/str.h +0 -0
  10. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/constant.h +51 -0
  11. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/debug_counter.h +109 -0
  12. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/dln.h +10 -9
  13. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/encindex.h +69 -0
  14. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/eval_intern.h +334 -0
  15. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/gc.h +27 -10
  16. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/id.h +250 -0
  17. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/id_table.h +31 -0
  18. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/insns.inc +217 -0
  19. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/insns_info.inc +1570 -0
  20. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/internal.h +2036 -0
  21. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/iseq.h +308 -0
  22. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/known_errors.inc +16 -1
  23. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/method.h +218 -0
  24. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/node.h +115 -79
  25. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/node_name.inc +12 -22
  26. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/opt_sc.inc +1601 -0
  27. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/optinsn.inc +103 -0
  28. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/optunifs.inc +28 -83
  29. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/parse.h +74 -60
  30. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/probes_helper.h +43 -0
  31. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/regenc.h +254 -0
  32. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/regint.h +299 -211
  33. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/regparse.h +45 -37
  34. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/revision.h +1 -0
  35. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/ruby_assert.h +54 -0
  36. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/ruby_atomic.h +84 -26
  37. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/siphash.h +1 -1
  38. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/symbol.h +108 -0
  39. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/thread_pthread.h +14 -11
  40. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/thread_win32.h +2 -6
  41. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/timev.h +42 -0
  42. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/transcode_data.h +34 -12
  43. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/version.h +73 -0
  44. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm.inc +3667 -0
  45. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm_call_iseq_optimized.inc +213 -0
  46. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm_core.h +1768 -0
  47. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550/debug.h → ruby-2.5.4-p155/vm_debug.h} +4 -8
  48. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/vm_exec.h +38 -30
  49. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vm_insnhelper.h +255 -0
  50. data/lib/debase/ruby_core_source/{ruby-1.9.3-p550 → ruby-2.5.4-p155}/vm_opts.h +14 -9
  51. data/lib/debase/ruby_core_source/ruby-2.5.4-p155/vmtc.inc +214 -0
  52. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/addr2line.h +0 -0
  53. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/builtin.h +1 -0
  54. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/ccan/build_assert/build_assert.h +40 -0
  55. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/ccan/check_type/check_type.h +63 -0
  56. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/ccan/container_of/container_of.h +142 -0
  57. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ccan/list/list.h +0 -0
  58. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/ccan/str/str.h +16 -0
  59. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/constant.h +0 -0
  60. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/darray.h +0 -0
  61. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/debug_counter.h +2 -0
  62. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/dln.h +0 -0
  63. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/encindex.h +0 -0
  64. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/eval_intern.h +32 -1
  65. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/gc.h +0 -1
  66. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/hrtime.h +0 -0
  67. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/id.h +0 -0
  68. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/id_table.h +0 -0
  69. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/insns.inc +4 -2
  70. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/insns_info.inc +309 -224
  71. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/array.h +0 -0
  72. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/bignum.h +0 -0
  73. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/bits.h +0 -0
  74. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/class.h +13 -5
  75. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/compar.h +0 -0
  76. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/compile.h +0 -0
  77. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/compilers.h +0 -0
  78. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/complex.h +0 -0
  79. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/cont.h +0 -0
  80. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/dir.h +0 -0
  81. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/enc.h +0 -0
  82. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/encoding.h +0 -0
  83. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/enum.h +0 -0
  84. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/enumerator.h +0 -0
  85. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/error.h +0 -0
  86. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/eval.h +0 -0
  87. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/file.h +0 -0
  88. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/fixnum.h +0 -0
  89. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/gc.h +12 -1
  90. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/hash.h +0 -0
  91. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/imemo.h +0 -0
  92. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/inits.h +0 -0
  93. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/io.h +0 -0
  94. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/load.h +0 -0
  95. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/loadpath.h +0 -0
  96. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/math.h +0 -0
  97. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/missing.h +0 -0
  98. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/numeric.h +0 -0
  99. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/object.h +0 -0
  100. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/parse.h +0 -0
  101. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/proc.h +0 -0
  102. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/process.h +0 -0
  103. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/random.h +0 -0
  104. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/range.h +0 -0
  105. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/rational.h +0 -0
  106. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/re.h +0 -0
  107. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/sanitizers.h +0 -0
  108. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/serial.h +0 -0
  109. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/signal.h +0 -0
  110. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/static_assert.h +0 -0
  111. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/string.h +0 -0
  112. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/struct.h +0 -0
  113. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/symbol.h +1 -0
  114. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/thread.h +0 -0
  115. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/time.h +0 -0
  116. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/transcode.h +0 -0
  117. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/util.h +0 -0
  118. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/variable.h +0 -0
  119. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/vm.h +2 -1
  120. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal/warnings.h +0 -0
  121. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/internal.h +0 -0
  122. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/iseq.h +3 -1
  123. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/known_errors.inc +0 -0
  124. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/method.h +14 -6
  125. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/mjit.h +0 -0
  126. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/mjit_compile.inc +64 -7
  127. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/node.h +28 -17
  128. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/node_name.inc +0 -2
  129. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/opt_sc.inc +2 -0
  130. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/optinsn.inc +0 -0
  131. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/optunifs.inc +1 -1
  132. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/parse.h +0 -0
  133. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/probes_helper.h +0 -0
  134. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ractor_core.h +0 -0
  135. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/regenc.h +0 -0
  136. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/regint.h +0 -0
  137. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/regparse.h +0 -0
  138. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/revision.h +2 -0
  139. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ruby_assert.h +0 -0
  140. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/ruby_atomic.h +0 -0
  141. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/siphash.h +0 -0
  142. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/symbol.h +0 -0
  143. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/thread_pthread.h +0 -0
  144. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/thread_win32.h +0 -0
  145. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/timev.h +0 -0
  146. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/transcode_data.h +0 -0
  147. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/transient_heap.h +0 -0
  148. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/variable.h +0 -0
  149. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/version.h +4 -4
  150. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm.inc +338 -283
  151. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_call_iseq_optimized.inc +0 -0
  152. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_callinfo.h +41 -8
  153. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_core.h +6 -2
  154. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_debug.h +8 -3
  155. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_exec.h +0 -0
  156. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_insnhelper.h +0 -0
  157. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vm_opts.h +0 -0
  158. data/lib/debase/ruby_core_source/ruby-3.1.0-p0/vm_sync.h +137 -0
  159. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/vmtc.inc +4 -2
  160. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit.h +11 -1
  161. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_asm.h +21 -5
  162. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_codegen.h +5 -1
  163. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_core.h +11 -6
  164. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.1.0-p0}/yjit_iface.h +0 -0
  165. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/addr2line.h +20 -0
  166. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/builtin.h +84 -0
  167. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/build_assert/build_assert.h +40 -0
  168. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/check_type/check_type.h +63 -0
  169. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/container_of/container_of.h +142 -0
  170. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/list/list.h +789 -0
  171. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ccan/str/str.h +17 -0
  172. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/constant.h +55 -0
  173. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/darray.h +226 -0
  174. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/debug_counter.h +469 -0
  175. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/dln.h +31 -0
  176. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/encindex.h +70 -0
  177. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/eval_intern.h +339 -0
  178. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/gc.h +143 -0
  179. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/hrtime.h +216 -0
  180. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/id.h +295 -0
  181. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/id_table.h +36 -0
  182. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/insns.inc +249 -0
  183. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/insns_info.inc +9064 -0
  184. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/array.h +113 -0
  185. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/bignum.h +246 -0
  186. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/bits.h +565 -0
  187. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/class.h +211 -0
  188. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/cmdlineopt.h +61 -0
  189. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/compar.h +49 -0
  190. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/compile.h +35 -0
  191. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/compilers.h +107 -0
  192. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/complex.h +29 -0
  193. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/cont.h +24 -0
  194. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/dir.h +16 -0
  195. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/enc.h +19 -0
  196. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/encoding.h +30 -0
  197. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/enum.h +18 -0
  198. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/enumerator.h +21 -0
  199. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/error.h +191 -0
  200. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/eval.h +32 -0
  201. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/file.h +38 -0
  202. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/fixnum.h +184 -0
  203. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/gc.h +188 -0
  204. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/hash.h +243 -0
  205. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/imemo.h +243 -0
  206. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/inits.h +50 -0
  207. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/io.h +38 -0
  208. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/load.h +18 -0
  209. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/loadpath.h +16 -0
  210. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/math.h +23 -0
  211. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/missing.h +18 -0
  212. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/numeric.h +271 -0
  213. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/object.h +83 -0
  214. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/parse.h +23 -0
  215. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/proc.h +32 -0
  216. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/process.h +137 -0
  217. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/ractor.h +6 -0
  218. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/random.h +16 -0
  219. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/range.h +40 -0
  220. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/rational.h +72 -0
  221. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/re.h +30 -0
  222. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/sanitizers.h +190 -0
  223. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/serial.h +23 -0
  224. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/signal.h +21 -0
  225. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/static_assert.h +16 -0
  226. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/string.h +141 -0
  227. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/struct.h +153 -0
  228. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/symbol.h +41 -0
  229. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/thread.h +53 -0
  230. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/time.h +34 -0
  231. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/transcode.h +20 -0
  232. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/util.h +27 -0
  233. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/variable.h +83 -0
  234. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/vm.h +134 -0
  235. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal/warnings.h +16 -0
  236. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/internal.h +109 -0
  237. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/iseq.h +325 -0
  238. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/known_errors.inc +791 -0
  239. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/method.h +254 -0
  240. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/mjit.h +231 -0
  241. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/mjit_compile.inc +8333 -0
  242. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/node.h +510 -0
  243. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/node_name.inc +208 -0
  244. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/opt_sc.inc +109 -0
  245. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/optinsn.inc +128 -0
  246. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/optunifs.inc +43 -0
  247. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/parse.h +214 -0
  248. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/probes_helper.h +44 -0
  249. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ractor_core.h +346 -0
  250. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/regenc.h +255 -0
  251. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/regint.h +957 -0
  252. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/regparse.h +370 -0
  253. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/revision.h +2 -0
  254. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ruby_assert.h +14 -0
  255. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/ruby_atomic.h +23 -0
  256. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/siphash.h +48 -0
  257. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/symbol.h +119 -0
  258. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/thread_none.h +17 -0
  259. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/thread_pthread.h +115 -0
  260. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/thread_win32.h +61 -0
  261. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/timev.h +57 -0
  262. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/transcode_data.h +138 -0
  263. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/transient_heap.h +65 -0
  264. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/variable.h +21 -0
  265. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/version.h +91 -0
  266. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm.inc +5481 -0
  267. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_call_iseq_optimized.inc +244 -0
  268. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_callinfo.h +502 -0
  269. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_core.h +2089 -0
  270. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_debug.h +113 -0
  271. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_exec.h +197 -0
  272. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_insnhelper.h +262 -0
  273. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vm_opts.h +73 -0
  274. data/lib/debase/ruby_core_source/{ruby-3.1.0-preview1 → ruby-3.2.0-preview1}/vm_sync.h +0 -0
  275. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/vmtc.inc +243 -0
  276. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit.h +73 -0
  277. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_asm.h +408 -0
  278. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_codegen.h +23 -0
  279. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_core.h +307 -0
  280. data/lib/debase/ruby_core_source/ruby-3.2.0-preview1/yjit_iface.h +38 -0
  281. data/lib/debase/ruby_core_source/version.rb +1 -1
  282. metadata +284 -158
  283. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/constant.h +0 -34
  284. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/encdb.h +0 -167
  285. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/eval_intern.h +0 -234
  286. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/id.h +0 -177
  287. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/insns.inc +0 -179
  288. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/insns_info.inc +0 -695
  289. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/internal.h +0 -242
  290. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/iseq.h +0 -126
  291. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/method.h +0 -105
  292. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/opt_sc.inc +0 -670
  293. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/optinsn.inc +0 -30
  294. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/regenc.h +0 -219
  295. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/revision.h +0 -1
  296. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/timev.h +0 -21
  297. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/transdb.h +0 -189
  298. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/version.h +0 -52
  299. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vm.inc +0 -3054
  300. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vm_core.h +0 -763
  301. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vm_insnhelper.h +0 -220
  302. data/lib/debase/ruby_core_source/ruby-1.9.3-p550/vmtc.inc +0 -97
  303. data/lib/debase/ruby_core_source/ruby-3.1.0-preview1/revision.h +0 -2
@@ -47,7 +47,7 @@ INSN_ENTRY(nop)
47
47
 
48
48
  /* ### Declare and assign variables. ### */
49
49
  # define INSN_ATTR(x) attr_ ## x ## _nop()
50
- bool leaf = INSN_ATTR(leaf);
50
+ const bool leaf = INSN_ATTR(leaf);
51
51
 
52
52
  /* ### Instruction preambles. ### */
53
53
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -74,7 +74,7 @@ INSN_ENTRY(getlocal)
74
74
  lindex_t idx = (lindex_t)GET_OPERAND(1);
75
75
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
76
76
  # define INSN_ATTR(x) attr_ ## x ## _getlocal(idx, level)
77
- bool leaf = INSN_ATTR(leaf);
77
+ const bool leaf = INSN_ATTR(leaf);
78
78
  VALUE val;
79
79
 
80
80
  /* ### Instruction preambles. ### */
@@ -120,7 +120,7 @@ INSN_ENTRY(setlocal)
120
120
  lindex_t idx = (lindex_t)GET_OPERAND(1);
121
121
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
122
122
  # define INSN_ATTR(x) attr_ ## x ## _setlocal(idx, level)
123
- bool leaf = INSN_ATTR(leaf);
123
+ const bool leaf = INSN_ATTR(leaf);
124
124
  VALUE val = TOPN(0);
125
125
 
126
126
  /* ### Instruction preambles. ### */
@@ -163,7 +163,7 @@ INSN_ENTRY(getblockparam)
163
163
  lindex_t idx = (lindex_t)GET_OPERAND(1);
164
164
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
165
165
  # define INSN_ATTR(x) attr_ ## x ## _getblockparam(idx, level)
166
- bool leaf = INSN_ATTR(leaf);
166
+ const bool leaf = INSN_ATTR(leaf);
167
167
  VALUE val;
168
168
 
169
169
  /* ### Instruction preambles. ### */
@@ -219,7 +219,7 @@ INSN_ENTRY(setblockparam)
219
219
  lindex_t idx = (lindex_t)GET_OPERAND(1);
220
220
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
221
221
  # define INSN_ATTR(x) attr_ ## x ## _setblockparam(idx, level)
222
- bool leaf = INSN_ATTR(leaf);
222
+ const bool leaf = INSN_ATTR(leaf);
223
223
  VALUE val = TOPN(0);
224
224
 
225
225
  /* ### Instruction preambles. ### */
@@ -267,7 +267,7 @@ INSN_ENTRY(getblockparamproxy)
267
267
  lindex_t idx = (lindex_t)GET_OPERAND(1);
268
268
  rb_num_t level = (rb_num_t)GET_OPERAND(2);
269
269
  # define INSN_ATTR(x) attr_ ## x ## _getblockparamproxy(idx, level)
270
- bool leaf = INSN_ATTR(leaf);
270
+ const bool leaf = INSN_ATTR(leaf);
271
271
  VALUE val;
272
272
 
273
273
  /* ### Instruction preambles. ### */
@@ -344,7 +344,7 @@ INSN_ENTRY(getspecial)
344
344
  rb_num_t key = (rb_num_t)GET_OPERAND(1);
345
345
  rb_num_t type = (rb_num_t)GET_OPERAND(2);
346
346
  # define INSN_ATTR(x) attr_ ## x ## _getspecial(key, type)
347
- bool leaf = INSN_ATTR(leaf);
347
+ const bool leaf = INSN_ATTR(leaf);
348
348
  VALUE val;
349
349
 
350
350
  /* ### Instruction preambles. ### */
@@ -387,7 +387,7 @@ INSN_ENTRY(setspecial)
387
387
  /* ### Declare and assign variables. ### */
388
388
  rb_num_t key = (rb_num_t)GET_OPERAND(1);
389
389
  # define INSN_ATTR(x) attr_ ## x ## _setspecial(key)
390
- bool leaf = INSN_ATTR(leaf);
390
+ const bool leaf = INSN_ATTR(leaf);
391
391
  VALUE obj = TOPN(0);
392
392
 
393
393
  /* ### Instruction preambles. ### */
@@ -427,7 +427,7 @@ INSN_ENTRY(getinstancevariable)
427
427
  ID id = (ID)GET_OPERAND(1);
428
428
  IVC ic = (IVC)GET_OPERAND(2);
429
429
  # define INSN_ATTR(x) attr_ ## x ## _getinstancevariable(id, ic)
430
- bool leaf = INSN_ATTR(leaf);
430
+ const bool leaf = INSN_ATTR(leaf);
431
431
  VALUE val;
432
432
 
433
433
  /* ### Instruction preambles. ### */
@@ -471,7 +471,7 @@ INSN_ENTRY(setinstancevariable)
471
471
  ID id = (ID)GET_OPERAND(1);
472
472
  IVC ic = (IVC)GET_OPERAND(2);
473
473
  # define INSN_ATTR(x) attr_ ## x ## _setinstancevariable(id, ic)
474
- bool leaf = INSN_ATTR(leaf);
474
+ const bool leaf = INSN_ATTR(leaf);
475
475
  VALUE val = TOPN(0);
476
476
 
477
477
  /* ### Instruction preambles. ### */
@@ -512,7 +512,7 @@ INSN_ENTRY(getclassvariable)
512
512
  ID id = (ID)GET_OPERAND(1);
513
513
  IVC ic = (IVC)GET_OPERAND(2);
514
514
  # define INSN_ATTR(x) attr_ ## x ## _getclassvariable(id, ic)
515
- bool leaf = INSN_ATTR(leaf);
515
+ const bool leaf = INSN_ATTR(leaf);
516
516
  VALUE val;
517
517
 
518
518
  /* ### Instruction preambles. ### */
@@ -526,11 +526,10 @@ INSN_ENTRY(getclassvariable)
526
526
  # define NAME_OF_CURRENT_INSN getclassvariable
527
527
  # line 238 "insns.def"
528
528
  {
529
- rb_cref_t * cref = vm_get_cref(GET_EP());
530
529
  rb_control_frame_t *cfp = GET_CFP();
531
- val = vm_getclassvariable(GET_ISEQ(), cref, cfp, id, (ICVARC)ic);
530
+ val = vm_getclassvariable(GET_ISEQ(), cfp, id, (ICVARC)ic);
532
531
  }
533
- # line 534 "vm.inc"
532
+ # line 533 "vm.inc"
534
533
  # undef NAME_OF_CURRENT_INSN
535
534
 
536
535
  /* ### Instruction trailers. ### */
@@ -558,7 +557,7 @@ INSN_ENTRY(setclassvariable)
558
557
  ID id = (ID)GET_OPERAND(1);
559
558
  IVC ic = (IVC)GET_OPERAND(2);
560
559
  # define INSN_ATTR(x) attr_ ## x ## _setclassvariable(id, ic)
561
- bool leaf = INSN_ATTR(leaf);
560
+ const bool leaf = INSN_ATTR(leaf);
562
561
  VALUE val = TOPN(0);
563
562
 
564
563
  /* ### Instruction preambles. ### */
@@ -570,12 +569,12 @@ INSN_ENTRY(setclassvariable)
570
569
 
571
570
  /* ### Here we do the instruction body. ### */
572
571
  # define NAME_OF_CURRENT_INSN setclassvariable
573
- # line 252 "insns.def"
572
+ # line 251 "insns.def"
574
573
  {
575
574
  vm_ensure_not_refinement_module(GET_SELF());
576
- vm_setclassvariable(GET_ISEQ(), vm_get_cref(GET_EP()), GET_CFP(), id, val, (ICVARC)ic);
575
+ vm_setclassvariable(GET_ISEQ(), GET_CFP(), id, val, (ICVARC)ic);
577
576
  }
578
- # line 579 "vm.inc"
577
+ # line 578 "vm.inc"
579
578
  # undef NAME_OF_CURRENT_INSN
580
579
 
581
580
  /* ### Instruction trailers. ### */
@@ -599,7 +598,7 @@ INSN_ENTRY(getconstant)
599
598
  /* ### Declare and assign variables. ### */
600
599
  ID id = (ID)GET_OPERAND(1);
601
600
  # define INSN_ATTR(x) attr_ ## x ## _getconstant(id)
602
- bool leaf = INSN_ATTR(leaf);
601
+ const bool leaf = INSN_ATTR(leaf);
603
602
  VALUE klass = TOPN(1);
604
603
  VALUE allow_nil = TOPN(0);
605
604
  VALUE val;
@@ -612,11 +611,11 @@ INSN_ENTRY(getconstant)
612
611
 
613
612
  /* ### Here we do the instruction body. ### */
614
613
  # define NAME_OF_CURRENT_INSN getconstant
615
- # line 268 "insns.def"
614
+ # line 267 "insns.def"
616
615
  {
617
616
  val = vm_get_ev_const(ec, klass, id, allow_nil == Qtrue, 0);
618
617
  }
619
- # line 620 "vm.inc"
618
+ # line 619 "vm.inc"
620
619
  # undef NAME_OF_CURRENT_INSN
621
620
 
622
621
  /* ### Instruction trailers. ### */
@@ -643,7 +642,7 @@ INSN_ENTRY(setconstant)
643
642
  /* ### Declare and assign variables. ### */
644
643
  ID id = (ID)GET_OPERAND(1);
645
644
  # define INSN_ATTR(x) attr_ ## x ## _setconstant(id)
646
- bool leaf = INSN_ATTR(leaf);
645
+ const bool leaf = INSN_ATTR(leaf);
647
646
  VALUE val = TOPN(1);
648
647
  VALUE cbase = TOPN(0);
649
648
 
@@ -655,13 +654,13 @@ INSN_ENTRY(setconstant)
655
654
 
656
655
  /* ### Here we do the instruction body. ### */
657
656
  # define NAME_OF_CURRENT_INSN setconstant
658
- # line 284 "insns.def"
657
+ # line 283 "insns.def"
659
658
  {
660
659
  vm_check_if_namespace(cbase);
661
660
  vm_ensure_not_refinement_module(GET_SELF());
662
661
  rb_const_set(cbase, id, val);
663
662
  }
664
- # line 665 "vm.inc"
663
+ # line 664 "vm.inc"
665
664
  # undef NAME_OF_CURRENT_INSN
666
665
 
667
666
  /* ### Instruction trailers. ### */
@@ -685,7 +684,7 @@ INSN_ENTRY(getglobal)
685
684
  /* ### Declare and assign variables. ### */
686
685
  ID gid = (ID)GET_OPERAND(1);
687
686
  # define INSN_ATTR(x) attr_ ## x ## _getglobal(gid)
688
- bool leaf = INSN_ATTR(leaf);
687
+ const bool leaf = INSN_ATTR(leaf);
689
688
  VALUE val;
690
689
 
691
690
  /* ### Instruction preambles. ### */
@@ -696,11 +695,11 @@ INSN_ENTRY(getglobal)
696
695
 
697
696
  /* ### Here we do the instruction body. ### */
698
697
  # define NAME_OF_CURRENT_INSN getglobal
699
- # line 297 "insns.def"
698
+ # line 296 "insns.def"
700
699
  {
701
700
  val = rb_gvar_get(gid);
702
701
  }
703
- # line 704 "vm.inc"
702
+ # line 703 "vm.inc"
704
703
  # undef NAME_OF_CURRENT_INSN
705
704
 
706
705
  /* ### Instruction trailers. ### */
@@ -727,7 +726,7 @@ INSN_ENTRY(setglobal)
727
726
  /* ### Declare and assign variables. ### */
728
727
  ID gid = (ID)GET_OPERAND(1);
729
728
  # define INSN_ATTR(x) attr_ ## x ## _setglobal(gid)
730
- bool leaf = INSN_ATTR(leaf);
729
+ const bool leaf = INSN_ATTR(leaf);
731
730
  VALUE val = TOPN(0);
732
731
 
733
732
  /* ### Instruction preambles. ### */
@@ -738,11 +737,11 @@ INSN_ENTRY(setglobal)
738
737
 
739
738
  /* ### Here we do the instruction body. ### */
740
739
  # define NAME_OF_CURRENT_INSN setglobal
741
- # line 308 "insns.def"
740
+ # line 307 "insns.def"
742
741
  {
743
742
  rb_gvar_set(gid, val);
744
743
  }
745
- # line 746 "vm.inc"
744
+ # line 745 "vm.inc"
746
745
  # undef NAME_OF_CURRENT_INSN
747
746
 
748
747
  /* ### Instruction trailers. ### */
@@ -765,7 +764,7 @@ INSN_ENTRY(putnil)
765
764
 
766
765
  /* ### Declare and assign variables. ### */
767
766
  # define INSN_ATTR(x) attr_ ## x ## _putnil()
768
- bool leaf = INSN_ATTR(leaf);
767
+ const bool leaf = INSN_ATTR(leaf);
769
768
  VALUE val;
770
769
 
771
770
  /* ### Instruction preambles. ### */
@@ -775,11 +774,11 @@ INSN_ENTRY(putnil)
775
774
 
776
775
  /* ### Here we do the instruction body. ### */
777
776
  # define NAME_OF_CURRENT_INSN putnil
778
- # line 322 "insns.def"
777
+ # line 321 "insns.def"
779
778
  {
780
779
  val = Qnil;
781
780
  }
782
- # line 783 "vm.inc"
781
+ # line 782 "vm.inc"
783
782
  # undef NAME_OF_CURRENT_INSN
784
783
 
785
784
  /* ### Instruction trailers. ### */
@@ -805,7 +804,7 @@ INSN_ENTRY(putself)
805
804
 
806
805
  /* ### Declare and assign variables. ### */
807
806
  # define INSN_ATTR(x) attr_ ## x ## _putself()
808
- bool leaf = INSN_ATTR(leaf);
807
+ const bool leaf = INSN_ATTR(leaf);
809
808
  VALUE val;
810
809
 
811
810
  /* ### Instruction preambles. ### */
@@ -815,11 +814,11 @@ INSN_ENTRY(putself)
815
814
 
816
815
  /* ### Here we do the instruction body. ### */
817
816
  # define NAME_OF_CURRENT_INSN putself
818
- # line 332 "insns.def"
817
+ # line 331 "insns.def"
819
818
  {
820
819
  val = GET_SELF();
821
820
  }
822
- # line 823 "vm.inc"
821
+ # line 822 "vm.inc"
823
822
  # undef NAME_OF_CURRENT_INSN
824
823
 
825
824
  /* ### Instruction trailers. ### */
@@ -846,7 +845,7 @@ INSN_ENTRY(putobject)
846
845
  /* ### Declare and assign variables. ### */
847
846
  VALUE val = (VALUE)GET_OPERAND(1);
848
847
  # define INSN_ATTR(x) attr_ ## x ## _putobject(val)
849
- bool leaf = INSN_ATTR(leaf);
848
+ const bool leaf = INSN_ATTR(leaf);
850
849
 
851
850
  /* ### Instruction preambles. ### */
852
851
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -876,7 +875,7 @@ INSN_ENTRY(putspecialobject)
876
875
  /* ### Declare and assign variables. ### */
877
876
  rb_num_t value_type = (rb_num_t)GET_OPERAND(1);
878
877
  # define INSN_ATTR(x) attr_ ## x ## _putspecialobject(value_type)
879
- bool leaf = INSN_ATTR(leaf);
878
+ const bool leaf = INSN_ATTR(leaf);
880
879
  VALUE val;
881
880
 
882
881
  /* ### Instruction preambles. ### */
@@ -894,7 +893,7 @@ INSN_ENTRY(putspecialobject)
894
893
  type = (enum vm_special_object_type)value_type;
895
894
  val = vm_get_special_object(GET_EP(), type);
896
895
  }
897
- # line 898 "vm.inc"
896
+ # line 897 "vm.inc"
898
897
  # undef NAME_OF_CURRENT_INSN
899
898
 
900
899
  /* ### Instruction trailers. ### */
@@ -921,7 +920,7 @@ INSN_ENTRY(putstring)
921
920
  /* ### Declare and assign variables. ### */
922
921
  VALUE str = (VALUE)GET_OPERAND(1);
923
922
  # define INSN_ATTR(x) attr_ ## x ## _putstring(str)
924
- bool leaf = INSN_ATTR(leaf);
923
+ const bool leaf = INSN_ATTR(leaf);
925
924
  VALUE val;
926
925
 
927
926
  /* ### Instruction preambles. ### */
@@ -936,7 +935,7 @@ INSN_ENTRY(putstring)
936
935
  {
937
936
  val = rb_ec_str_resurrect(ec, str);
938
937
  }
939
- # line 940 "vm.inc"
938
+ # line 939 "vm.inc"
940
939
  # undef NAME_OF_CURRENT_INSN
941
940
 
942
941
  /* ### Instruction trailers. ### */
@@ -963,7 +962,7 @@ INSN_ENTRY(concatstrings)
963
962
  /* ### Declare and assign variables. ### */
964
963
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
965
964
  # define INSN_ATTR(x) attr_ ## x ## _concatstrings(num)
966
- bool leaf = INSN_ATTR(leaf);
965
+ const bool leaf = INSN_ATTR(leaf);
967
966
  VALUE val;
968
967
 
969
968
  /* ### Instruction preambles. ### */
@@ -978,7 +977,7 @@ INSN_ENTRY(concatstrings)
978
977
  {
979
978
  val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));
980
979
  }
981
- # line 982 "vm.inc"
980
+ # line 981 "vm.inc"
982
981
  # undef NAME_OF_CURRENT_INSN
983
982
 
984
983
  /* ### Instruction trailers. ### */
@@ -995,16 +994,16 @@ INSN_ENTRY(concatstrings)
995
994
  END_INSN(concatstrings);
996
995
  }
997
996
 
998
- /* insn tostring()(val, str)(val) */
999
- INSN_ENTRY(tostring)
997
+ /* insn anytostring()(val, str)(val) */
998
+ INSN_ENTRY(anytostring)
1000
999
  {
1001
1000
  /* ### Declare that we have just entered into an instruction. ### */
1002
- START_OF_ORIGINAL_INSN(tostring);
1003
- DEBUG_ENTER_INSN("tostring");
1001
+ START_OF_ORIGINAL_INSN(anytostring);
1002
+ DEBUG_ENTER_INSN("anytostring");
1004
1003
 
1005
1004
  /* ### Declare and assign variables. ### */
1006
- # define INSN_ATTR(x) attr_ ## x ## _tostring()
1007
- bool leaf = INSN_ATTR(leaf);
1005
+ # define INSN_ATTR(x) attr_ ## x ## _anytostring()
1006
+ const bool leaf = INSN_ATTR(leaf);
1008
1007
  VALUE val = TOPN(1);
1009
1008
  VALUE str = TOPN(0);
1010
1009
 
@@ -1014,12 +1013,12 @@ INSN_ENTRY(tostring)
1014
1013
  COLLECT_USAGE_INSN(INSN_ATTR(bin));
1015
1014
 
1016
1015
  /* ### Here we do the instruction body. ### */
1017
- # define NAME_OF_CURRENT_INSN tostring
1018
- # line 391 "insns.def"
1016
+ # define NAME_OF_CURRENT_INSN anytostring
1017
+ # line 392 "insns.def"
1019
1018
  {
1020
1019
  val = rb_obj_as_string_result(str, val);
1021
1020
  }
1022
- # line 1023 "vm.inc"
1021
+ # line 1022 "vm.inc"
1023
1022
  # undef NAME_OF_CURRENT_INSN
1024
1023
 
1025
1024
  /* ### Instruction trailers. ### */
@@ -1033,7 +1032,7 @@ INSN_ENTRY(tostring)
1033
1032
  # undef INSN_ATTR
1034
1033
 
1035
1034
  /* ### Leave the instruction. ### */
1036
- END_INSN(tostring);
1035
+ END_INSN(anytostring);
1037
1036
  }
1038
1037
 
1039
1038
  /* insn toregexp(opt, cnt)(...)(val) */
@@ -1047,7 +1046,7 @@ INSN_ENTRY(toregexp)
1047
1046
  rb_num_t opt = (rb_num_t)GET_OPERAND(1);
1048
1047
  rb_num_t cnt = (rb_num_t)GET_OPERAND(2);
1049
1048
  # define INSN_ATTR(x) attr_ ## x ## _toregexp(opt, cnt)
1050
- bool leaf = INSN_ATTR(leaf);
1049
+ const bool leaf = INSN_ATTR(leaf);
1051
1050
  VALUE val;
1052
1051
 
1053
1052
  /* ### Instruction preambles. ### */
@@ -1059,13 +1058,13 @@ INSN_ENTRY(toregexp)
1059
1058
 
1060
1059
  /* ### Here we do the instruction body. ### */
1061
1060
  # define NAME_OF_CURRENT_INSN toregexp
1062
- # line 407 "insns.def"
1061
+ # line 408 "insns.def"
1063
1062
  {
1064
1063
  const VALUE ary = rb_ary_tmp_new_from_values(0, cnt, STACK_ADDR_FROM_TOP(cnt));
1065
1064
  val = rb_reg_new_ary(ary, (int)opt);
1066
1065
  rb_ary_clear(ary);
1067
1066
  }
1068
- # line 1069 "vm.inc"
1067
+ # line 1068 "vm.inc"
1069
1068
  # undef NAME_OF_CURRENT_INSN
1070
1069
 
1071
1070
  /* ### Instruction trailers. ### */
@@ -1091,7 +1090,7 @@ INSN_ENTRY(intern)
1091
1090
 
1092
1091
  /* ### Declare and assign variables. ### */
1093
1092
  # define INSN_ATTR(x) attr_ ## x ## _intern()
1094
- bool leaf = INSN_ATTR(leaf);
1093
+ const bool leaf = INSN_ATTR(leaf);
1095
1094
  VALUE str = TOPN(0);
1096
1095
  VALUE sym;
1097
1096
 
@@ -1102,11 +1101,11 @@ INSN_ENTRY(intern)
1102
1101
 
1103
1102
  /* ### Here we do the instruction body. ### */
1104
1103
  # define NAME_OF_CURRENT_INSN intern
1105
- # line 419 "insns.def"
1104
+ # line 420 "insns.def"
1106
1105
  {
1107
1106
  sym = rb_str_intern(str);
1108
1107
  }
1109
- # line 1110 "vm.inc"
1108
+ # line 1109 "vm.inc"
1110
1109
  # undef NAME_OF_CURRENT_INSN
1111
1110
 
1112
1111
  /* ### Instruction trailers. ### */
@@ -1133,7 +1132,7 @@ INSN_ENTRY(newarray)
1133
1132
  /* ### Declare and assign variables. ### */
1134
1133
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1135
1134
  # define INSN_ATTR(x) attr_ ## x ## _newarray(num)
1136
- bool leaf = INSN_ATTR(leaf);
1135
+ const bool leaf = INSN_ATTR(leaf);
1137
1136
  VALUE val;
1138
1137
 
1139
1138
  /* ### Instruction preambles. ### */
@@ -1144,11 +1143,11 @@ INSN_ENTRY(newarray)
1144
1143
 
1145
1144
  /* ### Here we do the instruction body. ### */
1146
1145
  # define NAME_OF_CURRENT_INSN newarray
1147
- # line 430 "insns.def"
1146
+ # line 431 "insns.def"
1148
1147
  {
1149
1148
  val = rb_ec_ary_new_from_values(ec, num, STACK_ADDR_FROM_TOP(num));
1150
1149
  }
1151
- # line 1152 "vm.inc"
1150
+ # line 1151 "vm.inc"
1152
1151
  # undef NAME_OF_CURRENT_INSN
1153
1152
 
1154
1153
  /* ### Instruction trailers. ### */
@@ -1175,7 +1174,7 @@ INSN_ENTRY(newarraykwsplat)
1175
1174
  /* ### Declare and assign variables. ### */
1176
1175
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1177
1176
  # define INSN_ATTR(x) attr_ ## x ## _newarraykwsplat(num)
1178
- bool leaf = INSN_ATTR(leaf);
1177
+ const bool leaf = INSN_ATTR(leaf);
1179
1178
  VALUE val;
1180
1179
 
1181
1180
  /* ### Instruction preambles. ### */
@@ -1186,7 +1185,7 @@ INSN_ENTRY(newarraykwsplat)
1186
1185
 
1187
1186
  /* ### Here we do the instruction body. ### */
1188
1187
  # define NAME_OF_CURRENT_INSN newarraykwsplat
1189
- # line 445 "insns.def"
1188
+ # line 446 "insns.def"
1190
1189
  {
1191
1190
  if (RHASH_EMPTY_P(*STACK_ADDR_FROM_TOP(1))) {
1192
1191
  val = rb_ary_new4(num-1, STACK_ADDR_FROM_TOP(num));
@@ -1195,7 +1194,7 @@ INSN_ENTRY(newarraykwsplat)
1195
1194
  val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));
1196
1195
  }
1197
1196
  }
1198
- # line 1199 "vm.inc"
1197
+ # line 1198 "vm.inc"
1199
1198
  # undef NAME_OF_CURRENT_INSN
1200
1199
 
1201
1200
  /* ### Instruction trailers. ### */
@@ -1222,7 +1221,7 @@ INSN_ENTRY(duparray)
1222
1221
  /* ### Declare and assign variables. ### */
1223
1222
  VALUE ary = (VALUE)GET_OPERAND(1);
1224
1223
  # define INSN_ATTR(x) attr_ ## x ## _duparray(ary)
1225
- bool leaf = INSN_ATTR(leaf);
1224
+ const bool leaf = INSN_ATTR(leaf);
1226
1225
  VALUE val;
1227
1226
 
1228
1227
  /* ### Instruction preambles. ### */
@@ -1233,12 +1232,12 @@ INSN_ENTRY(duparray)
1233
1232
 
1234
1233
  /* ### Here we do the instruction body. ### */
1235
1234
  # define NAME_OF_CURRENT_INSN duparray
1236
- # line 460 "insns.def"
1235
+ # line 461 "insns.def"
1237
1236
  {
1238
1237
  RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));
1239
1238
  val = rb_ary_resurrect(ary);
1240
1239
  }
1241
- # line 1242 "vm.inc"
1240
+ # line 1241 "vm.inc"
1242
1241
  # undef NAME_OF_CURRENT_INSN
1243
1242
 
1244
1243
  /* ### Instruction trailers. ### */
@@ -1265,7 +1264,7 @@ INSN_ENTRY(duphash)
1265
1264
  /* ### Declare and assign variables. ### */
1266
1265
  VALUE hash = (VALUE)GET_OPERAND(1);
1267
1266
  # define INSN_ATTR(x) attr_ ## x ## _duphash(hash)
1268
- bool leaf = INSN_ATTR(leaf);
1267
+ const bool leaf = INSN_ATTR(leaf);
1269
1268
  VALUE val;
1270
1269
 
1271
1270
  /* ### Instruction preambles. ### */
@@ -1276,12 +1275,12 @@ INSN_ENTRY(duphash)
1276
1275
 
1277
1276
  /* ### Here we do the instruction body. ### */
1278
1277
  # define NAME_OF_CURRENT_INSN duphash
1279
- # line 471 "insns.def"
1278
+ # line 472 "insns.def"
1280
1279
  {
1281
1280
  RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);
1282
1281
  val = rb_hash_resurrect(hash);
1283
1282
  }
1284
- # line 1285 "vm.inc"
1283
+ # line 1284 "vm.inc"
1285
1284
  # undef NAME_OF_CURRENT_INSN
1286
1285
 
1287
1286
  /* ### Instruction trailers. ### */
@@ -1309,7 +1308,7 @@ INSN_ENTRY(expandarray)
1309
1308
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1310
1309
  rb_num_t flag = (rb_num_t)GET_OPERAND(2);
1311
1310
  # define INSN_ATTR(x) attr_ ## x ## _expandarray(num, flag)
1312
- bool leaf = INSN_ATTR(leaf);
1311
+ const bool leaf = INSN_ATTR(leaf);
1313
1312
  VALUE ary = TOPN(0);
1314
1313
 
1315
1314
  /* ### Instruction preambles. ### */
@@ -1320,11 +1319,11 @@ INSN_ENTRY(expandarray)
1320
1319
 
1321
1320
  /* ### Here we do the instruction body. ### */
1322
1321
  # define NAME_OF_CURRENT_INSN expandarray
1323
- # line 492 "insns.def"
1322
+ # line 493 "insns.def"
1324
1323
  {
1325
1324
  vm_expandarray(GET_SP(), ary, num, (int)flag);
1326
1325
  }
1327
- # line 1328 "vm.inc"
1326
+ # line 1327 "vm.inc"
1328
1327
  # undef NAME_OF_CURRENT_INSN
1329
1328
 
1330
1329
  /* ### Instruction trailers. ### */
@@ -1346,7 +1345,7 @@ INSN_ENTRY(concatarray)
1346
1345
 
1347
1346
  /* ### Declare and assign variables. ### */
1348
1347
  # define INSN_ATTR(x) attr_ ## x ## _concatarray()
1349
- bool leaf = INSN_ATTR(leaf);
1348
+ const bool leaf = INSN_ATTR(leaf);
1350
1349
  VALUE ary1 = TOPN(1);
1351
1350
  VALUE ary2 = TOPN(0);
1352
1351
  VALUE ary;
@@ -1358,11 +1357,11 @@ INSN_ENTRY(concatarray)
1358
1357
 
1359
1358
  /* ### Here we do the instruction body. ### */
1360
1359
  # define NAME_OF_CURRENT_INSN concatarray
1361
- # line 503 "insns.def"
1360
+ # line 504 "insns.def"
1362
1361
  {
1363
1362
  ary = vm_concat_array(ary1, ary2);
1364
1363
  }
1365
- # line 1366 "vm.inc"
1364
+ # line 1365 "vm.inc"
1366
1365
  # undef NAME_OF_CURRENT_INSN
1367
1366
 
1368
1367
  /* ### Instruction trailers. ### */
@@ -1389,7 +1388,7 @@ INSN_ENTRY(splatarray)
1389
1388
  /* ### Declare and assign variables. ### */
1390
1389
  VALUE flag = (VALUE)GET_OPERAND(1);
1391
1390
  # define INSN_ATTR(x) attr_ ## x ## _splatarray(flag)
1392
- bool leaf = INSN_ATTR(leaf);
1391
+ const bool leaf = INSN_ATTR(leaf);
1393
1392
  VALUE ary = TOPN(0);
1394
1393
  VALUE obj;
1395
1394
 
@@ -1401,11 +1400,11 @@ INSN_ENTRY(splatarray)
1401
1400
 
1402
1401
  /* ### Here we do the instruction body. ### */
1403
1402
  # define NAME_OF_CURRENT_INSN splatarray
1404
- # line 514 "insns.def"
1403
+ # line 515 "insns.def"
1405
1404
  {
1406
1405
  obj = vm_splat_array(flag, ary);
1407
1406
  }
1408
- # line 1409 "vm.inc"
1407
+ # line 1408 "vm.inc"
1409
1408
  # undef NAME_OF_CURRENT_INSN
1410
1409
 
1411
1410
  /* ### Instruction trailers. ### */
@@ -1432,7 +1431,7 @@ INSN_ENTRY(newhash)
1432
1431
  /* ### Declare and assign variables. ### */
1433
1432
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
1434
1433
  # define INSN_ATTR(x) attr_ ## x ## _newhash(num)
1435
- bool leaf = INSN_ATTR(leaf);
1434
+ const bool leaf = INSN_ATTR(leaf);
1436
1435
  VALUE val;
1437
1436
 
1438
1437
  /* ### Instruction preambles. ### */
@@ -1443,7 +1442,7 @@ INSN_ENTRY(newhash)
1443
1442
 
1444
1443
  /* ### Here we do the instruction body. ### */
1445
1444
  # define NAME_OF_CURRENT_INSN newhash
1446
- # line 526 "insns.def"
1445
+ # line 527 "insns.def"
1447
1446
  {
1448
1447
  RUBY_DTRACE_CREATE_HOOK(HASH, num);
1449
1448
 
@@ -1455,7 +1454,7 @@ INSN_ENTRY(newhash)
1455
1454
  val = rb_hash_new();
1456
1455
  }
1457
1456
  }
1458
- # line 1459 "vm.inc"
1457
+ # line 1458 "vm.inc"
1459
1458
  # undef NAME_OF_CURRENT_INSN
1460
1459
 
1461
1460
  /* ### Instruction trailers. ### */
@@ -1482,7 +1481,7 @@ INSN_ENTRY(newrange)
1482
1481
  /* ### Declare and assign variables. ### */
1483
1482
  rb_num_t flag = (rb_num_t)GET_OPERAND(1);
1484
1483
  # define INSN_ATTR(x) attr_ ## x ## _newrange(flag)
1485
- bool leaf = INSN_ATTR(leaf);
1484
+ const bool leaf = INSN_ATTR(leaf);
1486
1485
  VALUE low = TOPN(1);
1487
1486
  VALUE high = TOPN(0);
1488
1487
  VALUE val;
@@ -1495,11 +1494,11 @@ INSN_ENTRY(newrange)
1495
1494
 
1496
1495
  /* ### Here we do the instruction body. ### */
1497
1496
  # define NAME_OF_CURRENT_INSN newrange
1498
- # line 546 "insns.def"
1497
+ # line 547 "insns.def"
1499
1498
  {
1500
1499
  val = rb_range_new(low, high, (int)flag);
1501
1500
  }
1502
- # line 1503 "vm.inc"
1501
+ # line 1502 "vm.inc"
1503
1502
  # undef NAME_OF_CURRENT_INSN
1504
1503
 
1505
1504
  /* ### Instruction trailers. ### */
@@ -1525,7 +1524,7 @@ INSN_ENTRY(pop)
1525
1524
 
1526
1525
  /* ### Declare and assign variables. ### */
1527
1526
  # define INSN_ATTR(x) attr_ ## x ## _pop()
1528
- bool leaf = INSN_ATTR(leaf);
1527
+ const bool leaf = INSN_ATTR(leaf);
1529
1528
  VALUE val = TOPN(0);
1530
1529
 
1531
1530
  /* ### Instruction preambles. ### */
@@ -1535,12 +1534,12 @@ INSN_ENTRY(pop)
1535
1534
 
1536
1535
  /* ### Here we do the instruction body. ### */
1537
1536
  # define NAME_OF_CURRENT_INSN pop
1538
- # line 560 "insns.def"
1537
+ # line 561 "insns.def"
1539
1538
  {
1540
1539
  (void)val;
1541
1540
  /* none */
1542
1541
  }
1543
- # line 1544 "vm.inc"
1542
+ # line 1543 "vm.inc"
1544
1543
  # undef NAME_OF_CURRENT_INSN
1545
1544
 
1546
1545
  /* ### Instruction trailers. ### */
@@ -1563,7 +1562,7 @@ INSN_ENTRY(dup)
1563
1562
 
1564
1563
  /* ### Declare and assign variables. ### */
1565
1564
  # define INSN_ATTR(x) attr_ ## x ## _dup()
1566
- bool leaf = INSN_ATTR(leaf);
1565
+ const bool leaf = INSN_ATTR(leaf);
1567
1566
  VALUE val = TOPN(0);
1568
1567
  VALUE val1;
1569
1568
  VALUE val2;
@@ -1575,11 +1574,11 @@ INSN_ENTRY(dup)
1575
1574
 
1576
1575
  /* ### Here we do the instruction body. ### */
1577
1576
  # define NAME_OF_CURRENT_INSN dup
1578
- # line 571 "insns.def"
1577
+ # line 572 "insns.def"
1579
1578
  {
1580
1579
  val1 = val2 = val;
1581
1580
  }
1582
- # line 1583 "vm.inc"
1581
+ # line 1582 "vm.inc"
1583
1582
  # undef NAME_OF_CURRENT_INSN
1584
1583
 
1585
1584
  /* ### Instruction trailers. ### */
@@ -1609,7 +1608,7 @@ INSN_ENTRY(dupn)
1609
1608
  /* ### Declare and assign variables. ### */
1610
1609
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1611
1610
  # define INSN_ATTR(x) attr_ ## x ## _dupn(n)
1612
- bool leaf = INSN_ATTR(leaf);
1611
+ const bool leaf = INSN_ATTR(leaf);
1613
1612
 
1614
1613
  /* ### Instruction preambles. ### */
1615
1614
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -1618,14 +1617,14 @@ INSN_ENTRY(dupn)
1618
1617
 
1619
1618
  /* ### Here we do the instruction body. ### */
1620
1619
  # define NAME_OF_CURRENT_INSN dupn
1621
- # line 582 "insns.def"
1620
+ # line 583 "insns.def"
1622
1621
  {
1623
1622
  void *dst = GET_SP();
1624
1623
  void *src = STACK_ADDR_FROM_TOP(n);
1625
1624
 
1626
1625
  MEMCPY(dst, src, VALUE, n);
1627
1626
  }
1628
- # line 1629 "vm.inc"
1627
+ # line 1628 "vm.inc"
1629
1628
  # undef NAME_OF_CURRENT_INSN
1630
1629
 
1631
1630
  /* ### Instruction trailers. ### */
@@ -1647,7 +1646,7 @@ INSN_ENTRY(swap)
1647
1646
 
1648
1647
  /* ### Declare and assign variables. ### */
1649
1648
  # define INSN_ATTR(x) attr_ ## x ## _swap()
1650
- bool leaf = INSN_ATTR(leaf);
1649
+ const bool leaf = INSN_ATTR(leaf);
1651
1650
  VALUE val = TOPN(1);
1652
1651
  VALUE obj = TOPN(0);
1653
1652
 
@@ -1681,7 +1680,7 @@ INSN_ENTRY(topn)
1681
1680
  /* ### Declare and assign variables. ### */
1682
1681
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1683
1682
  # define INSN_ATTR(x) attr_ ## x ## _topn(n)
1684
- bool leaf = INSN_ATTR(leaf);
1683
+ const bool leaf = INSN_ATTR(leaf);
1685
1684
  VALUE val;
1686
1685
 
1687
1686
  /* ### Instruction preambles. ### */
@@ -1692,11 +1691,11 @@ INSN_ENTRY(topn)
1692
1691
 
1693
1692
  /* ### Here we do the instruction body. ### */
1694
1693
  # define NAME_OF_CURRENT_INSN topn
1695
- # line 617 "insns.def"
1694
+ # line 618 "insns.def"
1696
1695
  {
1697
1696
  val = TOPN(n);
1698
1697
  }
1699
- # line 1700 "vm.inc"
1698
+ # line 1699 "vm.inc"
1700
1699
  # undef NAME_OF_CURRENT_INSN
1701
1700
 
1702
1701
  /* ### Instruction trailers. ### */
@@ -1723,7 +1722,7 @@ INSN_ENTRY(setn)
1723
1722
  /* ### Declare and assign variables. ### */
1724
1723
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1725
1724
  # define INSN_ATTR(x) attr_ ## x ## _setn(n)
1726
- bool leaf = INSN_ATTR(leaf);
1725
+ const bool leaf = INSN_ATTR(leaf);
1727
1726
  VALUE val = TOPN(0);
1728
1727
 
1729
1728
  /* ### Instruction preambles. ### */
@@ -1734,11 +1733,11 @@ INSN_ENTRY(setn)
1734
1733
 
1735
1734
  /* ### Here we do the instruction body. ### */
1736
1735
  # define NAME_OF_CURRENT_INSN setn
1737
- # line 628 "insns.def"
1736
+ # line 629 "insns.def"
1738
1737
  {
1739
1738
  TOPN(n) = val;
1740
1739
  }
1741
- # line 1742 "vm.inc"
1740
+ # line 1741 "vm.inc"
1742
1741
  # undef NAME_OF_CURRENT_INSN
1743
1742
 
1744
1743
  /* ### Instruction trailers. ### */
@@ -1765,7 +1764,7 @@ INSN_ENTRY(adjuststack)
1765
1764
  /* ### Declare and assign variables. ### */
1766
1765
  rb_num_t n = (rb_num_t)GET_OPERAND(1);
1767
1766
  # define INSN_ATTR(x) attr_ ## x ## _adjuststack(n)
1768
- bool leaf = INSN_ATTR(leaf);
1767
+ const bool leaf = INSN_ATTR(leaf);
1769
1768
 
1770
1769
  /* ### Instruction preambles. ### */
1771
1770
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -1794,7 +1793,7 @@ INSN_ENTRY(defined)
1794
1793
  VALUE obj = (VALUE)GET_OPERAND(2);
1795
1794
  VALUE pushval = (VALUE)GET_OPERAND(3);
1796
1795
  # define INSN_ATTR(x) attr_ ## x ## _defined(op_type, obj, pushval)
1797
- bool leaf = INSN_ATTR(leaf);
1796
+ const bool leaf = INSN_ATTR(leaf);
1798
1797
  VALUE v = TOPN(0);
1799
1798
  VALUE val;
1800
1799
 
@@ -1808,14 +1807,14 @@ INSN_ENTRY(defined)
1808
1807
 
1809
1808
  /* ### Here we do the instruction body. ### */
1810
1809
  # define NAME_OF_CURRENT_INSN defined
1811
- # line 654 "insns.def"
1810
+ # line 655 "insns.def"
1812
1811
  {
1813
1812
  val = Qnil;
1814
1813
  if (vm_defined(ec, GET_CFP(), op_type, obj, v)) {
1815
1814
  val = pushval;
1816
1815
  }
1817
1816
  }
1818
- # line 1819 "vm.inc"
1817
+ # line 1818 "vm.inc"
1819
1818
  # undef NAME_OF_CURRENT_INSN
1820
1819
 
1821
1820
  /* ### Instruction trailers. ### */
@@ -1842,7 +1841,7 @@ INSN_ENTRY(checkmatch)
1842
1841
  /* ### Declare and assign variables. ### */
1843
1842
  rb_num_t flag = (rb_num_t)GET_OPERAND(1);
1844
1843
  # define INSN_ATTR(x) attr_ ## x ## _checkmatch(flag)
1845
- bool leaf = INSN_ATTR(leaf);
1844
+ const bool leaf = INSN_ATTR(leaf);
1846
1845
  VALUE target = TOPN(1);
1847
1846
  VALUE pattern = TOPN(0);
1848
1847
  VALUE result;
@@ -1855,11 +1854,11 @@ INSN_ENTRY(checkmatch)
1855
1854
 
1856
1855
  /* ### Here we do the instruction body. ### */
1857
1856
  # define NAME_OF_CURRENT_INSN checkmatch
1858
- # line 674 "insns.def"
1857
+ # line 675 "insns.def"
1859
1858
  {
1860
1859
  result = vm_check_match(ec, target, pattern, flag);
1861
1860
  }
1862
- # line 1863 "vm.inc"
1861
+ # line 1862 "vm.inc"
1863
1862
  # undef NAME_OF_CURRENT_INSN
1864
1863
 
1865
1864
  /* ### Instruction trailers. ### */
@@ -1887,7 +1886,7 @@ INSN_ENTRY(checkkeyword)
1887
1886
  lindex_t kw_bits_index = (lindex_t)GET_OPERAND(1);
1888
1887
  lindex_t keyword_index = (lindex_t)GET_OPERAND(2);
1889
1888
  # define INSN_ATTR(x) attr_ ## x ## _checkkeyword(kw_bits_index, keyword_index)
1890
- bool leaf = INSN_ATTR(leaf);
1889
+ const bool leaf = INSN_ATTR(leaf);
1891
1890
  VALUE ret;
1892
1891
 
1893
1892
  /* ### Instruction preambles. ### */
@@ -1899,11 +1898,11 @@ INSN_ENTRY(checkkeyword)
1899
1898
 
1900
1899
  /* ### Here we do the instruction body. ### */
1901
1900
  # define NAME_OF_CURRENT_INSN checkkeyword
1902
- # line 684 "insns.def"
1901
+ # line 685 "insns.def"
1903
1902
  {
1904
1903
  ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
1905
1904
  }
1906
- # line 1907 "vm.inc"
1905
+ # line 1906 "vm.inc"
1907
1906
  # undef NAME_OF_CURRENT_INSN
1908
1907
 
1909
1908
  /* ### Instruction trailers. ### */
@@ -1930,7 +1929,7 @@ INSN_ENTRY(checktype)
1930
1929
  /* ### Declare and assign variables. ### */
1931
1930
  rb_num_t type = (rb_num_t)GET_OPERAND(1);
1932
1931
  # define INSN_ATTR(x) attr_ ## x ## _checktype(type)
1933
- bool leaf = INSN_ATTR(leaf);
1932
+ const bool leaf = INSN_ATTR(leaf);
1934
1933
  VALUE val = TOPN(0);
1935
1934
  VALUE ret;
1936
1935
 
@@ -1942,11 +1941,11 @@ INSN_ENTRY(checktype)
1942
1941
 
1943
1942
  /* ### Here we do the instruction body. ### */
1944
1943
  # define NAME_OF_CURRENT_INSN checktype
1945
- # line 694 "insns.def"
1944
+ # line 695 "insns.def"
1946
1945
  {
1947
1946
  ret = (TYPE(val) == (int)type) ? Qtrue : Qfalse;
1948
1947
  }
1949
- # line 1950 "vm.inc"
1948
+ # line 1949 "vm.inc"
1950
1949
  # undef NAME_OF_CURRENT_INSN
1951
1950
 
1952
1951
  /* ### Instruction trailers. ### */
@@ -1975,7 +1974,7 @@ INSN_ENTRY(defineclass)
1975
1974
  ISEQ class_iseq = (ISEQ)GET_OPERAND(2);
1976
1975
  rb_num_t flags = (rb_num_t)GET_OPERAND(3);
1977
1976
  # define INSN_ATTR(x) attr_ ## x ## _defineclass(id, class_iseq, flags)
1978
- bool leaf = INSN_ATTR(leaf);
1977
+ const bool leaf = INSN_ATTR(leaf);
1979
1978
  VALUE cbase = TOPN(1);
1980
1979
  VALUE super = TOPN(0);
1981
1980
  VALUE val;
@@ -1991,7 +1990,7 @@ INSN_ENTRY(defineclass)
1991
1990
 
1992
1991
  /* ### Here we do the instruction body. ### */
1993
1992
  # define NAME_OF_CURRENT_INSN defineclass
1994
- # line 710 "insns.def"
1993
+ # line 711 "insns.def"
1995
1994
  {
1996
1995
  VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
1997
1996
 
@@ -2000,14 +1999,14 @@ INSN_ENTRY(defineclass)
2000
1999
  /* enter scope */
2001
2000
  vm_push_frame(ec, class_iseq, VM_FRAME_MAGIC_CLASS | VM_ENV_FLAG_LOCAL, klass,
2002
2001
  GET_BLOCK_HANDLER(),
2003
- (VALUE)vm_cref_push(ec, klass, NULL, FALSE),
2002
+ (VALUE)vm_cref_push(ec, klass, NULL, FALSE, FALSE),
2004
2003
  class_iseq->body->iseq_encoded, GET_SP(),
2005
2004
  class_iseq->body->local_table_size,
2006
2005
  class_iseq->body->stack_max);
2007
2006
  RESTORE_REGS();
2008
2007
  NEXT_INSN();
2009
2008
  }
2010
- # line 2011 "vm.inc"
2009
+ # line 2010 "vm.inc"
2011
2010
  # undef NAME_OF_CURRENT_INSN
2012
2011
 
2013
2012
  /* ### Instruction trailers. ### */
@@ -2032,7 +2031,7 @@ INSN_ENTRY(definemethod)
2032
2031
  ID id = (ID)GET_OPERAND(1);
2033
2032
  ISEQ iseq = (ISEQ)GET_OPERAND(2);
2034
2033
  # define INSN_ATTR(x) attr_ ## x ## _definemethod(id, iseq)
2035
- bool leaf = INSN_ATTR(leaf);
2034
+ const bool leaf = INSN_ATTR(leaf);
2036
2035
 
2037
2036
  /* ### Instruction preambles. ### */
2038
2037
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -2044,11 +2043,11 @@ INSN_ENTRY(definemethod)
2044
2043
 
2045
2044
  /* ### Here we do the instruction body. ### */
2046
2045
  # define NAME_OF_CURRENT_INSN definemethod
2047
- # line 731 "insns.def"
2046
+ # line 732 "insns.def"
2048
2047
  {
2049
2048
  vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);
2050
2049
  }
2051
- # line 2052 "vm.inc"
2050
+ # line 2051 "vm.inc"
2052
2051
  # undef NAME_OF_CURRENT_INSN
2053
2052
 
2054
2053
  /* ### Instruction trailers. ### */
@@ -2072,7 +2071,7 @@ INSN_ENTRY(definesmethod)
2072
2071
  ID id = (ID)GET_OPERAND(1);
2073
2072
  ISEQ iseq = (ISEQ)GET_OPERAND(2);
2074
2073
  # define INSN_ATTR(x) attr_ ## x ## _definesmethod(id, iseq)
2075
- bool leaf = INSN_ATTR(leaf);
2074
+ const bool leaf = INSN_ATTR(leaf);
2076
2075
  VALUE obj = TOPN(0);
2077
2076
 
2078
2077
  /* ### Instruction preambles. ### */
@@ -2085,11 +2084,11 @@ INSN_ENTRY(definesmethod)
2085
2084
 
2086
2085
  /* ### Here we do the instruction body. ### */
2087
2086
  # define NAME_OF_CURRENT_INSN definesmethod
2088
- # line 740 "insns.def"
2087
+ # line 741 "insns.def"
2089
2088
  {
2090
2089
  vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);
2091
2090
  }
2092
- # line 2093 "vm.inc"
2091
+ # line 2092 "vm.inc"
2093
2092
  # undef NAME_OF_CURRENT_INSN
2094
2093
 
2095
2094
  /* ### Instruction trailers. ### */
@@ -2113,7 +2112,7 @@ INSN_ENTRY(send)
2113
2112
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2114
2113
  ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
2115
2114
  # define INSN_ATTR(x) attr_ ## x ## _send(cd, blockiseq)
2116
- bool leaf = INSN_ATTR(leaf);
2115
+ const bool leaf = INSN_ATTR(leaf);
2117
2116
  VALUE val;
2118
2117
 
2119
2118
  /* ### Instruction preambles. ### */
@@ -2126,7 +2125,7 @@ INSN_ENTRY(send)
2126
2125
 
2127
2126
  /* ### Here we do the instruction body. ### */
2128
2127
  # define NAME_OF_CURRENT_INSN send
2129
- # line 756 "insns.def"
2128
+ # line 757 "insns.def"
2130
2129
  {
2131
2130
  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, false);
2132
2131
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
@@ -2136,7 +2135,7 @@ INSN_ENTRY(send)
2136
2135
  NEXT_INSN();
2137
2136
  }
2138
2137
  }
2139
- # line 2140 "vm.inc"
2138
+ # line 2139 "vm.inc"
2140
2139
  # undef NAME_OF_CURRENT_INSN
2141
2140
 
2142
2141
  /* ### Instruction trailers. ### */
@@ -2160,7 +2159,7 @@ INSN_ENTRY(opt_send_without_block)
2160
2159
  /* ### Declare and assign variables. ### */
2161
2160
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2162
2161
  # define INSN_ATTR(x) attr_ ## x ## _opt_send_without_block(cd)
2163
- bool leaf = INSN_ATTR(leaf);
2162
+ const bool leaf = INSN_ATTR(leaf);
2164
2163
  VALUE val;
2165
2164
 
2166
2165
  /* ### Instruction preambles. ### */
@@ -2172,7 +2171,7 @@ INSN_ENTRY(opt_send_without_block)
2172
2171
 
2173
2172
  /* ### Here we do the instruction body. ### */
2174
2173
  # define NAME_OF_CURRENT_INSN opt_send_without_block
2175
- # line 775 "insns.def"
2174
+ # line 776 "insns.def"
2176
2175
  {
2177
2176
  VALUE bh = VM_BLOCK_HANDLER_NONE;
2178
2177
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);
@@ -2182,7 +2181,7 @@ INSN_ENTRY(opt_send_without_block)
2182
2181
  NEXT_INSN();
2183
2182
  }
2184
2183
  }
2185
- # line 2186 "vm.inc"
2184
+ # line 2185 "vm.inc"
2186
2185
  # undef NAME_OF_CURRENT_INSN
2187
2186
 
2188
2187
  /* ### Instruction trailers. ### */
@@ -2196,6 +2195,53 @@ INSN_ENTRY(opt_send_without_block)
2196
2195
  END_INSN(opt_send_without_block);
2197
2196
  }
2198
2197
 
2198
+ /* insn objtostring(cd)(recv)(val) */
2199
+ INSN_ENTRY(objtostring)
2200
+ {
2201
+ /* ### Declare that we have just entered into an instruction. ### */
2202
+ START_OF_ORIGINAL_INSN(objtostring);
2203
+ DEBUG_ENTER_INSN("objtostring");
2204
+
2205
+ /* ### Declare and assign variables. ### */
2206
+ CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2207
+ # define INSN_ATTR(x) attr_ ## x ## _objtostring(cd)
2208
+ const bool leaf = INSN_ATTR(leaf);
2209
+ VALUE recv = TOPN(0);
2210
+ VALUE val;
2211
+
2212
+ /* ### Instruction preambles. ### */
2213
+ if (! leaf) ADD_PC(INSN_ATTR(width));
2214
+ SETUP_CANARY(leaf);
2215
+ COLLECT_USAGE_INSN(INSN_ATTR(bin));
2216
+ COLLECT_USAGE_OPERAND(INSN_ATTR(bin), 0, cd);
2217
+
2218
+ /* ### Here we do the instruction body. ### */
2219
+ # define NAME_OF_CURRENT_INSN objtostring
2220
+ # line 793 "insns.def"
2221
+ {
2222
+ val = vm_objtostring(GET_ISEQ(), recv, cd);
2223
+
2224
+ if (val == Qundef) {
2225
+ CALL_SIMPLE_METHOD();
2226
+ }
2227
+ }
2228
+ # line 2229 "vm.inc"
2229
+ # undef NAME_OF_CURRENT_INSN
2230
+
2231
+ /* ### Instruction trailers. ### */
2232
+ CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
2233
+ CHECK_CANARY(leaf, INSN_ATTR(bin));
2234
+ INC_SP(INSN_ATTR(sp_inc));
2235
+ TOPN(0) = val;
2236
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_NONE));
2237
+ VM_ASSERT(!RB_TYPE_P(TOPN(0), T_MOVED));
2238
+ if (leaf) ADD_PC(INSN_ATTR(width));
2239
+ # undef INSN_ATTR
2240
+
2241
+ /* ### Leave the instruction. ### */
2242
+ END_INSN(objtostring);
2243
+ }
2244
+
2199
2245
  /* insn opt_str_freeze(str, cd)()(val) */
2200
2246
  INSN_ENTRY(opt_str_freeze)
2201
2247
  {
@@ -2207,7 +2253,7 @@ INSN_ENTRY(opt_str_freeze)
2207
2253
  VALUE str = (VALUE)GET_OPERAND(1);
2208
2254
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
2209
2255
  # define INSN_ATTR(x) attr_ ## x ## _opt_str_freeze(str, cd)
2210
- bool leaf = INSN_ATTR(leaf);
2256
+ const bool leaf = INSN_ATTR(leaf);
2211
2257
  VALUE val;
2212
2258
 
2213
2259
  /* ### Instruction preambles. ### */
@@ -2219,7 +2265,7 @@ INSN_ENTRY(opt_str_freeze)
2219
2265
 
2220
2266
  /* ### Here we do the instruction body. ### */
2221
2267
  # define NAME_OF_CURRENT_INSN opt_str_freeze
2222
- # line 790 "insns.def"
2268
+ # line 806 "insns.def"
2223
2269
  {
2224
2270
  val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze);
2225
2271
 
@@ -2228,7 +2274,7 @@ INSN_ENTRY(opt_str_freeze)
2228
2274
  CALL_SIMPLE_METHOD();
2229
2275
  }
2230
2276
  }
2231
- # line 2232 "vm.inc"
2277
+ # line 2278 "vm.inc"
2232
2278
  # undef NAME_OF_CURRENT_INSN
2233
2279
 
2234
2280
  /* ### Instruction trailers. ### */
@@ -2255,7 +2301,7 @@ INSN_ENTRY(opt_nil_p)
2255
2301
  /* ### Declare and assign variables. ### */
2256
2302
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2257
2303
  # define INSN_ATTR(x) attr_ ## x ## _opt_nil_p(cd)
2258
- bool leaf = INSN_ATTR(leaf);
2304
+ const bool leaf = INSN_ATTR(leaf);
2259
2305
  VALUE recv = TOPN(0);
2260
2306
  VALUE val;
2261
2307
 
@@ -2267,7 +2313,7 @@ INSN_ENTRY(opt_nil_p)
2267
2313
 
2268
2314
  /* ### Here we do the instruction body. ### */
2269
2315
  # define NAME_OF_CURRENT_INSN opt_nil_p
2270
- # line 805 "insns.def"
2316
+ # line 821 "insns.def"
2271
2317
  {
2272
2318
  val = vm_opt_nil_p(GET_ISEQ(), cd, recv);
2273
2319
 
@@ -2275,7 +2321,7 @@ INSN_ENTRY(opt_nil_p)
2275
2321
  CALL_SIMPLE_METHOD();
2276
2322
  }
2277
2323
  }
2278
- # line 2279 "vm.inc"
2324
+ # line 2325 "vm.inc"
2279
2325
  # undef NAME_OF_CURRENT_INSN
2280
2326
 
2281
2327
  /* ### Instruction trailers. ### */
@@ -2303,7 +2349,7 @@ INSN_ENTRY(opt_str_uminus)
2303
2349
  VALUE str = (VALUE)GET_OPERAND(1);
2304
2350
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
2305
2351
  # define INSN_ATTR(x) attr_ ## x ## _opt_str_uminus(str, cd)
2306
- bool leaf = INSN_ATTR(leaf);
2352
+ const bool leaf = INSN_ATTR(leaf);
2307
2353
  VALUE val;
2308
2354
 
2309
2355
  /* ### Instruction preambles. ### */
@@ -2315,7 +2361,7 @@ INSN_ENTRY(opt_str_uminus)
2315
2361
 
2316
2362
  /* ### Here we do the instruction body. ### */
2317
2363
  # define NAME_OF_CURRENT_INSN opt_str_uminus
2318
- # line 818 "insns.def"
2364
+ # line 834 "insns.def"
2319
2365
  {
2320
2366
  val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus);
2321
2367
 
@@ -2324,7 +2370,7 @@ INSN_ENTRY(opt_str_uminus)
2324
2370
  CALL_SIMPLE_METHOD();
2325
2371
  }
2326
2372
  }
2327
- # line 2328 "vm.inc"
2373
+ # line 2374 "vm.inc"
2328
2374
  # undef NAME_OF_CURRENT_INSN
2329
2375
 
2330
2376
  /* ### Instruction trailers. ### */
@@ -2351,7 +2397,7 @@ INSN_ENTRY(opt_newarray_max)
2351
2397
  /* ### Declare and assign variables. ### */
2352
2398
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
2353
2399
  # define INSN_ATTR(x) attr_ ## x ## _opt_newarray_max(num)
2354
- bool leaf = INSN_ATTR(leaf);
2400
+ const bool leaf = INSN_ATTR(leaf);
2355
2401
  VALUE val;
2356
2402
 
2357
2403
  /* ### Instruction preambles. ### */
@@ -2362,11 +2408,11 @@ INSN_ENTRY(opt_newarray_max)
2362
2408
 
2363
2409
  /* ### Here we do the instruction body. ### */
2364
2410
  # define NAME_OF_CURRENT_INSN opt_newarray_max
2365
- # line 838 "insns.def"
2411
+ # line 854 "insns.def"
2366
2412
  {
2367
2413
  val = vm_opt_newarray_max(ec, num, STACK_ADDR_FROM_TOP(num));
2368
2414
  }
2369
- # line 2370 "vm.inc"
2415
+ # line 2416 "vm.inc"
2370
2416
  # undef NAME_OF_CURRENT_INSN
2371
2417
 
2372
2418
  /* ### Instruction trailers. ### */
@@ -2393,7 +2439,7 @@ INSN_ENTRY(opt_newarray_min)
2393
2439
  /* ### Declare and assign variables. ### */
2394
2440
  rb_num_t num = (rb_num_t)GET_OPERAND(1);
2395
2441
  # define INSN_ATTR(x) attr_ ## x ## _opt_newarray_min(num)
2396
- bool leaf = INSN_ATTR(leaf);
2442
+ const bool leaf = INSN_ATTR(leaf);
2397
2443
  VALUE val;
2398
2444
 
2399
2445
  /* ### Instruction preambles. ### */
@@ -2404,11 +2450,11 @@ INSN_ENTRY(opt_newarray_min)
2404
2450
 
2405
2451
  /* ### Here we do the instruction body. ### */
2406
2452
  # define NAME_OF_CURRENT_INSN opt_newarray_min
2407
- # line 850 "insns.def"
2453
+ # line 866 "insns.def"
2408
2454
  {
2409
2455
  val = vm_opt_newarray_min(ec, num, STACK_ADDR_FROM_TOP(num));
2410
2456
  }
2411
- # line 2412 "vm.inc"
2457
+ # line 2458 "vm.inc"
2412
2458
  # undef NAME_OF_CURRENT_INSN
2413
2459
 
2414
2460
  /* ### Instruction trailers. ### */
@@ -2436,7 +2482,7 @@ INSN_ENTRY(invokesuper)
2436
2482
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2437
2483
  ISEQ blockiseq = (ISEQ)GET_OPERAND(2);
2438
2484
  # define INSN_ATTR(x) attr_ ## x ## _invokesuper(cd, blockiseq)
2439
- bool leaf = INSN_ATTR(leaf);
2485
+ const bool leaf = INSN_ATTR(leaf);
2440
2486
  VALUE val;
2441
2487
 
2442
2488
  /* ### Instruction preambles. ### */
@@ -2449,7 +2495,7 @@ INSN_ENTRY(invokesuper)
2449
2495
 
2450
2496
  /* ### Here we do the instruction body. ### */
2451
2497
  # define NAME_OF_CURRENT_INSN invokesuper
2452
- # line 862 "insns.def"
2498
+ # line 878 "insns.def"
2453
2499
  {
2454
2500
  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, true);
2455
2501
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_super);
@@ -2459,7 +2505,7 @@ INSN_ENTRY(invokesuper)
2459
2505
  NEXT_INSN();
2460
2506
  }
2461
2507
  }
2462
- # line 2463 "vm.inc"
2508
+ # line 2509 "vm.inc"
2463
2509
  # undef NAME_OF_CURRENT_INSN
2464
2510
 
2465
2511
  /* ### Instruction trailers. ### */
@@ -2483,7 +2529,7 @@ INSN_ENTRY(invokeblock)
2483
2529
  /* ### Declare and assign variables. ### */
2484
2530
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2485
2531
  # define INSN_ATTR(x) attr_ ## x ## _invokeblock(cd)
2486
- bool leaf = INSN_ATTR(leaf);
2532
+ const bool leaf = INSN_ATTR(leaf);
2487
2533
  VALUE val;
2488
2534
 
2489
2535
  /* ### Instruction preambles. ### */
@@ -2495,7 +2541,7 @@ INSN_ENTRY(invokeblock)
2495
2541
 
2496
2542
  /* ### Here we do the instruction body. ### */
2497
2543
  # define NAME_OF_CURRENT_INSN invokeblock
2498
- # line 881 "insns.def"
2544
+ # line 897 "insns.def"
2499
2545
  {
2500
2546
  VALUE bh = VM_BLOCK_HANDLER_NONE;
2501
2547
  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_invokeblock);
@@ -2505,7 +2551,7 @@ INSN_ENTRY(invokeblock)
2505
2551
  NEXT_INSN();
2506
2552
  }
2507
2553
  }
2508
- # line 2509 "vm.inc"
2554
+ # line 2555 "vm.inc"
2509
2555
  # undef NAME_OF_CURRENT_INSN
2510
2556
 
2511
2557
  /* ### Instruction trailers. ### */
@@ -2528,7 +2574,7 @@ INSN_ENTRY(leave)
2528
2574
 
2529
2575
  /* ### Declare and assign variables. ### */
2530
2576
  # define INSN_ATTR(x) attr_ ## x ## _leave()
2531
- bool leaf = INSN_ATTR(leaf);
2577
+ const bool leaf = INSN_ATTR(leaf);
2532
2578
  VALUE val = TOPN(0);
2533
2579
 
2534
2580
  /* ### Instruction preambles. ### */
@@ -2539,7 +2585,7 @@ INSN_ENTRY(leave)
2539
2585
 
2540
2586
  /* ### Here we do the instruction body. ### */
2541
2587
  # define NAME_OF_CURRENT_INSN leave
2542
- # line 902 "insns.def"
2588
+ # line 918 "insns.def"
2543
2589
  {
2544
2590
  if (OPT_CHECKED_RUN) {
2545
2591
  const VALUE *const bp = vm_base_ptr(GET_CFP());
@@ -2560,7 +2606,7 @@ INSN_ENTRY(leave)
2560
2606
  RESTORE_REGS();
2561
2607
  }
2562
2608
  }
2563
- # line 2564 "vm.inc"
2609
+ # line 2610 "vm.inc"
2564
2610
  # undef NAME_OF_CURRENT_INSN
2565
2611
 
2566
2612
  /* ### Instruction trailers. ### */
@@ -2584,7 +2630,7 @@ INSN_ENTRY(throw)
2584
2630
  /* ### Declare and assign variables. ### */
2585
2631
  rb_num_t throw_state = (rb_num_t)GET_OPERAND(1);
2586
2632
  # define INSN_ATTR(x) attr_ ## x ## _throw(throw_state)
2587
- bool leaf = INSN_ATTR(leaf);
2633
+ const bool leaf = INSN_ATTR(leaf);
2588
2634
  VALUE throwobj = TOPN(0);
2589
2635
  VALUE val;
2590
2636
 
@@ -2596,13 +2642,13 @@ INSN_ENTRY(throw)
2596
2642
 
2597
2643
  /* ### Here we do the instruction body. ### */
2598
2644
  # define NAME_OF_CURRENT_INSN throw
2599
- # line 935 "insns.def"
2645
+ # line 951 "insns.def"
2600
2646
  {
2601
2647
  val = vm_throw(ec, GET_CFP(), throw_state, throwobj);
2602
2648
  THROW_EXCEPTION(val);
2603
2649
  /* unreachable */
2604
2650
  }
2605
- # line 2606 "vm.inc"
2651
+ # line 2652 "vm.inc"
2606
2652
  # undef NAME_OF_CURRENT_INSN
2607
2653
 
2608
2654
  /* ### Instruction trailers. ### */
@@ -2629,7 +2675,7 @@ INSN_ENTRY(jump)
2629
2675
  /* ### Declare and assign variables. ### */
2630
2676
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2631
2677
  # define INSN_ATTR(x) attr_ ## x ## _jump(dst)
2632
- bool leaf = INSN_ATTR(leaf);
2678
+ const bool leaf = INSN_ATTR(leaf);
2633
2679
 
2634
2680
  /* ### Instruction preambles. ### */
2635
2681
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -2639,12 +2685,12 @@ INSN_ENTRY(jump)
2639
2685
 
2640
2686
  /* ### Here we do the instruction body. ### */
2641
2687
  # define NAME_OF_CURRENT_INSN jump
2642
- # line 953 "insns.def"
2688
+ # line 969 "insns.def"
2643
2689
  {
2644
2690
  RUBY_VM_CHECK_INTS(ec);
2645
2691
  JUMP(dst);
2646
2692
  }
2647
- # line 2648 "vm.inc"
2693
+ # line 2694 "vm.inc"
2648
2694
  # undef NAME_OF_CURRENT_INSN
2649
2695
 
2650
2696
  /* ### Instruction trailers. ### */
@@ -2668,7 +2714,7 @@ INSN_ENTRY(branchif)
2668
2714
  /* ### Declare and assign variables. ### */
2669
2715
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2670
2716
  # define INSN_ATTR(x) attr_ ## x ## _branchif(dst)
2671
- bool leaf = INSN_ATTR(leaf);
2717
+ const bool leaf = INSN_ATTR(leaf);
2672
2718
  VALUE val = TOPN(0);
2673
2719
 
2674
2720
  /* ### Instruction preambles. ### */
@@ -2679,14 +2725,14 @@ INSN_ENTRY(branchif)
2679
2725
 
2680
2726
  /* ### Here we do the instruction body. ### */
2681
2727
  # define NAME_OF_CURRENT_INSN branchif
2682
- # line 966 "insns.def"
2728
+ # line 982 "insns.def"
2683
2729
  {
2684
2730
  if (RTEST(val)) {
2685
2731
  RUBY_VM_CHECK_INTS(ec);
2686
2732
  JUMP(dst);
2687
2733
  }
2688
2734
  }
2689
- # line 2690 "vm.inc"
2735
+ # line 2736 "vm.inc"
2690
2736
  # undef NAME_OF_CURRENT_INSN
2691
2737
 
2692
2738
  /* ### Instruction trailers. ### */
@@ -2710,7 +2756,7 @@ INSN_ENTRY(branchunless)
2710
2756
  /* ### Declare and assign variables. ### */
2711
2757
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2712
2758
  # define INSN_ATTR(x) attr_ ## x ## _branchunless(dst)
2713
- bool leaf = INSN_ATTR(leaf);
2759
+ const bool leaf = INSN_ATTR(leaf);
2714
2760
  VALUE val = TOPN(0);
2715
2761
 
2716
2762
  /* ### Instruction preambles. ### */
@@ -2721,14 +2767,14 @@ INSN_ENTRY(branchunless)
2721
2767
 
2722
2768
  /* ### Here we do the instruction body. ### */
2723
2769
  # define NAME_OF_CURRENT_INSN branchunless
2724
- # line 981 "insns.def"
2770
+ # line 997 "insns.def"
2725
2771
  {
2726
2772
  if (!RTEST(val)) {
2727
2773
  RUBY_VM_CHECK_INTS(ec);
2728
2774
  JUMP(dst);
2729
2775
  }
2730
2776
  }
2731
- # line 2732 "vm.inc"
2777
+ # line 2778 "vm.inc"
2732
2778
  # undef NAME_OF_CURRENT_INSN
2733
2779
 
2734
2780
  /* ### Instruction trailers. ### */
@@ -2752,7 +2798,7 @@ INSN_ENTRY(branchnil)
2752
2798
  /* ### Declare and assign variables. ### */
2753
2799
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2754
2800
  # define INSN_ATTR(x) attr_ ## x ## _branchnil(dst)
2755
- bool leaf = INSN_ATTR(leaf);
2801
+ const bool leaf = INSN_ATTR(leaf);
2756
2802
  VALUE val = TOPN(0);
2757
2803
 
2758
2804
  /* ### Instruction preambles. ### */
@@ -2763,14 +2809,14 @@ INSN_ENTRY(branchnil)
2763
2809
 
2764
2810
  /* ### Here we do the instruction body. ### */
2765
2811
  # define NAME_OF_CURRENT_INSN branchnil
2766
- # line 996 "insns.def"
2812
+ # line 1012 "insns.def"
2767
2813
  {
2768
2814
  if (NIL_P(val)) {
2769
2815
  RUBY_VM_CHECK_INTS(ec);
2770
2816
  JUMP(dst);
2771
2817
  }
2772
2818
  }
2773
- # line 2774 "vm.inc"
2819
+ # line 2820 "vm.inc"
2774
2820
  # undef NAME_OF_CURRENT_INSN
2775
2821
 
2776
2822
  /* ### Instruction trailers. ### */
@@ -2795,7 +2841,7 @@ INSN_ENTRY(opt_getinlinecache)
2795
2841
  OFFSET dst = (OFFSET)GET_OPERAND(1);
2796
2842
  IC ic = (IC)GET_OPERAND(2);
2797
2843
  # define INSN_ATTR(x) attr_ ## x ## _opt_getinlinecache(dst, ic)
2798
- bool leaf = INSN_ATTR(leaf);
2844
+ const bool leaf = INSN_ATTR(leaf);
2799
2845
  VALUE val;
2800
2846
 
2801
2847
  /* ### Instruction preambles. ### */
@@ -2807,7 +2853,7 @@ INSN_ENTRY(opt_getinlinecache)
2807
2853
 
2808
2854
  /* ### Here we do the instruction body. ### */
2809
2855
  # define NAME_OF_CURRENT_INSN opt_getinlinecache
2810
- # line 1013 "insns.def"
2856
+ # line 1029 "insns.def"
2811
2857
  {
2812
2858
  struct iseq_inline_constant_cache_entry *ice = ic->entry;
2813
2859
  if (ice && vm_ic_hit_p(ice, GET_EP())) {
@@ -2818,7 +2864,7 @@ INSN_ENTRY(opt_getinlinecache)
2818
2864
  val = Qnil;
2819
2865
  }
2820
2866
  }
2821
- # line 2822 "vm.inc"
2867
+ # line 2868 "vm.inc"
2822
2868
  # undef NAME_OF_CURRENT_INSN
2823
2869
 
2824
2870
  /* ### Instruction trailers. ### */
@@ -2845,7 +2891,7 @@ INSN_ENTRY(opt_setinlinecache)
2845
2891
  /* ### Declare and assign variables. ### */
2846
2892
  IC ic = (IC)GET_OPERAND(1);
2847
2893
  # define INSN_ATTR(x) attr_ ## x ## _opt_setinlinecache(ic)
2848
- bool leaf = INSN_ATTR(leaf);
2894
+ const bool leaf = INSN_ATTR(leaf);
2849
2895
  VALUE val = TOPN(0);
2850
2896
 
2851
2897
  /* ### Instruction preambles. ### */
@@ -2856,11 +2902,11 @@ INSN_ENTRY(opt_setinlinecache)
2856
2902
 
2857
2903
  /* ### Here we do the instruction body. ### */
2858
2904
  # define NAME_OF_CURRENT_INSN opt_setinlinecache
2859
- # line 1031 "insns.def"
2905
+ # line 1047 "insns.def"
2860
2906
  {
2861
2907
  vm_ic_update(GET_ISEQ(), ic, val, GET_EP());
2862
2908
  }
2863
- # line 2864 "vm.inc"
2909
+ # line 2910 "vm.inc"
2864
2910
  # undef NAME_OF_CURRENT_INSN
2865
2911
 
2866
2912
  /* ### Instruction trailers. ### */
@@ -2888,7 +2934,7 @@ INSN_ENTRY(once)
2888
2934
  ISEQ iseq = (ISEQ)GET_OPERAND(1);
2889
2935
  ISE ise = (ISE)GET_OPERAND(2);
2890
2936
  # define INSN_ATTR(x) attr_ ## x ## _once(iseq, ise)
2891
- bool leaf = INSN_ATTR(leaf);
2937
+ const bool leaf = INSN_ATTR(leaf);
2892
2938
  VALUE val;
2893
2939
 
2894
2940
  /* ### Instruction preambles. ### */
@@ -2901,11 +2947,11 @@ INSN_ENTRY(once)
2901
2947
 
2902
2948
  /* ### Here we do the instruction body. ### */
2903
2949
  # define NAME_OF_CURRENT_INSN once
2904
- # line 1041 "insns.def"
2950
+ # line 1057 "insns.def"
2905
2951
  {
2906
2952
  val = vm_once_dispatch(ec, iseq, ise);
2907
2953
  }
2908
- # line 2909 "vm.inc"
2954
+ # line 2955 "vm.inc"
2909
2955
  # undef NAME_OF_CURRENT_INSN
2910
2956
 
2911
2957
  /* ### Instruction trailers. ### */
@@ -2930,7 +2976,7 @@ INSN_ENTRY(opt_case_dispatch)
2930
2976
  CDHASH hash = (CDHASH)GET_OPERAND(1);
2931
2977
  OFFSET else_offset = (OFFSET)GET_OPERAND(2);
2932
2978
  # define INSN_ATTR(x) attr_ ## x ## _opt_case_dispatch(hash, else_offset)
2933
- bool leaf = INSN_ATTR(leaf);
2979
+ const bool leaf = INSN_ATTR(leaf);
2934
2980
  VALUE key = TOPN(0);
2935
2981
 
2936
2982
  /* ### Instruction preambles. ### */
@@ -2942,7 +2988,7 @@ INSN_ENTRY(opt_case_dispatch)
2942
2988
 
2943
2989
  /* ### Here we do the instruction body. ### */
2944
2990
  # define NAME_OF_CURRENT_INSN opt_case_dispatch
2945
- # line 1052 "insns.def"
2991
+ # line 1068 "insns.def"
2946
2992
  {
2947
2993
  OFFSET dst = vm_case_dispatch(hash, else_offset, key);
2948
2994
 
@@ -2950,7 +2996,7 @@ INSN_ENTRY(opt_case_dispatch)
2950
2996
  JUMP(dst);
2951
2997
  }
2952
2998
  }
2953
- # line 2954 "vm.inc"
2999
+ # line 3000 "vm.inc"
2954
3000
  # undef NAME_OF_CURRENT_INSN
2955
3001
 
2956
3002
  /* ### Instruction trailers. ### */
@@ -2974,7 +3020,7 @@ INSN_ENTRY(opt_plus)
2974
3020
  /* ### Declare and assign variables. ### */
2975
3021
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
2976
3022
  # define INSN_ATTR(x) attr_ ## x ## _opt_plus(cd)
2977
- bool leaf = INSN_ATTR(leaf);
3023
+ const bool leaf = INSN_ATTR(leaf);
2978
3024
  VALUE recv = TOPN(1);
2979
3025
  VALUE obj = TOPN(0);
2980
3026
  VALUE val;
@@ -2987,7 +3033,7 @@ INSN_ENTRY(opt_plus)
2987
3033
 
2988
3034
  /* ### Here we do the instruction body. ### */
2989
3035
  # define NAME_OF_CURRENT_INSN opt_plus
2990
- # line 1068 "insns.def"
3036
+ # line 1084 "insns.def"
2991
3037
  {
2992
3038
  val = vm_opt_plus(recv, obj);
2993
3039
 
@@ -2995,7 +3041,7 @@ INSN_ENTRY(opt_plus)
2995
3041
  CALL_SIMPLE_METHOD();
2996
3042
  }
2997
3043
  }
2998
- # line 2999 "vm.inc"
3044
+ # line 3045 "vm.inc"
2999
3045
  # undef NAME_OF_CURRENT_INSN
3000
3046
 
3001
3047
  /* ### Instruction trailers. ### */
@@ -3022,7 +3068,7 @@ INSN_ENTRY(opt_minus)
3022
3068
  /* ### Declare and assign variables. ### */
3023
3069
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3024
3070
  # define INSN_ATTR(x) attr_ ## x ## _opt_minus(cd)
3025
- bool leaf = INSN_ATTR(leaf);
3071
+ const bool leaf = INSN_ATTR(leaf);
3026
3072
  VALUE recv = TOPN(1);
3027
3073
  VALUE obj = TOPN(0);
3028
3074
  VALUE val;
@@ -3035,7 +3081,7 @@ INSN_ENTRY(opt_minus)
3035
3081
 
3036
3082
  /* ### Here we do the instruction body. ### */
3037
3083
  # define NAME_OF_CURRENT_INSN opt_minus
3038
- # line 1082 "insns.def"
3084
+ # line 1098 "insns.def"
3039
3085
  {
3040
3086
  val = vm_opt_minus(recv, obj);
3041
3087
 
@@ -3043,7 +3089,7 @@ INSN_ENTRY(opt_minus)
3043
3089
  CALL_SIMPLE_METHOD();
3044
3090
  }
3045
3091
  }
3046
- # line 3047 "vm.inc"
3092
+ # line 3093 "vm.inc"
3047
3093
  # undef NAME_OF_CURRENT_INSN
3048
3094
 
3049
3095
  /* ### Instruction trailers. ### */
@@ -3070,7 +3116,7 @@ INSN_ENTRY(opt_mult)
3070
3116
  /* ### Declare and assign variables. ### */
3071
3117
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3072
3118
  # define INSN_ATTR(x) attr_ ## x ## _opt_mult(cd)
3073
- bool leaf = INSN_ATTR(leaf);
3119
+ const bool leaf = INSN_ATTR(leaf);
3074
3120
  VALUE recv = TOPN(1);
3075
3121
  VALUE obj = TOPN(0);
3076
3122
  VALUE val;
@@ -3083,7 +3129,7 @@ INSN_ENTRY(opt_mult)
3083
3129
 
3084
3130
  /* ### Here we do the instruction body. ### */
3085
3131
  # define NAME_OF_CURRENT_INSN opt_mult
3086
- # line 1096 "insns.def"
3132
+ # line 1112 "insns.def"
3087
3133
  {
3088
3134
  val = vm_opt_mult(recv, obj);
3089
3135
 
@@ -3091,7 +3137,7 @@ INSN_ENTRY(opt_mult)
3091
3137
  CALL_SIMPLE_METHOD();
3092
3138
  }
3093
3139
  }
3094
- # line 3095 "vm.inc"
3140
+ # line 3141 "vm.inc"
3095
3141
  # undef NAME_OF_CURRENT_INSN
3096
3142
 
3097
3143
  /* ### Instruction trailers. ### */
@@ -3118,7 +3164,7 @@ INSN_ENTRY(opt_div)
3118
3164
  /* ### Declare and assign variables. ### */
3119
3165
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3120
3166
  # define INSN_ATTR(x) attr_ ## x ## _opt_div(cd)
3121
- bool leaf = INSN_ATTR(leaf);
3167
+ const bool leaf = INSN_ATTR(leaf);
3122
3168
  VALUE recv = TOPN(1);
3123
3169
  VALUE obj = TOPN(0);
3124
3170
  VALUE val;
@@ -3131,7 +3177,7 @@ INSN_ENTRY(opt_div)
3131
3177
 
3132
3178
  /* ### Here we do the instruction body. ### */
3133
3179
  # define NAME_OF_CURRENT_INSN opt_div
3134
- # line 1113 "insns.def"
3180
+ # line 1129 "insns.def"
3135
3181
  {
3136
3182
  val = vm_opt_div(recv, obj);
3137
3183
 
@@ -3139,7 +3185,7 @@ INSN_ENTRY(opt_div)
3139
3185
  CALL_SIMPLE_METHOD();
3140
3186
  }
3141
3187
  }
3142
- # line 3143 "vm.inc"
3188
+ # line 3189 "vm.inc"
3143
3189
  # undef NAME_OF_CURRENT_INSN
3144
3190
 
3145
3191
  /* ### Instruction trailers. ### */
@@ -3166,7 +3212,7 @@ INSN_ENTRY(opt_mod)
3166
3212
  /* ### Declare and assign variables. ### */
3167
3213
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3168
3214
  # define INSN_ATTR(x) attr_ ## x ## _opt_mod(cd)
3169
- bool leaf = INSN_ATTR(leaf);
3215
+ const bool leaf = INSN_ATTR(leaf);
3170
3216
  VALUE recv = TOPN(1);
3171
3217
  VALUE obj = TOPN(0);
3172
3218
  VALUE val;
@@ -3179,7 +3225,7 @@ INSN_ENTRY(opt_mod)
3179
3225
 
3180
3226
  /* ### Here we do the instruction body. ### */
3181
3227
  # define NAME_OF_CURRENT_INSN opt_mod
3182
- # line 1129 "insns.def"
3228
+ # line 1145 "insns.def"
3183
3229
  {
3184
3230
  val = vm_opt_mod(recv, obj);
3185
3231
 
@@ -3187,7 +3233,7 @@ INSN_ENTRY(opt_mod)
3187
3233
  CALL_SIMPLE_METHOD();
3188
3234
  }
3189
3235
  }
3190
- # line 3191 "vm.inc"
3236
+ # line 3237 "vm.inc"
3191
3237
  # undef NAME_OF_CURRENT_INSN
3192
3238
 
3193
3239
  /* ### Instruction trailers. ### */
@@ -3214,7 +3260,7 @@ INSN_ENTRY(opt_eq)
3214
3260
  /* ### Declare and assign variables. ### */
3215
3261
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3216
3262
  # define INSN_ATTR(x) attr_ ## x ## _opt_eq(cd)
3217
- bool leaf = INSN_ATTR(leaf);
3263
+ const bool leaf = INSN_ATTR(leaf);
3218
3264
  VALUE recv = TOPN(1);
3219
3265
  VALUE obj = TOPN(0);
3220
3266
  VALUE val;
@@ -3227,7 +3273,7 @@ INSN_ENTRY(opt_eq)
3227
3273
 
3228
3274
  /* ### Here we do the instruction body. ### */
3229
3275
  # define NAME_OF_CURRENT_INSN opt_eq
3230
- # line 1143 "insns.def"
3276
+ # line 1159 "insns.def"
3231
3277
  {
3232
3278
  val = opt_equality(GET_ISEQ(), recv, obj, cd);
3233
3279
 
@@ -3235,7 +3281,7 @@ INSN_ENTRY(opt_eq)
3235
3281
  CALL_SIMPLE_METHOD();
3236
3282
  }
3237
3283
  }
3238
- # line 3239 "vm.inc"
3284
+ # line 3285 "vm.inc"
3239
3285
  # undef NAME_OF_CURRENT_INSN
3240
3286
 
3241
3287
  /* ### Instruction trailers. ### */
@@ -3263,7 +3309,7 @@ INSN_ENTRY(opt_neq)
3263
3309
  CALL_DATA cd_eq = (CALL_DATA)GET_OPERAND(1);
3264
3310
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3265
3311
  # define INSN_ATTR(x) attr_ ## x ## _opt_neq(cd_eq, cd)
3266
- bool leaf = INSN_ATTR(leaf);
3312
+ const bool leaf = INSN_ATTR(leaf);
3267
3313
  VALUE recv = TOPN(1);
3268
3314
  VALUE obj = TOPN(0);
3269
3315
  VALUE val;
@@ -3277,7 +3323,7 @@ INSN_ENTRY(opt_neq)
3277
3323
 
3278
3324
  /* ### Here we do the instruction body. ### */
3279
3325
  # define NAME_OF_CURRENT_INSN opt_neq
3280
- # line 1157 "insns.def"
3326
+ # line 1173 "insns.def"
3281
3327
  {
3282
3328
  val = vm_opt_neq(GET_ISEQ(), cd, cd_eq, recv, obj);
3283
3329
 
@@ -3285,7 +3331,7 @@ INSN_ENTRY(opt_neq)
3285
3331
  CALL_SIMPLE_METHOD();
3286
3332
  }
3287
3333
  }
3288
- # line 3289 "vm.inc"
3334
+ # line 3335 "vm.inc"
3289
3335
  # undef NAME_OF_CURRENT_INSN
3290
3336
 
3291
3337
  /* ### Instruction trailers. ### */
@@ -3312,7 +3358,7 @@ INSN_ENTRY(opt_lt)
3312
3358
  /* ### Declare and assign variables. ### */
3313
3359
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3314
3360
  # define INSN_ATTR(x) attr_ ## x ## _opt_lt(cd)
3315
- bool leaf = INSN_ATTR(leaf);
3361
+ const bool leaf = INSN_ATTR(leaf);
3316
3362
  VALUE recv = TOPN(1);
3317
3363
  VALUE obj = TOPN(0);
3318
3364
  VALUE val;
@@ -3325,7 +3371,7 @@ INSN_ENTRY(opt_lt)
3325
3371
 
3326
3372
  /* ### Here we do the instruction body. ### */
3327
3373
  # define NAME_OF_CURRENT_INSN opt_lt
3328
- # line 1171 "insns.def"
3374
+ # line 1187 "insns.def"
3329
3375
  {
3330
3376
  val = vm_opt_lt(recv, obj);
3331
3377
 
@@ -3333,7 +3379,7 @@ INSN_ENTRY(opt_lt)
3333
3379
  CALL_SIMPLE_METHOD();
3334
3380
  }
3335
3381
  }
3336
- # line 3337 "vm.inc"
3382
+ # line 3383 "vm.inc"
3337
3383
  # undef NAME_OF_CURRENT_INSN
3338
3384
 
3339
3385
  /* ### Instruction trailers. ### */
@@ -3360,7 +3406,7 @@ INSN_ENTRY(opt_le)
3360
3406
  /* ### Declare and assign variables. ### */
3361
3407
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3362
3408
  # define INSN_ATTR(x) attr_ ## x ## _opt_le(cd)
3363
- bool leaf = INSN_ATTR(leaf);
3409
+ const bool leaf = INSN_ATTR(leaf);
3364
3410
  VALUE recv = TOPN(1);
3365
3411
  VALUE obj = TOPN(0);
3366
3412
  VALUE val;
@@ -3373,7 +3419,7 @@ INSN_ENTRY(opt_le)
3373
3419
 
3374
3420
  /* ### Here we do the instruction body. ### */
3375
3421
  # define NAME_OF_CURRENT_INSN opt_le
3376
- # line 1185 "insns.def"
3422
+ # line 1201 "insns.def"
3377
3423
  {
3378
3424
  val = vm_opt_le(recv, obj);
3379
3425
 
@@ -3381,7 +3427,7 @@ INSN_ENTRY(opt_le)
3381
3427
  CALL_SIMPLE_METHOD();
3382
3428
  }
3383
3429
  }
3384
- # line 3385 "vm.inc"
3430
+ # line 3431 "vm.inc"
3385
3431
  # undef NAME_OF_CURRENT_INSN
3386
3432
 
3387
3433
  /* ### Instruction trailers. ### */
@@ -3408,7 +3454,7 @@ INSN_ENTRY(opt_gt)
3408
3454
  /* ### Declare and assign variables. ### */
3409
3455
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3410
3456
  # define INSN_ATTR(x) attr_ ## x ## _opt_gt(cd)
3411
- bool leaf = INSN_ATTR(leaf);
3457
+ const bool leaf = INSN_ATTR(leaf);
3412
3458
  VALUE recv = TOPN(1);
3413
3459
  VALUE obj = TOPN(0);
3414
3460
  VALUE val;
@@ -3421,7 +3467,7 @@ INSN_ENTRY(opt_gt)
3421
3467
 
3422
3468
  /* ### Here we do the instruction body. ### */
3423
3469
  # define NAME_OF_CURRENT_INSN opt_gt
3424
- # line 1199 "insns.def"
3470
+ # line 1215 "insns.def"
3425
3471
  {
3426
3472
  val = vm_opt_gt(recv, obj);
3427
3473
 
@@ -3429,7 +3475,7 @@ INSN_ENTRY(opt_gt)
3429
3475
  CALL_SIMPLE_METHOD();
3430
3476
  }
3431
3477
  }
3432
- # line 3433 "vm.inc"
3478
+ # line 3479 "vm.inc"
3433
3479
  # undef NAME_OF_CURRENT_INSN
3434
3480
 
3435
3481
  /* ### Instruction trailers. ### */
@@ -3456,7 +3502,7 @@ INSN_ENTRY(opt_ge)
3456
3502
  /* ### Declare and assign variables. ### */
3457
3503
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3458
3504
  # define INSN_ATTR(x) attr_ ## x ## _opt_ge(cd)
3459
- bool leaf = INSN_ATTR(leaf);
3505
+ const bool leaf = INSN_ATTR(leaf);
3460
3506
  VALUE recv = TOPN(1);
3461
3507
  VALUE obj = TOPN(0);
3462
3508
  VALUE val;
@@ -3469,7 +3515,7 @@ INSN_ENTRY(opt_ge)
3469
3515
 
3470
3516
  /* ### Here we do the instruction body. ### */
3471
3517
  # define NAME_OF_CURRENT_INSN opt_ge
3472
- # line 1213 "insns.def"
3518
+ # line 1229 "insns.def"
3473
3519
  {
3474
3520
  val = vm_opt_ge(recv, obj);
3475
3521
 
@@ -3477,7 +3523,7 @@ INSN_ENTRY(opt_ge)
3477
3523
  CALL_SIMPLE_METHOD();
3478
3524
  }
3479
3525
  }
3480
- # line 3481 "vm.inc"
3526
+ # line 3527 "vm.inc"
3481
3527
  # undef NAME_OF_CURRENT_INSN
3482
3528
 
3483
3529
  /* ### Instruction trailers. ### */
@@ -3504,7 +3550,7 @@ INSN_ENTRY(opt_ltlt)
3504
3550
  /* ### Declare and assign variables. ### */
3505
3551
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3506
3552
  # define INSN_ATTR(x) attr_ ## x ## _opt_ltlt(cd)
3507
- bool leaf = INSN_ATTR(leaf);
3553
+ const bool leaf = INSN_ATTR(leaf);
3508
3554
  VALUE recv = TOPN(1);
3509
3555
  VALUE obj = TOPN(0);
3510
3556
  VALUE val;
@@ -3517,7 +3563,7 @@ INSN_ENTRY(opt_ltlt)
3517
3563
 
3518
3564
  /* ### Here we do the instruction body. ### */
3519
3565
  # define NAME_OF_CURRENT_INSN opt_ltlt
3520
- # line 1231 "insns.def"
3566
+ # line 1247 "insns.def"
3521
3567
  {
3522
3568
  val = vm_opt_ltlt(recv, obj);
3523
3569
 
@@ -3525,7 +3571,7 @@ INSN_ENTRY(opt_ltlt)
3525
3571
  CALL_SIMPLE_METHOD();
3526
3572
  }
3527
3573
  }
3528
- # line 3529 "vm.inc"
3574
+ # line 3575 "vm.inc"
3529
3575
  # undef NAME_OF_CURRENT_INSN
3530
3576
 
3531
3577
  /* ### Instruction trailers. ### */
@@ -3552,7 +3598,7 @@ INSN_ENTRY(opt_and)
3552
3598
  /* ### Declare and assign variables. ### */
3553
3599
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3554
3600
  # define INSN_ATTR(x) attr_ ## x ## _opt_and(cd)
3555
- bool leaf = INSN_ATTR(leaf);
3601
+ const bool leaf = INSN_ATTR(leaf);
3556
3602
  VALUE recv = TOPN(1);
3557
3603
  VALUE obj = TOPN(0);
3558
3604
  VALUE val;
@@ -3565,7 +3611,7 @@ INSN_ENTRY(opt_and)
3565
3611
 
3566
3612
  /* ### Here we do the instruction body. ### */
3567
3613
  # define NAME_OF_CURRENT_INSN opt_and
3568
- # line 1245 "insns.def"
3614
+ # line 1261 "insns.def"
3569
3615
  {
3570
3616
  val = vm_opt_and(recv, obj);
3571
3617
 
@@ -3573,7 +3619,7 @@ INSN_ENTRY(opt_and)
3573
3619
  CALL_SIMPLE_METHOD();
3574
3620
  }
3575
3621
  }
3576
- # line 3577 "vm.inc"
3622
+ # line 3623 "vm.inc"
3577
3623
  # undef NAME_OF_CURRENT_INSN
3578
3624
 
3579
3625
  /* ### Instruction trailers. ### */
@@ -3600,7 +3646,7 @@ INSN_ENTRY(opt_or)
3600
3646
  /* ### Declare and assign variables. ### */
3601
3647
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3602
3648
  # define INSN_ATTR(x) attr_ ## x ## _opt_or(cd)
3603
- bool leaf = INSN_ATTR(leaf);
3649
+ const bool leaf = INSN_ATTR(leaf);
3604
3650
  VALUE recv = TOPN(1);
3605
3651
  VALUE obj = TOPN(0);
3606
3652
  VALUE val;
@@ -3613,7 +3659,7 @@ INSN_ENTRY(opt_or)
3613
3659
 
3614
3660
  /* ### Here we do the instruction body. ### */
3615
3661
  # define NAME_OF_CURRENT_INSN opt_or
3616
- # line 1259 "insns.def"
3662
+ # line 1275 "insns.def"
3617
3663
  {
3618
3664
  val = vm_opt_or(recv, obj);
3619
3665
 
@@ -3621,7 +3667,7 @@ INSN_ENTRY(opt_or)
3621
3667
  CALL_SIMPLE_METHOD();
3622
3668
  }
3623
3669
  }
3624
- # line 3625 "vm.inc"
3670
+ # line 3671 "vm.inc"
3625
3671
  # undef NAME_OF_CURRENT_INSN
3626
3672
 
3627
3673
  /* ### Instruction trailers. ### */
@@ -3648,7 +3694,7 @@ INSN_ENTRY(opt_aref)
3648
3694
  /* ### Declare and assign variables. ### */
3649
3695
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3650
3696
  # define INSN_ATTR(x) attr_ ## x ## _opt_aref(cd)
3651
- bool leaf = INSN_ATTR(leaf);
3697
+ const bool leaf = INSN_ATTR(leaf);
3652
3698
  VALUE recv = TOPN(1);
3653
3699
  VALUE obj = TOPN(0);
3654
3700
  VALUE val;
@@ -3661,7 +3707,7 @@ INSN_ENTRY(opt_aref)
3661
3707
 
3662
3708
  /* ### Here we do the instruction body. ### */
3663
3709
  # define NAME_OF_CURRENT_INSN opt_aref
3664
- # line 1278 "insns.def"
3710
+ # line 1294 "insns.def"
3665
3711
  {
3666
3712
  val = vm_opt_aref(recv, obj);
3667
3713
 
@@ -3669,7 +3715,7 @@ INSN_ENTRY(opt_aref)
3669
3715
  CALL_SIMPLE_METHOD();
3670
3716
  }
3671
3717
  }
3672
- # line 3673 "vm.inc"
3718
+ # line 3719 "vm.inc"
3673
3719
  # undef NAME_OF_CURRENT_INSN
3674
3720
 
3675
3721
  /* ### Instruction trailers. ### */
@@ -3696,7 +3742,7 @@ INSN_ENTRY(opt_aset)
3696
3742
  /* ### Declare and assign variables. ### */
3697
3743
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3698
3744
  # define INSN_ATTR(x) attr_ ## x ## _opt_aset(cd)
3699
- bool leaf = INSN_ATTR(leaf);
3745
+ const bool leaf = INSN_ATTR(leaf);
3700
3746
  VALUE recv = TOPN(2);
3701
3747
  VALUE obj = TOPN(1);
3702
3748
  VALUE set = TOPN(0);
@@ -3710,7 +3756,7 @@ INSN_ENTRY(opt_aset)
3710
3756
 
3711
3757
  /* ### Here we do the instruction body. ### */
3712
3758
  # define NAME_OF_CURRENT_INSN opt_aset
3713
- # line 1295 "insns.def"
3759
+ # line 1311 "insns.def"
3714
3760
  {
3715
3761
  val = vm_opt_aset(recv, obj, set);
3716
3762
 
@@ -3718,7 +3764,7 @@ INSN_ENTRY(opt_aset)
3718
3764
  CALL_SIMPLE_METHOD();
3719
3765
  }
3720
3766
  }
3721
- # line 3722 "vm.inc"
3767
+ # line 3768 "vm.inc"
3722
3768
  # undef NAME_OF_CURRENT_INSN
3723
3769
 
3724
3770
  /* ### Instruction trailers. ### */
@@ -3746,7 +3792,7 @@ INSN_ENTRY(opt_aset_with)
3746
3792
  VALUE key = (VALUE)GET_OPERAND(1);
3747
3793
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3748
3794
  # define INSN_ATTR(x) attr_ ## x ## _opt_aset_with(key, cd)
3749
- bool leaf = INSN_ATTR(leaf);
3795
+ const bool leaf = INSN_ATTR(leaf);
3750
3796
  VALUE recv = TOPN(1);
3751
3797
  VALUE val = TOPN(0);
3752
3798
 
@@ -3759,7 +3805,7 @@ INSN_ENTRY(opt_aset_with)
3759
3805
 
3760
3806
  /* ### Here we do the instruction body. ### */
3761
3807
  # define NAME_OF_CURRENT_INSN opt_aset_with
3762
- # line 1311 "insns.def"
3808
+ # line 1327 "insns.def"
3763
3809
  {
3764
3810
  VALUE tmp = vm_opt_aset_with(recv, key, val);
3765
3811
 
@@ -3774,7 +3820,7 @@ INSN_ENTRY(opt_aset_with)
3774
3820
  CALL_SIMPLE_METHOD();
3775
3821
  }
3776
3822
  }
3777
- # line 3778 "vm.inc"
3823
+ # line 3824 "vm.inc"
3778
3824
  # undef NAME_OF_CURRENT_INSN
3779
3825
 
3780
3826
  /* ### Instruction trailers. ### */
@@ -3802,7 +3848,7 @@ INSN_ENTRY(opt_aref_with)
3802
3848
  VALUE key = (VALUE)GET_OPERAND(1);
3803
3849
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(2);
3804
3850
  # define INSN_ATTR(x) attr_ ## x ## _opt_aref_with(key, cd)
3805
- bool leaf = INSN_ATTR(leaf);
3851
+ const bool leaf = INSN_ATTR(leaf);
3806
3852
  VALUE recv = TOPN(0);
3807
3853
  VALUE val;
3808
3854
 
@@ -3815,7 +3861,7 @@ INSN_ENTRY(opt_aref_with)
3815
3861
 
3816
3862
  /* ### Here we do the instruction body. ### */
3817
3863
  # define NAME_OF_CURRENT_INSN opt_aref_with
3818
- # line 1334 "insns.def"
3864
+ # line 1350 "insns.def"
3819
3865
  {
3820
3866
  val = vm_opt_aref_with(recv, key);
3821
3867
 
@@ -3826,7 +3872,7 @@ INSN_ENTRY(opt_aref_with)
3826
3872
  CALL_SIMPLE_METHOD();
3827
3873
  }
3828
3874
  }
3829
- # line 3830 "vm.inc"
3875
+ # line 3876 "vm.inc"
3830
3876
  # undef NAME_OF_CURRENT_INSN
3831
3877
 
3832
3878
  /* ### Instruction trailers. ### */
@@ -3853,7 +3899,7 @@ INSN_ENTRY(opt_length)
3853
3899
  /* ### Declare and assign variables. ### */
3854
3900
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3855
3901
  # define INSN_ATTR(x) attr_ ## x ## _opt_length(cd)
3856
- bool leaf = INSN_ATTR(leaf);
3902
+ const bool leaf = INSN_ATTR(leaf);
3857
3903
  VALUE recv = TOPN(0);
3858
3904
  VALUE val;
3859
3905
 
@@ -3865,7 +3911,7 @@ INSN_ENTRY(opt_length)
3865
3911
 
3866
3912
  /* ### Here we do the instruction body. ### */
3867
3913
  # define NAME_OF_CURRENT_INSN opt_length
3868
- # line 1351 "insns.def"
3914
+ # line 1367 "insns.def"
3869
3915
  {
3870
3916
  val = vm_opt_length(recv, BOP_LENGTH);
3871
3917
 
@@ -3873,7 +3919,7 @@ INSN_ENTRY(opt_length)
3873
3919
  CALL_SIMPLE_METHOD();
3874
3920
  }
3875
3921
  }
3876
- # line 3877 "vm.inc"
3922
+ # line 3923 "vm.inc"
3877
3923
  # undef NAME_OF_CURRENT_INSN
3878
3924
 
3879
3925
  /* ### Instruction trailers. ### */
@@ -3900,7 +3946,7 @@ INSN_ENTRY(opt_size)
3900
3946
  /* ### Declare and assign variables. ### */
3901
3947
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3902
3948
  # define INSN_ATTR(x) attr_ ## x ## _opt_size(cd)
3903
- bool leaf = INSN_ATTR(leaf);
3949
+ const bool leaf = INSN_ATTR(leaf);
3904
3950
  VALUE recv = TOPN(0);
3905
3951
  VALUE val;
3906
3952
 
@@ -3912,7 +3958,7 @@ INSN_ENTRY(opt_size)
3912
3958
 
3913
3959
  /* ### Here we do the instruction body. ### */
3914
3960
  # define NAME_OF_CURRENT_INSN opt_size
3915
- # line 1365 "insns.def"
3961
+ # line 1381 "insns.def"
3916
3962
  {
3917
3963
  val = vm_opt_length(recv, BOP_SIZE);
3918
3964
 
@@ -3920,7 +3966,7 @@ INSN_ENTRY(opt_size)
3920
3966
  CALL_SIMPLE_METHOD();
3921
3967
  }
3922
3968
  }
3923
- # line 3924 "vm.inc"
3969
+ # line 3970 "vm.inc"
3924
3970
  # undef NAME_OF_CURRENT_INSN
3925
3971
 
3926
3972
  /* ### Instruction trailers. ### */
@@ -3947,7 +3993,7 @@ INSN_ENTRY(opt_empty_p)
3947
3993
  /* ### Declare and assign variables. ### */
3948
3994
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3949
3995
  # define INSN_ATTR(x) attr_ ## x ## _opt_empty_p(cd)
3950
- bool leaf = INSN_ATTR(leaf);
3996
+ const bool leaf = INSN_ATTR(leaf);
3951
3997
  VALUE recv = TOPN(0);
3952
3998
  VALUE val;
3953
3999
 
@@ -3959,7 +4005,7 @@ INSN_ENTRY(opt_empty_p)
3959
4005
 
3960
4006
  /* ### Here we do the instruction body. ### */
3961
4007
  # define NAME_OF_CURRENT_INSN opt_empty_p
3962
- # line 1379 "insns.def"
4008
+ # line 1395 "insns.def"
3963
4009
  {
3964
4010
  val = vm_opt_empty_p(recv);
3965
4011
 
@@ -3967,7 +4013,7 @@ INSN_ENTRY(opt_empty_p)
3967
4013
  CALL_SIMPLE_METHOD();
3968
4014
  }
3969
4015
  }
3970
- # line 3971 "vm.inc"
4016
+ # line 4017 "vm.inc"
3971
4017
  # undef NAME_OF_CURRENT_INSN
3972
4018
 
3973
4019
  /* ### Instruction trailers. ### */
@@ -3994,7 +4040,7 @@ INSN_ENTRY(opt_succ)
3994
4040
  /* ### Declare and assign variables. ### */
3995
4041
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
3996
4042
  # define INSN_ATTR(x) attr_ ## x ## _opt_succ(cd)
3997
- bool leaf = INSN_ATTR(leaf);
4043
+ const bool leaf = INSN_ATTR(leaf);
3998
4044
  VALUE recv = TOPN(0);
3999
4045
  VALUE val;
4000
4046
 
@@ -4006,7 +4052,7 @@ INSN_ENTRY(opt_succ)
4006
4052
 
4007
4053
  /* ### Here we do the instruction body. ### */
4008
4054
  # define NAME_OF_CURRENT_INSN opt_succ
4009
- # line 1393 "insns.def"
4055
+ # line 1409 "insns.def"
4010
4056
  {
4011
4057
  val = vm_opt_succ(recv);
4012
4058
 
@@ -4014,7 +4060,7 @@ INSN_ENTRY(opt_succ)
4014
4060
  CALL_SIMPLE_METHOD();
4015
4061
  }
4016
4062
  }
4017
- # line 4018 "vm.inc"
4063
+ # line 4064 "vm.inc"
4018
4064
  # undef NAME_OF_CURRENT_INSN
4019
4065
 
4020
4066
  /* ### Instruction trailers. ### */
@@ -4041,7 +4087,7 @@ INSN_ENTRY(opt_not)
4041
4087
  /* ### Declare and assign variables. ### */
4042
4088
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
4043
4089
  # define INSN_ATTR(x) attr_ ## x ## _opt_not(cd)
4044
- bool leaf = INSN_ATTR(leaf);
4090
+ const bool leaf = INSN_ATTR(leaf);
4045
4091
  VALUE recv = TOPN(0);
4046
4092
  VALUE val;
4047
4093
 
@@ -4053,7 +4099,7 @@ INSN_ENTRY(opt_not)
4053
4099
 
4054
4100
  /* ### Here we do the instruction body. ### */
4055
4101
  # define NAME_OF_CURRENT_INSN opt_not
4056
- # line 1407 "insns.def"
4102
+ # line 1423 "insns.def"
4057
4103
  {
4058
4104
  val = vm_opt_not(GET_ISEQ(), cd, recv);
4059
4105
 
@@ -4061,7 +4107,7 @@ INSN_ENTRY(opt_not)
4061
4107
  CALL_SIMPLE_METHOD();
4062
4108
  }
4063
4109
  }
4064
- # line 4065 "vm.inc"
4110
+ # line 4111 "vm.inc"
4065
4111
  # undef NAME_OF_CURRENT_INSN
4066
4112
 
4067
4113
  /* ### Instruction trailers. ### */
@@ -4088,7 +4134,7 @@ INSN_ENTRY(opt_regexpmatch2)
4088
4134
  /* ### Declare and assign variables. ### */
4089
4135
  CALL_DATA cd = (CALL_DATA)GET_OPERAND(1);
4090
4136
  # define INSN_ATTR(x) attr_ ## x ## _opt_regexpmatch2(cd)
4091
- bool leaf = INSN_ATTR(leaf);
4137
+ const bool leaf = INSN_ATTR(leaf);
4092
4138
  VALUE obj2 = TOPN(1);
4093
4139
  VALUE obj1 = TOPN(0);
4094
4140
  VALUE val;
@@ -4101,7 +4147,7 @@ INSN_ENTRY(opt_regexpmatch2)
4101
4147
 
4102
4148
  /* ### Here we do the instruction body. ### */
4103
4149
  # define NAME_OF_CURRENT_INSN opt_regexpmatch2
4104
- # line 1422 "insns.def"
4150
+ # line 1438 "insns.def"
4105
4151
  {
4106
4152
  val = vm_opt_regexpmatch2(obj2, obj1);
4107
4153
 
@@ -4109,7 +4155,7 @@ INSN_ENTRY(opt_regexpmatch2)
4109
4155
  CALL_SIMPLE_METHOD();
4110
4156
  }
4111
4157
  }
4112
- # line 4113 "vm.inc"
4158
+ # line 4159 "vm.inc"
4113
4159
  # undef NAME_OF_CURRENT_INSN
4114
4160
 
4115
4161
  /* ### Instruction trailers. ### */
@@ -4136,7 +4182,7 @@ INSN_ENTRY(invokebuiltin)
4136
4182
  /* ### Declare and assign variables. ### */
4137
4183
  RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
4138
4184
  # define INSN_ATTR(x) attr_ ## x ## _invokebuiltin(bf)
4139
- bool leaf = INSN_ATTR(leaf);
4185
+ const bool leaf = INSN_ATTR(leaf);
4140
4186
  VALUE val;
4141
4187
 
4142
4188
  /* ### Instruction preambles. ### */
@@ -4147,11 +4193,11 @@ INSN_ENTRY(invokebuiltin)
4147
4193
 
4148
4194
  /* ### Here we do the instruction body. ### */
4149
4195
  # define NAME_OF_CURRENT_INSN invokebuiltin
4150
- # line 1459 "insns.def"
4196
+ # line 1475 "insns.def"
4151
4197
  {
4152
4198
  val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
4153
4199
  }
4154
- # line 4155 "vm.inc"
4200
+ # line 4201 "vm.inc"
4155
4201
  # undef NAME_OF_CURRENT_INSN
4156
4202
 
4157
4203
  /* ### Instruction trailers. ### */
@@ -4179,7 +4225,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
4179
4225
  RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
4180
4226
  rb_num_t index = (rb_num_t)GET_OPERAND(2);
4181
4227
  # define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate(bf, index)
4182
- bool leaf = INSN_ATTR(leaf);
4228
+ const bool leaf = INSN_ATTR(leaf);
4183
4229
  VALUE val;
4184
4230
 
4185
4231
  /* ### Instruction preambles. ### */
@@ -4191,11 +4237,11 @@ INSN_ENTRY(opt_invokebuiltin_delegate)
4191
4237
 
4192
4238
  /* ### Here we do the instruction body. ### */
4193
4239
  # define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate
4194
- # line 1470 "insns.def"
4240
+ # line 1486 "insns.def"
4195
4241
  {
4196
4242
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4197
4243
  }
4198
- # line 4199 "vm.inc"
4244
+ # line 4245 "vm.inc"
4199
4245
  # undef NAME_OF_CURRENT_INSN
4200
4246
 
4201
4247
  /* ### Instruction trailers. ### */
@@ -4223,7 +4269,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4223
4269
  RB_BUILTIN bf = (RB_BUILTIN)GET_OPERAND(1);
4224
4270
  rb_num_t index = (rb_num_t)GET_OPERAND(2);
4225
4271
  # define INSN_ATTR(x) attr_ ## x ## _opt_invokebuiltin_delegate_leave(bf, index)
4226
- bool leaf = INSN_ATTR(leaf);
4272
+ const bool leaf = INSN_ATTR(leaf);
4227
4273
  VALUE val;
4228
4274
 
4229
4275
  /* ### Instruction preambles. ### */
@@ -4235,7 +4281,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4235
4281
 
4236
4282
  /* ### Here we do the instruction body. ### */
4237
4283
  # define NAME_OF_CURRENT_INSN opt_invokebuiltin_delegate_leave
4238
- # line 1481 "insns.def"
4284
+ # line 1497 "insns.def"
4239
4285
  {
4240
4286
  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);
4241
4287
 
@@ -4253,7 +4299,7 @@ INSN_ENTRY(opt_invokebuiltin_delegate_leave)
4253
4299
  RESTORE_REGS();
4254
4300
  }
4255
4301
  }
4256
- # line 4257 "vm.inc"
4302
+ # line 4303 "vm.inc"
4257
4303
  # undef NAME_OF_CURRENT_INSN
4258
4304
 
4259
4305
  /* ### Instruction trailers. ### */
@@ -4280,10 +4326,10 @@ INSN_ENTRY(getlocal_WC_0)
4280
4326
  /* ### Declare and assign variables. ### */
4281
4327
  #line 10 "defs/opt_operand.def"
4282
4328
  const rb_num_t level = 0;
4283
- #line 4284 "vm.inc"
4329
+ #line 4330 "vm.inc"
4284
4330
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4285
4331
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_0(idx)
4286
- bool leaf = INSN_ATTR(leaf);
4332
+ const bool leaf = INSN_ATTR(leaf);
4287
4333
  VALUE val;
4288
4334
 
4289
4335
  /* ### Instruction preambles. ### */
@@ -4300,7 +4346,7 @@ INSN_ENTRY(getlocal_WC_0)
4300
4346
  RB_DEBUG_COUNTER_INC(lvar_get);
4301
4347
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4302
4348
  }
4303
- # line 4304 "vm.inc"
4349
+ # line 4350 "vm.inc"
4304
4350
  # undef NAME_OF_CURRENT_INSN
4305
4351
 
4306
4352
  /* ### Instruction trailers. ### */
@@ -4327,10 +4373,10 @@ INSN_ENTRY(getlocal_WC_1)
4327
4373
  /* ### Declare and assign variables. ### */
4328
4374
  #line 11 "defs/opt_operand.def"
4329
4375
  const rb_num_t level = 1;
4330
- #line 4331 "vm.inc"
4376
+ #line 4377 "vm.inc"
4331
4377
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4332
4378
  # define INSN_ATTR(x) attr_ ## x ## _getlocal_WC_1(idx)
4333
- bool leaf = INSN_ATTR(leaf);
4379
+ const bool leaf = INSN_ATTR(leaf);
4334
4380
  VALUE val;
4335
4381
 
4336
4382
  /* ### Instruction preambles. ### */
@@ -4347,7 +4393,7 @@ INSN_ENTRY(getlocal_WC_1)
4347
4393
  RB_DEBUG_COUNTER_INC(lvar_get);
4348
4394
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
4349
4395
  }
4350
- # line 4351 "vm.inc"
4396
+ # line 4397 "vm.inc"
4351
4397
  # undef NAME_OF_CURRENT_INSN
4352
4398
 
4353
4399
  /* ### Instruction trailers. ### */
@@ -4374,10 +4420,10 @@ INSN_ENTRY(setlocal_WC_0)
4374
4420
  /* ### Declare and assign variables. ### */
4375
4421
  #line 12 "defs/opt_operand.def"
4376
4422
  const rb_num_t level = 0;
4377
- #line 4378 "vm.inc"
4423
+ #line 4424 "vm.inc"
4378
4424
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4379
4425
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_0(idx)
4380
- bool leaf = INSN_ATTR(leaf);
4426
+ const bool leaf = INSN_ATTR(leaf);
4381
4427
  VALUE val = TOPN(0);
4382
4428
 
4383
4429
  /* ### Instruction preambles. ### */
@@ -4394,7 +4440,7 @@ INSN_ENTRY(setlocal_WC_0)
4394
4440
  RB_DEBUG_COUNTER_INC(lvar_set);
4395
4441
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4396
4442
  }
4397
- # line 4398 "vm.inc"
4443
+ # line 4444 "vm.inc"
4398
4444
  # undef NAME_OF_CURRENT_INSN
4399
4445
 
4400
4446
  /* ### Instruction trailers. ### */
@@ -4418,10 +4464,10 @@ INSN_ENTRY(setlocal_WC_1)
4418
4464
  /* ### Declare and assign variables. ### */
4419
4465
  #line 13 "defs/opt_operand.def"
4420
4466
  const rb_num_t level = 1;
4421
- #line 4422 "vm.inc"
4467
+ #line 4468 "vm.inc"
4422
4468
  lindex_t idx = (lindex_t)GET_OPERAND(1);
4423
4469
  # define INSN_ATTR(x) attr_ ## x ## _setlocal_WC_1(idx)
4424
- bool leaf = INSN_ATTR(leaf);
4470
+ const bool leaf = INSN_ATTR(leaf);
4425
4471
  VALUE val = TOPN(0);
4426
4472
 
4427
4473
  /* ### Instruction preambles. ### */
@@ -4438,7 +4484,7 @@ INSN_ENTRY(setlocal_WC_1)
4438
4484
  RB_DEBUG_COUNTER_INC(lvar_set);
4439
4485
  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
4440
4486
  }
4441
- # line 4442 "vm.inc"
4487
+ # line 4488 "vm.inc"
4442
4488
  # undef NAME_OF_CURRENT_INSN
4443
4489
 
4444
4490
  /* ### Instruction trailers. ### */
@@ -4462,9 +4508,9 @@ INSN_ENTRY(putobject_INT2FIX_0_)
4462
4508
  /* ### Declare and assign variables. ### */
4463
4509
  #line 15 "defs/opt_operand.def"
4464
4510
  const VALUE val = INT2FIX(0);
4465
- #line 4466 "vm.inc"
4511
+ #line 4512 "vm.inc"
4466
4512
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_0_()
4467
- bool leaf = INSN_ATTR(leaf);
4513
+ const bool leaf = INSN_ATTR(leaf);
4468
4514
 
4469
4515
  /* ### Instruction preambles. ### */
4470
4516
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -4493,9 +4539,9 @@ INSN_ENTRY(putobject_INT2FIX_1_)
4493
4539
  /* ### Declare and assign variables. ### */
4494
4540
  #line 16 "defs/opt_operand.def"
4495
4541
  const VALUE val = INT2FIX(1);
4496
- #line 4497 "vm.inc"
4542
+ #line 4543 "vm.inc"
4497
4543
  # define INSN_ATTR(x) attr_ ## x ## _putobject_INT2FIX_1_()
4498
- bool leaf = INSN_ATTR(leaf);
4544
+ const bool leaf = INSN_ATTR(leaf);
4499
4545
 
4500
4546
  /* ### Instruction preambles. ### */
4501
4547
  if (! leaf) ADD_PC(INSN_ATTR(width));
@@ -4712,13 +4758,13 @@ INSN_ENTRY(trace_concatstrings)
4712
4758
  END_INSN(trace_concatstrings);
4713
4759
  }
4714
4760
 
4715
- /* insn trace_tostring(...)(...)(...) */
4716
- INSN_ENTRY(trace_tostring)
4761
+ /* insn trace_anytostring(...)(...)(...) */
4762
+ INSN_ENTRY(trace_anytostring)
4717
4763
  {
4718
4764
  vm_trace(ec, GET_CFP());
4719
4765
 
4720
- DISPATCH_ORIGINAL_INSN(tostring);
4721
- END_INSN(trace_tostring);
4766
+ DISPATCH_ORIGINAL_INSN(anytostring);
4767
+ END_INSN(trace_anytostring);
4722
4768
  }
4723
4769
 
4724
4770
  /* insn trace_toregexp(...)(...)(...) */
@@ -4964,6 +5010,15 @@ INSN_ENTRY(trace_opt_send_without_block)
4964
5010
  END_INSN(trace_opt_send_without_block);
4965
5011
  }
4966
5012
 
5013
+ /* insn trace_objtostring(...)(...)(...) */
5014
+ INSN_ENTRY(trace_objtostring)
5015
+ {
5016
+ vm_trace(ec, GET_CFP());
5017
+
5018
+ DISPATCH_ORIGINAL_INSN(objtostring);
5019
+ END_INSN(trace_objtostring);
5020
+ }
5021
+
4967
5022
  /* insn trace_opt_str_freeze(...)(...)(...) */
4968
5023
  INSN_ENTRY(trace_opt_str_freeze)
4969
5024
  {