1/* -*- mode:c; style:ruby; coding: utf-8; indent-tabs-mode: nil -*- */
2
3/* This is  an auto-generated file  and is a  part of the  programming language
4 * Ruby.  The  person who  created  a  program  to  generate this  file  (``I''
5 * hereafter) would like  to refrain from defining licensing  of this generated
6 * source code.
7 *
8 * This file consist of many small  parts of codes copyrighted by each authors,
9 * not  only  the  ``I''  person.   Those  original  authors  agree  with  some
10 * open-source license.  I  believe that the license we agree  is the condition
11 * mentioned in  the file COPYING.  It  states "4.  You may  modify and include
12 * the part of the software into any  other software ...".  But the problem is,
13 * the license never makes it clear if  such modified parts still remain in the
14 * same  license, or  not.   The fact  that  we agree  with  the source  code's
15 * licensing terms do not automatically define that of generated ones.  This is
16 * the reason  why this file  is under unclear situation.   All that I  know is
17 * that above provision guarantees this file to exist.
18 *
19 * Please let me  hesitate to declare something about this  nuanced contract. I
20 * am not in the position to take  over other authors' license to merge into my
21 * one.  Changing them to (say) GPLv3  is not doable by myself. Perhaps someday
22 * it might turn out to be okay to say this file is under a license. I wish the
23 * situation would become more clear in the future. */
24
25/*******************************************************************/
26/*******************************************************************/
27/*******************************************************************/
28/**
29  This file contains YARV instruction list.
30
31  ----
32  This file is auto generated by insns2vm.rb
33  DO NOT TOUCH!
34
35  If you want to fix something, you must edit "tool/ruby_vm/views/insns.inc.erb"
36  or tool/insns2vm.rb
37 */
38
39/* BIN : Basic Instruction Name */
40#define BIN(n) YARVINSN_##n
41
42enum ruby_vminsn_type {
43    BIN(nop),
44    BIN(getlocal),
45    BIN(setlocal),
46    BIN(getblockparam),
47    BIN(setblockparam),
48    BIN(getblockparamproxy),
49    BIN(getspecial),
50    BIN(setspecial),
51    BIN(getinstancevariable),
52    BIN(setinstancevariable),
53    BIN(getclassvariable),
54    BIN(setclassvariable),
55    BIN(getconstant),
56    BIN(setconstant),
57    BIN(getglobal),
58    BIN(setglobal),
59    BIN(putnil),
60    BIN(putself),
61    BIN(putobject),
62    BIN(putspecialobject),
63    BIN(putiseq),
64    BIN(putstring),
65    BIN(concatstrings),
66    BIN(tostring),
67    BIN(freezestring),
68    BIN(toregexp),
69    BIN(intern),
70    BIN(newarray),
71    BIN(duparray),
72    BIN(duphash),
73    BIN(expandarray),
74    BIN(concatarray),
75    BIN(splatarray),
76    BIN(newhash),
77    BIN(newrange),
78    BIN(pop),
79    BIN(dup),
80    BIN(dupn),
81    BIN(swap),
82    BIN(reverse),
83    BIN(reput),
84    BIN(topn),
85    BIN(setn),
86    BIN(adjuststack),
87    BIN(defined),
88    BIN(checkmatch),
89    BIN(checkkeyword),
90    BIN(checktype),
91    BIN(defineclass),
92    BIN(send),
93    BIN(opt_send_without_block),
94    BIN(opt_str_freeze),
95    BIN(opt_str_uminus),
96    BIN(opt_newarray_max),
97    BIN(opt_newarray_min),
98    BIN(invokesuper),
99    BIN(invokeblock),
100    BIN(leave),
101    BIN(throw),
102    BIN(jump),
103    BIN(branchif),
104    BIN(branchunless),
105    BIN(branchnil),
106    BIN(opt_getinlinecache),
107    BIN(opt_setinlinecache),
108    BIN(once),
109    BIN(opt_case_dispatch),
110    BIN(opt_plus),
111    BIN(opt_minus),
112    BIN(opt_mult),
113    BIN(opt_div),
114    BIN(opt_mod),
115    BIN(opt_eq),
116    BIN(opt_neq),
117    BIN(opt_lt),
118    BIN(opt_le),
119    BIN(opt_gt),
120    BIN(opt_ge),
121    BIN(opt_ltlt),
122    BIN(opt_and),
123    BIN(opt_or),
124    BIN(opt_aref),
125    BIN(opt_aset),
126    BIN(opt_aset_with),
127    BIN(opt_aref_with),
128    BIN(opt_length),
129    BIN(opt_size),
130    BIN(opt_empty_p),
131    BIN(opt_succ),
132    BIN(opt_not),
133    BIN(opt_regexpmatch1),
134    BIN(opt_regexpmatch2),
135    BIN(opt_call_c_function),
136    BIN(bitblt),
137    BIN(answer),
138    BIN(getlocal_WC_0),
139    BIN(getlocal_WC_1),
140    BIN(setlocal_WC_0),
141    BIN(setlocal_WC_1),
142    BIN(putobject_INT2FIX_0_),
143    BIN(putobject_INT2FIX_1_),
144    BIN(trace_nop),
145    BIN(trace_getlocal),
146    BIN(trace_setlocal),
147    BIN(trace_getblockparam),
148    BIN(trace_setblockparam),
149    BIN(trace_getblockparamproxy),
150    BIN(trace_getspecial),
151    BIN(trace_setspecial),
152    BIN(trace_getinstancevariable),
153    BIN(trace_setinstancevariable),
154    BIN(trace_getclassvariable),
155    BIN(trace_setclassvariable),
156    BIN(trace_getconstant),
157    BIN(trace_setconstant),
158    BIN(trace_getglobal),
159    BIN(trace_setglobal),
160    BIN(trace_putnil),
161    BIN(trace_putself),
162    BIN(trace_putobject),
163    BIN(trace_putspecialobject),
164    BIN(trace_putiseq),
165    BIN(trace_putstring),
166    BIN(trace_concatstrings),
167    BIN(trace_tostring),
168    BIN(trace_freezestring),
169    BIN(trace_toregexp),
170    BIN(trace_intern),
171    BIN(trace_newarray),
172    BIN(trace_duparray),
173    BIN(trace_duphash),
174    BIN(trace_expandarray),
175    BIN(trace_concatarray),
176    BIN(trace_splatarray),
177    BIN(trace_newhash),
178    BIN(trace_newrange),
179    BIN(trace_pop),
180    BIN(trace_dup),
181    BIN(trace_dupn),
182    BIN(trace_swap),
183    BIN(trace_reverse),
184    BIN(trace_reput),
185    BIN(trace_topn),
186    BIN(trace_setn),
187    BIN(trace_adjuststack),
188    BIN(trace_defined),
189    BIN(trace_checkmatch),
190    BIN(trace_checkkeyword),
191    BIN(trace_checktype),
192    BIN(trace_defineclass),
193    BIN(trace_send),
194    BIN(trace_opt_send_without_block),
195    BIN(trace_opt_str_freeze),
196    BIN(trace_opt_str_uminus),
197    BIN(trace_opt_newarray_max),
198    BIN(trace_opt_newarray_min),
199    BIN(trace_invokesuper),
200    BIN(trace_invokeblock),
201    BIN(trace_leave),
202    BIN(trace_throw),
203    BIN(trace_jump),
204    BIN(trace_branchif),
205    BIN(trace_branchunless),
206    BIN(trace_branchnil),
207    BIN(trace_opt_getinlinecache),
208    BIN(trace_opt_setinlinecache),
209    BIN(trace_once),
210    BIN(trace_opt_case_dispatch),
211    BIN(trace_opt_plus),
212    BIN(trace_opt_minus),
213    BIN(trace_opt_mult),
214    BIN(trace_opt_div),
215    BIN(trace_opt_mod),
216    BIN(trace_opt_eq),
217    BIN(trace_opt_neq),
218    BIN(trace_opt_lt),
219    BIN(trace_opt_le),
220    BIN(trace_opt_gt),
221    BIN(trace_opt_ge),
222    BIN(trace_opt_ltlt),
223    BIN(trace_opt_and),
224    BIN(trace_opt_or),
225    BIN(trace_opt_aref),
226    BIN(trace_opt_aset),
227    BIN(trace_opt_aset_with),
228    BIN(trace_opt_aref_with),
229    BIN(trace_opt_length),
230    BIN(trace_opt_size),
231    BIN(trace_opt_empty_p),
232    BIN(trace_opt_succ),
233    BIN(trace_opt_not),
234    BIN(trace_opt_regexpmatch1),
235    BIN(trace_opt_regexpmatch2),
236    BIN(trace_opt_call_c_function),
237    BIN(trace_bitblt),
238    BIN(trace_answer),
239    BIN(trace_getlocal_WC_0),
240    BIN(trace_getlocal_WC_1),
241    BIN(trace_setlocal_WC_0),
242    BIN(trace_setlocal_WC_1),
243    BIN(trace_putobject_INT2FIX_0_),
244    BIN(trace_putobject_INT2FIX_1_),
245    VM_INSTRUCTION_SIZE
246};
247
248#define ASSERT_VM_INSTRUCTION_SIZE(array) \
249    STATIC_ASSERT(numberof_##array, numberof(array) == VM_INSTRUCTION_SIZE)
250