debase-ruby_core_source 0.10.2 → 0.10.11

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 (339) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +34 -0
  3. data/README.md +6 -2
  4. data/Rakefile +6 -3
  5. data/debase-ruby_core_source.gemspec +2 -1
  6. data/lib/debase/ruby_core_source.rb +6 -5
  7. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/addr2line.h +0 -0
  8. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/ccan/build_assert/build_assert.h +0 -0
  9. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/ccan/check_type/check_type.h +0 -0
  10. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/ccan/container_of/container_of.h +0 -0
  11. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/ccan/list/list.h +0 -0
  12. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/ccan/str/str.h +0 -0
  13. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/constant.h +1 -0
  14. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/debug_counter.h +0 -0
  15. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/dln.h +0 -0
  16. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/encindex.h +2 -0
  17. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/eval_intern.h +0 -0
  18. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/gc.h +0 -0
  19. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/id.h +0 -0
  20. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/id_table.h +0 -0
  21. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/insns.inc +2 -2
  22. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/insns_info.inc +157 -157
  23. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/internal.h +5 -4
  24. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/iseq.h +2 -2
  25. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/known_errors.inc +0 -0
  26. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/method.h +0 -0
  27. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/node.h +0 -0
  28. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/node_name.inc +0 -0
  29. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/opt_sc.inc +0 -0
  30. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/optinsn.inc +0 -0
  31. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/optunifs.inc +0 -0
  32. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/parse.h +0 -0
  33. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/probes_helper.h +0 -0
  34. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/regenc.h +0 -0
  35. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/regint.h +0 -0
  36. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/regparse.h +0 -0
  37. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/revision.h +1 -0
  38. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/ruby_assert.h +0 -0
  39. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/ruby_atomic.h +0 -0
  40. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/siphash.h +0 -0
  41. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/symbol.h +0 -0
  42. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/thread_pthread.h +0 -0
  43. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/thread_win32.h +0 -0
  44. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/timev.h +0 -0
  45. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/transcode_data.h +0 -0
  46. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/version.h +73 -0
  47. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/vm.inc +13 -13
  48. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/vm_call_iseq_optimized.inc +0 -0
  49. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/vm_core.h +3 -4
  50. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.5.1-p57}/vm_debug.h +0 -0
  51. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/vm_exec.h +0 -0
  52. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/vm_insnhelper.h +0 -0
  53. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/vm_opts.h +1 -2
  54. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.5.1-p57}/vmtc.inc +2 -2
  55. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/addr2line.h +1 -1
  56. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/ccan/build_assert/build_assert.h +0 -0
  57. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/ccan/check_type/check_type.h +0 -0
  58. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/ccan/container_of/container_of.h +0 -0
  59. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/ccan/list/list.h +20 -5
  60. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/ccan/str/str.h +0 -0
  61. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/constant.h +1 -0
  62. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/debug_counter.h +283 -0
  63. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/dln.h +0 -0
  64. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/encindex.h +2 -0
  65. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.0-p0}/eval_intern.h +45 -53
  66. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.0-p0}/gc.h +2 -3
  67. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/hrtime.h +168 -0
  68. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/id.h +4 -2
  69. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/id_table.h +0 -0
  70. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/insns.inc +249 -0
  71. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/insns_info.inc +9374 -0
  72. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.0-p0}/internal.h +608 -100
  73. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.0-p0}/iseq.h +127 -91
  74. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/known_errors.inc +477 -432
  75. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.0-p0}/method.h +28 -15
  76. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/mjit.h +148 -0
  77. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/mjit_compile.inc +4224 -0
  78. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/node.h +449 -0
  79. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.0-p0}/node_name.inc +6 -18
  80. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/opt_sc.inc +109 -0
  81. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/optinsn.inc +128 -0
  82. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/optunifs.inc +43 -0
  83. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/parse.h +210 -0
  84. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/probes_helper.h +42 -0
  85. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/regenc.h +1 -1
  86. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/regint.h +0 -0
  87. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/regparse.h +1 -1
  88. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/revision.h +1 -0
  89. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/ruby_assert.h +6 -0
  90. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/ruby_atomic.h +14 -3
  91. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/siphash.h +1 -1
  92. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/symbol.h +1 -1
  93. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/thread_pthread.h +75 -0
  94. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/thread_win32.h +0 -0
  95. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/timev.h +53 -0
  96. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/transcode_data.h +0 -0
  97. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/transient_heap.h +60 -0
  98. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/version.h +7 -7
  99. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/vm.inc +4502 -0
  100. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/vm_call_iseq_optimized.inc +213 -0
  101. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.0-p0}/vm_core.h +385 -182
  102. data/lib/debase/ruby_core_source/{ruby-2.5.0-rc1 → ruby-2.6.0-p0}/vm_debug.h +0 -0
  103. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.0-p0}/vm_exec.h +33 -13
  104. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/vm_insnhelper.h +316 -0
  105. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.0-p0}/vm_opts.h +18 -5
  106. data/lib/debase/ruby_core_source/ruby-2.6.0-p0/vmtc.inc +243 -0
  107. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/addr2line.h +21 -0
  108. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/ccan/build_assert/build_assert.h +40 -0
  109. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/ccan/check_type/check_type.h +63 -0
  110. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/ccan/container_of/container_of.h +142 -0
  111. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/ccan/list/list.h +788 -0
  112. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/ccan/str/str.h +16 -0
  113. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/constant.h +51 -0
  114. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/debug_counter.h +283 -0
  115. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/dln.h +51 -0
  116. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/encindex.h +69 -0
  117. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/eval_intern.h +333 -0
  118. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/gc.h +116 -0
  119. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/hrtime.h +168 -0
  120. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/id.h +252 -0
  121. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/id_table.h +31 -0
  122. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/insns.inc +249 -0
  123. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/insns_info.inc +9374 -0
  124. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/internal.h +2470 -0
  125. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/iseq.h +304 -0
  126. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/known_errors.inc +791 -0
  127. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/method.h +229 -0
  128. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/mjit.h +148 -0
  129. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/mjit_compile.inc +4226 -0
  130. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/node.h +449 -0
  131. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/node_name.inc +200 -0
  132. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/opt_sc.inc +109 -0
  133. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/optinsn.inc +128 -0
  134. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/optunifs.inc +43 -0
  135. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.5-p114}/parse.h +47 -31
  136. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/probes_helper.h +42 -0
  137. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/regenc.h +254 -0
  138. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/regint.h +938 -0
  139. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/regparse.h +370 -0
  140. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/revision.h +1 -0
  141. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/ruby_assert.h +60 -0
  142. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/ruby_atomic.h +244 -0
  143. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/siphash.h +48 -0
  144. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/symbol.h +112 -0
  145. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/thread_pthread.h +75 -0
  146. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/thread_win32.h +36 -0
  147. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/timev.h +53 -0
  148. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/transcode_data.h +139 -0
  149. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/transient_heap.h +60 -0
  150. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.6.5-p114}/version.h +7 -7
  151. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/vm.inc +4504 -0
  152. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/vm_call_iseq_optimized.inc +213 -0
  153. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/vm_core.h +1910 -0
  154. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/vm_debug.h +37 -0
  155. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/vm_exec.h +202 -0
  156. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/vm_insnhelper.h +316 -0
  157. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/vm_opts.h +70 -0
  158. data/lib/debase/ruby_core_source/ruby-2.6.5-p114/vmtc.inc +243 -0
  159. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/addr2line.h +21 -0
  160. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/builtin.h +78 -0
  161. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/ccan/build_assert/build_assert.h +40 -0
  162. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/ccan/check_type/check_type.h +63 -0
  163. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/ccan/container_of/container_of.h +142 -0
  164. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/ccan/list/list.h +788 -0
  165. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/ccan/str/str.h +16 -0
  166. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/constant.h +50 -0
  167. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/debug_counter.h +390 -0
  168. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/dln.h +51 -0
  169. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/encindex.h +69 -0
  170. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/eval_intern.h +312 -0
  171. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/gc.h +131 -0
  172. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/hrtime.h +168 -0
  173. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/id.h +290 -0
  174. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/id_table.h +34 -0
  175. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/insns.inc +253 -0
  176. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/insns_info.inc +9197 -0
  177. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/internal.h +2697 -0
  178. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/iseq.h +312 -0
  179. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/known_errors.inc +791 -0
  180. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/method.h +229 -0
  181. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/mjit.h +177 -0
  182. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/mjit_compile.inc +7779 -0
  183. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/node.h +476 -0
  184. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/node_name.inc +208 -0
  185. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/opt_sc.inc +109 -0
  186. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/optinsn.inc +128 -0
  187. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/optunifs.inc +43 -0
  188. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/parse.h +210 -0
  189. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/probes_helper.h +42 -0
  190. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/regenc.h +254 -0
  191. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/regint.h +938 -0
  192. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/regparse.h +370 -0
  193. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/revision.h +2 -0
  194. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/ruby_assert.h +15 -0
  195. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/ruby_atomic.h +244 -0
  196. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/siphash.h +48 -0
  197. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/symbol.h +119 -0
  198. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/thread_pthread.h +75 -0
  199. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/thread_win32.h +36 -0
  200. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/timev.h +56 -0
  201. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/transcode_data.h +139 -0
  202. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/transient_heap.h +62 -0
  203. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/variable.h +9 -0
  204. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/version.h +77 -0
  205. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/vm.inc +5466 -0
  206. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/vm_call_iseq_optimized.inc +237 -0
  207. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/vm_core.h +1968 -0
  208. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/vm_debug.h +34 -0
  209. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/vm_exec.h +193 -0
  210. data/lib/debase/ruby_core_source/{ruby-2.5.0-preview1 → ruby-2.7.0-p0}/vm_insnhelper.h +81 -64
  211. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/vm_opts.h +72 -0
  212. data/lib/debase/ruby_core_source/ruby-2.7.0-p0/vmtc.inc +247 -0
  213. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/addr2line.h +20 -0
  214. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/builtin.h +83 -0
  215. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ccan/build_assert/build_assert.h +40 -0
  216. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ccan/check_type/check_type.h +63 -0
  217. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ccan/container_of/container_of.h +142 -0
  218. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ccan/list/list.h +788 -0
  219. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ccan/str/str.h +16 -0
  220. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/constant.h +55 -0
  221. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/debug_counter.h +423 -0
  222. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/dln.h +36 -0
  223. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/encindex.h +70 -0
  224. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/eval_intern.h +312 -0
  225. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/gc.h +140 -0
  226. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/hrtime.h +168 -0
  227. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/id.h +290 -0
  228. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/id_table.h +36 -0
  229. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/insns.inc +249 -0
  230. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/insns_info.inc +8979 -0
  231. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal.h +107 -0
  232. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/array.h +114 -0
  233. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/bignum.h +246 -0
  234. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/bits.h +566 -0
  235. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/class.h +168 -0
  236. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/compar.h +50 -0
  237. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/compile.h +32 -0
  238. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/compilers.h +108 -0
  239. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/complex.h +29 -0
  240. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/cont.h +25 -0
  241. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/dir.h +17 -0
  242. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/enc.h +20 -0
  243. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/encoding.h +28 -0
  244. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/enum.h +19 -0
  245. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/enumerator.h +22 -0
  246. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/error.h +131 -0
  247. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/eval.h +33 -0
  248. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/file.h +39 -0
  249. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/fixnum.h +185 -0
  250. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/gc.h +154 -0
  251. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/hash.h +240 -0
  252. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/imemo.h +243 -0
  253. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/inits.h +51 -0
  254. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/io.h +35 -0
  255. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/load.h +19 -0
  256. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/loadpath.h +17 -0
  257. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/math.h +24 -0
  258. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/missing.h +19 -0
  259. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/mjit.h +29 -0
  260. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/numeric.h +252 -0
  261. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/object.h +83 -0
  262. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/parse.h +23 -0
  263. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/proc.h +32 -0
  264. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/process.h +136 -0
  265. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/random.h +17 -0
  266. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/range.h +37 -0
  267. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/rational.h +69 -0
  268. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/re.h +29 -0
  269. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/sanitizers.h +191 -0
  270. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/scheduler.h +35 -0
  271. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/serial.h +24 -0
  272. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/signal.h +22 -0
  273. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/static_assert.h +17 -0
  274. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/string.h +135 -0
  275. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/struct.h +154 -0
  276. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/symbol.h +41 -0
  277. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/thread.h +60 -0
  278. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/time.h +35 -0
  279. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/transcode.h +21 -0
  280. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/util.h +31 -0
  281. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/variable.h +83 -0
  282. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/vm.h +135 -0
  283. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/internal/warnings.h +17 -0
  284. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/iseq.h +304 -0
  285. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/known_errors.inc +791 -0
  286. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/method.h +245 -0
  287. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/mjit.h +197 -0
  288. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/mjit_compile.inc +8082 -0
  289. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/node.h +484 -0
  290. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/node_name.inc +210 -0
  291. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/opt_sc.inc +109 -0
  292. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/optinsn.inc +128 -0
  293. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/optunifs.inc +43 -0
  294. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/parse.h +211 -0
  295. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/probes_helper.h +44 -0
  296. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ractor.h +271 -0
  297. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ractor_pub.h +50 -0
  298. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/regenc.h +254 -0
  299. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/regint.h +938 -0
  300. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/regparse.h +370 -0
  301. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/revision.h +2 -0
  302. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ruby_assert.h +15 -0
  303. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/ruby_atomic.h +236 -0
  304. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/siphash.h +48 -0
  305. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/symbol.h +119 -0
  306. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/thread_pthread.h +106 -0
  307. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/thread_win32.h +66 -0
  308. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/timev.h +57 -0
  309. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/transcode_data.h +138 -0
  310. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/transient_heap.h +61 -0
  311. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/variable.h +21 -0
  312. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/version.h +89 -0
  313. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/vm.inc +5360 -0
  314. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/vm_call_iseq_optimized.inc +244 -0
  315. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/vm_callinfo.h +457 -0
  316. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/vm_core.h +1952 -0
  317. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/vm_debug.h +116 -0
  318. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/vm_exec.h +196 -0
  319. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/vm_insnhelper.h +260 -0
  320. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/vm_opts.h +73 -0
  321. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/vm_sync.h +97 -0
  322. data/lib/debase/ruby_core_source/ruby-3.0.0-preview1/vmtc.inc +243 -0
  323. data/lib/debase/ruby_core_source/version.rb +1 -1
  324. metadata +335 -102
  325. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/insns.inc +0 -118
  326. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/insns_info.inc +0 -827
  327. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/node.h +0 -523
  328. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/opt_sc.inc +0 -809
  329. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/optinsn.inc +0 -77
  330. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/optunifs.inc +0 -49
  331. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/probes_helper.h +0 -43
  332. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/revision.h +0 -1
  333. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vm.inc +0 -2935
  334. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vm_call_iseq_optimized.inc +0 -212
  335. data/lib/debase/ruby_core_source/ruby-2.5.0-preview1/vmtc.inc +0 -115
  336. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/debug_counter.h +0 -109
  337. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/revision.h +0 -1
  338. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/thread_pthread.h +0 -54
  339. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/timev.h +0 -42
@@ -1,77 +0,0 @@
1
- /* -*-c-*- *********************************************************/
2
- /*******************************************************************/
3
- /*******************************************************************/
4
- /**
5
- This file is for threaded code.
6
-
7
- ----
8
- This file is auto generated by insns2vm.rb
9
- DO NOT TOUCH!
10
-
11
- If you want to fix something, you must edit 'template/optinsn.inc.tmpl'
12
- or tool/insns2vm.rb
13
- */
14
-
15
- static INSN *
16
- insn_operands_unification(INSN *insnobj)
17
- {
18
- #ifdef OPT_OPERANDS_UNIFICATION
19
- /* optimize rule */
20
- switch(insnobj->insn_id){
21
- case BIN(getlocal):
22
- if (
23
- insnobj->operands[1] == INT2FIX(0) &&
24
- 1) {
25
- insnobj->insn_id = BIN(getlocal_OP__WC__0);
26
- insnobj->operand_size = 1;
27
- break;
28
- }
29
- if (
30
- insnobj->operands[1] == INT2FIX(1) &&
31
- 1) {
32
- insnobj->insn_id = BIN(getlocal_OP__WC__1);
33
- insnobj->operand_size = 1;
34
- break;
35
- }
36
- break;
37
- case BIN(setlocal):
38
- if (
39
- insnobj->operands[1] == INT2FIX(0) &&
40
- 1) {
41
- insnobj->insn_id = BIN(setlocal_OP__WC__0);
42
- insnobj->operand_size = 1;
43
- break;
44
- }
45
- if (
46
- insnobj->operands[1] == INT2FIX(1) &&
47
- 1) {
48
- insnobj->insn_id = BIN(setlocal_OP__WC__1);
49
- insnobj->operand_size = 1;
50
- break;
51
- }
52
- break;
53
- case BIN(putobject):
54
- if (
55
- insnobj->operands[0] == INT2FIX(0) &&
56
- 1) {
57
- insnobj->insn_id = BIN(putobject_OP_INT2FIX_O_0_C_);
58
- insnobj->operand_size = 0;
59
- break;
60
- }
61
- if (
62
- insnobj->operands[0] == INT2FIX(1) &&
63
- 1) {
64
- insnobj->insn_id = BIN(putobject_OP_INT2FIX_O_1_C_);
65
- insnobj->operand_size = 0;
66
- break;
67
- }
68
- break;
69
-
70
- default:
71
- /* do nothing */;
72
- break;
73
- }
74
- #endif
75
- return insnobj;
76
- }
77
-
@@ -1,49 +0,0 @@
1
- /* -*-c-*- *********************************************************/
2
- /*******************************************************************/
3
- /*******************************************************************/
4
- /**
5
- This file is for threaded code.
6
-
7
- ----
8
- This file is auto generated by insns2vm.rb
9
- DO NOT TOUCH!
10
-
11
- If you want to fix something, you must edit 'template/optunifs.inc.tmpl'
12
- or tool/insns2vm.rb
13
- */
14
-
15
- /*
16
- static const int UNIFIED_insn_name_1[] = {id, size, ...};
17
- static const int UNIFIED_insn_name_2[] = {id, size, ...};
18
- ...
19
-
20
- static const int *const UNIFIED_insn_name[] = {size,
21
- UNIFIED_insn_name_1,
22
- UNIFIED_insn_name_2, ...};
23
- ...
24
-
25
- static const int *const *const unified_insns_data[] = {
26
- UNIFIED_insn_nameA,
27
- UNIFIED_insn_nameB, ...};
28
- */
29
-
30
-
31
- static const int *const *const unified_insns_data[] = {
32
- 0, 0, 0, 0, 0, 0, 0, 0,
33
- 0, 0, 0, 0, 0, 0, 0, 0,
34
- 0, 0, 0, 0, 0, 0, 0, 0,
35
- 0, 0, 0, 0, 0, 0, 0, 0,
36
- 0, 0, 0, 0, 0, 0, 0, 0,
37
- 0, 0, 0, 0, 0, 0, 0, 0,
38
- 0, 0, 0, 0, 0, 0, 0, 0,
39
- 0, 0, 0, 0, 0, 0, 0, 0,
40
- 0, 0, 0, 0, 0, 0, 0, 0,
41
- 0, 0, 0, 0, 0, 0, 0, 0,
42
- 0, 0, 0, 0, 0, 0, 0, 0,
43
- 0, 0, 0, 0, 0, 0, 0, 0,
44
- 0,
45
- };
46
-
47
- #undef GET_INSN_NAME
48
-
49
- ASSERT_VM_INSTRUCTION_SIZE(unified_insns_data);
@@ -1,43 +0,0 @@
1
- #ifndef RUBY_PROBES_HELPER_H
2
- #define RUBY_PROBES_HELPER_H
3
-
4
- #include "ruby/ruby.h"
5
- #include "probes.h"
6
-
7
- struct ruby_dtrace_method_hook_args {
8
- const char *classname;
9
- const char *methodname;
10
- const char *filename;
11
- int line_no;
12
- volatile VALUE klass;
13
- volatile VALUE name;
14
- };
15
-
16
- NOINLINE(int ruby_th_dtrace_setup(rb_thread_t *, VALUE, ID, struct ruby_dtrace_method_hook_args *));
17
-
18
- #define RUBY_DTRACE_METHOD_HOOK(name, th, klazz, id) \
19
- do { \
20
- if (UNLIKELY(RUBY_DTRACE_##name##_ENABLED())) { \
21
- struct ruby_dtrace_method_hook_args args; \
22
- if (ruby_th_dtrace_setup(th, klazz, id, &args)) { \
23
- RUBY_DTRACE_##name(args.classname, \
24
- args.methodname, \
25
- args.filename, \
26
- args.line_no); \
27
- } \
28
- } \
29
- } while (0)
30
-
31
- #define RUBY_DTRACE_METHOD_ENTRY_HOOK(th, klass, id) \
32
- RUBY_DTRACE_METHOD_HOOK(METHOD_ENTRY, th, klass, id)
33
-
34
- #define RUBY_DTRACE_METHOD_RETURN_HOOK(th, klass, id) \
35
- RUBY_DTRACE_METHOD_HOOK(METHOD_RETURN, th, klass, id)
36
-
37
- #define RUBY_DTRACE_CMETHOD_ENTRY_HOOK(th, klass, id) \
38
- RUBY_DTRACE_METHOD_HOOK(CMETHOD_ENTRY, th, klass, id)
39
-
40
- #define RUBY_DTRACE_CMETHOD_RETURN_HOOK(th, klass, id) \
41
- RUBY_DTRACE_METHOD_HOOK(CMETHOD_RETURN, th, klass, id)
42
-
43
- #endif /* RUBY_PROBES_HELPER_H */
@@ -1 +0,0 @@
1
- #define RUBY_REVISION 60153
@@ -1,2935 +0,0 @@
1
- /* -*-c-*- *********************************************************/
2
- /*******************************************************************/
3
- /*******************************************************************/
4
- /**
5
- This file is VM main loop.
6
-
7
- ----
8
- This file is auto generated by insns2vm.rb
9
- DO NOT TOUCH!
10
-
11
- If you want to fix something, you must edit 'insns.def'
12
- */
13
-
14
-
15
- INSN_ENTRY(nop){
16
- {
17
-
18
-
19
- DEBUG_ENTER_INSN("nop");
20
- ADD_PC(1+0);
21
- PREFETCH(GET_PC());
22
- #define CURRENT_INSN_nop 1
23
- #define INSN_IS_SC() 0
24
- #define INSN_LABEL(lab) LABEL_nop_##lab
25
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
26
- COLLECT_USAGE_INSN(BIN(nop));
27
- {
28
- #line 40 "insns.def"
29
- /* none */
30
-
31
- #line 32 "vm.inc"
32
- #undef CURRENT_INSN_nop
33
- #undef INSN_IS_SC
34
- #undef INSN_LABEL
35
- #undef LABEL_IS_SC
36
- END_INSN(nop);}}}
37
- INSN_ENTRY(getlocal){
38
- {
39
- VALUE val;
40
- rb_num_t level = (rb_num_t)GET_OPERAND(2);
41
- lindex_t idx = (lindex_t)GET_OPERAND(1);
42
-
43
- DEBUG_ENTER_INSN("getlocal");
44
- ADD_PC(1+2);
45
- PREFETCH(GET_PC());
46
- #define CURRENT_INSN_getlocal 1
47
- #define INSN_IS_SC() 0
48
- #define INSN_LABEL(lab) LABEL_getlocal_##lab
49
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
50
- COLLECT_USAGE_INSN(BIN(getlocal));
51
- COLLECT_USAGE_OPERAND(BIN(getlocal), 0, idx);
52
- COLLECT_USAGE_OPERAND(BIN(getlocal), 1, level);
53
- {
54
- #line 60 "insns.def"
55
- val = *(vm_get_ep(GET_EP(), level) - idx);
56
- RB_DEBUG_COUNTER_INC(lvar_get);
57
- (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
58
-
59
- #line 60 "vm.inc"
60
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
61
- PUSH(val);
62
- #undef CURRENT_INSN_getlocal
63
- #undef INSN_IS_SC
64
- #undef INSN_LABEL
65
- #undef LABEL_IS_SC
66
- END_INSN(getlocal);}}}
67
- INSN_ENTRY(setlocal){
68
- {
69
- rb_num_t level = (rb_num_t)GET_OPERAND(2);
70
- lindex_t idx = (lindex_t)GET_OPERAND(1);
71
- VALUE val = TOPN(0);
72
- DEBUG_ENTER_INSN("setlocal");
73
- ADD_PC(1+2);
74
- PREFETCH(GET_PC());
75
- POPN(1);
76
- #define CURRENT_INSN_setlocal 1
77
- #define INSN_IS_SC() 0
78
- #define INSN_LABEL(lab) LABEL_setlocal_##lab
79
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
80
- COLLECT_USAGE_INSN(BIN(setlocal));
81
- COLLECT_USAGE_OPERAND(BIN(setlocal), 0, idx);
82
- COLLECT_USAGE_OPERAND(BIN(setlocal), 1, level);
83
- {
84
- #line 78 "insns.def"
85
- vm_env_write(vm_get_ep(GET_EP(), level), -(int)idx, val);
86
- RB_DEBUG_COUNTER_INC(lvar_set);
87
- (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
88
-
89
- #line 90 "vm.inc"
90
- #undef CURRENT_INSN_setlocal
91
- #undef INSN_IS_SC
92
- #undef INSN_LABEL
93
- #undef LABEL_IS_SC
94
- END_INSN(setlocal);}}}
95
- INSN_ENTRY(getspecial){
96
- {
97
- VALUE val;
98
- rb_num_t type = (rb_num_t)GET_OPERAND(2);
99
- rb_num_t key = (rb_num_t)GET_OPERAND(1);
100
-
101
- DEBUG_ENTER_INSN("getspecial");
102
- ADD_PC(1+2);
103
- PREFETCH(GET_PC());
104
- #define CURRENT_INSN_getspecial 1
105
- #define INSN_IS_SC() 0
106
- #define INSN_LABEL(lab) LABEL_getspecial_##lab
107
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
108
- COLLECT_USAGE_INSN(BIN(getspecial));
109
- COLLECT_USAGE_OPERAND(BIN(getspecial), 0, key);
110
- COLLECT_USAGE_OPERAND(BIN(getspecial), 1, type);
111
- {
112
- #line 94 "insns.def"
113
- val = vm_getspecial(th, GET_LEP(), key, type);
114
-
115
- #line 116 "vm.inc"
116
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
117
- PUSH(val);
118
- #undef CURRENT_INSN_getspecial
119
- #undef INSN_IS_SC
120
- #undef INSN_LABEL
121
- #undef LABEL_IS_SC
122
- END_INSN(getspecial);}}}
123
- INSN_ENTRY(setspecial){
124
- {
125
- rb_num_t key = (rb_num_t)GET_OPERAND(1);
126
- VALUE obj = TOPN(0);
127
- DEBUG_ENTER_INSN("setspecial");
128
- ADD_PC(1+1);
129
- PREFETCH(GET_PC());
130
- POPN(1);
131
- #define CURRENT_INSN_setspecial 1
132
- #define INSN_IS_SC() 0
133
- #define INSN_LABEL(lab) LABEL_setspecial_##lab
134
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
135
- COLLECT_USAGE_INSN(BIN(setspecial));
136
- COLLECT_USAGE_OPERAND(BIN(setspecial), 0, key);
137
- {
138
- #line 108 "insns.def"
139
- lep_svar_set(th, GET_LEP(), key, obj);
140
-
141
- #line 142 "vm.inc"
142
- #undef CURRENT_INSN_setspecial
143
- #undef INSN_IS_SC
144
- #undef INSN_LABEL
145
- #undef LABEL_IS_SC
146
- END_INSN(setspecial);}}}
147
- INSN_ENTRY(getinstancevariable){
148
- {
149
- VALUE val;
150
- IC ic = (IC)GET_OPERAND(2);
151
- ID id = (ID)GET_OPERAND(1);
152
-
153
- DEBUG_ENTER_INSN("getinstancevariable");
154
- ADD_PC(1+2);
155
- PREFETCH(GET_PC());
156
- #define CURRENT_INSN_getinstancevariable 1
157
- #define INSN_IS_SC() 0
158
- #define INSN_LABEL(lab) LABEL_getinstancevariable_##lab
159
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
160
- COLLECT_USAGE_INSN(BIN(getinstancevariable));
161
- COLLECT_USAGE_OPERAND(BIN(getinstancevariable), 0, id);
162
- COLLECT_USAGE_OPERAND(BIN(getinstancevariable), 1, ic);
163
- {
164
- #line 122 "insns.def"
165
- val = vm_getinstancevariable(GET_SELF(), id, ic);
166
-
167
- #line 168 "vm.inc"
168
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
169
- PUSH(val);
170
- #undef CURRENT_INSN_getinstancevariable
171
- #undef INSN_IS_SC
172
- #undef INSN_LABEL
173
- #undef LABEL_IS_SC
174
- END_INSN(getinstancevariable);}}}
175
- INSN_ENTRY(setinstancevariable){
176
- {
177
- IC ic = (IC)GET_OPERAND(2);
178
- ID id = (ID)GET_OPERAND(1);
179
- VALUE val = TOPN(0);
180
- DEBUG_ENTER_INSN("setinstancevariable");
181
- ADD_PC(1+2);
182
- PREFETCH(GET_PC());
183
- POPN(1);
184
- #define CURRENT_INSN_setinstancevariable 1
185
- #define INSN_IS_SC() 0
186
- #define INSN_LABEL(lab) LABEL_setinstancevariable_##lab
187
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
188
- COLLECT_USAGE_INSN(BIN(setinstancevariable));
189
- COLLECT_USAGE_OPERAND(BIN(setinstancevariable), 0, id);
190
- COLLECT_USAGE_OPERAND(BIN(setinstancevariable), 1, ic);
191
- {
192
- #line 136 "insns.def"
193
- vm_setinstancevariable(GET_SELF(), id, val, ic);
194
-
195
- #line 196 "vm.inc"
196
- #undef CURRENT_INSN_setinstancevariable
197
- #undef INSN_IS_SC
198
- #undef INSN_LABEL
199
- #undef LABEL_IS_SC
200
- END_INSN(setinstancevariable);}}}
201
- INSN_ENTRY(getclassvariable){
202
- {
203
- VALUE val;
204
- ID id = (ID)GET_OPERAND(1);
205
-
206
- DEBUG_ENTER_INSN("getclassvariable");
207
- ADD_PC(1+1);
208
- PREFETCH(GET_PC());
209
- #define CURRENT_INSN_getclassvariable 1
210
- #define INSN_IS_SC() 0
211
- #define INSN_LABEL(lab) LABEL_getclassvariable_##lab
212
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
213
- COLLECT_USAGE_INSN(BIN(getclassvariable));
214
- COLLECT_USAGE_OPERAND(BIN(getclassvariable), 0, id);
215
- {
216
- #line 150 "insns.def"
217
- val = rb_cvar_get(vm_get_cvar_base(rb_vm_get_cref(GET_EP()), GET_CFP()), id);
218
-
219
- #line 220 "vm.inc"
220
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
221
- PUSH(val);
222
- #undef CURRENT_INSN_getclassvariable
223
- #undef INSN_IS_SC
224
- #undef INSN_LABEL
225
- #undef LABEL_IS_SC
226
- END_INSN(getclassvariable);}}}
227
- INSN_ENTRY(setclassvariable){
228
- {
229
- ID id = (ID)GET_OPERAND(1);
230
- VALUE val = TOPN(0);
231
- DEBUG_ENTER_INSN("setclassvariable");
232
- ADD_PC(1+1);
233
- PREFETCH(GET_PC());
234
- POPN(1);
235
- #define CURRENT_INSN_setclassvariable 1
236
- #define INSN_IS_SC() 0
237
- #define INSN_LABEL(lab) LABEL_setclassvariable_##lab
238
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
239
- COLLECT_USAGE_INSN(BIN(setclassvariable));
240
- COLLECT_USAGE_OPERAND(BIN(setclassvariable), 0, id);
241
- {
242
- #line 164 "insns.def"
243
- vm_ensure_not_refinement_module(GET_SELF());
244
- rb_cvar_set(vm_get_cvar_base(rb_vm_get_cref(GET_EP()), GET_CFP()), id, val);
245
-
246
- #line 247 "vm.inc"
247
- #undef CURRENT_INSN_setclassvariable
248
- #undef INSN_IS_SC
249
- #undef INSN_LABEL
250
- #undef LABEL_IS_SC
251
- END_INSN(setclassvariable);}}}
252
- INSN_ENTRY(getconstant){
253
- {
254
- VALUE val;
255
- ID id = (ID)GET_OPERAND(1);
256
- VALUE klass = TOPN(0);
257
- DEBUG_ENTER_INSN("getconstant");
258
- ADD_PC(1+1);
259
- PREFETCH(GET_PC());
260
- POPN(1);
261
- #define CURRENT_INSN_getconstant 1
262
- #define INSN_IS_SC() 0
263
- #define INSN_LABEL(lab) LABEL_getconstant_##lab
264
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
265
- COLLECT_USAGE_INSN(BIN(getconstant));
266
- COLLECT_USAGE_OPERAND(BIN(getconstant), 0, id);
267
- {
268
- #line 186 "insns.def"
269
- val = vm_get_ev_const(th, klass, id, 0);
270
-
271
- #line 272 "vm.inc"
272
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
273
- PUSH(val);
274
- #undef CURRENT_INSN_getconstant
275
- #undef INSN_IS_SC
276
- #undef INSN_LABEL
277
- #undef LABEL_IS_SC
278
- END_INSN(getconstant);}}}
279
- INSN_ENTRY(setconstant){
280
- {
281
- ID id = (ID)GET_OPERAND(1);
282
- VALUE val = TOPN(1);
283
- VALUE cbase = TOPN(0);
284
- DEBUG_ENTER_INSN("setconstant");
285
- ADD_PC(1+1);
286
- PREFETCH(GET_PC());
287
- POPN(2);
288
- #define CURRENT_INSN_setconstant 1
289
- #define INSN_IS_SC() 0
290
- #define INSN_LABEL(lab) LABEL_setconstant_##lab
291
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
292
- COLLECT_USAGE_INSN(BIN(setconstant));
293
- COLLECT_USAGE_OPERAND(BIN(setconstant), 0, id);
294
- {
295
- #line 208 "insns.def"
296
- vm_check_if_namespace(cbase);
297
- vm_ensure_not_refinement_module(GET_SELF());
298
- rb_const_set(cbase, id, val);
299
-
300
- #line 301 "vm.inc"
301
- #undef CURRENT_INSN_setconstant
302
- #undef INSN_IS_SC
303
- #undef INSN_LABEL
304
- #undef LABEL_IS_SC
305
- END_INSN(setconstant);}}}
306
- INSN_ENTRY(getglobal){
307
- {
308
- VALUE val;
309
- GENTRY entry = (GENTRY)GET_OPERAND(1);
310
-
311
- DEBUG_ENTER_INSN("getglobal");
312
- ADD_PC(1+1);
313
- PREFETCH(GET_PC());
314
- #define CURRENT_INSN_getglobal 1
315
- #define INSN_IS_SC() 0
316
- #define INSN_LABEL(lab) LABEL_getglobal_##lab
317
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
318
- COLLECT_USAGE_INSN(BIN(getglobal));
319
- COLLECT_USAGE_OPERAND(BIN(getglobal), 0, entry);
320
- {
321
- #line 224 "insns.def"
322
- val = GET_GLOBAL((VALUE)entry);
323
-
324
- #line 325 "vm.inc"
325
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
326
- PUSH(val);
327
- #undef CURRENT_INSN_getglobal
328
- #undef INSN_IS_SC
329
- #undef INSN_LABEL
330
- #undef LABEL_IS_SC
331
- END_INSN(getglobal);}}}
332
- INSN_ENTRY(setglobal){
333
- {
334
- GENTRY entry = (GENTRY)GET_OPERAND(1);
335
- VALUE val = TOPN(0);
336
- DEBUG_ENTER_INSN("setglobal");
337
- ADD_PC(1+1);
338
- PREFETCH(GET_PC());
339
- POPN(1);
340
- #define CURRENT_INSN_setglobal 1
341
- #define INSN_IS_SC() 0
342
- #define INSN_LABEL(lab) LABEL_setglobal_##lab
343
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
344
- COLLECT_USAGE_INSN(BIN(setglobal));
345
- COLLECT_USAGE_OPERAND(BIN(setglobal), 0, entry);
346
- {
347
- #line 238 "insns.def"
348
- SET_GLOBAL((VALUE)entry, val);
349
-
350
- #line 351 "vm.inc"
351
- #undef CURRENT_INSN_setglobal
352
- #undef INSN_IS_SC
353
- #undef INSN_LABEL
354
- #undef LABEL_IS_SC
355
- END_INSN(setglobal);}}}
356
- INSN_ENTRY(putnil){
357
- {
358
- VALUE val;
359
-
360
-
361
- DEBUG_ENTER_INSN("putnil");
362
- ADD_PC(1+0);
363
- PREFETCH(GET_PC());
364
- #define CURRENT_INSN_putnil 1
365
- #define INSN_IS_SC() 0
366
- #define INSN_LABEL(lab) LABEL_putnil_##lab
367
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
368
- COLLECT_USAGE_INSN(BIN(putnil));
369
- {
370
- #line 257 "insns.def"
371
- val = Qnil;
372
-
373
- #line 374 "vm.inc"
374
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
375
- PUSH(val);
376
- #undef CURRENT_INSN_putnil
377
- #undef INSN_IS_SC
378
- #undef INSN_LABEL
379
- #undef LABEL_IS_SC
380
- END_INSN(putnil);}}}
381
- INSN_ENTRY(putself){
382
- {
383
- VALUE val;
384
-
385
-
386
- DEBUG_ENTER_INSN("putself");
387
- ADD_PC(1+0);
388
- PREFETCH(GET_PC());
389
- #define CURRENT_INSN_putself 1
390
- #define INSN_IS_SC() 0
391
- #define INSN_LABEL(lab) LABEL_putself_##lab
392
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
393
- COLLECT_USAGE_INSN(BIN(putself));
394
- {
395
- #line 271 "insns.def"
396
- val = GET_SELF();
397
-
398
- #line 399 "vm.inc"
399
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
400
- PUSH(val);
401
- #undef CURRENT_INSN_putself
402
- #undef INSN_IS_SC
403
- #undef INSN_LABEL
404
- #undef LABEL_IS_SC
405
- END_INSN(putself);}}}
406
- INSN_ENTRY(putobject){
407
- {
408
- VALUE val = (VALUE)GET_OPERAND(1);
409
-
410
- DEBUG_ENTER_INSN("putobject");
411
- ADD_PC(1+1);
412
- PREFETCH(GET_PC());
413
- #define CURRENT_INSN_putobject 1
414
- #define INSN_IS_SC() 0
415
- #define INSN_LABEL(lab) LABEL_putobject_##lab
416
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
417
- COLLECT_USAGE_INSN(BIN(putobject));
418
- COLLECT_USAGE_OPERAND(BIN(putobject), 0, val);
419
- {
420
- #line 287 "insns.def"
421
- /* */
422
-
423
- #line 424 "vm.inc"
424
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
425
- PUSH(val);
426
- #undef CURRENT_INSN_putobject
427
- #undef INSN_IS_SC
428
- #undef INSN_LABEL
429
- #undef LABEL_IS_SC
430
- END_INSN(putobject);}}}
431
- INSN_ENTRY(putspecialobject){
432
- {
433
- VALUE val;
434
- rb_num_t value_type = (rb_num_t)GET_OPERAND(1);
435
-
436
- DEBUG_ENTER_INSN("putspecialobject");
437
- ADD_PC(1+1);
438
- PREFETCH(GET_PC());
439
- #define CURRENT_INSN_putspecialobject 1
440
- #define INSN_IS_SC() 0
441
- #define INSN_LABEL(lab) LABEL_putspecialobject_##lab
442
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
443
- COLLECT_USAGE_INSN(BIN(putspecialobject));
444
- COLLECT_USAGE_OPERAND(BIN(putspecialobject), 0, value_type);
445
- {
446
- #line 302 "insns.def"
447
- enum vm_special_object_type type;
448
-
449
- type = (enum vm_special_object_type)value_type;
450
- val = vm_get_special_object(GET_EP(), type);
451
-
452
- #line 453 "vm.inc"
453
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
454
- PUSH(val);
455
- #undef CURRENT_INSN_putspecialobject
456
- #undef INSN_IS_SC
457
- #undef INSN_LABEL
458
- #undef LABEL_IS_SC
459
- END_INSN(putspecialobject);}}}
460
- INSN_ENTRY(putiseq){
461
- {
462
- VALUE ret;
463
- ISEQ iseq = (ISEQ)GET_OPERAND(1);
464
-
465
- DEBUG_ENTER_INSN("putiseq");
466
- ADD_PC(1+1);
467
- PREFETCH(GET_PC());
468
- #define CURRENT_INSN_putiseq 1
469
- #define INSN_IS_SC() 0
470
- #define INSN_LABEL(lab) LABEL_putiseq_##lab
471
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
472
- COLLECT_USAGE_INSN(BIN(putiseq));
473
- COLLECT_USAGE_OPERAND(BIN(putiseq), 0, iseq);
474
- {
475
- #line 319 "insns.def"
476
- ret = (VALUE)iseq;
477
-
478
- #line 479 "vm.inc"
479
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
480
- PUSH(ret);
481
- #undef CURRENT_INSN_putiseq
482
- #undef INSN_IS_SC
483
- #undef INSN_LABEL
484
- #undef LABEL_IS_SC
485
- END_INSN(putiseq);}}}
486
- INSN_ENTRY(putstring){
487
- {
488
- VALUE val;
489
- VALUE str = (VALUE)GET_OPERAND(1);
490
-
491
- DEBUG_ENTER_INSN("putstring");
492
- ADD_PC(1+1);
493
- PREFETCH(GET_PC());
494
- #define CURRENT_INSN_putstring 1
495
- #define INSN_IS_SC() 0
496
- #define INSN_LABEL(lab) LABEL_putstring_##lab
497
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
498
- COLLECT_USAGE_INSN(BIN(putstring));
499
- COLLECT_USAGE_OPERAND(BIN(putstring), 0, str);
500
- {
501
- #line 333 "insns.def"
502
- val = rb_str_resurrect(str);
503
-
504
- #line 505 "vm.inc"
505
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
506
- PUSH(val);
507
- #undef CURRENT_INSN_putstring
508
- #undef INSN_IS_SC
509
- #undef INSN_LABEL
510
- #undef LABEL_IS_SC
511
- END_INSN(putstring);}}}
512
- INSN_ENTRY(concatstrings){
513
- {
514
- VALUE val;
515
- rb_num_t num = (rb_num_t)GET_OPERAND(1);
516
-
517
- DEBUG_ENTER_INSN("concatstrings");
518
- ADD_PC(1+1);
519
- PREFETCH(GET_PC());
520
- #define CURRENT_INSN_concatstrings 1
521
- #define INSN_IS_SC() 0
522
- #define INSN_LABEL(lab) LABEL_concatstrings_##lab
523
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
524
- COLLECT_USAGE_INSN(BIN(concatstrings));
525
- COLLECT_USAGE_OPERAND(BIN(concatstrings), 0, num);
526
- {
527
- #line 347 "insns.def"
528
- val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));
529
- POPN(num);
530
-
531
- #line 532 "vm.inc"
532
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
533
- PUSH(val);
534
- #undef CURRENT_INSN_concatstrings
535
- #undef INSN_IS_SC
536
- #undef INSN_LABEL
537
- #undef LABEL_IS_SC
538
- END_INSN(concatstrings);}}}
539
- INSN_ENTRY(tostring){
540
- {
541
-
542
- VALUE val = TOPN(1);
543
- VALUE str = TOPN(0);
544
- DEBUG_ENTER_INSN("tostring");
545
- ADD_PC(1+0);
546
- PREFETCH(GET_PC());
547
- POPN(2);
548
- #define CURRENT_INSN_tostring 1
549
- #define INSN_IS_SC() 0
550
- #define INSN_LABEL(lab) LABEL_tostring_##lab
551
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
552
- COLLECT_USAGE_INSN(BIN(tostring));
553
- {
554
- #line 362 "insns.def"
555
- VALUE rb_obj_as_string_result(VALUE str, VALUE obj);
556
- val = rb_obj_as_string_result(str, val);
557
-
558
- #line 559 "vm.inc"
559
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
560
- PUSH(val);
561
- #undef CURRENT_INSN_tostring
562
- #undef INSN_IS_SC
563
- #undef INSN_LABEL
564
- #undef LABEL_IS_SC
565
- END_INSN(tostring);}}}
566
- INSN_ENTRY(freezestring){
567
- {
568
- VALUE debug_info = (VALUE)GET_OPERAND(1);
569
- VALUE str = TOPN(0);
570
- DEBUG_ENTER_INSN("freezestring");
571
- ADD_PC(1+1);
572
- PREFETCH(GET_PC());
573
- POPN(1);
574
- #define CURRENT_INSN_freezestring 1
575
- #define INSN_IS_SC() 0
576
- #define INSN_LABEL(lab) LABEL_freezestring_##lab
577
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
578
- COLLECT_USAGE_INSN(BIN(freezestring));
579
- COLLECT_USAGE_OPERAND(BIN(freezestring), 0, debug_info);
580
- {
581
- #line 377 "insns.def"
582
- vm_freezestring(str, debug_info);
583
-
584
- #line 585 "vm.inc"
585
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
586
- PUSH(str);
587
- #undef CURRENT_INSN_freezestring
588
- #undef INSN_IS_SC
589
- #undef INSN_LABEL
590
- #undef LABEL_IS_SC
591
- END_INSN(freezestring);}}}
592
- INSN_ENTRY(toregexp){
593
- {
594
- VALUE val;
595
- rb_num_t cnt = (rb_num_t)GET_OPERAND(2);
596
- rb_num_t opt = (rb_num_t)GET_OPERAND(1);
597
-
598
- DEBUG_ENTER_INSN("toregexp");
599
- ADD_PC(1+2);
600
- PREFETCH(GET_PC());
601
- #define CURRENT_INSN_toregexp 1
602
- #define INSN_IS_SC() 0
603
- #define INSN_LABEL(lab) LABEL_toregexp_##lab
604
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
605
- COLLECT_USAGE_INSN(BIN(toregexp));
606
- COLLECT_USAGE_OPERAND(BIN(toregexp), 0, opt);
607
- COLLECT_USAGE_OPERAND(BIN(toregexp), 1, cnt);
608
- {
609
- #line 393 "insns.def"
610
- VALUE rb_reg_new_ary(VALUE ary, int options);
611
- VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *);
612
- const VALUE ary = rb_ary_tmp_new_from_values(0, cnt, STACK_ADDR_FROM_TOP(cnt));
613
- POPN(cnt);
614
- val = rb_reg_new_ary(ary, (int)opt);
615
- rb_ary_clear(ary);
616
-
617
- #line 618 "vm.inc"
618
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
619
- PUSH(val);
620
- #undef CURRENT_INSN_toregexp
621
- #undef INSN_IS_SC
622
- #undef INSN_LABEL
623
- #undef LABEL_IS_SC
624
- END_INSN(toregexp);}}}
625
- INSN_ENTRY(intern){
626
- {
627
- VALUE sym;
628
-
629
- VALUE str = TOPN(0);
630
- DEBUG_ENTER_INSN("intern");
631
- ADD_PC(1+0);
632
- PREFETCH(GET_PC());
633
- POPN(1);
634
- #define CURRENT_INSN_intern 1
635
- #define INSN_IS_SC() 0
636
- #define INSN_LABEL(lab) LABEL_intern_##lab
637
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
638
- COLLECT_USAGE_INSN(BIN(intern));
639
- {
640
- #line 412 "insns.def"
641
- sym = rb_str_intern(str);
642
-
643
- #line 644 "vm.inc"
644
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
645
- PUSH(sym);
646
- #undef CURRENT_INSN_intern
647
- #undef INSN_IS_SC
648
- #undef INSN_LABEL
649
- #undef LABEL_IS_SC
650
- END_INSN(intern);}}}
651
- INSN_ENTRY(newarray){
652
- {
653
- VALUE val;
654
- rb_num_t num = (rb_num_t)GET_OPERAND(1);
655
-
656
- DEBUG_ENTER_INSN("newarray");
657
- ADD_PC(1+1);
658
- PREFETCH(GET_PC());
659
- #define CURRENT_INSN_newarray 1
660
- #define INSN_IS_SC() 0
661
- #define INSN_LABEL(lab) LABEL_newarray_##lab
662
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
663
- COLLECT_USAGE_INSN(BIN(newarray));
664
- COLLECT_USAGE_OPERAND(BIN(newarray), 0, num);
665
- {
666
- #line 426 "insns.def"
667
- val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));
668
- POPN(num);
669
-
670
- #line 671 "vm.inc"
671
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
672
- PUSH(val);
673
- #undef CURRENT_INSN_newarray
674
- #undef INSN_IS_SC
675
- #undef INSN_LABEL
676
- #undef LABEL_IS_SC
677
- END_INSN(newarray);}}}
678
- INSN_ENTRY(duparray){
679
- {
680
- VALUE val;
681
- VALUE ary = (VALUE)GET_OPERAND(1);
682
-
683
- DEBUG_ENTER_INSN("duparray");
684
- ADD_PC(1+1);
685
- PREFETCH(GET_PC());
686
- #define CURRENT_INSN_duparray 1
687
- #define INSN_IS_SC() 0
688
- #define INSN_LABEL(lab) LABEL_duparray_##lab
689
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
690
- COLLECT_USAGE_INSN(BIN(duparray));
691
- COLLECT_USAGE_OPERAND(BIN(duparray), 0, ary);
692
- {
693
- #line 441 "insns.def"
694
- val = rb_ary_resurrect(ary);
695
-
696
- #line 697 "vm.inc"
697
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
698
- PUSH(val);
699
- #undef CURRENT_INSN_duparray
700
- #undef INSN_IS_SC
701
- #undef INSN_LABEL
702
- #undef LABEL_IS_SC
703
- END_INSN(duparray);}}}
704
- INSN_ENTRY(expandarray){
705
- {
706
- rb_num_t flag = (rb_num_t)GET_OPERAND(2);
707
- rb_num_t num = (rb_num_t)GET_OPERAND(1);
708
- VALUE ary = TOPN(0);
709
- DEBUG_ENTER_INSN("expandarray");
710
- ADD_PC(1+2);
711
- PREFETCH(GET_PC());
712
- POPN(1);
713
- #define CURRENT_INSN_expandarray 1
714
- #define INSN_IS_SC() 0
715
- #define INSN_LABEL(lab) LABEL_expandarray_##lab
716
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
717
- COLLECT_USAGE_INSN(BIN(expandarray));
718
- COLLECT_USAGE_OPERAND(BIN(expandarray), 0, num);
719
- COLLECT_USAGE_OPERAND(BIN(expandarray), 1, flag);
720
- {
721
- #line 469 "insns.def"
722
- vm_expandarray(GET_CFP(), ary, num, (int)flag);
723
-
724
- #line 725 "vm.inc"
725
- #undef CURRENT_INSN_expandarray
726
- #undef INSN_IS_SC
727
- #undef INSN_LABEL
728
- #undef LABEL_IS_SC
729
- END_INSN(expandarray);}}}
730
- INSN_ENTRY(concatarray){
731
- {
732
- VALUE ary;
733
-
734
- VALUE ary1 = TOPN(1);
735
- VALUE ary2 = TOPN(0);
736
- DEBUG_ENTER_INSN("concatarray");
737
- ADD_PC(1+0);
738
- PREFETCH(GET_PC());
739
- POPN(2);
740
- #define CURRENT_INSN_concatarray 1
741
- #define INSN_IS_SC() 0
742
- #define INSN_LABEL(lab) LABEL_concatarray_##lab
743
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
744
- COLLECT_USAGE_INSN(BIN(concatarray));
745
- {
746
- #line 483 "insns.def"
747
- ary = vm_concat_array(ary1, ary2);
748
-
749
- #line 750 "vm.inc"
750
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
751
- PUSH(ary);
752
- #undef CURRENT_INSN_concatarray
753
- #undef INSN_IS_SC
754
- #undef INSN_LABEL
755
- #undef LABEL_IS_SC
756
- END_INSN(concatarray);}}}
757
- INSN_ENTRY(splatarray){
758
- {
759
- VALUE obj;
760
- VALUE flag = (VALUE)GET_OPERAND(1);
761
- VALUE ary = TOPN(0);
762
- DEBUG_ENTER_INSN("splatarray");
763
- ADD_PC(1+1);
764
- PREFETCH(GET_PC());
765
- POPN(1);
766
- #define CURRENT_INSN_splatarray 1
767
- #define INSN_IS_SC() 0
768
- #define INSN_LABEL(lab) LABEL_splatarray_##lab
769
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
770
- COLLECT_USAGE_INSN(BIN(splatarray));
771
- COLLECT_USAGE_OPERAND(BIN(splatarray), 0, flag);
772
- {
773
- #line 497 "insns.def"
774
- obj = vm_splat_array(flag, ary);
775
-
776
- #line 777 "vm.inc"
777
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
778
- PUSH(obj);
779
- #undef CURRENT_INSN_splatarray
780
- #undef INSN_IS_SC
781
- #undef INSN_LABEL
782
- #undef LABEL_IS_SC
783
- END_INSN(splatarray);}}}
784
- INSN_ENTRY(newhash){
785
- {
786
- VALUE val;
787
- rb_num_t num = (rb_num_t)GET_OPERAND(1);
788
-
789
- DEBUG_ENTER_INSN("newhash");
790
- ADD_PC(1+1);
791
- PREFETCH(GET_PC());
792
- #define CURRENT_INSN_newhash 1
793
- #define INSN_IS_SC() 0
794
- #define INSN_LABEL(lab) LABEL_newhash_##lab
795
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
796
- COLLECT_USAGE_INSN(BIN(newhash));
797
- COLLECT_USAGE_OPERAND(BIN(newhash), 0, num);
798
- {
799
- #line 512 "insns.def"
800
- RUBY_DTRACE_CREATE_HOOK(HASH, num);
801
-
802
- val = rb_hash_new_with_size(num / 2);
803
-
804
- if (num) {
805
- rb_hash_bulk_insert(num, STACK_ADDR_FROM_TOP(num), val);
806
- }
807
- POPN(num);
808
-
809
- #line 810 "vm.inc"
810
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
811
- PUSH(val);
812
- #undef CURRENT_INSN_newhash
813
- #undef INSN_IS_SC
814
- #undef INSN_LABEL
815
- #undef LABEL_IS_SC
816
- END_INSN(newhash);}}}
817
- INSN_ENTRY(newrange){
818
- {
819
- VALUE val;
820
- rb_num_t flag = (rb_num_t)GET_OPERAND(1);
821
- VALUE low = TOPN(1);
822
- VALUE high = TOPN(0);
823
- DEBUG_ENTER_INSN("newrange");
824
- ADD_PC(1+1);
825
- PREFETCH(GET_PC());
826
- POPN(2);
827
- #define CURRENT_INSN_newrange 1
828
- #define INSN_IS_SC() 0
829
- #define INSN_LABEL(lab) LABEL_newrange_##lab
830
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
831
- COLLECT_USAGE_INSN(BIN(newrange));
832
- COLLECT_USAGE_OPERAND(BIN(newrange), 0, flag);
833
- {
834
- #line 533 "insns.def"
835
- val = rb_range_new(low, high, (int)flag);
836
-
837
- #line 838 "vm.inc"
838
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
839
- PUSH(val);
840
- #undef CURRENT_INSN_newrange
841
- #undef INSN_IS_SC
842
- #undef INSN_LABEL
843
- #undef LABEL_IS_SC
844
- END_INSN(newrange);}}}
845
- INSN_ENTRY(pop){
846
- {
847
-
848
- VALUE val = TOPN(0);
849
- DEBUG_ENTER_INSN("pop");
850
- ADD_PC(1+0);
851
- PREFETCH(GET_PC());
852
- POPN(1);
853
- #define CURRENT_INSN_pop 1
854
- #define INSN_IS_SC() 0
855
- #define INSN_LABEL(lab) LABEL_pop_##lab
856
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
857
- COLLECT_USAGE_INSN(BIN(pop));
858
- {
859
- #line 551 "insns.def"
860
- (void)val;
861
- /* none */
862
-
863
- #line 864 "vm.inc"
864
- #undef CURRENT_INSN_pop
865
- #undef INSN_IS_SC
866
- #undef INSN_LABEL
867
- #undef LABEL_IS_SC
868
- END_INSN(pop);}}}
869
- INSN_ENTRY(dup){
870
- {
871
- VALUE val2;
872
- VALUE val1;
873
-
874
- VALUE val = TOPN(0);
875
- DEBUG_ENTER_INSN("dup");
876
- ADD_PC(1+0);
877
- PREFETCH(GET_PC());
878
- POPN(1);
879
- #define CURRENT_INSN_dup 1
880
- #define INSN_IS_SC() 0
881
- #define INSN_LABEL(lab) LABEL_dup_##lab
882
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
883
- COLLECT_USAGE_INSN(BIN(dup));
884
- {
885
- #line 566 "insns.def"
886
- val1 = val2 = val;
887
-
888
- #line 889 "vm.inc"
889
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 2);
890
- PUSH(val1);
891
- PUSH(val2);
892
- #undef CURRENT_INSN_dup
893
- #undef INSN_IS_SC
894
- #undef INSN_LABEL
895
- #undef LABEL_IS_SC
896
- END_INSN(dup);}}}
897
- INSN_ENTRY(dupn){
898
- {
899
- rb_num_t n = (rb_num_t)GET_OPERAND(1);
900
-
901
- DEBUG_ENTER_INSN("dupn");
902
- ADD_PC(1+1);
903
- PREFETCH(GET_PC());
904
- #define CURRENT_INSN_dupn 1
905
- #define INSN_IS_SC() 0
906
- #define INSN_LABEL(lab) LABEL_dupn_##lab
907
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
908
- COLLECT_USAGE_INSN(BIN(dupn));
909
- COLLECT_USAGE_OPERAND(BIN(dupn), 0, n);
910
- {
911
- #line 580 "insns.def"
912
- void *dst = GET_SP();
913
- void *src = STACK_ADDR_FROM_TOP(n);
914
-
915
- INC_SP(n); /* alloca */
916
- MEMCPY(dst, src, VALUE, n);
917
-
918
- #line 919 "vm.inc"
919
- #undef CURRENT_INSN_dupn
920
- #undef INSN_IS_SC
921
- #undef INSN_LABEL
922
- #undef LABEL_IS_SC
923
- END_INSN(dupn);}}}
924
- INSN_ENTRY(swap){
925
- {
926
-
927
- VALUE val = TOPN(1);
928
- VALUE obj = TOPN(0);
929
- DEBUG_ENTER_INSN("swap");
930
- ADD_PC(1+0);
931
- PREFETCH(GET_PC());
932
- POPN(2);
933
- #define CURRENT_INSN_swap 1
934
- #define INSN_IS_SC() 0
935
- #define INSN_LABEL(lab) LABEL_swap_##lab
936
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
937
- COLLECT_USAGE_INSN(BIN(swap));
938
- {
939
- #line 599 "insns.def"
940
- /* none */
941
-
942
- #line 943 "vm.inc"
943
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 2);
944
- PUSH(obj);
945
- PUSH(val);
946
- #undef CURRENT_INSN_swap
947
- #undef INSN_IS_SC
948
- #undef INSN_LABEL
949
- #undef LABEL_IS_SC
950
- END_INSN(swap);}}}
951
- INSN_ENTRY(reverse){
952
- {
953
- rb_num_t n = (rb_num_t)GET_OPERAND(1);
954
-
955
- DEBUG_ENTER_INSN("reverse");
956
- ADD_PC(1+1);
957
- PREFETCH(GET_PC());
958
- #define CURRENT_INSN_reverse 1
959
- #define INSN_IS_SC() 0
960
- #define INSN_LABEL(lab) LABEL_reverse_##lab
961
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
962
- COLLECT_USAGE_INSN(BIN(reverse));
963
- COLLECT_USAGE_OPERAND(BIN(reverse), 0, n);
964
- {
965
- #line 613 "insns.def"
966
- rb_num_t i;
967
- VALUE *sp = STACK_ADDR_FROM_TOP(n);
968
-
969
- for (i=0; i<n/2; i++) {
970
- VALUE v0 = sp[i];
971
- VALUE v1 = TOPN(i);
972
- sp[i] = v1;
973
- TOPN(i) = v0;
974
- }
975
-
976
- #line 977 "vm.inc"
977
- #undef CURRENT_INSN_reverse
978
- #undef INSN_IS_SC
979
- #undef INSN_LABEL
980
- #undef LABEL_IS_SC
981
- END_INSN(reverse);}}}
982
- INSN_ENTRY(reput){
983
- {
984
-
985
- VALUE val = TOPN(0);
986
- DEBUG_ENTER_INSN("reput");
987
- ADD_PC(1+0);
988
- PREFETCH(GET_PC());
989
- POPN(1);
990
- #define CURRENT_INSN_reput 1
991
- #define INSN_IS_SC() 0
992
- #define INSN_LABEL(lab) LABEL_reput_##lab
993
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
994
- COLLECT_USAGE_INSN(BIN(reput));
995
- {
996
- #line 635 "insns.def"
997
- /* none */
998
-
999
- #line 1000 "vm.inc"
1000
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1001
- PUSH(val);
1002
- #undef CURRENT_INSN_reput
1003
- #undef INSN_IS_SC
1004
- #undef INSN_LABEL
1005
- #undef LABEL_IS_SC
1006
- END_INSN(reput);}}}
1007
- INSN_ENTRY(topn){
1008
- {
1009
- VALUE val;
1010
- rb_num_t n = (rb_num_t)GET_OPERAND(1);
1011
-
1012
- DEBUG_ENTER_INSN("topn");
1013
- ADD_PC(1+1);
1014
- PREFETCH(GET_PC());
1015
- #define CURRENT_INSN_topn 1
1016
- #define INSN_IS_SC() 0
1017
- #define INSN_LABEL(lab) LABEL_topn_##lab
1018
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1019
- COLLECT_USAGE_INSN(BIN(topn));
1020
- COLLECT_USAGE_OPERAND(BIN(topn), 0, n);
1021
- {
1022
- #line 649 "insns.def"
1023
- val = TOPN(n);
1024
-
1025
- #line 1026 "vm.inc"
1026
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1027
- PUSH(val);
1028
- #undef CURRENT_INSN_topn
1029
- #undef INSN_IS_SC
1030
- #undef INSN_LABEL
1031
- #undef LABEL_IS_SC
1032
- END_INSN(topn);}}}
1033
- INSN_ENTRY(setn){
1034
- {
1035
- rb_num_t n = (rb_num_t)GET_OPERAND(1);
1036
- VALUE val = TOPN(0);
1037
- DEBUG_ENTER_INSN("setn");
1038
- ADD_PC(1+1);
1039
- PREFETCH(GET_PC());
1040
- POPN(1);
1041
- #define CURRENT_INSN_setn 1
1042
- #define INSN_IS_SC() 0
1043
- #define INSN_LABEL(lab) LABEL_setn_##lab
1044
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1045
- COLLECT_USAGE_INSN(BIN(setn));
1046
- COLLECT_USAGE_OPERAND(BIN(setn), 0, n);
1047
- {
1048
- #line 663 "insns.def"
1049
- TOPN(n-1) = val;
1050
-
1051
- #line 1052 "vm.inc"
1052
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1053
- PUSH(val);
1054
- #undef CURRENT_INSN_setn
1055
- #undef INSN_IS_SC
1056
- #undef INSN_LABEL
1057
- #undef LABEL_IS_SC
1058
- END_INSN(setn);}}}
1059
- INSN_ENTRY(adjuststack){
1060
- {
1061
- rb_num_t n = (rb_num_t)GET_OPERAND(1);
1062
-
1063
- DEBUG_ENTER_INSN("adjuststack");
1064
- ADD_PC(1+1);
1065
- PREFETCH(GET_PC());
1066
- #define CURRENT_INSN_adjuststack 1
1067
- #define INSN_IS_SC() 0
1068
- #define INSN_LABEL(lab) LABEL_adjuststack_##lab
1069
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1070
- COLLECT_USAGE_INSN(BIN(adjuststack));
1071
- COLLECT_USAGE_OPERAND(BIN(adjuststack), 0, n);
1072
- {
1073
- #line 677 "insns.def"
1074
- DEC_SP(n);
1075
-
1076
- #line 1077 "vm.inc"
1077
- #undef CURRENT_INSN_adjuststack
1078
- #undef INSN_IS_SC
1079
- #undef INSN_LABEL
1080
- #undef LABEL_IS_SC
1081
- END_INSN(adjuststack);}}}
1082
- INSN_ENTRY(defined){
1083
- {
1084
- VALUE val;
1085
- VALUE needstr = (VALUE)GET_OPERAND(3);
1086
- VALUE obj = (VALUE)GET_OPERAND(2);
1087
- rb_num_t op_type = (rb_num_t)GET_OPERAND(1);
1088
- VALUE v = TOPN(0);
1089
- DEBUG_ENTER_INSN("defined");
1090
- ADD_PC(1+3);
1091
- PREFETCH(GET_PC());
1092
- POPN(1);
1093
- #define CURRENT_INSN_defined 1
1094
- #define INSN_IS_SC() 0
1095
- #define INSN_LABEL(lab) LABEL_defined_##lab
1096
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1097
- COLLECT_USAGE_INSN(BIN(defined));
1098
- COLLECT_USAGE_OPERAND(BIN(defined), 0, op_type);
1099
- COLLECT_USAGE_OPERAND(BIN(defined), 1, obj);
1100
- COLLECT_USAGE_OPERAND(BIN(defined), 2, needstr);
1101
- {
1102
- #line 696 "insns.def"
1103
- val = vm_defined(th, GET_CFP(), op_type, obj, needstr, v);
1104
-
1105
- #line 1106 "vm.inc"
1106
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1107
- PUSH(val);
1108
- #undef CURRENT_INSN_defined
1109
- #undef INSN_IS_SC
1110
- #undef INSN_LABEL
1111
- #undef LABEL_IS_SC
1112
- END_INSN(defined);}}}
1113
- INSN_ENTRY(checkmatch){
1114
- {
1115
- VALUE result;
1116
- rb_num_t flag = (rb_num_t)GET_OPERAND(1);
1117
- VALUE target = TOPN(1);
1118
- VALUE pattern = TOPN(0);
1119
- DEBUG_ENTER_INSN("checkmatch");
1120
- ADD_PC(1+1);
1121
- PREFETCH(GET_PC());
1122
- POPN(2);
1123
- #define CURRENT_INSN_checkmatch 1
1124
- #define INSN_IS_SC() 0
1125
- #define INSN_LABEL(lab) LABEL_checkmatch_##lab
1126
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1127
- COLLECT_USAGE_INSN(BIN(checkmatch));
1128
- COLLECT_USAGE_OPERAND(BIN(checkmatch), 0, flag);
1129
- {
1130
- #line 715 "insns.def"
1131
- result = vm_check_match(target, pattern, flag);
1132
-
1133
- #line 1134 "vm.inc"
1134
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1135
- PUSH(result);
1136
- #undef CURRENT_INSN_checkmatch
1137
- #undef INSN_IS_SC
1138
- #undef INSN_LABEL
1139
- #undef LABEL_IS_SC
1140
- END_INSN(checkmatch);}}}
1141
- INSN_ENTRY(checkkeyword){
1142
- {
1143
- VALUE ret;
1144
- rb_num_t keyword_index = (rb_num_t)GET_OPERAND(2);
1145
- lindex_t kw_bits_index = (lindex_t)GET_OPERAND(1);
1146
-
1147
- DEBUG_ENTER_INSN("checkkeyword");
1148
- ADD_PC(1+2);
1149
- PREFETCH(GET_PC());
1150
- #define CURRENT_INSN_checkkeyword 1
1151
- #define INSN_IS_SC() 0
1152
- #define INSN_LABEL(lab) LABEL_checkkeyword_##lab
1153
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1154
- COLLECT_USAGE_INSN(BIN(checkkeyword));
1155
- COLLECT_USAGE_OPERAND(BIN(checkkeyword), 0, kw_bits_index);
1156
- COLLECT_USAGE_OPERAND(BIN(checkkeyword), 1, keyword_index);
1157
- {
1158
- #line 729 "insns.def"
1159
- ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
1160
-
1161
- #line 1162 "vm.inc"
1162
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1163
- PUSH(ret);
1164
- #undef CURRENT_INSN_checkkeyword
1165
- #undef INSN_IS_SC
1166
- #undef INSN_LABEL
1167
- #undef LABEL_IS_SC
1168
- END_INSN(checkkeyword);}}}
1169
- INSN_ENTRY(trace){
1170
- {
1171
- rb_num_t nf = (rb_num_t)GET_OPERAND(1);
1172
-
1173
- DEBUG_ENTER_INSN("trace");
1174
- ADD_PC(1+1);
1175
- PREFETCH(GET_PC());
1176
- #define CURRENT_INSN_trace 1
1177
- #define INSN_IS_SC() 0
1178
- #define INSN_LABEL(lab) LABEL_trace_##lab
1179
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1180
- COLLECT_USAGE_INSN(BIN(trace));
1181
- COLLECT_USAGE_OPERAND(BIN(trace), 0, nf);
1182
- {
1183
- #line 743 "insns.def"
1184
- rb_event_flag_t flag = (rb_event_flag_t)nf;
1185
-
1186
- vm_dtrace(flag, th);
1187
- EXEC_EVENT_HOOK(th, flag, GET_SELF(), 0, 0, 0 /* id and klass are resolved at callee */,
1188
- (flag & (RUBY_EVENT_RETURN | RUBY_EVENT_B_RETURN)) ? TOPN(0) : Qundef);
1189
-
1190
- #line 1191 "vm.inc"
1191
- #undef CURRENT_INSN_trace
1192
- #undef INSN_IS_SC
1193
- #undef INSN_LABEL
1194
- #undef LABEL_IS_SC
1195
- END_INSN(trace);}}}
1196
- INSN_ENTRY(trace2){
1197
- {
1198
- VALUE data = (VALUE)GET_OPERAND(2);
1199
- rb_num_t nf = (rb_num_t)GET_OPERAND(1);
1200
-
1201
- DEBUG_ENTER_INSN("trace2");
1202
- ADD_PC(1+2);
1203
- PREFETCH(GET_PC());
1204
- #define CURRENT_INSN_trace2 1
1205
- #define INSN_IS_SC() 0
1206
- #define INSN_LABEL(lab) LABEL_trace2_##lab
1207
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1208
- COLLECT_USAGE_INSN(BIN(trace2));
1209
- COLLECT_USAGE_OPERAND(BIN(trace2), 0, nf);
1210
- COLLECT_USAGE_OPERAND(BIN(trace2), 1, data);
1211
- {
1212
- #line 761 "insns.def"
1213
- rb_event_flag_t flag = (rb_event_flag_t)nf;
1214
-
1215
- vm_dtrace(flag, th);
1216
- EXEC_EVENT_HOOK(th, flag, GET_SELF(), 0, 0, 0 /* id and klass are resolved at callee */, data);
1217
-
1218
- #line 1219 "vm.inc"
1219
- #undef CURRENT_INSN_trace2
1220
- #undef INSN_IS_SC
1221
- #undef INSN_LABEL
1222
- #undef LABEL_IS_SC
1223
- END_INSN(trace2);}}}
1224
- INSN_ENTRY(defineclass){
1225
- {
1226
- VALUE val;
1227
- rb_num_t flags = (rb_num_t)GET_OPERAND(3);
1228
- ISEQ class_iseq = (ISEQ)GET_OPERAND(2);
1229
- ID id = (ID)GET_OPERAND(1);
1230
- VALUE cbase = TOPN(1);
1231
- VALUE super = TOPN(0);
1232
- DEBUG_ENTER_INSN("defineclass");
1233
- ADD_PC(1+3);
1234
- PREFETCH(GET_PC());
1235
- POPN(2);
1236
- #define CURRENT_INSN_defineclass 1
1237
- #define INSN_IS_SC() 0
1238
- #define INSN_LABEL(lab) LABEL_defineclass_##lab
1239
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1240
- COLLECT_USAGE_INSN(BIN(defineclass));
1241
- COLLECT_USAGE_OPERAND(BIN(defineclass), 0, id);
1242
- COLLECT_USAGE_OPERAND(BIN(defineclass), 1, class_iseq);
1243
- COLLECT_USAGE_OPERAND(BIN(defineclass), 2, flags);
1244
- {
1245
- #line 786 "insns.def"
1246
- VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
1247
-
1248
- rb_iseq_check(class_iseq);
1249
-
1250
- /* enter scope */
1251
- vm_push_frame(th, class_iseq, VM_FRAME_MAGIC_CLASS | VM_ENV_FLAG_LOCAL, klass,
1252
- GET_BLOCK_HANDLER(),
1253
- (VALUE)vm_cref_push(th, klass, NULL, FALSE),
1254
- class_iseq->body->iseq_encoded, GET_SP(),
1255
- class_iseq->body->local_table_size,
1256
- class_iseq->body->stack_max);
1257
- RESTORE_REGS();
1258
- NEXT_INSN();
1259
-
1260
- #line 1261 "vm.inc"
1261
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1262
- PUSH(val);
1263
- #undef CURRENT_INSN_defineclass
1264
- #undef INSN_IS_SC
1265
- #undef INSN_LABEL
1266
- #undef LABEL_IS_SC
1267
- END_INSN(defineclass);}}}
1268
- INSN_ENTRY(send){
1269
- {
1270
- VALUE val;
1271
- ISEQ blockiseq = (ISEQ)GET_OPERAND(3);
1272
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
1273
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
1274
-
1275
- DEBUG_ENTER_INSN("send");
1276
- ADD_PC(1+3);
1277
- PREFETCH(GET_PC());
1278
- #define CURRENT_INSN_send 1
1279
- #define INSN_IS_SC() 0
1280
- #define INSN_LABEL(lab) LABEL_send_##lab
1281
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1282
- COLLECT_USAGE_INSN(BIN(send));
1283
- COLLECT_USAGE_OPERAND(BIN(send), 0, ci);
1284
- COLLECT_USAGE_OPERAND(BIN(send), 1, cc);
1285
- COLLECT_USAGE_OPERAND(BIN(send), 2, blockiseq);
1286
- {
1287
- #line 817 "insns.def"
1288
- struct rb_calling_info calling;
1289
-
1290
- vm_caller_setup_arg_block(th, reg_cfp, &calling, ci, blockiseq, FALSE);
1291
- vm_search_method(ci, cc, calling.recv = TOPN(calling.argc = ci->orig_argc));
1292
- CALL_METHOD(&calling, ci, cc);
1293
-
1294
- #line 1295 "vm.inc"
1295
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1296
- PUSH(val);
1297
- #undef CURRENT_INSN_send
1298
- #undef INSN_IS_SC
1299
- #undef INSN_LABEL
1300
- #undef LABEL_IS_SC
1301
- END_INSN(send);}}}
1302
- INSN_ENTRY(opt_str_freeze){
1303
- {
1304
- VALUE val;
1305
- VALUE str = (VALUE)GET_OPERAND(1);
1306
-
1307
- DEBUG_ENTER_INSN("opt_str_freeze");
1308
- ADD_PC(1+1);
1309
- PREFETCH(GET_PC());
1310
- #define CURRENT_INSN_opt_str_freeze 1
1311
- #define INSN_IS_SC() 0
1312
- #define INSN_LABEL(lab) LABEL_opt_str_freeze_##lab
1313
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1314
- COLLECT_USAGE_INSN(BIN(opt_str_freeze));
1315
- COLLECT_USAGE_OPERAND(BIN(opt_str_freeze), 0, str);
1316
- {
1317
- #line 830 "insns.def"
1318
- if (BASIC_OP_UNREDEFINED_P(BOP_FREEZE, STRING_REDEFINED_OP_FLAG)) {
1319
- val = str;
1320
- }
1321
- else {
1322
- val = rb_funcall(rb_str_resurrect(str), idFreeze, 0);
1323
- }
1324
-
1325
- #line 1326 "vm.inc"
1326
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1327
- PUSH(val);
1328
- #undef CURRENT_INSN_opt_str_freeze
1329
- #undef INSN_IS_SC
1330
- #undef INSN_LABEL
1331
- #undef LABEL_IS_SC
1332
- END_INSN(opt_str_freeze);}}}
1333
- INSN_ENTRY(opt_str_uminus){
1334
- {
1335
- VALUE val;
1336
- VALUE str = (VALUE)GET_OPERAND(1);
1337
-
1338
- DEBUG_ENTER_INSN("opt_str_uminus");
1339
- ADD_PC(1+1);
1340
- PREFETCH(GET_PC());
1341
- #define CURRENT_INSN_opt_str_uminus 1
1342
- #define INSN_IS_SC() 0
1343
- #define INSN_LABEL(lab) LABEL_opt_str_uminus_##lab
1344
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1345
- COLLECT_USAGE_INSN(BIN(opt_str_uminus));
1346
- COLLECT_USAGE_OPERAND(BIN(opt_str_uminus), 0, str);
1347
- {
1348
- #line 844 "insns.def"
1349
- if (BASIC_OP_UNREDEFINED_P(BOP_UMINUS, STRING_REDEFINED_OP_FLAG)) {
1350
- val = str;
1351
- }
1352
- else {
1353
- val = rb_funcall(rb_str_resurrect(str), idUMinus, 0);
1354
- }
1355
-
1356
- #line 1357 "vm.inc"
1357
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1358
- PUSH(val);
1359
- #undef CURRENT_INSN_opt_str_uminus
1360
- #undef INSN_IS_SC
1361
- #undef INSN_LABEL
1362
- #undef LABEL_IS_SC
1363
- END_INSN(opt_str_uminus);}}}
1364
- INSN_ENTRY(opt_newarray_max){
1365
- {
1366
- VALUE val;
1367
- rb_num_t num = (rb_num_t)GET_OPERAND(1);
1368
-
1369
- DEBUG_ENTER_INSN("opt_newarray_max");
1370
- ADD_PC(1+1);
1371
- PREFETCH(GET_PC());
1372
- #define CURRENT_INSN_opt_newarray_max 1
1373
- #define INSN_IS_SC() 0
1374
- #define INSN_LABEL(lab) LABEL_opt_newarray_max_##lab
1375
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1376
- COLLECT_USAGE_INSN(BIN(opt_newarray_max));
1377
- COLLECT_USAGE_OPERAND(BIN(opt_newarray_max), 0, num);
1378
- {
1379
- #line 858 "insns.def"
1380
- val = vm_opt_newarray_max(num, STACK_ADDR_FROM_TOP(num));
1381
- POPN(num);
1382
-
1383
- #line 1384 "vm.inc"
1384
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1385
- PUSH(val);
1386
- #undef CURRENT_INSN_opt_newarray_max
1387
- #undef INSN_IS_SC
1388
- #undef INSN_LABEL
1389
- #undef LABEL_IS_SC
1390
- END_INSN(opt_newarray_max);}}}
1391
- INSN_ENTRY(opt_newarray_min){
1392
- {
1393
- VALUE val;
1394
- rb_num_t num = (rb_num_t)GET_OPERAND(1);
1395
-
1396
- DEBUG_ENTER_INSN("opt_newarray_min");
1397
- ADD_PC(1+1);
1398
- PREFETCH(GET_PC());
1399
- #define CURRENT_INSN_opt_newarray_min 1
1400
- #define INSN_IS_SC() 0
1401
- #define INSN_LABEL(lab) LABEL_opt_newarray_min_##lab
1402
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1403
- COLLECT_USAGE_INSN(BIN(opt_newarray_min));
1404
- COLLECT_USAGE_OPERAND(BIN(opt_newarray_min), 0, num);
1405
- {
1406
- #line 868 "insns.def"
1407
- val = vm_opt_newarray_min(num, STACK_ADDR_FROM_TOP(num));
1408
- POPN(num);
1409
-
1410
- #line 1411 "vm.inc"
1411
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1412
- PUSH(val);
1413
- #undef CURRENT_INSN_opt_newarray_min
1414
- #undef INSN_IS_SC
1415
- #undef INSN_LABEL
1416
- #undef LABEL_IS_SC
1417
- END_INSN(opt_newarray_min);}}}
1418
- INSN_ENTRY(opt_send_without_block){
1419
- {
1420
- VALUE val;
1421
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
1422
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
1423
-
1424
- DEBUG_ENTER_INSN("opt_send_without_block");
1425
- ADD_PC(1+2);
1426
- PREFETCH(GET_PC());
1427
- #define CURRENT_INSN_opt_send_without_block 1
1428
- #define INSN_IS_SC() 0
1429
- #define INSN_LABEL(lab) LABEL_opt_send_without_block_##lab
1430
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1431
- COLLECT_USAGE_INSN(BIN(opt_send_without_block));
1432
- COLLECT_USAGE_OPERAND(BIN(opt_send_without_block), 0, ci);
1433
- COLLECT_USAGE_OPERAND(BIN(opt_send_without_block), 1, cc);
1434
- {
1435
- #line 883 "insns.def"
1436
- struct rb_calling_info calling;
1437
- calling.block_handler = VM_BLOCK_HANDLER_NONE;
1438
- vm_search_method(ci, cc, calling.recv = TOPN(calling.argc = ci->orig_argc));
1439
- CALL_METHOD(&calling, ci, cc);
1440
-
1441
- #line 1442 "vm.inc"
1442
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1443
- PUSH(val);
1444
- #undef CURRENT_INSN_opt_send_without_block
1445
- #undef INSN_IS_SC
1446
- #undef INSN_LABEL
1447
- #undef LABEL_IS_SC
1448
- END_INSN(opt_send_without_block);}}}
1449
- INSN_ENTRY(invokesuper){
1450
- {
1451
- VALUE val;
1452
- ISEQ blockiseq = (ISEQ)GET_OPERAND(3);
1453
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
1454
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
1455
-
1456
- DEBUG_ENTER_INSN("invokesuper");
1457
- ADD_PC(1+3);
1458
- PREFETCH(GET_PC());
1459
- #define CURRENT_INSN_invokesuper 1
1460
- #define INSN_IS_SC() 0
1461
- #define INSN_LABEL(lab) LABEL_invokesuper_##lab
1462
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1463
- COLLECT_USAGE_INSN(BIN(invokesuper));
1464
- COLLECT_USAGE_OPERAND(BIN(invokesuper), 0, ci);
1465
- COLLECT_USAGE_OPERAND(BIN(invokesuper), 1, cc);
1466
- COLLECT_USAGE_OPERAND(BIN(invokesuper), 2, blockiseq);
1467
- {
1468
- #line 900 "insns.def"
1469
- struct rb_calling_info calling;
1470
- calling.argc = ci->orig_argc;
1471
-
1472
- vm_caller_setup_arg_block(th, reg_cfp, &calling, ci, blockiseq, TRUE);
1473
- calling.recv = GET_SELF();
1474
- vm_search_super_method(th, GET_CFP(), &calling, ci, cc);
1475
- CALL_METHOD(&calling, ci, cc);
1476
-
1477
- #line 1478 "vm.inc"
1478
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1479
- PUSH(val);
1480
- #undef CURRENT_INSN_invokesuper
1481
- #undef INSN_IS_SC
1482
- #undef INSN_LABEL
1483
- #undef LABEL_IS_SC
1484
- END_INSN(invokesuper);}}}
1485
- INSN_ENTRY(invokeblock){
1486
- {
1487
- VALUE val;
1488
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
1489
-
1490
- DEBUG_ENTER_INSN("invokeblock");
1491
- ADD_PC(1+1);
1492
- PREFETCH(GET_PC());
1493
- #define CURRENT_INSN_invokeblock 1
1494
- #define INSN_IS_SC() 0
1495
- #define INSN_LABEL(lab) LABEL_invokeblock_##lab
1496
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1497
- COLLECT_USAGE_INSN(BIN(invokeblock));
1498
- COLLECT_USAGE_OPERAND(BIN(invokeblock), 0, ci);
1499
- {
1500
- #line 920 "insns.def"
1501
- struct rb_calling_info calling;
1502
- calling.argc = ci->orig_argc;
1503
- calling.block_handler = VM_BLOCK_HANDLER_NONE;
1504
- calling.recv = GET_SELF();
1505
-
1506
- val = vm_invoke_block(th, GET_CFP(), &calling, ci);
1507
- if (val == Qundef) {
1508
- RESTORE_REGS();
1509
- NEXT_INSN();
1510
- }
1511
-
1512
- #line 1513 "vm.inc"
1513
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1514
- PUSH(val);
1515
- #undef CURRENT_INSN_invokeblock
1516
- #undef INSN_IS_SC
1517
- #undef INSN_LABEL
1518
- #undef LABEL_IS_SC
1519
- END_INSN(invokeblock);}}}
1520
- INSN_ENTRY(leave){
1521
- {
1522
-
1523
- VALUE val = TOPN(0);
1524
- DEBUG_ENTER_INSN("leave");
1525
- ADD_PC(1+0);
1526
- PREFETCH(GET_PC());
1527
- POPN(1);
1528
- #define CURRENT_INSN_leave 1
1529
- #define INSN_IS_SC() 0
1530
- #define INSN_LABEL(lab) LABEL_leave_##lab
1531
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1532
- COLLECT_USAGE_INSN(BIN(leave));
1533
- {
1534
- #line 943 "insns.def"
1535
- if (OPT_CHECKED_RUN) {
1536
- const VALUE *const bp = vm_base_ptr(reg_cfp);
1537
- if (reg_cfp->sp != bp) {
1538
- vm_stack_consistency_error(th, reg_cfp, bp);
1539
- }
1540
- }
1541
-
1542
- RUBY_VM_CHECK_INTS(th);
1543
-
1544
- if (vm_pop_frame(th, GET_CFP(), GET_EP())) {
1545
- #if OPT_CALL_THREADED_CODE
1546
- th->retval = val;
1547
- return 0;
1548
- #else
1549
- return val;
1550
- #endif
1551
- }
1552
- else {
1553
- RESTORE_REGS();
1554
- }
1555
-
1556
- #line 1557 "vm.inc"
1557
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1558
- PUSH(val);
1559
- #undef CURRENT_INSN_leave
1560
- #undef INSN_IS_SC
1561
- #undef INSN_LABEL
1562
- #undef LABEL_IS_SC
1563
- END_INSN(leave);}}}
1564
- INSN_ENTRY(throw){
1565
- {
1566
- VALUE val;
1567
- rb_num_t throw_state = (rb_num_t)GET_OPERAND(1);
1568
- VALUE throwobj = TOPN(0);
1569
- DEBUG_ENTER_INSN("throw");
1570
- ADD_PC(1+1);
1571
- PREFETCH(GET_PC());
1572
- POPN(1);
1573
- #define CURRENT_INSN_throw 1
1574
- #define INSN_IS_SC() 0
1575
- #define INSN_LABEL(lab) LABEL_throw_##lab
1576
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1577
- COLLECT_USAGE_INSN(BIN(throw));
1578
- COLLECT_USAGE_OPERAND(BIN(throw), 0, throw_state);
1579
- {
1580
- #line 980 "insns.def"
1581
- RUBY_VM_CHECK_INTS(th);
1582
- val = vm_throw(th, GET_CFP(), throw_state, throwobj);
1583
- THROW_EXCEPTION(val);
1584
- /* unreachable */
1585
-
1586
- #line 1587 "vm.inc"
1587
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1588
- PUSH(val);
1589
- #undef CURRENT_INSN_throw
1590
- #undef INSN_IS_SC
1591
- #undef INSN_LABEL
1592
- #undef LABEL_IS_SC
1593
- END_INSN(throw);}}}
1594
- INSN_ENTRY(jump){
1595
- {
1596
- OFFSET dst = (OFFSET)GET_OPERAND(1);
1597
-
1598
- DEBUG_ENTER_INSN("jump");
1599
- ADD_PC(1+1);
1600
- PREFETCH(GET_PC());
1601
- #define CURRENT_INSN_jump 1
1602
- #define INSN_IS_SC() 0
1603
- #define INSN_LABEL(lab) LABEL_jump_##lab
1604
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1605
- COLLECT_USAGE_INSN(BIN(jump));
1606
- COLLECT_USAGE_OPERAND(BIN(jump), 0, dst);
1607
- {
1608
- #line 1001 "insns.def"
1609
- RUBY_VM_CHECK_INTS(th);
1610
- JUMP(dst);
1611
-
1612
- #line 1613 "vm.inc"
1613
- #undef CURRENT_INSN_jump
1614
- #undef INSN_IS_SC
1615
- #undef INSN_LABEL
1616
- #undef LABEL_IS_SC
1617
- END_INSN(jump);}}}
1618
- INSN_ENTRY(branchif){
1619
- {
1620
- OFFSET dst = (OFFSET)GET_OPERAND(1);
1621
- VALUE val = TOPN(0);
1622
- DEBUG_ENTER_INSN("branchif");
1623
- ADD_PC(1+1);
1624
- PREFETCH(GET_PC());
1625
- POPN(1);
1626
- #define CURRENT_INSN_branchif 1
1627
- #define INSN_IS_SC() 0
1628
- #define INSN_LABEL(lab) LABEL_branchif_##lab
1629
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1630
- COLLECT_USAGE_INSN(BIN(branchif));
1631
- COLLECT_USAGE_OPERAND(BIN(branchif), 0, dst);
1632
- {
1633
- #line 1016 "insns.def"
1634
- if (RTEST(val)) {
1635
- RUBY_VM_CHECK_INTS(th);
1636
- JUMP(dst);
1637
- }
1638
-
1639
- #line 1640 "vm.inc"
1640
- #undef CURRENT_INSN_branchif
1641
- #undef INSN_IS_SC
1642
- #undef INSN_LABEL
1643
- #undef LABEL_IS_SC
1644
- END_INSN(branchif);}}}
1645
- INSN_ENTRY(branchunless){
1646
- {
1647
- OFFSET dst = (OFFSET)GET_OPERAND(1);
1648
- VALUE val = TOPN(0);
1649
- DEBUG_ENTER_INSN("branchunless");
1650
- ADD_PC(1+1);
1651
- PREFETCH(GET_PC());
1652
- POPN(1);
1653
- #define CURRENT_INSN_branchunless 1
1654
- #define INSN_IS_SC() 0
1655
- #define INSN_LABEL(lab) LABEL_branchunless_##lab
1656
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1657
- COLLECT_USAGE_INSN(BIN(branchunless));
1658
- COLLECT_USAGE_OPERAND(BIN(branchunless), 0, dst);
1659
- {
1660
- #line 1033 "insns.def"
1661
- if (!RTEST(val)) {
1662
- RUBY_VM_CHECK_INTS(th);
1663
- JUMP(dst);
1664
- }
1665
-
1666
- #line 1667 "vm.inc"
1667
- #undef CURRENT_INSN_branchunless
1668
- #undef INSN_IS_SC
1669
- #undef INSN_LABEL
1670
- #undef LABEL_IS_SC
1671
- END_INSN(branchunless);}}}
1672
- INSN_ENTRY(branchnil){
1673
- {
1674
- OFFSET dst = (OFFSET)GET_OPERAND(1);
1675
- VALUE val = TOPN(0);
1676
- DEBUG_ENTER_INSN("branchnil");
1677
- ADD_PC(1+1);
1678
- PREFETCH(GET_PC());
1679
- POPN(1);
1680
- #define CURRENT_INSN_branchnil 1
1681
- #define INSN_IS_SC() 0
1682
- #define INSN_LABEL(lab) LABEL_branchnil_##lab
1683
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1684
- COLLECT_USAGE_INSN(BIN(branchnil));
1685
- COLLECT_USAGE_OPERAND(BIN(branchnil), 0, dst);
1686
- {
1687
- #line 1050 "insns.def"
1688
- if (NIL_P(val)) {
1689
- RUBY_VM_CHECK_INTS(th);
1690
- JUMP(dst);
1691
- }
1692
-
1693
- #line 1694 "vm.inc"
1694
- #undef CURRENT_INSN_branchnil
1695
- #undef INSN_IS_SC
1696
- #undef INSN_LABEL
1697
- #undef LABEL_IS_SC
1698
- END_INSN(branchnil);}}}
1699
- INSN_ENTRY(branchiftype){
1700
- {
1701
- OFFSET dst = (OFFSET)GET_OPERAND(2);
1702
- rb_num_t type = (rb_num_t)GET_OPERAND(1);
1703
- VALUE val = TOPN(0);
1704
- DEBUG_ENTER_INSN("branchiftype");
1705
- ADD_PC(1+2);
1706
- PREFETCH(GET_PC());
1707
- POPN(1);
1708
- #define CURRENT_INSN_branchiftype 1
1709
- #define INSN_IS_SC() 0
1710
- #define INSN_LABEL(lab) LABEL_branchiftype_##lab
1711
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1712
- COLLECT_USAGE_INSN(BIN(branchiftype));
1713
- COLLECT_USAGE_OPERAND(BIN(branchiftype), 0, type);
1714
- COLLECT_USAGE_OPERAND(BIN(branchiftype), 1, dst);
1715
- {
1716
- #line 1067 "insns.def"
1717
- if (TYPE(val) == (int)type) {
1718
- RUBY_VM_CHECK_INTS(th);
1719
- JUMP(dst);
1720
- }
1721
-
1722
- #line 1723 "vm.inc"
1723
- #undef CURRENT_INSN_branchiftype
1724
- #undef INSN_IS_SC
1725
- #undef INSN_LABEL
1726
- #undef LABEL_IS_SC
1727
- END_INSN(branchiftype);}}}
1728
- INSN_ENTRY(getinlinecache){
1729
- {
1730
- VALUE val;
1731
- IC ic = (IC)GET_OPERAND(2);
1732
- OFFSET dst = (OFFSET)GET_OPERAND(1);
1733
-
1734
- DEBUG_ENTER_INSN("getinlinecache");
1735
- ADD_PC(1+2);
1736
- PREFETCH(GET_PC());
1737
- #define CURRENT_INSN_getinlinecache 1
1738
- #define INSN_IS_SC() 0
1739
- #define INSN_LABEL(lab) LABEL_getinlinecache_##lab
1740
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1741
- COLLECT_USAGE_INSN(BIN(getinlinecache));
1742
- COLLECT_USAGE_OPERAND(BIN(getinlinecache), 0, dst);
1743
- COLLECT_USAGE_OPERAND(BIN(getinlinecache), 1, ic);
1744
- {
1745
- #line 1089 "insns.def"
1746
- val = vm_ic_hit_p(ic, GET_EP());
1747
- if (val != Qnil) {
1748
- JUMP(dst);
1749
- }
1750
-
1751
- #line 1752 "vm.inc"
1752
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1753
- PUSH(val);
1754
- #undef CURRENT_INSN_getinlinecache
1755
- #undef INSN_IS_SC
1756
- #undef INSN_LABEL
1757
- #undef LABEL_IS_SC
1758
- END_INSN(getinlinecache);}}}
1759
- INSN_ENTRY(setinlinecache){
1760
- {
1761
- IC ic = (IC)GET_OPERAND(1);
1762
- VALUE val = TOPN(0);
1763
- DEBUG_ENTER_INSN("setinlinecache");
1764
- ADD_PC(1+1);
1765
- PREFETCH(GET_PC());
1766
- POPN(1);
1767
- #define CURRENT_INSN_setinlinecache 1
1768
- #define INSN_IS_SC() 0
1769
- #define INSN_LABEL(lab) LABEL_setinlinecache_##lab
1770
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1771
- COLLECT_USAGE_INSN(BIN(setinlinecache));
1772
- COLLECT_USAGE_OPERAND(BIN(setinlinecache), 0, ic);
1773
- {
1774
- #line 1106 "insns.def"
1775
- vm_ic_update(ic, val, GET_EP());
1776
-
1777
- #line 1778 "vm.inc"
1778
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1779
- PUSH(val);
1780
- #undef CURRENT_INSN_setinlinecache
1781
- #undef INSN_IS_SC
1782
- #undef INSN_LABEL
1783
- #undef LABEL_IS_SC
1784
- END_INSN(setinlinecache);}}}
1785
- INSN_ENTRY(once){
1786
- {
1787
- VALUE val;
1788
- IC ic = (IC)GET_OPERAND(2);
1789
- ISEQ iseq = (ISEQ)GET_OPERAND(1);
1790
-
1791
- DEBUG_ENTER_INSN("once");
1792
- ADD_PC(1+2);
1793
- PREFETCH(GET_PC());
1794
- #define CURRENT_INSN_once 1
1795
- #define INSN_IS_SC() 0
1796
- #define INSN_LABEL(lab) LABEL_once_##lab
1797
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1798
- COLLECT_USAGE_INSN(BIN(once));
1799
- COLLECT_USAGE_OPERAND(BIN(once), 0, iseq);
1800
- COLLECT_USAGE_OPERAND(BIN(once), 1, ic);
1801
- {
1802
- #line 1120 "insns.def"
1803
- val = vm_once_dispatch(iseq, ic, th);
1804
-
1805
- #line 1806 "vm.inc"
1806
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1807
- PUSH(val);
1808
- #undef CURRENT_INSN_once
1809
- #undef INSN_IS_SC
1810
- #undef INSN_LABEL
1811
- #undef LABEL_IS_SC
1812
- END_INSN(once);}}}
1813
- INSN_ENTRY(opt_case_dispatch){
1814
- {
1815
- OFFSET else_offset = (OFFSET)GET_OPERAND(2);
1816
- CDHASH hash = (CDHASH)GET_OPERAND(1);
1817
- VALUE key = TOPN(0);
1818
- DEBUG_ENTER_INSN("opt_case_dispatch");
1819
- ADD_PC(1+2);
1820
- PREFETCH(GET_PC());
1821
- POPN(1);
1822
- #define CURRENT_INSN_opt_case_dispatch 1
1823
- #define INSN_IS_SC() 0
1824
- #define INSN_LABEL(lab) LABEL_opt_case_dispatch_##lab
1825
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1826
- COLLECT_USAGE_INSN(BIN(opt_case_dispatch));
1827
- COLLECT_USAGE_OPERAND(BIN(opt_case_dispatch), 0, hash);
1828
- COLLECT_USAGE_OPERAND(BIN(opt_case_dispatch), 1, else_offset);
1829
- {
1830
- #line 1134 "insns.def"
1831
- OFFSET dst = vm_case_dispatch(hash, else_offset, key);
1832
-
1833
- if (dst) {
1834
- JUMP(dst);
1835
- }
1836
-
1837
- #line 1838 "vm.inc"
1838
- #undef CURRENT_INSN_opt_case_dispatch
1839
- #undef INSN_IS_SC
1840
- #undef INSN_LABEL
1841
- #undef LABEL_IS_SC
1842
- END_INSN(opt_case_dispatch);}}}
1843
- INSN_ENTRY(opt_plus){
1844
- {
1845
- VALUE val;
1846
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
1847
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
1848
- VALUE recv = TOPN(1);
1849
- VALUE obj = TOPN(0);
1850
- DEBUG_ENTER_INSN("opt_plus");
1851
- ADD_PC(1+2);
1852
- PREFETCH(GET_PC());
1853
- POPN(2);
1854
- #define CURRENT_INSN_opt_plus 1
1855
- #define INSN_IS_SC() 0
1856
- #define INSN_LABEL(lab) LABEL_opt_plus_##lab
1857
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1858
- COLLECT_USAGE_INSN(BIN(opt_plus));
1859
- COLLECT_USAGE_OPERAND(BIN(opt_plus), 0, ci);
1860
- COLLECT_USAGE_OPERAND(BIN(opt_plus), 1, cc);
1861
- {
1862
- #line 1154 "insns.def"
1863
- val = vm_opt_plus(recv, obj);
1864
-
1865
- if (val == Qundef) {
1866
- /* other */
1867
- PUSH(recv);
1868
- PUSH(obj);
1869
- CALL_SIMPLE_METHOD(recv);
1870
- }
1871
-
1872
- #line 1873 "vm.inc"
1873
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1874
- PUSH(val);
1875
- #undef CURRENT_INSN_opt_plus
1876
- #undef INSN_IS_SC
1877
- #undef INSN_LABEL
1878
- #undef LABEL_IS_SC
1879
- END_INSN(opt_plus);}}}
1880
- INSN_ENTRY(opt_minus){
1881
- {
1882
- VALUE val;
1883
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
1884
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
1885
- VALUE recv = TOPN(1);
1886
- VALUE obj = TOPN(0);
1887
- DEBUG_ENTER_INSN("opt_minus");
1888
- ADD_PC(1+2);
1889
- PREFETCH(GET_PC());
1890
- POPN(2);
1891
- #define CURRENT_INSN_opt_minus 1
1892
- #define INSN_IS_SC() 0
1893
- #define INSN_LABEL(lab) LABEL_opt_minus_##lab
1894
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1895
- COLLECT_USAGE_INSN(BIN(opt_minus));
1896
- COLLECT_USAGE_OPERAND(BIN(opt_minus), 0, ci);
1897
- COLLECT_USAGE_OPERAND(BIN(opt_minus), 1, cc);
1898
- {
1899
- #line 1175 "insns.def"
1900
- val = vm_opt_minus(recv, obj);
1901
-
1902
- if (val == Qundef) {
1903
- /* other */
1904
- PUSH(recv);
1905
- PUSH(obj);
1906
- CALL_SIMPLE_METHOD(recv);
1907
- }
1908
-
1909
- #line 1910 "vm.inc"
1910
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1911
- PUSH(val);
1912
- #undef CURRENT_INSN_opt_minus
1913
- #undef INSN_IS_SC
1914
- #undef INSN_LABEL
1915
- #undef LABEL_IS_SC
1916
- END_INSN(opt_minus);}}}
1917
- INSN_ENTRY(opt_mult){
1918
- {
1919
- VALUE val;
1920
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
1921
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
1922
- VALUE recv = TOPN(1);
1923
- VALUE obj = TOPN(0);
1924
- DEBUG_ENTER_INSN("opt_mult");
1925
- ADD_PC(1+2);
1926
- PREFETCH(GET_PC());
1927
- POPN(2);
1928
- #define CURRENT_INSN_opt_mult 1
1929
- #define INSN_IS_SC() 0
1930
- #define INSN_LABEL(lab) LABEL_opt_mult_##lab
1931
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1932
- COLLECT_USAGE_INSN(BIN(opt_mult));
1933
- COLLECT_USAGE_OPERAND(BIN(opt_mult), 0, ci);
1934
- COLLECT_USAGE_OPERAND(BIN(opt_mult), 1, cc);
1935
- {
1936
- #line 1196 "insns.def"
1937
- val = vm_opt_mult(recv, obj);
1938
-
1939
- if (val == Qundef) {
1940
- /* other */
1941
- PUSH(recv);
1942
- PUSH(obj);
1943
- CALL_SIMPLE_METHOD(recv);
1944
- }
1945
-
1946
- #line 1947 "vm.inc"
1947
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1948
- PUSH(val);
1949
- #undef CURRENT_INSN_opt_mult
1950
- #undef INSN_IS_SC
1951
- #undef INSN_LABEL
1952
- #undef LABEL_IS_SC
1953
- END_INSN(opt_mult);}}}
1954
- INSN_ENTRY(opt_div){
1955
- {
1956
- VALUE val;
1957
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
1958
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
1959
- VALUE recv = TOPN(1);
1960
- VALUE obj = TOPN(0);
1961
- DEBUG_ENTER_INSN("opt_div");
1962
- ADD_PC(1+2);
1963
- PREFETCH(GET_PC());
1964
- POPN(2);
1965
- #define CURRENT_INSN_opt_div 1
1966
- #define INSN_IS_SC() 0
1967
- #define INSN_LABEL(lab) LABEL_opt_div_##lab
1968
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
1969
- COLLECT_USAGE_INSN(BIN(opt_div));
1970
- COLLECT_USAGE_OPERAND(BIN(opt_div), 0, ci);
1971
- COLLECT_USAGE_OPERAND(BIN(opt_div), 1, cc);
1972
- {
1973
- #line 1217 "insns.def"
1974
- val = vm_opt_div(recv, obj);
1975
-
1976
- if (val == Qundef) {
1977
- /* other */
1978
- PUSH(recv);
1979
- PUSH(obj);
1980
- CALL_SIMPLE_METHOD(recv);
1981
- }
1982
-
1983
- #line 1984 "vm.inc"
1984
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
1985
- PUSH(val);
1986
- #undef CURRENT_INSN_opt_div
1987
- #undef INSN_IS_SC
1988
- #undef INSN_LABEL
1989
- #undef LABEL_IS_SC
1990
- END_INSN(opt_div);}}}
1991
- INSN_ENTRY(opt_mod){
1992
- {
1993
- VALUE val;
1994
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
1995
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
1996
- VALUE recv = TOPN(1);
1997
- VALUE obj = TOPN(0);
1998
- DEBUG_ENTER_INSN("opt_mod");
1999
- ADD_PC(1+2);
2000
- PREFETCH(GET_PC());
2001
- POPN(2);
2002
- #define CURRENT_INSN_opt_mod 1
2003
- #define INSN_IS_SC() 0
2004
- #define INSN_LABEL(lab) LABEL_opt_mod_##lab
2005
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2006
- COLLECT_USAGE_INSN(BIN(opt_mod));
2007
- COLLECT_USAGE_OPERAND(BIN(opt_mod), 0, ci);
2008
- COLLECT_USAGE_OPERAND(BIN(opt_mod), 1, cc);
2009
- {
2010
- #line 1238 "insns.def"
2011
- val = vm_opt_mod(recv, obj);
2012
-
2013
- if (val == Qundef) {
2014
- /* other */
2015
- PUSH(recv);
2016
- PUSH(obj);
2017
- CALL_SIMPLE_METHOD(recv);
2018
- }
2019
-
2020
- #line 2021 "vm.inc"
2021
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2022
- PUSH(val);
2023
- #undef CURRENT_INSN_opt_mod
2024
- #undef INSN_IS_SC
2025
- #undef INSN_LABEL
2026
- #undef LABEL_IS_SC
2027
- END_INSN(opt_mod);}}}
2028
- INSN_ENTRY(opt_eq){
2029
- {
2030
- VALUE val;
2031
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2032
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2033
- VALUE recv = TOPN(1);
2034
- VALUE obj = TOPN(0);
2035
- DEBUG_ENTER_INSN("opt_eq");
2036
- ADD_PC(1+2);
2037
- PREFETCH(GET_PC());
2038
- POPN(2);
2039
- #define CURRENT_INSN_opt_eq 1
2040
- #define INSN_IS_SC() 0
2041
- #define INSN_LABEL(lab) LABEL_opt_eq_##lab
2042
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2043
- COLLECT_USAGE_INSN(BIN(opt_eq));
2044
- COLLECT_USAGE_OPERAND(BIN(opt_eq), 0, ci);
2045
- COLLECT_USAGE_OPERAND(BIN(opt_eq), 1, cc);
2046
- {
2047
- #line 1259 "insns.def"
2048
- val = opt_eq_func(recv, obj, ci, cc);
2049
-
2050
- if (val == Qundef) {
2051
- /* other */
2052
- PUSH(recv);
2053
- PUSH(obj);
2054
- CALL_SIMPLE_METHOD(recv);
2055
- }
2056
-
2057
- #line 2058 "vm.inc"
2058
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2059
- PUSH(val);
2060
- #undef CURRENT_INSN_opt_eq
2061
- #undef INSN_IS_SC
2062
- #undef INSN_LABEL
2063
- #undef LABEL_IS_SC
2064
- END_INSN(opt_eq);}}}
2065
- INSN_ENTRY(opt_neq){
2066
- {
2067
- VALUE val;
2068
- CALL_CACHE cc_eq = (CALL_CACHE)GET_OPERAND(4);
2069
- CALL_INFO ci_eq = (CALL_INFO)GET_OPERAND(3);
2070
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2071
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2072
- VALUE recv = TOPN(1);
2073
- VALUE obj = TOPN(0);
2074
- DEBUG_ENTER_INSN("opt_neq");
2075
- ADD_PC(1+4);
2076
- PREFETCH(GET_PC());
2077
- POPN(2);
2078
- #define CURRENT_INSN_opt_neq 1
2079
- #define INSN_IS_SC() 0
2080
- #define INSN_LABEL(lab) LABEL_opt_neq_##lab
2081
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2082
- COLLECT_USAGE_INSN(BIN(opt_neq));
2083
- COLLECT_USAGE_OPERAND(BIN(opt_neq), 0, ci);
2084
- COLLECT_USAGE_OPERAND(BIN(opt_neq), 1, cc);
2085
- COLLECT_USAGE_OPERAND(BIN(opt_neq), 2, ci_eq);
2086
- COLLECT_USAGE_OPERAND(BIN(opt_neq), 3, cc_eq);
2087
- {
2088
- #line 1280 "insns.def"
2089
- val = vm_opt_neq(ci, cc, ci_eq, cc_eq, recv, obj);
2090
-
2091
- if (val == Qundef) {
2092
- /* other */
2093
- PUSH(recv);
2094
- PUSH(obj);
2095
- CALL_SIMPLE_METHOD(recv);
2096
- }
2097
-
2098
- #line 2099 "vm.inc"
2099
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2100
- PUSH(val);
2101
- #undef CURRENT_INSN_opt_neq
2102
- #undef INSN_IS_SC
2103
- #undef INSN_LABEL
2104
- #undef LABEL_IS_SC
2105
- END_INSN(opt_neq);}}}
2106
- INSN_ENTRY(opt_lt){
2107
- {
2108
- VALUE val;
2109
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2110
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2111
- VALUE recv = TOPN(1);
2112
- VALUE obj = TOPN(0);
2113
- DEBUG_ENTER_INSN("opt_lt");
2114
- ADD_PC(1+2);
2115
- PREFETCH(GET_PC());
2116
- POPN(2);
2117
- #define CURRENT_INSN_opt_lt 1
2118
- #define INSN_IS_SC() 0
2119
- #define INSN_LABEL(lab) LABEL_opt_lt_##lab
2120
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2121
- COLLECT_USAGE_INSN(BIN(opt_lt));
2122
- COLLECT_USAGE_OPERAND(BIN(opt_lt), 0, ci);
2123
- COLLECT_USAGE_OPERAND(BIN(opt_lt), 1, cc);
2124
- {
2125
- #line 1301 "insns.def"
2126
- val = vm_opt_lt(recv, obj);
2127
-
2128
- if (val == Qundef) {
2129
- /* other */
2130
- PUSH(recv);
2131
- PUSH(obj);
2132
- CALL_SIMPLE_METHOD(recv);
2133
- }
2134
-
2135
- #line 2136 "vm.inc"
2136
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2137
- PUSH(val);
2138
- #undef CURRENT_INSN_opt_lt
2139
- #undef INSN_IS_SC
2140
- #undef INSN_LABEL
2141
- #undef LABEL_IS_SC
2142
- END_INSN(opt_lt);}}}
2143
- INSN_ENTRY(opt_le){
2144
- {
2145
- VALUE val;
2146
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2147
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2148
- VALUE recv = TOPN(1);
2149
- VALUE obj = TOPN(0);
2150
- DEBUG_ENTER_INSN("opt_le");
2151
- ADD_PC(1+2);
2152
- PREFETCH(GET_PC());
2153
- POPN(2);
2154
- #define CURRENT_INSN_opt_le 1
2155
- #define INSN_IS_SC() 0
2156
- #define INSN_LABEL(lab) LABEL_opt_le_##lab
2157
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2158
- COLLECT_USAGE_INSN(BIN(opt_le));
2159
- COLLECT_USAGE_OPERAND(BIN(opt_le), 0, ci);
2160
- COLLECT_USAGE_OPERAND(BIN(opt_le), 1, cc);
2161
- {
2162
- #line 1322 "insns.def"
2163
- val = vm_opt_le(recv, obj);
2164
-
2165
- if (val == Qundef) {
2166
- /* other */
2167
- PUSH(recv);
2168
- PUSH(obj);
2169
- CALL_SIMPLE_METHOD(recv);
2170
- }
2171
-
2172
- #line 2173 "vm.inc"
2173
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2174
- PUSH(val);
2175
- #undef CURRENT_INSN_opt_le
2176
- #undef INSN_IS_SC
2177
- #undef INSN_LABEL
2178
- #undef LABEL_IS_SC
2179
- END_INSN(opt_le);}}}
2180
- INSN_ENTRY(opt_gt){
2181
- {
2182
- VALUE val;
2183
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2184
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2185
- VALUE recv = TOPN(1);
2186
- VALUE obj = TOPN(0);
2187
- DEBUG_ENTER_INSN("opt_gt");
2188
- ADD_PC(1+2);
2189
- PREFETCH(GET_PC());
2190
- POPN(2);
2191
- #define CURRENT_INSN_opt_gt 1
2192
- #define INSN_IS_SC() 0
2193
- #define INSN_LABEL(lab) LABEL_opt_gt_##lab
2194
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2195
- COLLECT_USAGE_INSN(BIN(opt_gt));
2196
- COLLECT_USAGE_OPERAND(BIN(opt_gt), 0, ci);
2197
- COLLECT_USAGE_OPERAND(BIN(opt_gt), 1, cc);
2198
- {
2199
- #line 1343 "insns.def"
2200
- val = vm_opt_gt(recv, obj);
2201
-
2202
- if (val == Qundef) {
2203
- /* other */
2204
- PUSH(recv);
2205
- PUSH(obj);
2206
- CALL_SIMPLE_METHOD(recv);
2207
- }
2208
-
2209
- #line 2210 "vm.inc"
2210
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2211
- PUSH(val);
2212
- #undef CURRENT_INSN_opt_gt
2213
- #undef INSN_IS_SC
2214
- #undef INSN_LABEL
2215
- #undef LABEL_IS_SC
2216
- END_INSN(opt_gt);}}}
2217
- INSN_ENTRY(opt_ge){
2218
- {
2219
- VALUE val;
2220
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2221
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2222
- VALUE recv = TOPN(1);
2223
- VALUE obj = TOPN(0);
2224
- DEBUG_ENTER_INSN("opt_ge");
2225
- ADD_PC(1+2);
2226
- PREFETCH(GET_PC());
2227
- POPN(2);
2228
- #define CURRENT_INSN_opt_ge 1
2229
- #define INSN_IS_SC() 0
2230
- #define INSN_LABEL(lab) LABEL_opt_ge_##lab
2231
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2232
- COLLECT_USAGE_INSN(BIN(opt_ge));
2233
- COLLECT_USAGE_OPERAND(BIN(opt_ge), 0, ci);
2234
- COLLECT_USAGE_OPERAND(BIN(opt_ge), 1, cc);
2235
- {
2236
- #line 1364 "insns.def"
2237
- val = vm_opt_ge(recv, obj);
2238
-
2239
- if (val == Qundef) {
2240
- /* other */
2241
- PUSH(recv);
2242
- PUSH(obj);
2243
- CALL_SIMPLE_METHOD(recv);
2244
- }
2245
-
2246
- #line 2247 "vm.inc"
2247
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2248
- PUSH(val);
2249
- #undef CURRENT_INSN_opt_ge
2250
- #undef INSN_IS_SC
2251
- #undef INSN_LABEL
2252
- #undef LABEL_IS_SC
2253
- END_INSN(opt_ge);}}}
2254
- INSN_ENTRY(opt_ltlt){
2255
- {
2256
- VALUE val;
2257
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2258
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2259
- VALUE recv = TOPN(1);
2260
- VALUE obj = TOPN(0);
2261
- DEBUG_ENTER_INSN("opt_ltlt");
2262
- ADD_PC(1+2);
2263
- PREFETCH(GET_PC());
2264
- POPN(2);
2265
- #define CURRENT_INSN_opt_ltlt 1
2266
- #define INSN_IS_SC() 0
2267
- #define INSN_LABEL(lab) LABEL_opt_ltlt_##lab
2268
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2269
- COLLECT_USAGE_INSN(BIN(opt_ltlt));
2270
- COLLECT_USAGE_OPERAND(BIN(opt_ltlt), 0, ci);
2271
- COLLECT_USAGE_OPERAND(BIN(opt_ltlt), 1, cc);
2272
- {
2273
- #line 1385 "insns.def"
2274
- val = vm_opt_ltlt(recv, obj);
2275
-
2276
- if (val == Qundef) {
2277
- /* other */
2278
- PUSH(recv);
2279
- PUSH(obj);
2280
- CALL_SIMPLE_METHOD(recv);
2281
- }
2282
-
2283
- #line 2284 "vm.inc"
2284
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2285
- PUSH(val);
2286
- #undef CURRENT_INSN_opt_ltlt
2287
- #undef INSN_IS_SC
2288
- #undef INSN_LABEL
2289
- #undef LABEL_IS_SC
2290
- END_INSN(opt_ltlt);}}}
2291
- INSN_ENTRY(opt_aref){
2292
- {
2293
- VALUE val;
2294
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2295
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2296
- VALUE recv = TOPN(1);
2297
- VALUE obj = TOPN(0);
2298
- DEBUG_ENTER_INSN("opt_aref");
2299
- ADD_PC(1+2);
2300
- PREFETCH(GET_PC());
2301
- POPN(2);
2302
- #define CURRENT_INSN_opt_aref 1
2303
- #define INSN_IS_SC() 0
2304
- #define INSN_LABEL(lab) LABEL_opt_aref_##lab
2305
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2306
- COLLECT_USAGE_INSN(BIN(opt_aref));
2307
- COLLECT_USAGE_OPERAND(BIN(opt_aref), 0, ci);
2308
- COLLECT_USAGE_OPERAND(BIN(opt_aref), 1, cc);
2309
- {
2310
- #line 1406 "insns.def"
2311
- val = vm_opt_aref(recv, obj);
2312
-
2313
- if (val == Qundef) {
2314
- /* other */
2315
- PUSH(recv);
2316
- PUSH(obj);
2317
- CALL_SIMPLE_METHOD(recv);
2318
- }
2319
-
2320
- #line 2321 "vm.inc"
2321
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2322
- PUSH(val);
2323
- #undef CURRENT_INSN_opt_aref
2324
- #undef INSN_IS_SC
2325
- #undef INSN_LABEL
2326
- #undef LABEL_IS_SC
2327
- END_INSN(opt_aref);}}}
2328
- INSN_ENTRY(opt_aset){
2329
- {
2330
- VALUE val;
2331
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2332
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2333
- VALUE recv = TOPN(2);
2334
- VALUE obj = TOPN(1);
2335
- VALUE set = TOPN(0);
2336
- DEBUG_ENTER_INSN("opt_aset");
2337
- ADD_PC(1+2);
2338
- PREFETCH(GET_PC());
2339
- POPN(3);
2340
- #define CURRENT_INSN_opt_aset 1
2341
- #define INSN_IS_SC() 0
2342
- #define INSN_LABEL(lab) LABEL_opt_aset_##lab
2343
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2344
- COLLECT_USAGE_INSN(BIN(opt_aset));
2345
- COLLECT_USAGE_OPERAND(BIN(opt_aset), 0, ci);
2346
- COLLECT_USAGE_OPERAND(BIN(opt_aset), 1, cc);
2347
- {
2348
- #line 1427 "insns.def"
2349
- val = vm_opt_aset(recv, obj, set);
2350
-
2351
- if (val == Qundef) {
2352
- /* other */
2353
- PUSH(recv);
2354
- PUSH(obj);
2355
- PUSH(set);
2356
- CALL_SIMPLE_METHOD(recv);
2357
- }
2358
-
2359
- #line 2360 "vm.inc"
2360
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2361
- PUSH(val);
2362
- #undef CURRENT_INSN_opt_aset
2363
- #undef INSN_IS_SC
2364
- #undef INSN_LABEL
2365
- #undef LABEL_IS_SC
2366
- END_INSN(opt_aset);}}}
2367
- INSN_ENTRY(opt_aset_with){
2368
- {
2369
- VALUE key = (VALUE)GET_OPERAND(3);
2370
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2371
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2372
- VALUE recv = TOPN(1);
2373
- VALUE val = TOPN(0);
2374
- DEBUG_ENTER_INSN("opt_aset_with");
2375
- ADD_PC(1+3);
2376
- PREFETCH(GET_PC());
2377
- POPN(2);
2378
- #define CURRENT_INSN_opt_aset_with 1
2379
- #define INSN_IS_SC() 0
2380
- #define INSN_LABEL(lab) LABEL_opt_aset_with_##lab
2381
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2382
- COLLECT_USAGE_INSN(BIN(opt_aset_with));
2383
- COLLECT_USAGE_OPERAND(BIN(opt_aset_with), 0, ci);
2384
- COLLECT_USAGE_OPERAND(BIN(opt_aset_with), 1, cc);
2385
- COLLECT_USAGE_OPERAND(BIN(opt_aset_with), 2, key);
2386
- {
2387
- #line 1449 "insns.def"
2388
- VALUE tmp = vm_opt_aset_with(recv, key, val);
2389
-
2390
- if (tmp != Qundef) {
2391
- val = tmp;
2392
- }
2393
- else {
2394
- /* other */
2395
- PUSH(recv);
2396
- PUSH(rb_str_resurrect(key));
2397
- PUSH(val);
2398
- CALL_SIMPLE_METHOD(recv);
2399
- }
2400
-
2401
- #line 2402 "vm.inc"
2402
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2403
- PUSH(val);
2404
- #undef CURRENT_INSN_opt_aset_with
2405
- #undef INSN_IS_SC
2406
- #undef INSN_LABEL
2407
- #undef LABEL_IS_SC
2408
- END_INSN(opt_aset_with);}}}
2409
- INSN_ENTRY(opt_aref_with){
2410
- {
2411
- VALUE val;
2412
- VALUE key = (VALUE)GET_OPERAND(3);
2413
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2414
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2415
- VALUE recv = TOPN(0);
2416
- DEBUG_ENTER_INSN("opt_aref_with");
2417
- ADD_PC(1+3);
2418
- PREFETCH(GET_PC());
2419
- POPN(1);
2420
- #define CURRENT_INSN_opt_aref_with 1
2421
- #define INSN_IS_SC() 0
2422
- #define INSN_LABEL(lab) LABEL_opt_aref_with_##lab
2423
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2424
- COLLECT_USAGE_INSN(BIN(opt_aref_with));
2425
- COLLECT_USAGE_OPERAND(BIN(opt_aref_with), 0, ci);
2426
- COLLECT_USAGE_OPERAND(BIN(opt_aref_with), 1, cc);
2427
- COLLECT_USAGE_OPERAND(BIN(opt_aref_with), 2, key);
2428
- {
2429
- #line 1474 "insns.def"
2430
- val = vm_opt_aref_with(recv, key);
2431
-
2432
- if (val == Qundef) {
2433
- /* other */
2434
- PUSH(recv);
2435
- PUSH(rb_str_resurrect(key));
2436
- CALL_SIMPLE_METHOD(recv);
2437
- }
2438
-
2439
- #line 2440 "vm.inc"
2440
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2441
- PUSH(val);
2442
- #undef CURRENT_INSN_opt_aref_with
2443
- #undef INSN_IS_SC
2444
- #undef INSN_LABEL
2445
- #undef LABEL_IS_SC
2446
- END_INSN(opt_aref_with);}}}
2447
- INSN_ENTRY(opt_length){
2448
- {
2449
- VALUE val;
2450
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2451
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2452
- VALUE recv = TOPN(0);
2453
- DEBUG_ENTER_INSN("opt_length");
2454
- ADD_PC(1+2);
2455
- PREFETCH(GET_PC());
2456
- POPN(1);
2457
- #define CURRENT_INSN_opt_length 1
2458
- #define INSN_IS_SC() 0
2459
- #define INSN_LABEL(lab) LABEL_opt_length_##lab
2460
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2461
- COLLECT_USAGE_INSN(BIN(opt_length));
2462
- COLLECT_USAGE_OPERAND(BIN(opt_length), 0, ci);
2463
- COLLECT_USAGE_OPERAND(BIN(opt_length), 1, cc);
2464
- {
2465
- #line 1495 "insns.def"
2466
- val = vm_opt_length(recv, BOP_LENGTH);
2467
-
2468
- if (val == Qundef) {
2469
- /* other */
2470
- PUSH(recv);
2471
- CALL_SIMPLE_METHOD(recv);
2472
- }
2473
-
2474
- #line 2475 "vm.inc"
2475
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2476
- PUSH(val);
2477
- #undef CURRENT_INSN_opt_length
2478
- #undef INSN_IS_SC
2479
- #undef INSN_LABEL
2480
- #undef LABEL_IS_SC
2481
- END_INSN(opt_length);}}}
2482
- INSN_ENTRY(opt_size){
2483
- {
2484
- VALUE val;
2485
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2486
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2487
- VALUE recv = TOPN(0);
2488
- DEBUG_ENTER_INSN("opt_size");
2489
- ADD_PC(1+2);
2490
- PREFETCH(GET_PC());
2491
- POPN(1);
2492
- #define CURRENT_INSN_opt_size 1
2493
- #define INSN_IS_SC() 0
2494
- #define INSN_LABEL(lab) LABEL_opt_size_##lab
2495
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2496
- COLLECT_USAGE_INSN(BIN(opt_size));
2497
- COLLECT_USAGE_OPERAND(BIN(opt_size), 0, ci);
2498
- COLLECT_USAGE_OPERAND(BIN(opt_size), 1, cc);
2499
- {
2500
- #line 1515 "insns.def"
2501
- val = vm_opt_length(recv, BOP_SIZE);
2502
-
2503
- if (val == Qundef) {
2504
- /* other */
2505
- PUSH(recv);
2506
- CALL_SIMPLE_METHOD(recv);
2507
- }
2508
-
2509
- #line 2510 "vm.inc"
2510
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2511
- PUSH(val);
2512
- #undef CURRENT_INSN_opt_size
2513
- #undef INSN_IS_SC
2514
- #undef INSN_LABEL
2515
- #undef LABEL_IS_SC
2516
- END_INSN(opt_size);}}}
2517
- INSN_ENTRY(opt_empty_p){
2518
- {
2519
- VALUE val;
2520
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2521
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2522
- VALUE recv = TOPN(0);
2523
- DEBUG_ENTER_INSN("opt_empty_p");
2524
- ADD_PC(1+2);
2525
- PREFETCH(GET_PC());
2526
- POPN(1);
2527
- #define CURRENT_INSN_opt_empty_p 1
2528
- #define INSN_IS_SC() 0
2529
- #define INSN_LABEL(lab) LABEL_opt_empty_p_##lab
2530
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2531
- COLLECT_USAGE_INSN(BIN(opt_empty_p));
2532
- COLLECT_USAGE_OPERAND(BIN(opt_empty_p), 0, ci);
2533
- COLLECT_USAGE_OPERAND(BIN(opt_empty_p), 1, cc);
2534
- {
2535
- #line 1535 "insns.def"
2536
- val = vm_opt_empty_p(recv);
2537
-
2538
- if (val == Qundef) {
2539
- /* other */
2540
- PUSH(recv);
2541
- CALL_SIMPLE_METHOD(recv);
2542
- }
2543
-
2544
- #line 2545 "vm.inc"
2545
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2546
- PUSH(val);
2547
- #undef CURRENT_INSN_opt_empty_p
2548
- #undef INSN_IS_SC
2549
- #undef INSN_LABEL
2550
- #undef LABEL_IS_SC
2551
- END_INSN(opt_empty_p);}}}
2552
- INSN_ENTRY(opt_succ){
2553
- {
2554
- VALUE val;
2555
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2556
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2557
- VALUE recv = TOPN(0);
2558
- DEBUG_ENTER_INSN("opt_succ");
2559
- ADD_PC(1+2);
2560
- PREFETCH(GET_PC());
2561
- POPN(1);
2562
- #define CURRENT_INSN_opt_succ 1
2563
- #define INSN_IS_SC() 0
2564
- #define INSN_LABEL(lab) LABEL_opt_succ_##lab
2565
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2566
- COLLECT_USAGE_INSN(BIN(opt_succ));
2567
- COLLECT_USAGE_OPERAND(BIN(opt_succ), 0, ci);
2568
- COLLECT_USAGE_OPERAND(BIN(opt_succ), 1, cc);
2569
- {
2570
- #line 1555 "insns.def"
2571
- val = vm_opt_succ(recv);
2572
-
2573
- if (val == Qundef) {
2574
- /* other */
2575
- PUSH(recv);
2576
- CALL_SIMPLE_METHOD(recv);
2577
- }
2578
-
2579
- #line 2580 "vm.inc"
2580
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2581
- PUSH(val);
2582
- #undef CURRENT_INSN_opt_succ
2583
- #undef INSN_IS_SC
2584
- #undef INSN_LABEL
2585
- #undef LABEL_IS_SC
2586
- END_INSN(opt_succ);}}}
2587
- INSN_ENTRY(opt_not){
2588
- {
2589
- VALUE val;
2590
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2591
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2592
- VALUE recv = TOPN(0);
2593
- DEBUG_ENTER_INSN("opt_not");
2594
- ADD_PC(1+2);
2595
- PREFETCH(GET_PC());
2596
- POPN(1);
2597
- #define CURRENT_INSN_opt_not 1
2598
- #define INSN_IS_SC() 0
2599
- #define INSN_LABEL(lab) LABEL_opt_not_##lab
2600
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2601
- COLLECT_USAGE_INSN(BIN(opt_not));
2602
- COLLECT_USAGE_OPERAND(BIN(opt_not), 0, ci);
2603
- COLLECT_USAGE_OPERAND(BIN(opt_not), 1, cc);
2604
- {
2605
- #line 1575 "insns.def"
2606
- val = vm_opt_not(ci, cc, recv);
2607
-
2608
- if (val == Qundef) {
2609
- /* other */
2610
- PUSH(recv);
2611
- CALL_SIMPLE_METHOD(recv);
2612
- }
2613
-
2614
- #line 2615 "vm.inc"
2615
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2616
- PUSH(val);
2617
- #undef CURRENT_INSN_opt_not
2618
- #undef INSN_IS_SC
2619
- #undef INSN_LABEL
2620
- #undef LABEL_IS_SC
2621
- END_INSN(opt_not);}}}
2622
- INSN_ENTRY(opt_regexpmatch1){
2623
- {
2624
- VALUE val;
2625
- VALUE recv = (VALUE)GET_OPERAND(1);
2626
- VALUE obj = TOPN(0);
2627
- DEBUG_ENTER_INSN("opt_regexpmatch1");
2628
- ADD_PC(1+1);
2629
- PREFETCH(GET_PC());
2630
- POPN(1);
2631
- #define CURRENT_INSN_opt_regexpmatch1 1
2632
- #define INSN_IS_SC() 0
2633
- #define INSN_LABEL(lab) LABEL_opt_regexpmatch1_##lab
2634
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2635
- COLLECT_USAGE_INSN(BIN(opt_regexpmatch1));
2636
- COLLECT_USAGE_OPERAND(BIN(opt_regexpmatch1), 0, recv);
2637
- {
2638
- #line 1596 "insns.def"
2639
- val = vm_opt_regexpmatch1(recv, obj);
2640
-
2641
- #line 2642 "vm.inc"
2642
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2643
- PUSH(val);
2644
- #undef CURRENT_INSN_opt_regexpmatch1
2645
- #undef INSN_IS_SC
2646
- #undef INSN_LABEL
2647
- #undef LABEL_IS_SC
2648
- END_INSN(opt_regexpmatch1);}}}
2649
- INSN_ENTRY(opt_regexpmatch2){
2650
- {
2651
- VALUE val;
2652
- CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
2653
- CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
2654
- VALUE obj2 = TOPN(1);
2655
- VALUE obj1 = TOPN(0);
2656
- DEBUG_ENTER_INSN("opt_regexpmatch2");
2657
- ADD_PC(1+2);
2658
- PREFETCH(GET_PC());
2659
- POPN(2);
2660
- #define CURRENT_INSN_opt_regexpmatch2 1
2661
- #define INSN_IS_SC() 0
2662
- #define INSN_LABEL(lab) LABEL_opt_regexpmatch2_##lab
2663
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2664
- COLLECT_USAGE_INSN(BIN(opt_regexpmatch2));
2665
- COLLECT_USAGE_OPERAND(BIN(opt_regexpmatch2), 0, ci);
2666
- COLLECT_USAGE_OPERAND(BIN(opt_regexpmatch2), 1, cc);
2667
- {
2668
- #line 1610 "insns.def"
2669
- val = vm_opt_regexpmatch2(obj2, obj1);
2670
-
2671
- if (val == Qundef) {
2672
- /* other */
2673
- PUSH(obj2);
2674
- PUSH(obj1);
2675
- CALL_SIMPLE_METHOD(obj2);
2676
- }
2677
-
2678
- #line 2679 "vm.inc"
2679
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2680
- PUSH(val);
2681
- #undef CURRENT_INSN_opt_regexpmatch2
2682
- #undef INSN_IS_SC
2683
- #undef INSN_LABEL
2684
- #undef LABEL_IS_SC
2685
- END_INSN(opt_regexpmatch2);}}}
2686
- INSN_ENTRY(opt_call_c_function){
2687
- {
2688
- rb_insn_func_t funcptr = (rb_insn_func_t)GET_OPERAND(1);
2689
-
2690
- DEBUG_ENTER_INSN("opt_call_c_function");
2691
- ADD_PC(1+1);
2692
- PREFETCH(GET_PC());
2693
- #define CURRENT_INSN_opt_call_c_function 1
2694
- #define INSN_IS_SC() 0
2695
- #define INSN_LABEL(lab) LABEL_opt_call_c_function_##lab
2696
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2697
- COLLECT_USAGE_INSN(BIN(opt_call_c_function));
2698
- COLLECT_USAGE_OPERAND(BIN(opt_call_c_function), 0, funcptr);
2699
- {
2700
- #line 1631 "insns.def"
2701
- reg_cfp = (funcptr)(th, reg_cfp);
2702
-
2703
- if (reg_cfp == 0) {
2704
- VALUE err = th->ec.errinfo;
2705
- th->ec.errinfo = Qnil;
2706
- THROW_EXCEPTION(err);
2707
- }
2708
-
2709
- RESTORE_REGS();
2710
- NEXT_INSN();
2711
-
2712
- #line 2713 "vm.inc"
2713
- #undef CURRENT_INSN_opt_call_c_function
2714
- #undef INSN_IS_SC
2715
- #undef INSN_LABEL
2716
- #undef LABEL_IS_SC
2717
- END_INSN(opt_call_c_function);}}}
2718
- INSN_ENTRY(bitblt){
2719
- {
2720
- VALUE ret;
2721
-
2722
-
2723
- DEBUG_ENTER_INSN("bitblt");
2724
- ADD_PC(1+0);
2725
- PREFETCH(GET_PC());
2726
- #define CURRENT_INSN_bitblt 1
2727
- #define INSN_IS_SC() 0
2728
- #define INSN_LABEL(lab) LABEL_bitblt_##lab
2729
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2730
- COLLECT_USAGE_INSN(BIN(bitblt));
2731
- {
2732
- #line 1654 "insns.def"
2733
- ret = rb_str_new2("a bit of bacon, lettuce and tomato");
2734
-
2735
- #line 2736 "vm.inc"
2736
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2737
- PUSH(ret);
2738
- #undef CURRENT_INSN_bitblt
2739
- #undef INSN_IS_SC
2740
- #undef INSN_LABEL
2741
- #undef LABEL_IS_SC
2742
- END_INSN(bitblt);}}}
2743
- INSN_ENTRY(answer){
2744
- {
2745
- VALUE ret;
2746
-
2747
-
2748
- DEBUG_ENTER_INSN("answer");
2749
- ADD_PC(1+0);
2750
- PREFETCH(GET_PC());
2751
- #define CURRENT_INSN_answer 1
2752
- #define INSN_IS_SC() 0
2753
- #define INSN_LABEL(lab) LABEL_answer_##lab
2754
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2755
- COLLECT_USAGE_INSN(BIN(answer));
2756
- {
2757
- #line 1668 "insns.def"
2758
- ret = INT2FIX(42);
2759
-
2760
- #line 2761 "vm.inc"
2761
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2762
- PUSH(ret);
2763
- #undef CURRENT_INSN_answer
2764
- #undef INSN_IS_SC
2765
- #undef INSN_LABEL
2766
- #undef LABEL_IS_SC
2767
- END_INSN(answer);}}}
2768
- INSN_ENTRY(getlocal_OP__WC__0){
2769
- {
2770
- VALUE val;
2771
- #define level 0
2772
- lindex_t idx = (lindex_t)GET_OPERAND(1);
2773
-
2774
- DEBUG_ENTER_INSN("getlocal_OP__WC__0");
2775
- ADD_PC(1+1);
2776
- PREFETCH(GET_PC());
2777
- #define CURRENT_INSN_getlocal_OP__WC__0 1
2778
- #define INSN_IS_SC() 0
2779
- #define INSN_LABEL(lab) LABEL_getlocal_OP__WC__0_##lab
2780
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2781
- COLLECT_USAGE_INSN(BIN(getlocal_OP__WC__0));
2782
- COLLECT_USAGE_OPERAND(BIN(getlocal_OP__WC__0), 0, idx);
2783
- {
2784
- #line 60 "insns.def"
2785
- val = *(vm_get_ep(GET_EP(), level) - idx);
2786
- RB_DEBUG_COUNTER_INC(lvar_get);
2787
- (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
2788
-
2789
- #line 2790 "vm.inc"
2790
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2791
- PUSH(val);
2792
- #undef level
2793
- #undef CURRENT_INSN_getlocal_OP__WC__0
2794
- #undef INSN_IS_SC
2795
- #undef INSN_LABEL
2796
- #undef LABEL_IS_SC
2797
- END_INSN(getlocal_OP__WC__0);}}}
2798
- INSN_ENTRY(getlocal_OP__WC__1){
2799
- {
2800
- VALUE val;
2801
- #define level 1
2802
- lindex_t idx = (lindex_t)GET_OPERAND(1);
2803
-
2804
- DEBUG_ENTER_INSN("getlocal_OP__WC__1");
2805
- ADD_PC(1+1);
2806
- PREFETCH(GET_PC());
2807
- #define CURRENT_INSN_getlocal_OP__WC__1 1
2808
- #define INSN_IS_SC() 0
2809
- #define INSN_LABEL(lab) LABEL_getlocal_OP__WC__1_##lab
2810
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2811
- COLLECT_USAGE_INSN(BIN(getlocal_OP__WC__1));
2812
- COLLECT_USAGE_OPERAND(BIN(getlocal_OP__WC__1), 0, idx);
2813
- {
2814
- #line 60 "insns.def"
2815
- val = *(vm_get_ep(GET_EP(), level) - idx);
2816
- RB_DEBUG_COUNTER_INC(lvar_get);
2817
- (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
2818
-
2819
- #line 2820 "vm.inc"
2820
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2821
- PUSH(val);
2822
- #undef level
2823
- #undef CURRENT_INSN_getlocal_OP__WC__1
2824
- #undef INSN_IS_SC
2825
- #undef INSN_LABEL
2826
- #undef LABEL_IS_SC
2827
- END_INSN(getlocal_OP__WC__1);}}}
2828
- INSN_ENTRY(setlocal_OP__WC__0){
2829
- {
2830
- #define level 0
2831
- lindex_t idx = (lindex_t)GET_OPERAND(1);
2832
- VALUE val = TOPN(0);
2833
- DEBUG_ENTER_INSN("setlocal_OP__WC__0");
2834
- ADD_PC(1+1);
2835
- PREFETCH(GET_PC());
2836
- POPN(1);
2837
- #define CURRENT_INSN_setlocal_OP__WC__0 1
2838
- #define INSN_IS_SC() 0
2839
- #define INSN_LABEL(lab) LABEL_setlocal_OP__WC__0_##lab
2840
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2841
- COLLECT_USAGE_INSN(BIN(setlocal_OP__WC__0));
2842
- COLLECT_USAGE_OPERAND(BIN(setlocal_OP__WC__0), 0, idx);
2843
- {
2844
- #line 78 "insns.def"
2845
- vm_env_write(vm_get_ep(GET_EP(), level), -(int)idx, val);
2846
- RB_DEBUG_COUNTER_INC(lvar_set);
2847
- (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
2848
-
2849
- #line 2850 "vm.inc"
2850
- #undef level
2851
- #undef CURRENT_INSN_setlocal_OP__WC__0
2852
- #undef INSN_IS_SC
2853
- #undef INSN_LABEL
2854
- #undef LABEL_IS_SC
2855
- END_INSN(setlocal_OP__WC__0);}}}
2856
- INSN_ENTRY(setlocal_OP__WC__1){
2857
- {
2858
- #define level 1
2859
- lindex_t idx = (lindex_t)GET_OPERAND(1);
2860
- VALUE val = TOPN(0);
2861
- DEBUG_ENTER_INSN("setlocal_OP__WC__1");
2862
- ADD_PC(1+1);
2863
- PREFETCH(GET_PC());
2864
- POPN(1);
2865
- #define CURRENT_INSN_setlocal_OP__WC__1 1
2866
- #define INSN_IS_SC() 0
2867
- #define INSN_LABEL(lab) LABEL_setlocal_OP__WC__1_##lab
2868
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2869
- COLLECT_USAGE_INSN(BIN(setlocal_OP__WC__1));
2870
- COLLECT_USAGE_OPERAND(BIN(setlocal_OP__WC__1), 0, idx);
2871
- {
2872
- #line 78 "insns.def"
2873
- vm_env_write(vm_get_ep(GET_EP(), level), -(int)idx, val);
2874
- RB_DEBUG_COUNTER_INC(lvar_set);
2875
- (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
2876
-
2877
- #line 2878 "vm.inc"
2878
- #undef level
2879
- #undef CURRENT_INSN_setlocal_OP__WC__1
2880
- #undef INSN_IS_SC
2881
- #undef INSN_LABEL
2882
- #undef LABEL_IS_SC
2883
- END_INSN(setlocal_OP__WC__1);}}}
2884
- INSN_ENTRY(putobject_OP_INT2FIX_O_0_C_){
2885
- {
2886
- #define val INT2FIX(0)
2887
-
2888
-
2889
- DEBUG_ENTER_INSN("putobject_OP_INT2FIX_O_0_C_");
2890
- ADD_PC(1+0);
2891
- PREFETCH(GET_PC());
2892
- #define CURRENT_INSN_putobject_OP_INT2FIX_O_0_C_ 1
2893
- #define INSN_IS_SC() 0
2894
- #define INSN_LABEL(lab) LABEL_putobject_OP_INT2FIX_O_0_C__##lab
2895
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2896
- COLLECT_USAGE_INSN(BIN(putobject_OP_INT2FIX_O_0_C_));
2897
- {
2898
- #line 287 "insns.def"
2899
- /* */
2900
-
2901
- #line 2902 "vm.inc"
2902
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2903
- PUSH(val);
2904
- #undef val
2905
- #undef CURRENT_INSN_putobject_OP_INT2FIX_O_0_C_
2906
- #undef INSN_IS_SC
2907
- #undef INSN_LABEL
2908
- #undef LABEL_IS_SC
2909
- END_INSN(putobject_OP_INT2FIX_O_0_C_);}}}
2910
- INSN_ENTRY(putobject_OP_INT2FIX_O_1_C_){
2911
- {
2912
- #define val INT2FIX(1)
2913
-
2914
-
2915
- DEBUG_ENTER_INSN("putobject_OP_INT2FIX_O_1_C_");
2916
- ADD_PC(1+0);
2917
- PREFETCH(GET_PC());
2918
- #define CURRENT_INSN_putobject_OP_INT2FIX_O_1_C_ 1
2919
- #define INSN_IS_SC() 0
2920
- #define INSN_LABEL(lab) LABEL_putobject_OP_INT2FIX_O_1_C__##lab
2921
- #define LABEL_IS_SC(lab) LABEL_##lab##_##t
2922
- COLLECT_USAGE_INSN(BIN(putobject_OP_INT2FIX_O_1_C_));
2923
- {
2924
- #line 287 "insns.def"
2925
- /* */
2926
-
2927
- #line 2928 "vm.inc"
2928
- CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
2929
- PUSH(val);
2930
- #undef val
2931
- #undef CURRENT_INSN_putobject_OP_INT2FIX_O_1_C_
2932
- #undef INSN_IS_SC
2933
- #undef INSN_LABEL
2934
- #undef LABEL_IS_SC
2935
- END_INSN(putobject_OP_INT2FIX_O_1_C_);}}}