debase-ruby_core_source 0.10.2 → 0.10.11

Sign up to get free protection for your applications and to get access to all the features.
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_);}}}