debase-ruby_core_source 0.10.0 → 0.10.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (191) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +1 -0
  4. data/Rakefile +2 -2
  5. data/lib/debase/ruby_core_source.rb +1 -0
  6. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/addr2line.h +21 -0
  7. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/ccan/build_assert/build_assert.h +40 -0
  8. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/ccan/check_type/check_type.h +63 -0
  9. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/ccan/container_of/container_of.h +142 -0
  10. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/ccan/list/list.h +635 -0
  11. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/ccan/str/str.h +16 -0
  12. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/constant.h +43 -0
  13. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/dln.h +51 -0
  14. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/eval_intern.h +275 -0
  15. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/gc.h +107 -0
  16. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/id.h +210 -0
  17. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/insns.inc +107 -0
  18. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/insns_info.inc +752 -0
  19. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/internal.h +1198 -0
  20. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/iseq.h +158 -0
  21. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/known_errors.inc +746 -0
  22. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/method.h +144 -0
  23. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/node.h +544 -0
  24. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/node_name.inc +212 -0
  25. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/opt_sc.inc +734 -0
  26. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/optinsn.inc +83 -0
  27. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/optunifs.inc +124 -0
  28. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/parse.h +184 -0
  29. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/probes_helper.h +67 -0
  30. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/regenc.h +237 -0
  31. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/regint.h +972 -0
  32. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/regparse.h +363 -0
  33. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/revision.h +1 -0
  34. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/ruby_atomic.h +170 -0
  35. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/siphash.h +48 -0
  36. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/symbol.h +88 -0
  37. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/thread_pthread.h +54 -0
  38. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/thread_win32.h +36 -0
  39. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/timev.h +42 -0
  40. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/transcode_data.h +123 -0
  41. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/version.h +52 -0
  42. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/vm.inc +3372 -0
  43. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/vm_core.h +1163 -0
  44. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/vm_debug.h +37 -0
  45. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/vm_exec.h +182 -0
  46. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/vm_insnhelper.h +233 -0
  47. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/vm_opts.h +56 -0
  48. data/lib/debase/ruby_core_source/ruby-2.2.9-p480/vmtc.inc +105 -0
  49. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/addr2line.h +21 -0
  50. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/ccan/build_assert/build_assert.h +40 -0
  51. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/ccan/check_type/check_type.h +63 -0
  52. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/ccan/container_of/container_of.h +142 -0
  53. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/ccan/list/list.h +773 -0
  54. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/ccan/str/str.h +16 -0
  55. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/constant.h +50 -0
  56. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/dln.h +51 -0
  57. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/encindex.h +67 -0
  58. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/eval_intern.h +304 -0
  59. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/gc.h +114 -0
  60. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/id.h +211 -0
  61. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/id_table.h +30 -0
  62. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/insns.inc +110 -0
  63. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/insns_info.inc +776 -0
  64. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/internal.h +1408 -0
  65. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/iseq.h +249 -0
  66. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/known_errors.inc +746 -0
  67. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/method.h +213 -0
  68. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/node.h +520 -0
  69. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/node_name.inc +208 -0
  70. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/opt_sc.inc +758 -0
  71. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/optinsn.inc +83 -0
  72. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/optunifs.inc +127 -0
  73. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/parse.h +185 -0
  74. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/probes_helper.h +43 -0
  75. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/regenc.h +237 -0
  76. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/regint.h +987 -0
  77. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/regparse.h +367 -0
  78. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/revision.h +1 -0
  79. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/ruby_atomic.h +233 -0
  80. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/siphash.h +48 -0
  81. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/symbol.h +108 -0
  82. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/thread_pthread.h +54 -0
  83. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/thread_win32.h +36 -0
  84. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/timev.h +42 -0
  85. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/transcode_data.h +139 -0
  86. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/version.h +55 -0
  87. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/vm.inc +3414 -0
  88. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/vm_call_iseq_optimized.inc +212 -0
  89. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/vm_core.h +1240 -0
  90. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/vm_debug.h +37 -0
  91. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/vm_exec.h +182 -0
  92. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/vm_insnhelper.h +243 -0
  93. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/vm_opts.h +57 -0
  94. data/lib/debase/ruby_core_source/ruby-2.3.6-p384/vmtc.inc +108 -0
  95. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/addr2line.h +21 -0
  96. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/ccan/build_assert/build_assert.h +40 -0
  97. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/ccan/check_type/check_type.h +63 -0
  98. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/ccan/container_of/container_of.h +142 -0
  99. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/ccan/list/list.h +773 -0
  100. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/ccan/str/str.h +16 -0
  101. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/constant.h +50 -0
  102. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/dln.h +51 -0
  103. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/encindex.h +67 -0
  104. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/eval_intern.h +315 -0
  105. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/gc.h +114 -0
  106. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/id.h +220 -0
  107. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/id_table.h +31 -0
  108. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/insns.inc +112 -0
  109. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/insns_info.inc +796 -0
  110. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/internal.h +1790 -0
  111. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/iseq.h +252 -0
  112. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/known_errors.inc +746 -0
  113. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/method.h +213 -0
  114. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/node.h +520 -0
  115. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/node_name.inc +208 -0
  116. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/opt_sc.inc +774 -0
  117. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/optinsn.inc +83 -0
  118. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/optunifs.inc +129 -0
  119. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/parse.h +185 -0
  120. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/probes_helper.h +43 -0
  121. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/regenc.h +254 -0
  122. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/regint.h +938 -0
  123. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/regparse.h +370 -0
  124. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/revision.h +1 -0
  125. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/ruby_assert.h +54 -0
  126. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/ruby_atomic.h +233 -0
  127. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/siphash.h +48 -0
  128. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/symbol.h +108 -0
  129. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/thread_pthread.h +54 -0
  130. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/thread_win32.h +36 -0
  131. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/timev.h +42 -0
  132. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/transcode_data.h +139 -0
  133. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/version.h +73 -0
  134. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/vm.inc +3415 -0
  135. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/vm_call_iseq_optimized.inc +212 -0
  136. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/vm_core.h +1646 -0
  137. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/vm_debug.h +37 -0
  138. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/vm_exec.h +182 -0
  139. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/vm_insnhelper.h +243 -0
  140. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/vm_opts.h +57 -0
  141. data/lib/debase/ruby_core_source/ruby-2.4.3-p205/vmtc.inc +110 -0
  142. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/addr2line.h +21 -0
  143. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/ccan/build_assert/build_assert.h +40 -0
  144. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/ccan/check_type/check_type.h +63 -0
  145. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/ccan/container_of/container_of.h +142 -0
  146. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/ccan/list/list.h +773 -0
  147. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/ccan/str/str.h +16 -0
  148. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/constant.h +50 -0
  149. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/debug_counter.h +109 -0
  150. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/dln.h +51 -0
  151. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/encindex.h +67 -0
  152. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/eval_intern.h +334 -0
  153. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/gc.h +116 -0
  154. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/id.h +250 -0
  155. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/id_table.h +31 -0
  156. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/insns.inc +217 -0
  157. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/insns_info.inc +1570 -0
  158. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/internal.h +2035 -0
  159. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/iseq.h +307 -0
  160. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/known_errors.inc +746 -0
  161. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/method.h +218 -0
  162. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/node.h +540 -0
  163. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/node_name.inc +198 -0
  164. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/opt_sc.inc +1601 -0
  165. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/optinsn.inc +103 -0
  166. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/optunifs.inc +61 -0
  167. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/parse.h +206 -0
  168. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/probes_helper.h +43 -0
  169. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/regenc.h +254 -0
  170. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/regint.h +938 -0
  171. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/regparse.h +370 -0
  172. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/revision.h +1 -0
  173. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/ruby_assert.h +54 -0
  174. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/ruby_atomic.h +233 -0
  175. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/siphash.h +48 -0
  176. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/symbol.h +108 -0
  177. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/thread_pthread.h +54 -0
  178. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/thread_win32.h +36 -0
  179. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/timev.h +42 -0
  180. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/transcode_data.h +139 -0
  181. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/version.h +73 -0
  182. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/vm.inc +3667 -0
  183. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/vm_call_iseq_optimized.inc +213 -0
  184. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/vm_core.h +1768 -0
  185. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/vm_debug.h +37 -0
  186. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/vm_exec.h +192 -0
  187. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/vm_insnhelper.h +255 -0
  188. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/vm_opts.h +57 -0
  189. data/lib/debase/ruby_core_source/ruby-2.5.0-rc1/vmtc.inc +214 -0
  190. data/lib/debase/ruby_core_source/version.rb +1 -1
  191. metadata +186 -2
@@ -0,0 +1,796 @@
1
+ /** -*-c-*-
2
+ This file contains instruction information for yarv instruction sequence.
3
+
4
+ ----
5
+ This file is auto generated by insns2vm.rb
6
+ DO NOT TOUCH!
7
+
8
+ If you want to fix something, you must edit 'template/insns_info.inc.tmpl'
9
+ or tool/insns2vm.rb
10
+ */
11
+
12
+ #define TS_OFFSET 'O'
13
+ #define TS_NUM 'N'
14
+ #define TS_LINDEX 'L'
15
+ #define TS_VALUE 'V'
16
+ #define TS_ID 'I'
17
+ #define TS_GENTRY 'G'
18
+ #define TS_IC 'K'
19
+ #define TS_CALLINFO 'C'
20
+ #define TS_CALLCACHE 'E'
21
+ #define TS_CDHASH 'H'
22
+ #define TS_ISEQ 'S'
23
+ #define TS_VARIABLE '.'
24
+ #define TS_FUNCPTR 'F'
25
+
26
+ static const char *const insn_name_info[] = {
27
+ "nop",
28
+ "getlocal",
29
+ "setlocal",
30
+ "getspecial",
31
+ "setspecial",
32
+ "getinstancevariable",
33
+ "setinstancevariable",
34
+ "getclassvariable",
35
+ "setclassvariable",
36
+ "getconstant",
37
+ "setconstant",
38
+ "getglobal",
39
+ "setglobal",
40
+ "putnil",
41
+ "putself",
42
+ "putobject",
43
+ "putspecialobject",
44
+ "putiseq",
45
+ "putstring",
46
+ "concatstrings",
47
+ "tostring",
48
+ "freezestring",
49
+ "toregexp",
50
+ "newarray",
51
+ "duparray",
52
+ "expandarray",
53
+ "concatarray",
54
+ "splatarray",
55
+ "newhash",
56
+ "newrange",
57
+ "pop",
58
+ "dup",
59
+ "dupn",
60
+ "swap",
61
+ "reverse",
62
+ "reput",
63
+ "topn",
64
+ "setn",
65
+ "adjuststack",
66
+ "defined",
67
+ "checkmatch",
68
+ "checkkeyword",
69
+ "trace",
70
+ "defineclass",
71
+ "send",
72
+ "opt_str_freeze",
73
+ "opt_newarray_max",
74
+ "opt_newarray_min",
75
+ "opt_send_without_block",
76
+ "invokesuper",
77
+ "invokeblock",
78
+ "leave",
79
+ "throw",
80
+ "jump",
81
+ "branchif",
82
+ "branchunless",
83
+ "branchnil",
84
+ "getinlinecache",
85
+ "setinlinecache",
86
+ "once",
87
+ "opt_case_dispatch",
88
+ "opt_plus",
89
+ "opt_minus",
90
+ "opt_mult",
91
+ "opt_div",
92
+ "opt_mod",
93
+ "opt_eq",
94
+ "opt_neq",
95
+ "opt_lt",
96
+ "opt_le",
97
+ "opt_gt",
98
+ "opt_ge",
99
+ "opt_ltlt",
100
+ "opt_aref",
101
+ "opt_aset",
102
+ "opt_aset_with",
103
+ "opt_aref_with",
104
+ "opt_length",
105
+ "opt_size",
106
+ "opt_empty_p",
107
+ "opt_succ",
108
+ "opt_not",
109
+ "opt_regexpmatch1",
110
+ "opt_regexpmatch2",
111
+ "opt_call_c_function",
112
+ "bitblt",
113
+ "answer",
114
+ "getlocal_OP__WC__0",
115
+ "getlocal_OP__WC__1",
116
+ "setlocal_OP__WC__0",
117
+ "setlocal_OP__WC__1",
118
+ "putobject_OP_INT2FIX_O_0_C_",
119
+ "putobject_OP_INT2FIX_O_1_C_",
120
+
121
+ };
122
+
123
+ static const char *const insn_operand_info[] = {
124
+ "",
125
+ "LN",
126
+ "LN",
127
+ "NN",
128
+ "N",
129
+ "IK",
130
+ "IK",
131
+ "I",
132
+ "I",
133
+ "I",
134
+ "I",
135
+ "G",
136
+ "G",
137
+ "",
138
+ "",
139
+ "V",
140
+ "N",
141
+ "S",
142
+ "V",
143
+ "N",
144
+ "",
145
+ "V",
146
+ "NN",
147
+ "N",
148
+ "V",
149
+ "NN",
150
+ "",
151
+ "V",
152
+ "N",
153
+ "N",
154
+ "",
155
+ "",
156
+ "N",
157
+ "",
158
+ "N",
159
+ "",
160
+ "N",
161
+ "N",
162
+ "N",
163
+ "NVV",
164
+ "N",
165
+ "LN",
166
+ "N",
167
+ "ISN",
168
+ "CES",
169
+ "V",
170
+ "N",
171
+ "N",
172
+ "CE",
173
+ "CES",
174
+ "C",
175
+ "",
176
+ "N",
177
+ "O",
178
+ "O",
179
+ "O",
180
+ "O",
181
+ "OK",
182
+ "K",
183
+ "SK",
184
+ "HO",
185
+ "CE",
186
+ "CE",
187
+ "CE",
188
+ "CE",
189
+ "CE",
190
+ "CE",
191
+ "CECE",
192
+ "CE",
193
+ "CE",
194
+ "CE",
195
+ "CE",
196
+ "CE",
197
+ "CE",
198
+ "CE",
199
+ "CEV",
200
+ "CEV",
201
+ "CE",
202
+ "CE",
203
+ "CE",
204
+ "CE",
205
+ "CE",
206
+ "V",
207
+ "CE",
208
+ "F",
209
+ "",
210
+ "",
211
+ "L",
212
+ "L",
213
+ "L",
214
+ "L",
215
+ "",
216
+ "",
217
+
218
+ };
219
+
220
+ static const int insn_len_info[] = {
221
+ 1,
222
+ 3,
223
+ 3,
224
+ 3,
225
+ 2,
226
+ 3,
227
+ 3,
228
+ 2,
229
+ 2,
230
+ 2,
231
+ 2,
232
+ 2,
233
+ 2,
234
+ 1,
235
+ 1,
236
+ 2,
237
+ 2,
238
+ 2,
239
+ 2,
240
+ 2,
241
+ 1,
242
+ 2,
243
+ 3,
244
+ 2,
245
+ 2,
246
+ 3,
247
+ 1,
248
+ 2,
249
+ 2,
250
+ 2,
251
+ 1,
252
+ 1,
253
+ 2,
254
+ 1,
255
+ 2,
256
+ 1,
257
+ 2,
258
+ 2,
259
+ 2,
260
+ 4,
261
+ 2,
262
+ 3,
263
+ 2,
264
+ 4,
265
+ 4,
266
+ 2,
267
+ 2,
268
+ 2,
269
+ 3,
270
+ 4,
271
+ 2,
272
+ 1,
273
+ 2,
274
+ 2,
275
+ 2,
276
+ 2,
277
+ 2,
278
+ 3,
279
+ 2,
280
+ 3,
281
+ 3,
282
+ 3,
283
+ 3,
284
+ 3,
285
+ 3,
286
+ 3,
287
+ 3,
288
+ 5,
289
+ 3,
290
+ 3,
291
+ 3,
292
+ 3,
293
+ 3,
294
+ 3,
295
+ 3,
296
+ 4,
297
+ 4,
298
+ 3,
299
+ 3,
300
+ 3,
301
+ 3,
302
+ 3,
303
+ 2,
304
+ 3,
305
+ 2,
306
+ 1,
307
+ 1,
308
+ 2,
309
+ 2,
310
+ 2,
311
+ 2,
312
+ 1,
313
+ 1,
314
+
315
+ };
316
+
317
+ #ifdef USE_INSN_RET_NUM
318
+ static const int insn_stack_push_num_info[] = {
319
+ 0,
320
+ 1,
321
+ 0,
322
+ 1,
323
+ 0,
324
+ 1,
325
+ 0,
326
+ 1,
327
+ 0,
328
+ 1,
329
+ 0,
330
+ 1,
331
+ 0,
332
+ 1,
333
+ 1,
334
+ 1,
335
+ 1,
336
+ 1,
337
+ 1,
338
+ 1,
339
+ 1,
340
+ 1,
341
+ 1,
342
+ 1,
343
+ 1,
344
+ 1,
345
+ 1,
346
+ 1,
347
+ 1,
348
+ 1,
349
+ 0,
350
+ 2,
351
+ 1,
352
+ 2,
353
+ 1,
354
+ 1,
355
+ 1,
356
+ 1,
357
+ 1,
358
+ 1,
359
+ 1,
360
+ 1,
361
+ 0,
362
+ 1,
363
+ 1,
364
+ 1,
365
+ 1,
366
+ 1,
367
+ 1,
368
+ 1,
369
+ 1,
370
+ 1,
371
+ 1,
372
+ 0,
373
+ 0,
374
+ 0,
375
+ 0,
376
+ 1,
377
+ 1,
378
+ 1,
379
+ 0,
380
+ 1,
381
+ 1,
382
+ 1,
383
+ 1,
384
+ 1,
385
+ 1,
386
+ 1,
387
+ 1,
388
+ 1,
389
+ 1,
390
+ 1,
391
+ 1,
392
+ 1,
393
+ 1,
394
+ 1,
395
+ 1,
396
+ 1,
397
+ 1,
398
+ 1,
399
+ 1,
400
+ 1,
401
+ 1,
402
+ 1,
403
+ 0,
404
+ 1,
405
+ 1,
406
+ 1,
407
+ 1,
408
+ 0,
409
+ 0,
410
+ 1,
411
+ 1,
412
+
413
+ };
414
+ #endif
415
+
416
+ #ifdef USE_INSN_STACK_INCREASE
417
+ static int
418
+ insn_stack_increase(int depth, int insn, VALUE *opes)
419
+ {
420
+ switch(insn){
421
+ case BIN(nop):{
422
+ return depth + 0;
423
+ }
424
+ case BIN(getlocal):{
425
+ return depth + 1;
426
+ }
427
+ case BIN(setlocal):{
428
+ return depth + -1;
429
+ }
430
+ case BIN(getspecial):{
431
+ return depth + 1;
432
+ }
433
+ case BIN(setspecial):{
434
+ return depth + -1;
435
+ }
436
+ case BIN(getinstancevariable):{
437
+ return depth + 1;
438
+ }
439
+ case BIN(setinstancevariable):{
440
+ return depth + -1;
441
+ }
442
+ case BIN(getclassvariable):{
443
+ return depth + 1;
444
+ }
445
+ case BIN(setclassvariable):{
446
+ return depth + -1;
447
+ }
448
+ case BIN(getconstant):{
449
+ return depth + 0;
450
+ }
451
+ case BIN(setconstant):{
452
+ return depth + -2;
453
+ }
454
+ case BIN(getglobal):{
455
+ return depth + 1;
456
+ }
457
+ case BIN(setglobal):{
458
+ return depth + -1;
459
+ }
460
+ case BIN(putnil):{
461
+ return depth + 1;
462
+ }
463
+ case BIN(putself):{
464
+ return depth + 1;
465
+ }
466
+ case BIN(putobject):{
467
+ return depth + 1;
468
+ }
469
+ case BIN(putspecialobject):{
470
+ return depth + 1;
471
+ }
472
+ case BIN(putiseq):{
473
+ return depth + 1;
474
+ }
475
+ case BIN(putstring):{
476
+ return depth + 1;
477
+ }
478
+ case BIN(concatstrings):{
479
+ int inc = 0;
480
+ int num = FIX2INT(opes[0]);
481
+ inc += 1 - num;;
482
+ return depth + inc;
483
+ }
484
+ case BIN(tostring):{
485
+ return depth + 0;
486
+ }
487
+ case BIN(freezestring):{
488
+ return depth + 0;
489
+ }
490
+ case BIN(toregexp):{
491
+ int inc = 0;
492
+ int cnt = FIX2INT(opes[1]);
493
+ inc += 1 - cnt;;
494
+ return depth + inc;
495
+ }
496
+ case BIN(newarray):{
497
+ int inc = 0;
498
+ int num = FIX2INT(opes[0]);
499
+ inc += 1 - num;;
500
+ return depth + inc;
501
+ }
502
+ case BIN(duparray):{
503
+ return depth + 1;
504
+ }
505
+ case BIN(expandarray):{
506
+ int inc = 0;
507
+ int num = FIX2INT(opes[0]);
508
+ int flag = FIX2INT(opes[1]);
509
+ inc += num - 1 + (flag & 1 ? 1 : 0);;
510
+ return depth + inc;
511
+ }
512
+ case BIN(concatarray):{
513
+ return depth + -1;
514
+ }
515
+ case BIN(splatarray):{
516
+ return depth + 0;
517
+ }
518
+ case BIN(newhash):{
519
+ int inc = 0;
520
+ int num = FIX2INT(opes[0]);
521
+ inc += 1 - num;;
522
+ return depth + inc;
523
+ }
524
+ case BIN(newrange):{
525
+ return depth + -1;
526
+ }
527
+ case BIN(pop):{
528
+ return depth + -1;
529
+ }
530
+ case BIN(dup):{
531
+ return depth + 1;
532
+ }
533
+ case BIN(dupn):{
534
+ int inc = 0;
535
+ int n = FIX2INT(opes[0]);
536
+ inc += n;;
537
+ return depth + inc;
538
+ }
539
+ case BIN(swap):{
540
+ return depth + 0;
541
+ }
542
+ case BIN(reverse):{
543
+ int inc = 0;
544
+ inc += 0;;
545
+ return depth + inc;
546
+ }
547
+ case BIN(reput):{
548
+ int inc = 0;
549
+ inc += 0;;
550
+ return depth + inc;
551
+ }
552
+ case BIN(topn):{
553
+ int inc = 0;
554
+ inc += 1;;
555
+ return depth + inc;
556
+ }
557
+ case BIN(setn):{
558
+ int inc = 0;
559
+ inc += 0;
560
+ return depth + inc;
561
+ }
562
+ case BIN(adjuststack):{
563
+ int inc = 0;
564
+ int n = FIX2INT(opes[0]);
565
+ inc -= n;
566
+ return depth + inc;
567
+ }
568
+ case BIN(defined):{
569
+ return depth + 0;
570
+ }
571
+ case BIN(checkmatch):{
572
+ return depth + -1;
573
+ }
574
+ case BIN(checkkeyword):{
575
+ return depth + 1;
576
+ }
577
+ case BIN(trace):{
578
+ return depth + 0;
579
+ }
580
+ case BIN(defineclass):{
581
+ return depth + -1;
582
+ }
583
+ case BIN(send):{
584
+ int inc = 0;
585
+ CALL_INFO ci = (CALL_INFO)(opes[0]);
586
+ inc += - (int)(ci->orig_argc + ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0));;
587
+ return depth + inc;
588
+ }
589
+ case BIN(opt_str_freeze):{
590
+ return depth + 1;
591
+ }
592
+ case BIN(opt_newarray_max):{
593
+ int inc = 0;
594
+ int num = FIX2INT(opes[0]);
595
+ inc += 1 - num;;
596
+ return depth + inc;
597
+ }
598
+ case BIN(opt_newarray_min):{
599
+ int inc = 0;
600
+ int num = FIX2INT(opes[0]);
601
+ inc += 1 - num;;
602
+ return depth + inc;
603
+ }
604
+ case BIN(opt_send_without_block):{
605
+ int inc = 0;
606
+ CALL_INFO ci = (CALL_INFO)(opes[0]);
607
+ inc += -ci->orig_argc;;
608
+ return depth + inc;
609
+ }
610
+ case BIN(invokesuper):{
611
+ int inc = 0;
612
+ CALL_INFO ci = (CALL_INFO)(opes[0]);
613
+ inc += - (int)(ci->orig_argc + ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0));;
614
+ return depth + inc;
615
+ }
616
+ case BIN(invokeblock):{
617
+ int inc = 0;
618
+ CALL_INFO ci = (CALL_INFO)(opes[0]);
619
+ inc += 1 - ci->orig_argc;;
620
+ return depth + inc;
621
+ }
622
+ case BIN(leave):{
623
+ return depth + 0;
624
+ }
625
+ case BIN(throw):{
626
+ return depth + 0;
627
+ }
628
+ case BIN(jump):{
629
+ return depth + 0;
630
+ }
631
+ case BIN(branchif):{
632
+ return depth + -1;
633
+ }
634
+ case BIN(branchunless):{
635
+ return depth + -1;
636
+ }
637
+ case BIN(branchnil):{
638
+ return depth + -1;
639
+ }
640
+ case BIN(getinlinecache):{
641
+ return depth + 1;
642
+ }
643
+ case BIN(setinlinecache):{
644
+ return depth + 0;
645
+ }
646
+ case BIN(once):{
647
+ return depth + 1;
648
+ }
649
+ case BIN(opt_case_dispatch):{
650
+ int inc = 0;
651
+ inc += -1;;
652
+ return depth + inc;
653
+ }
654
+ case BIN(opt_plus):{
655
+ return depth + -1;
656
+ }
657
+ case BIN(opt_minus):{
658
+ return depth + -1;
659
+ }
660
+ case BIN(opt_mult):{
661
+ return depth + -1;
662
+ }
663
+ case BIN(opt_div):{
664
+ return depth + -1;
665
+ }
666
+ case BIN(opt_mod):{
667
+ return depth + -1;
668
+ }
669
+ case BIN(opt_eq):{
670
+ return depth + -1;
671
+ }
672
+ case BIN(opt_neq):{
673
+ return depth + -1;
674
+ }
675
+ case BIN(opt_lt):{
676
+ return depth + -1;
677
+ }
678
+ case BIN(opt_le):{
679
+ return depth + -1;
680
+ }
681
+ case BIN(opt_gt):{
682
+ return depth + -1;
683
+ }
684
+ case BIN(opt_ge):{
685
+ return depth + -1;
686
+ }
687
+ case BIN(opt_ltlt):{
688
+ return depth + -1;
689
+ }
690
+ case BIN(opt_aref):{
691
+ return depth + -1;
692
+ }
693
+ case BIN(opt_aset):{
694
+ return depth + -2;
695
+ }
696
+ case BIN(opt_aset_with):{
697
+ return depth + -1;
698
+ }
699
+ case BIN(opt_aref_with):{
700
+ return depth + 0;
701
+ }
702
+ case BIN(opt_length):{
703
+ return depth + 0;
704
+ }
705
+ case BIN(opt_size):{
706
+ return depth + 0;
707
+ }
708
+ case BIN(opt_empty_p):{
709
+ return depth + 0;
710
+ }
711
+ case BIN(opt_succ):{
712
+ return depth + 0;
713
+ }
714
+ case BIN(opt_not):{
715
+ return depth + 0;
716
+ }
717
+ case BIN(opt_regexpmatch1):{
718
+ return depth + 0;
719
+ }
720
+ case BIN(opt_regexpmatch2):{
721
+ return depth + -1;
722
+ }
723
+ case BIN(opt_call_c_function):{
724
+ return depth + 0;
725
+ }
726
+ case BIN(bitblt):{
727
+ return depth + 1;
728
+ }
729
+ case BIN(answer):{
730
+ return depth + 1;
731
+ }
732
+ case BIN(getlocal_OP__WC__0):{
733
+ return depth + 1;
734
+ }
735
+ case BIN(getlocal_OP__WC__1):{
736
+ return depth + 1;
737
+ }
738
+ case BIN(setlocal_OP__WC__0):{
739
+ return depth + -1;
740
+ }
741
+ case BIN(setlocal_OP__WC__1):{
742
+ return depth + -1;
743
+ }
744
+ case BIN(putobject_OP_INT2FIX_O_0_C_):{
745
+ return depth + 1;
746
+ }
747
+ case BIN(putobject_OP_INT2FIX_O_1_C_):{
748
+ return depth + 1;
749
+ }
750
+
751
+ default:
752
+ rb_bug("insn_sp_increase: unreachable");
753
+ }
754
+ return 0;
755
+ }
756
+ #endif
757
+
758
+ /* some utilities */
759
+
760
+ static int
761
+ insn_len(VALUE insn)
762
+ {
763
+ return insn_len_info[(int)insn];
764
+ }
765
+
766
+ static const char *
767
+ insn_name(VALUE insn)
768
+ {
769
+ return insn_name_info[(int)insn];
770
+ }
771
+
772
+ static const char *
773
+ insn_op_types(VALUE insn)
774
+ {
775
+ return insn_operand_info[(int)insn];
776
+ }
777
+
778
+ static int
779
+ insn_op_type(VALUE insn, long pos)
780
+ {
781
+ int len = insn_len(insn) - 1;
782
+ if(pos < len){
783
+ return insn_operand_info[(int)insn][pos];
784
+ }
785
+ else{
786
+ return 0;
787
+ }
788
+ }
789
+
790
+ #ifdef USE_INSN_RET_NUM
791
+ static int
792
+ insn_ret_num(VALUE insn)
793
+ {
794
+ return insn_stack_push_num_info[(int)insn];
795
+ }
796
+ #endif