ruby-internal 0.7.3 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. data/bin/ruby-internal-node-dump +1 -1
  2. data/bin/ruby-internal-obfuscate +1 -1
  3. data/ext/cached/ruby-1.8.4/internal/method/{method.h → internal_method.h} +12 -0
  4. data/ext/cached/ruby-1.8.4/internal/module/getcfp.h +13 -0
  5. data/ext/cached/ruby-1.8.4/internal/node/global_entry.h +94 -0
  6. data/ext/cached/ruby-1.8.4/internal/node/node_type_descrip.c +41 -41
  7. data/ext/cached/ruby-1.8.4/internal/node/nodeinfo.c +288 -273
  8. data/ext/cached/ruby-1.8.4/internal/vm/instruction/insns_info.c +3 -0
  9. data/ext/cached/ruby-1.8.4/internal/vm/iseq/iseq_load.inc +21 -2
  10. data/ext/cached/{ruby-1.8.3/internal/method/method.h → ruby-1.8.5/internal/method/internal_method.h} +12 -0
  11. data/ext/cached/ruby-1.8.5/internal/module/getcfp.h +13 -0
  12. data/ext/cached/ruby-1.8.5/internal/node/global_entry.h +94 -0
  13. data/ext/cached/ruby-1.8.5/internal/node/node_type_descrip.c +45 -45
  14. data/ext/cached/ruby-1.8.5/internal/node/nodeinfo.c +310 -295
  15. data/ext/cached/ruby-1.8.5/internal/vm/instruction/insns_info.c +3 -0
  16. data/ext/cached/ruby-1.8.5/internal/vm/iseq/iseq_load.inc +21 -2
  17. data/ext/cached/{ruby-1.8.5/internal/method/method.h → ruby-1.8.6/internal/method/internal_method.h} +12 -0
  18. data/ext/cached/ruby-1.8.6/internal/module/getcfp.h +13 -0
  19. data/ext/cached/ruby-1.8.6/internal/node/global_entry.h +94 -0
  20. data/ext/cached/ruby-1.8.6/internal/node/node_type_descrip.c +48 -48
  21. data/ext/cached/ruby-1.8.6/internal/node/nodeinfo.c +323 -308
  22. data/ext/cached/ruby-1.8.6/internal/vm/instruction/insns_info.c +3 -0
  23. data/ext/cached/ruby-1.8.6/internal/vm/iseq/iseq_load.inc +21 -2
  24. data/ext/cached/{ruby-1.8.6/internal/method/method.h → ruby-1.8.7/internal/method/internal_method.h} +12 -0
  25. data/ext/cached/ruby-1.8.7/internal/module/getcfp.h +13 -0
  26. data/ext/cached/ruby-1.8.7/internal/node/global_entry.h +98 -0
  27. data/ext/cached/ruby-1.8.7/internal/node/node_type_descrip.c +42 -42
  28. data/ext/cached/ruby-1.8.7/internal/node/nodeinfo.c +276 -261
  29. data/ext/cached/ruby-1.8.7/internal/vm/instruction/insns_info.c +3 -0
  30. data/ext/cached/ruby-1.8.7/internal/vm/iseq/iseq_load.inc +21 -2
  31. data/ext/cached/{ruby-1.9.0/internal/method/method.h → ruby-1.9.1/internal/method/internal_method.h} +12 -0
  32. data/ext/cached/ruby-1.9.1/internal/module/classpath.c +12 -14
  33. data/ext/cached/ruby-1.9.1/internal/module/getcfp.h +25 -0
  34. data/ext/cached/ruby-1.9.1/internal/node/global_entry.h +86 -0
  35. data/ext/cached/ruby-1.9.1/internal/node/node_type_descrip.c +46 -48
  36. data/ext/cached/ruby-1.9.1/internal/node/nodeinfo.c +311 -412
  37. data/ext/cached/ruby-1.9.1/internal/vm/instruction/insns_info.c +3 -0
  38. data/ext/cached/ruby-1.9.1/internal/vm/iseq/iseq_load.inc +28 -6
  39. data/ext/cached/ruby-1.9.1/internal/yarv-headers/iseq.h +1 -0
  40. data/ext/cached/ruby-1.9.1/internal/yarv-headers/parse.h +6 -6
  41. data/ext/cached/ruby-1.9.1/internal/yarv-headers/revision.h +1 -1
  42. data/ext/cached/ruby-1.9.1/internal/yarv-headers/version.h +6 -5
  43. data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_core.h +3 -2
  44. data/ext/cached/ruby-1.9.1/internal/yarv-headers/vm_insnhelper.h +1 -0
  45. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/binding/block.h +0 -0
  46. data/ext/cached/{ruby-1.9.1/internal/method/method.h → ruby-1.9.2/internal/method/internal_method.h} +16 -5
  47. data/ext/cached/ruby-1.9.2/internal/module/classpath.c +40 -0
  48. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/module/classpath.h +0 -0
  49. data/ext/cached/ruby-1.9.2/internal/module/getcfp.h +25 -0
  50. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/block.h +0 -0
  51. data/ext/cached/ruby-1.9.2/internal/node/global_entry.h +93 -0
  52. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/node_type_descrip.c +44 -48
  53. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/nodeinfo.c +291 -439
  54. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/node/nodeinfo.h +0 -0
  55. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/proc/block.h +0 -0
  56. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/tag/tag.h +0 -0
  57. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/instruction/insns_info.c +141 -64
  58. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/instruction/insns_info.h +88 -80
  59. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/vm/iseq/insns_info.inc +77 -70
  60. data/ext/cached/ruby-1.9.2/internal/vm/iseq/iseq_load.inc +426 -0
  61. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/debug.h +1 -1
  62. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/dln.h +3 -3
  63. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/encdb.h +18 -2
  64. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/eval_intern.h +39 -28
  65. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/gc.h +7 -5
  66. data/ext/cached/ruby-1.9.2/internal/yarv-headers/id.h +170 -0
  67. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/iseq.h +20 -10
  68. data/ext/cached/ruby-1.9.2/internal/yarv-headers/method.h +103 -0
  69. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/node.h +14 -47
  70. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/parse.h +31 -148
  71. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regenc.h +7 -3
  72. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regint.h +16 -17
  73. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/regparse.h +4 -1
  74. data/ext/cached/ruby-1.9.2/internal/yarv-headers/revision.h +1 -0
  75. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/thread_pthread.h +4 -1
  76. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/thread_win32.h +1 -1
  77. data/ext/cached/ruby-1.9.2/internal/yarv-headers/timev.h +21 -0
  78. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/transcode_data.h +20 -10
  79. data/ext/cached/ruby-1.9.2/internal/yarv-headers/transdb.h +179 -0
  80. data/ext/cached/ruby-1.9.2/internal/yarv-headers/version.h +55 -0
  81. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_core.h +127 -84
  82. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_exec.h +4 -7
  83. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_insnhelper.h +53 -36
  84. data/ext/cached/{ruby-1.9.0 → ruby-1.9.2}/internal/yarv-headers/vm_opts.h +1 -1
  85. data/ext/cached/ruby-1.9.3/internal/binding/block.h +12 -0
  86. data/ext/cached/ruby-1.9.3/internal/method/internal_method.h +32 -0
  87. data/ext/cached/ruby-1.9.3/internal/module/classpath.c +40 -0
  88. data/ext/cached/{ruby-1.8.0 → ruby-1.9.3}/internal/module/classpath.h +5 -2
  89. data/ext/cached/ruby-1.9.3/internal/module/getcfp.h +25 -0
  90. data/ext/cached/ruby-1.9.3/internal/node/block.h +12 -0
  91. data/ext/cached/ruby-1.9.3/internal/node/global_entry.h +93 -0
  92. data/ext/cached/{ruby-1.8.3 → ruby-1.9.3}/internal/node/node_type_descrip.c +48 -57
  93. data/ext/cached/{ruby-1.6.8 → ruby-1.9.3}/internal/node/nodeinfo.c +589 -740
  94. data/ext/cached/{ruby-1.8.0 → ruby-1.9.3}/internal/node/nodeinfo.h +4 -3
  95. data/ext/cached/ruby-1.9.3/internal/proc/block.h +12 -0
  96. data/ext/cached/ruby-1.9.3/internal/tag/tag.h +6 -0
  97. data/ext/cached/ruby-1.9.3/internal/vm/instruction/insns_info.c +6013 -0
  98. data/ext/cached/ruby-1.9.3/internal/vm/instruction/insns_info.h +899 -0
  99. data/ext/cached/ruby-1.9.3/internal/vm/iseq/insns_info.inc +707 -0
  100. data/ext/cached/ruby-1.9.3/internal/vm/iseq/iseq_load.inc +423 -0
  101. data/ext/cached/ruby-1.9.3/internal/yarv-headers/addr2line.h +21 -0
  102. data/ext/cached/ruby-1.9.3/internal/yarv-headers/atomic.h +56 -0
  103. data/ext/cached/ruby-1.9.3/internal/yarv-headers/constant.h +34 -0
  104. data/ext/cached/ruby-1.9.3/internal/yarv-headers/debug.h +41 -0
  105. data/ext/cached/ruby-1.9.3/internal/yarv-headers/dln.h +50 -0
  106. data/ext/cached/ruby-1.9.3/internal/yarv-headers/encdb.h +167 -0
  107. data/ext/cached/ruby-1.9.3/internal/yarv-headers/eval_intern.h +234 -0
  108. data/ext/cached/ruby-1.9.3/internal/yarv-headers/gc.h +98 -0
  109. data/ext/cached/ruby-1.9.3/internal/yarv-headers/id.h +175 -0
  110. data/ext/cached/ruby-1.9.3/internal/yarv-headers/internal.h +232 -0
  111. data/ext/cached/ruby-1.9.3/internal/yarv-headers/iseq.h +125 -0
  112. data/ext/cached/ruby-1.9.3/internal/yarv-headers/method.h +105 -0
  113. data/ext/cached/ruby-1.9.3/internal/yarv-headers/node.h +503 -0
  114. data/ext/cached/ruby-1.9.3/internal/yarv-headers/parse.h +186 -0
  115. data/ext/cached/ruby-1.9.3/internal/yarv-headers/regenc.h +219 -0
  116. data/ext/cached/ruby-1.9.3/internal/yarv-headers/regint.h +850 -0
  117. data/ext/cached/ruby-1.9.3/internal/yarv-headers/regparse.h +362 -0
  118. data/ext/cached/ruby-1.9.3/internal/yarv-headers/revision.h +1 -0
  119. data/ext/cached/ruby-1.9.3/internal/yarv-headers/thread_pthread.h +51 -0
  120. data/ext/cached/ruby-1.9.3/internal/yarv-headers/thread_win32.h +40 -0
  121. data/ext/cached/ruby-1.9.3/internal/yarv-headers/timev.h +21 -0
  122. data/ext/cached/ruby-1.9.3/internal/yarv-headers/transcode_data.h +117 -0
  123. data/ext/cached/ruby-1.9.3/internal/yarv-headers/transdb.h +189 -0
  124. data/ext/cached/ruby-1.9.3/internal/yarv-headers/version.h +52 -0
  125. data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_core.h +756 -0
  126. data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_exec.h +184 -0
  127. data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_insnhelper.h +220 -0
  128. data/ext/cached/ruby-1.9.3/internal/yarv-headers/vm_opts.h +51 -0
  129. data/ext/internal/binding/block.h +20 -0
  130. data/ext/internal/method/internal_method.h +5 -38
  131. data/ext/internal/method/internal_method.h.rpp +0 -7
  132. data/ext/internal/method/method.c +52 -32
  133. data/ext/internal/module/classpath.c +18 -13
  134. data/ext/internal/module/classpath.h +3 -3
  135. data/ext/internal/module/extconf.rb +3 -2
  136. data/ext/internal/module/getcfp.h +13 -0
  137. data/ext/internal/module/getcfp.h.rpp +44 -0
  138. data/ext/internal/module/module.c +58 -21
  139. data/ext/internal/node/block.h +20 -0
  140. data/ext/internal/node/extconf.rb +2 -0
  141. data/ext/internal/node/global_entry.h +69 -13
  142. data/ext/internal/node/global_entry.h.rpp +11 -2
  143. data/ext/internal/node/node.c +30 -3
  144. data/ext/internal/node/node_type_descrip.c +47 -38
  145. data/ext/internal/node/nodeinfo.c +622 -306
  146. data/ext/internal/node/nodeinfo.h +1 -4
  147. data/ext/internal/proc/block.h +20 -0
  148. data/ext/internal/tag/tag.h +10 -0
  149. data/ext/internal/thread/thread.c +9 -3
  150. data/ext/internal/vm/extconf.rb +1 -0
  151. data/ext/internal/vm/instruction/insns_info.c +3 -5974
  152. data/ext/internal/vm/instruction/insns_info.h +0 -878
  153. data/ext/internal/vm/iseq/extconf.rb +1 -0
  154. data/ext/internal/vm/iseq/iseq.c +38 -4
  155. data/ext/internal/vm/iseq/iseq_load.inc.rpp +23 -5
  156. data/ext/internal/vm/vm.c +28 -0
  157. data/lib/internal/classtree.rb +28 -0
  158. data/lib/internal/debug.rb +10 -2
  159. data/lib/internal/method/as_code.rb +25 -0
  160. data/lib/internal/method/as_expression.rb +2 -3
  161. data/lib/internal/method/origin.rb +29 -0
  162. data/lib/internal/method/signature.rb +5 -300
  163. data/lib/internal/method/signature/argument.rb +102 -0
  164. data/lib/internal/method/signature/iseq.rb +52 -0
  165. data/lib/internal/method/signature/node.rb +160 -0
  166. data/lib/internal/method/signature/signature.rb +23 -0
  167. data/lib/internal/proc/as_code.rb +2 -0
  168. data/lib/internal/proc/as_expression.rb +2 -0
  169. data/lib/internal/vm/bytedecoder.rb +5 -5
  170. data/lib/internal/vm/iseq/as_code.rb +2 -2
  171. data/lib/internal/vm/iseq/as_expression.rb +2 -2
  172. data/test/test_dump_method.rb +1 -1
  173. data/test/test_method.rb +21 -3
  174. data/test/test_node.rb +20 -4
  175. metadata +152 -155
  176. data/ext/cached/ruby-1.6.8/internal/binding/block.h +0 -35
  177. data/ext/cached/ruby-1.6.8/internal/method/method.h +0 -19
  178. data/ext/cached/ruby-1.6.8/internal/module/classpath.c +0 -3
  179. data/ext/cached/ruby-1.6.8/internal/module/classpath.h +0 -8
  180. data/ext/cached/ruby-1.6.8/internal/node/block.h +0 -35
  181. data/ext/cached/ruby-1.6.8/internal/node/global_entry.h +0 -15
  182. data/ext/cached/ruby-1.6.8/internal/node/node_type_descrip.c +0 -149
  183. data/ext/cached/ruby-1.6.8/internal/node/nodeinfo.h +0 -69
  184. data/ext/cached/ruby-1.6.8/internal/proc/block.h +0 -35
  185. data/ext/cached/ruby-1.6.8/internal/tag/tag.h +0 -15
  186. data/ext/cached/ruby-1.6.8/internal/vm/instruction/insns_info.c +0 -39
  187. data/ext/cached/ruby-1.6.8/internal/vm/instruction/insns_info.h +0 -21
  188. data/ext/cached/ruby-1.6.8/internal/vm/iseq/insns_info.inc +0 -12
  189. data/ext/cached/ruby-1.6.8/internal/vm/iseq/iseq_load.inc +0 -9
  190. data/ext/cached/ruby-1.8.0/internal/binding/block.h +0 -37
  191. data/ext/cached/ruby-1.8.0/internal/method/method.h +0 -19
  192. data/ext/cached/ruby-1.8.0/internal/module/classpath.c +0 -27
  193. data/ext/cached/ruby-1.8.0/internal/node/block.h +0 -37
  194. data/ext/cached/ruby-1.8.0/internal/node/global_entry.h +0 -10
  195. data/ext/cached/ruby-1.8.0/internal/node/node_type_descrip.c +0 -155
  196. data/ext/cached/ruby-1.8.0/internal/node/nodeinfo.c +0 -5744
  197. data/ext/cached/ruby-1.8.0/internal/proc/block.h +0 -37
  198. data/ext/cached/ruby-1.8.0/internal/tag/tag.h +0 -15
  199. data/ext/cached/ruby-1.8.0/internal/vm/instruction/insns_info.c +0 -39
  200. data/ext/cached/ruby-1.8.0/internal/vm/instruction/insns_info.h +0 -21
  201. data/ext/cached/ruby-1.8.0/internal/vm/iseq/insns_info.inc +0 -12
  202. data/ext/cached/ruby-1.8.0/internal/vm/iseq/iseq_load.inc +0 -9
  203. data/ext/cached/ruby-1.8.1/internal/binding/block.h +0 -31
  204. data/ext/cached/ruby-1.8.1/internal/method/method.h +0 -19
  205. data/ext/cached/ruby-1.8.1/internal/module/classpath.c +0 -27
  206. data/ext/cached/ruby-1.8.1/internal/module/classpath.h +0 -14
  207. data/ext/cached/ruby-1.8.1/internal/node/block.h +0 -31
  208. data/ext/cached/ruby-1.8.1/internal/node/global_entry.h +0 -10
  209. data/ext/cached/ruby-1.8.1/internal/node/node_type_descrip.c +0 -154
  210. data/ext/cached/ruby-1.8.1/internal/node/nodeinfo.c +0 -5736
  211. data/ext/cached/ruby-1.8.1/internal/node/nodeinfo.h +0 -69
  212. data/ext/cached/ruby-1.8.1/internal/proc/block.h +0 -31
  213. data/ext/cached/ruby-1.8.1/internal/tag/tag.h +0 -16
  214. data/ext/cached/ruby-1.8.1/internal/vm/instruction/insns_info.c +0 -39
  215. data/ext/cached/ruby-1.8.1/internal/vm/instruction/insns_info.h +0 -21
  216. data/ext/cached/ruby-1.8.1/internal/vm/iseq/insns_info.inc +0 -12
  217. data/ext/cached/ruby-1.8.1/internal/vm/iseq/iseq_load.inc +0 -9
  218. data/ext/cached/ruby-1.8.2/internal/binding/block.h +0 -32
  219. data/ext/cached/ruby-1.8.2/internal/method/method.h +0 -19
  220. data/ext/cached/ruby-1.8.2/internal/module/classpath.c +0 -45
  221. data/ext/cached/ruby-1.8.2/internal/module/classpath.h +0 -17
  222. data/ext/cached/ruby-1.8.2/internal/node/block.h +0 -32
  223. data/ext/cached/ruby-1.8.2/internal/node/global_entry.h +0 -10
  224. data/ext/cached/ruby-1.8.2/internal/node/node_type_descrip.c +0 -154
  225. data/ext/cached/ruby-1.8.2/internal/node/nodeinfo.c +0 -5736
  226. data/ext/cached/ruby-1.8.2/internal/node/nodeinfo.h +0 -69
  227. data/ext/cached/ruby-1.8.2/internal/proc/block.h +0 -32
  228. data/ext/cached/ruby-1.8.2/internal/tag/tag.h +0 -16
  229. data/ext/cached/ruby-1.8.2/internal/vm/instruction/insns_info.c +0 -39
  230. data/ext/cached/ruby-1.8.2/internal/vm/instruction/insns_info.h +0 -21
  231. data/ext/cached/ruby-1.8.2/internal/vm/iseq/insns_info.inc +0 -12
  232. data/ext/cached/ruby-1.8.2/internal/vm/iseq/iseq_load.inc +0 -9
  233. data/ext/cached/ruby-1.8.3/internal/binding/block.h +0 -32
  234. data/ext/cached/ruby-1.8.3/internal/module/classpath.c +0 -45
  235. data/ext/cached/ruby-1.8.3/internal/module/classpath.h +0 -17
  236. data/ext/cached/ruby-1.8.3/internal/node/block.h +0 -32
  237. data/ext/cached/ruby-1.8.3/internal/node/global_entry.h +0 -10
  238. data/ext/cached/ruby-1.8.3/internal/node/nodeinfo.c +0 -5736
  239. data/ext/cached/ruby-1.8.3/internal/node/nodeinfo.h +0 -69
  240. data/ext/cached/ruby-1.8.3/internal/proc/block.h +0 -32
  241. data/ext/cached/ruby-1.8.3/internal/tag/tag.h +0 -16
  242. data/ext/cached/ruby-1.8.3/internal/vm/instruction/insns_info.c +0 -39
  243. data/ext/cached/ruby-1.8.3/internal/vm/instruction/insns_info.h +0 -21
  244. data/ext/cached/ruby-1.8.3/internal/vm/iseq/insns_info.inc +0 -12
  245. data/ext/cached/ruby-1.8.3/internal/vm/iseq/iseq_load.inc +0 -9
  246. data/ext/cached/ruby-1.8.7/internal/method/method.h +0 -20
  247. data/ext/cached/ruby-1.9.0/internal/module/classpath.c +0 -42
  248. data/ext/cached/ruby-1.9.0/internal/node/global_entry.h +0 -10
  249. data/ext/cached/ruby-1.9.0/internal/vm/iseq/iseq_load.inc +0 -13
  250. data/ext/cached/ruby-1.9.0/internal/yarv-headers/id.h +0 -83
  251. data/ext/cached/ruby-1.9.0/internal/yarv-headers/revision.h +0 -1
  252. data/ext/cached/ruby-1.9.0/internal/yarv-headers/transdb.h +0 -67
  253. data/ext/cached/ruby-1.9.0/internal/yarv-headers/version.h +0 -57
  254. data/ext/internal/module/cfp.h +0 -13
@@ -0,0 +1,707 @@
1
+ #ifndef ruby_internal_insns_info__inc_
2
+ #define ruby_internal_insns_info__inc_
3
+
4
+ #include <ruby.h>
5
+
6
+ #ifndef RUBY_VM
7
+ #include "env.h"
8
+ #endif
9
+
10
+ /** -*-c-*-
11
+ This file contains instruction information for yarv instruction sequence.
12
+
13
+ ----
14
+ This file is auto generated by insns2vm.rb
15
+ DO NOT TOUCH!
16
+
17
+ If you want to fix something, you must edit 'template/insns_info.inc.tmpl'
18
+ or insns2vm.rb
19
+ */
20
+
21
+ #define TS_VALUE 'V'
22
+ #define TS_GENTRY 'G'
23
+ #define TS_DINDEX 'D'
24
+ #define TS_VARIABLE '.'
25
+ #define TS_CDHASH 'H'
26
+ #define TS_IC 'C'
27
+ #define TS_ID 'I'
28
+ #define TS_LINDEX 'L'
29
+ #define TS_FUNCPTR 'F'
30
+ #define TS_ISEQ 'S'
31
+ #define TS_NUM 'N'
32
+ #define TS_OFFSET 'O'
33
+
34
+ static const char *const insn_name_info[] = {
35
+ "nop",
36
+ "getlocal",
37
+ "setlocal",
38
+ "getspecial",
39
+ "setspecial",
40
+ "getdynamic",
41
+ "setdynamic",
42
+ "getinstancevariable",
43
+ "setinstancevariable",
44
+ "getclassvariable",
45
+ "setclassvariable",
46
+ "getconstant",
47
+ "setconstant",
48
+ "getglobal",
49
+ "setglobal",
50
+ "putnil",
51
+ "putself",
52
+ "putobject",
53
+ "putspecialobject",
54
+ "putiseq",
55
+ "putstring",
56
+ "concatstrings",
57
+ "tostring",
58
+ "toregexp",
59
+ "newarray",
60
+ "duparray",
61
+ "expandarray",
62
+ "concatarray",
63
+ "splatarray",
64
+ "checkincludearray",
65
+ "newhash",
66
+ "newrange",
67
+ "pop",
68
+ "dup",
69
+ "dupn",
70
+ "swap",
71
+ "reput",
72
+ "topn",
73
+ "setn",
74
+ "adjuststack",
75
+ "defined",
76
+ "trace",
77
+ "defineclass",
78
+ "send",
79
+ "invokesuper",
80
+ "invokeblock",
81
+ "leave",
82
+ "finish",
83
+ "throw",
84
+ "jump",
85
+ "branchif",
86
+ "branchunless",
87
+ "getinlinecache",
88
+ "onceinlinecache",
89
+ "setinlinecache",
90
+ "opt_case_dispatch",
91
+ "opt_checkenv",
92
+ "opt_plus",
93
+ "opt_minus",
94
+ "opt_mult",
95
+ "opt_div",
96
+ "opt_mod",
97
+ "opt_eq",
98
+ "opt_neq",
99
+ "opt_lt",
100
+ "opt_le",
101
+ "opt_gt",
102
+ "opt_ge",
103
+ "opt_ltlt",
104
+ "opt_aref",
105
+ "opt_aset",
106
+ "opt_length",
107
+ "opt_size",
108
+ "opt_succ",
109
+ "opt_not",
110
+ "opt_regexpmatch1",
111
+ "opt_regexpmatch2",
112
+ "opt_call_c_function",
113
+ "bitblt",
114
+ "answer",
115
+
116
+ };
117
+
118
+ static const char *const insn_operand_info[] = {
119
+ "",
120
+ "L",
121
+ "L",
122
+ "VN",
123
+ "V",
124
+ "DN",
125
+ "DN",
126
+ "IC",
127
+ "IC",
128
+ "I",
129
+ "I",
130
+ "I",
131
+ "I",
132
+ "G",
133
+ "G",
134
+ "",
135
+ "",
136
+ "V",
137
+ "N",
138
+ "S",
139
+ "V",
140
+ "N",
141
+ "",
142
+ "NN",
143
+ "N",
144
+ "V",
145
+ "NN",
146
+ "",
147
+ "V",
148
+ "V",
149
+ "N",
150
+ "N",
151
+ "",
152
+ "",
153
+ "N",
154
+ "",
155
+ "",
156
+ "N",
157
+ "N",
158
+ "N",
159
+ "NVV",
160
+ "N",
161
+ "ISN",
162
+ "INSNC",
163
+ "NSN",
164
+ "NN",
165
+ "",
166
+ "",
167
+ "N",
168
+ "O",
169
+ "O",
170
+ "O",
171
+ "OC",
172
+ "OC",
173
+ "C",
174
+ "HO",
175
+ "",
176
+ "C",
177
+ "C",
178
+ "C",
179
+ "C",
180
+ "C",
181
+ "C",
182
+ "CC",
183
+ "C",
184
+ "C",
185
+ "C",
186
+ "C",
187
+ "C",
188
+ "C",
189
+ "C",
190
+ "C",
191
+ "C",
192
+ "C",
193
+ "C",
194
+ "V",
195
+ "",
196
+ "F",
197
+ "",
198
+ "",
199
+
200
+ };
201
+
202
+ static const int insn_len_info[] = {
203
+ 1,
204
+ 2,
205
+ 2,
206
+ 3,
207
+ 2,
208
+ 3,
209
+ 3,
210
+ 3,
211
+ 3,
212
+ 2,
213
+ 2,
214
+ 2,
215
+ 2,
216
+ 2,
217
+ 2,
218
+ 1,
219
+ 1,
220
+ 2,
221
+ 2,
222
+ 2,
223
+ 2,
224
+ 2,
225
+ 1,
226
+ 3,
227
+ 2,
228
+ 2,
229
+ 3,
230
+ 1,
231
+ 2,
232
+ 2,
233
+ 2,
234
+ 2,
235
+ 1,
236
+ 1,
237
+ 2,
238
+ 1,
239
+ 1,
240
+ 2,
241
+ 2,
242
+ 2,
243
+ 4,
244
+ 2,
245
+ 4,
246
+ 6,
247
+ 4,
248
+ 3,
249
+ 1,
250
+ 1,
251
+ 2,
252
+ 2,
253
+ 2,
254
+ 2,
255
+ 3,
256
+ 3,
257
+ 2,
258
+ 3,
259
+ 1,
260
+ 2,
261
+ 2,
262
+ 2,
263
+ 2,
264
+ 2,
265
+ 2,
266
+ 3,
267
+ 2,
268
+ 2,
269
+ 2,
270
+ 2,
271
+ 2,
272
+ 2,
273
+ 2,
274
+ 2,
275
+ 2,
276
+ 2,
277
+ 2,
278
+ 2,
279
+ 1,
280
+ 2,
281
+ 1,
282
+ 1,
283
+
284
+ };
285
+
286
+ #ifdef USE_INSN_RET_NUM
287
+ static const int insn_stack_push_num_info[] = {
288
+ 0,
289
+ 1,
290
+ 0,
291
+ 1,
292
+ 0,
293
+ 1,
294
+ 0,
295
+ 1,
296
+ 0,
297
+ 1,
298
+ 0,
299
+ 1,
300
+ 0,
301
+ 1,
302
+ 0,
303
+ 1,
304
+ 1,
305
+ 1,
306
+ 1,
307
+ 1,
308
+ 1,
309
+ 1,
310
+ 1,
311
+ 1,
312
+ 1,
313
+ 1,
314
+ 1,
315
+ 1,
316
+ 1,
317
+ 2,
318
+ 1,
319
+ 1,
320
+ 0,
321
+ 2,
322
+ 1,
323
+ 2,
324
+ 1,
325
+ 1,
326
+ 1,
327
+ 1,
328
+ 1,
329
+ 0,
330
+ 1,
331
+ 1,
332
+ 1,
333
+ 1,
334
+ 1,
335
+ 1,
336
+ 1,
337
+ 0,
338
+ 0,
339
+ 0,
340
+ 1,
341
+ 1,
342
+ 1,
343
+ 0,
344
+ 0,
345
+ 1,
346
+ 1,
347
+ 1,
348
+ 1,
349
+ 1,
350
+ 1,
351
+ 1,
352
+ 1,
353
+ 1,
354
+ 1,
355
+ 1,
356
+ 1,
357
+ 1,
358
+ 1,
359
+ 1,
360
+ 1,
361
+ 1,
362
+ 1,
363
+ 1,
364
+ 1,
365
+ 0,
366
+ 1,
367
+ 1,
368
+
369
+ };
370
+ #endif
371
+
372
+ #ifdef USE_INSN_STACK_INCREASE
373
+ static int
374
+ insn_stack_increase(int depth, int insn, VALUE *opes)
375
+ {
376
+ switch(insn){
377
+ case BIN(nop):{
378
+ return depth + 0;
379
+ }
380
+ case BIN(getlocal):{
381
+ return depth + 1;
382
+ }
383
+ case BIN(setlocal):{
384
+ return depth + -1;
385
+ }
386
+ case BIN(getspecial):{
387
+ return depth + 1;
388
+ }
389
+ case BIN(setspecial):{
390
+ return depth + -1;
391
+ }
392
+ case BIN(getdynamic):{
393
+ return depth + 1;
394
+ }
395
+ case BIN(setdynamic):{
396
+ return depth + -1;
397
+ }
398
+ case BIN(getinstancevariable):{
399
+ return depth + 1;
400
+ }
401
+ case BIN(setinstancevariable):{
402
+ return depth + -1;
403
+ }
404
+ case BIN(getclassvariable):{
405
+ return depth + 1;
406
+ }
407
+ case BIN(setclassvariable):{
408
+ return depth + -1;
409
+ }
410
+ case BIN(getconstant):{
411
+ return depth + 0;
412
+ }
413
+ case BIN(setconstant):{
414
+ return depth + -2;
415
+ }
416
+ case BIN(getglobal):{
417
+ return depth + 1;
418
+ }
419
+ case BIN(setglobal):{
420
+ return depth + -1;
421
+ }
422
+ case BIN(putnil):{
423
+ return depth + 1;
424
+ }
425
+ case BIN(putself):{
426
+ return depth + 1;
427
+ }
428
+ case BIN(putobject):{
429
+ return depth + 1;
430
+ }
431
+ case BIN(putspecialobject):{
432
+ return depth + 1;
433
+ }
434
+ case BIN(putiseq):{
435
+ return depth + 1;
436
+ }
437
+ case BIN(putstring):{
438
+ return depth + 1;
439
+ }
440
+ case BIN(concatstrings):{
441
+ int inc = 0;
442
+ int num = FIX2INT(opes[0]);
443
+ inc += 1 - num;;
444
+ return depth + inc;
445
+ }
446
+ case BIN(tostring):{
447
+ return depth + 0;
448
+ }
449
+ case BIN(toregexp):{
450
+ int inc = 0;
451
+ int cnt = FIX2INT(opes[1]);
452
+ inc += 1 - cnt;;
453
+ return depth + inc;
454
+ }
455
+ case BIN(newarray):{
456
+ int inc = 0;
457
+ int num = FIX2INT(opes[0]);
458
+ inc += 1 - num;;
459
+ return depth + inc;
460
+ }
461
+ case BIN(duparray):{
462
+ return depth + 1;
463
+ }
464
+ case BIN(expandarray):{
465
+ int inc = 0;
466
+ int num = FIX2INT(opes[0]);
467
+ int flag = FIX2INT(opes[1]);
468
+ inc += num - 1 + (flag & 1 ? 1 : 0);;
469
+ return depth + inc;
470
+ }
471
+ case BIN(concatarray):{
472
+ return depth + -1;
473
+ }
474
+ case BIN(splatarray):{
475
+ return depth + 0;
476
+ }
477
+ case BIN(checkincludearray):{
478
+ return depth + 0;
479
+ }
480
+ case BIN(newhash):{
481
+ int inc = 0;
482
+ int num = FIX2INT(opes[0]);
483
+ inc += 1 - num;;
484
+ return depth + inc;
485
+ }
486
+ case BIN(newrange):{
487
+ return depth + -1;
488
+ }
489
+ case BIN(pop):{
490
+ return depth + -1;
491
+ }
492
+ case BIN(dup):{
493
+ return depth + 1;
494
+ }
495
+ case BIN(dupn):{
496
+ int inc = 0;
497
+ int n = FIX2INT(opes[0]);
498
+ inc += n;;
499
+ return depth + inc;
500
+ }
501
+ case BIN(swap):{
502
+ return depth + 0;
503
+ }
504
+ case BIN(reput):{
505
+ int inc = 0;
506
+ inc += 0;;
507
+ return depth + inc;
508
+ }
509
+ case BIN(topn):{
510
+ int inc = 0;
511
+ inc += 1;;
512
+ return depth + inc;
513
+ }
514
+ case BIN(setn):{
515
+ int inc = 0;
516
+ inc += 0;
517
+ return depth + inc;
518
+ }
519
+ case BIN(adjuststack):{
520
+ int inc = 0;
521
+ int n = FIX2INT(opes[0]);
522
+ inc -= n;
523
+ return depth + inc;
524
+ }
525
+ case BIN(defined):{
526
+ return depth + 0;
527
+ }
528
+ case BIN(trace):{
529
+ return depth + 0;
530
+ }
531
+ case BIN(defineclass):{
532
+ return depth + -1;
533
+ }
534
+ case BIN(send):{
535
+ int inc = 0;
536
+ int op_argc = FIX2INT(opes[1]);
537
+ int op_flag = FIX2INT(opes[3]);
538
+ inc += - (int)(op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0));;
539
+ return depth + inc;
540
+ }
541
+ case BIN(invokesuper):{
542
+ int inc = 0;
543
+ int op_argc = FIX2INT(opes[0]);
544
+ int op_flag = FIX2INT(opes[2]);
545
+ inc += - (int)(op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0));;
546
+ return depth + inc;
547
+ }
548
+ case BIN(invokeblock):{
549
+ int inc = 0;
550
+ int num = FIX2INT(opes[0]);
551
+ inc += 1 - num;;
552
+ return depth + inc;
553
+ }
554
+ case BIN(leave):{
555
+ return depth + 0;
556
+ }
557
+ case BIN(finish):{
558
+ return depth + 0;
559
+ }
560
+ case BIN(throw):{
561
+ return depth + 0;
562
+ }
563
+ case BIN(jump):{
564
+ return depth + 0;
565
+ }
566
+ case BIN(branchif):{
567
+ return depth + -1;
568
+ }
569
+ case BIN(branchunless):{
570
+ return depth + -1;
571
+ }
572
+ case BIN(getinlinecache):{
573
+ return depth + 1;
574
+ }
575
+ case BIN(onceinlinecache):{
576
+ return depth + 1;
577
+ }
578
+ case BIN(setinlinecache):{
579
+ return depth + 0;
580
+ }
581
+ case BIN(opt_case_dispatch):{
582
+ int inc = 0;
583
+ inc += -1;;
584
+ return depth + inc;
585
+ }
586
+ case BIN(opt_checkenv):{
587
+ return depth + 0;
588
+ }
589
+ case BIN(opt_plus):{
590
+ return depth + -1;
591
+ }
592
+ case BIN(opt_minus):{
593
+ return depth + -1;
594
+ }
595
+ case BIN(opt_mult):{
596
+ return depth + -1;
597
+ }
598
+ case BIN(opt_div):{
599
+ return depth + -1;
600
+ }
601
+ case BIN(opt_mod):{
602
+ return depth + -1;
603
+ }
604
+ case BIN(opt_eq):{
605
+ return depth + -1;
606
+ }
607
+ case BIN(opt_neq):{
608
+ return depth + -1;
609
+ }
610
+ case BIN(opt_lt):{
611
+ return depth + -1;
612
+ }
613
+ case BIN(opt_le):{
614
+ return depth + -1;
615
+ }
616
+ case BIN(opt_gt):{
617
+ return depth + -1;
618
+ }
619
+ case BIN(opt_ge):{
620
+ return depth + -1;
621
+ }
622
+ case BIN(opt_ltlt):{
623
+ return depth + -1;
624
+ }
625
+ case BIN(opt_aref):{
626
+ return depth + -1;
627
+ }
628
+ case BIN(opt_aset):{
629
+ return depth + -2;
630
+ }
631
+ case BIN(opt_length):{
632
+ return depth + 0;
633
+ }
634
+ case BIN(opt_size):{
635
+ return depth + 0;
636
+ }
637
+ case BIN(opt_succ):{
638
+ return depth + 0;
639
+ }
640
+ case BIN(opt_not):{
641
+ return depth + 0;
642
+ }
643
+ case BIN(opt_regexpmatch1):{
644
+ return depth + 0;
645
+ }
646
+ case BIN(opt_regexpmatch2):{
647
+ return depth + -1;
648
+ }
649
+ case BIN(opt_call_c_function):{
650
+ return depth + 0;
651
+ }
652
+ case BIN(bitblt):{
653
+ return depth + 1;
654
+ }
655
+ case BIN(answer):{
656
+ return depth + 1;
657
+ }
658
+
659
+ default:
660
+ rb_bug("insn_sp_increase: unreachable");
661
+ }
662
+ return 0;
663
+ }
664
+ #endif
665
+
666
+ /* some utilities */
667
+
668
+ static int
669
+ insn_len(VALUE insn)
670
+ {
671
+ return insn_len_info[(int)insn];
672
+ }
673
+
674
+ static const char *
675
+ insn_name(VALUE insn)
676
+ {
677
+ return insn_name_info[(int)insn];
678
+ }
679
+
680
+ static const char *
681
+ insn_op_types(VALUE insn)
682
+ {
683
+ return insn_operand_info[(int)insn];
684
+ }
685
+
686
+ static int
687
+ insn_op_type(VALUE insn, long pos)
688
+ {
689
+ int len = insn_len(insn) - 1;
690
+ if(pos < len){
691
+ return insn_operand_info[(int)insn][pos];
692
+ }
693
+ else{
694
+ return 0;
695
+ }
696
+ }
697
+
698
+ #ifdef USE_INSN_RET_NUM
699
+ static int
700
+ insn_ret_num(VALUE insn)
701
+ {
702
+ return insn_stack_push_num_info[(int)insn];
703
+ }
704
+ #endif
705
+
706
+ #endif
707
+