c_src: update
[nit.git] / c_src / syntax___icode_generation._sep.c
1 /* This C file is generated by NIT to compile module syntax___icode_generation. */
2 #include "syntax___icode_generation._sep.h"
3 void syntax___icode_generation___A2IContext___stmt(val_t p0, val_t p1){
4 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5 val_t REGB0;
6 val_t REGB1;
7 val_t tmp;
8 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9 fra.me.file = LOCATE_syntax___icode_generation;
10 fra.me.line = 28;
11 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___stmt;
12 fra.me.has_broke = 0;
13 fra.me.REG_size = 4;
14 fra.me.nitni_local_ref_head = NULL;
15 fra.me.REG[0] = NIT_NULL;
16 fra.me.REG[1] = NIT_NULL;
17 fra.me.REG[2] = NIT_NULL;
18 fra.me.REG[3] = NIT_NULL;
19 fra.me.REG[0] = p0;
20 fra.me.REG[1] = p1;
21 /* syntax/icode_generation.nit:28 */
22 fra.me.REG[2] = fra.me.REG[0];
23 /* syntax/icode_generation.nit:30 */
24 fra.me.REG[3] = ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[2]);
25 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
26 if (UNTAG_Bool(REGB0)) {
27 } else {
28 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
29 if (UNTAG_Bool(REGB1)) {
30 REGB1 = TAG_Bool(false);
31 REGB0 = REGB1;
32 } else {
33 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
34 REGB0 = REGB1;
35 }
36 }
37 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
38 if (UNTAG_Bool(REGB0)) {
39 /* syntax/icode_generation.nit:31 */
40 fra.me.REG[3] = ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[2]);
41 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
42 if (UNTAG_Bool(REGB0)) {
43 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 31);
44 }
45 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
46 CALL_icode___icode_builder___ICodeBuilder___current_location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
47 } else {
48 /* syntax/icode_generation.nit:32 */
49 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[2])(fra.me.REG[2]);
50 fra.me.REG[3] = CALL_parser___parser_prod___Visitor___current_node(fra.me.REG[3])(fra.me.REG[3]);
51 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
52 if (UNTAG_Bool(REGB0)) {
53 } else {
54 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
55 if (UNTAG_Bool(REGB1)) {
56 REGB1 = TAG_Bool(false);
57 REGB0 = REGB1;
58 } else {
59 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
60 REGB0 = REGB1;
61 }
62 }
63 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
64 if (UNTAG_Bool(REGB0)) {
65 /* syntax/icode_generation.nit:33 */
66 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[2])(fra.me.REG[2]);
67 fra.me.REG[3] = CALL_parser___parser_prod___Visitor___current_node(fra.me.REG[3])(fra.me.REG[3]);
68 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
69 if (UNTAG_Bool(REGB0)) {
70 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 33);
71 }
72 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
73 CALL_icode___icode_builder___ICodeBuilder___current_location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
74 }
75 }
76 /* syntax/icode_generation.nit:35 */
77 CALL_SUPER_syntax___icode_generation___A2IContext___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
78 stack_frame_head = fra.me.prev;
79 return;
80 }
81 val_t syntax___icode_generation___A2IContext___add_new_array(val_t p0, val_t p1, val_t p2){
82 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
83 val_t REGB0;
84 val_t REGB1;
85 val_t tmp;
86 static val_t once_value_1; /* Once value */
87 static val_t once_value_2; /* Once value */
88 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
89 fra.me.file = LOCATE_syntax___icode_generation;
90 fra.me.line = 38;
91 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___add_new_array;
92 fra.me.has_broke = 0;
93 fra.me.REG_size = 5;
94 fra.me.nitni_local_ref_head = NULL;
95 fra.me.REG[0] = NIT_NULL;
96 fra.me.REG[1] = NIT_NULL;
97 fra.me.REG[2] = NIT_NULL;
98 fra.me.REG[3] = NIT_NULL;
99 fra.me.REG[4] = NIT_NULL;
100 fra.me.REG[0] = p0;
101 fra.me.REG[1] = p1;
102 REGB0 = p2;
103 /* syntax/icode_generation.nit:41 */
104 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[0])(fra.me.REG[0]);
105 if (!once_value_1) {
106 if (!once_value_2) {
107 fra.me.REG[3] = BOX_NativeString("with_capacity");
108 REGB1 = TAG_Int(13);
109 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
110 once_value_2 = fra.me.REG[3];
111 register_static_object(&once_value_2);
112 } else fra.me.REG[3] = once_value_2;
113 fra.me.REG[3] = fra.me.REG[3];
114 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
115 once_value_1 = fra.me.REG[3];
116 register_static_object(&once_value_1);
117 } else fra.me.REG[3] = once_value_1;
118 fra.me.REG[3] = fra.me.REG[3];
119 fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3]);
120 /* syntax/icode_generation.nit:42 */
121 fra.me.REG[2] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
122 fra.me.REG[2] = NEW_IIntValue_icode___icode_base___IIntValue___init(fra.me.REG[2]);
123 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[0])(fra.me.REG[0]);
124 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[4])(fra.me.REG[4]);
125 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[4]);
126 /* syntax/icode_generation.nit:43 */
127 REGB0 = TAG_Int(1);
128 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
129 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
130 fra.me.REG[2] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
131 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[1]);
132 goto label3;
133 label3: while(0);
134 stack_frame_head = fra.me.prev;
135 return fra.me.REG[1];
136 }
137 void syntax___icode_generation___A2IContext___add_call_array_add(val_t p0, val_t p1, val_t p2){
138 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
139 val_t REGB0;
140 val_t tmp;
141 static val_t once_value_1; /* Once value */
142 static val_t once_value_2; /* Once value */
143 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
144 fra.me.file = LOCATE_syntax___icode_generation;
145 fra.me.line = 46;
146 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___add_call_array_add;
147 fra.me.has_broke = 0;
148 fra.me.REG_size = 6;
149 fra.me.nitni_local_ref_head = NULL;
150 fra.me.REG[0] = NIT_NULL;
151 fra.me.REG[1] = NIT_NULL;
152 fra.me.REG[2] = NIT_NULL;
153 fra.me.REG[3] = NIT_NULL;
154 fra.me.REG[4] = NIT_NULL;
155 fra.me.REG[5] = NIT_NULL;
156 fra.me.REG[0] = p0;
157 fra.me.REG[1] = p1;
158 fra.me.REG[2] = p2;
159 /* syntax/icode_generation.nit:49 */
160 fra.me.REG[3] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[1])(fra.me.REG[1]);
161 /* syntax/icode_generation.nit:50 */
162 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[0])(fra.me.REG[0]);
163 if (!once_value_1) {
164 if (!once_value_2) {
165 fra.me.REG[5] = BOX_NativeString("add");
166 REGB0 = TAG_Int(3);
167 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
168 once_value_2 = fra.me.REG[5];
169 register_static_object(&once_value_2);
170 } else fra.me.REG[5] = once_value_2;
171 fra.me.REG[5] = fra.me.REG[5];
172 fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
173 once_value_1 = fra.me.REG[5];
174 register_static_object(&once_value_1);
175 } else fra.me.REG[5] = once_value_1;
176 fra.me.REG[5] = fra.me.REG[5];
177 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
178 /* syntax/icode_generation.nit:51 */
179 REGB0 = TAG_Int(2);
180 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
181 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
182 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
183 fra.me.REG[3] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[5], fra.me.REG[3]);
184 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
185 stack_frame_head = fra.me.prev;
186 return;
187 }
188 val_t syntax___icode_generation___A2IContext___variable(val_t p0, val_t p1){
189 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
190 val_t REGB0;
191 val_t tmp;
192 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
193 fra.me.file = LOCATE_syntax___icode_generation;
194 fra.me.line = 54;
195 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___variable;
196 fra.me.has_broke = 0;
197 fra.me.REG_size = 5;
198 fra.me.nitni_local_ref_head = NULL;
199 fra.me.REG[0] = NIT_NULL;
200 fra.me.REG[1] = NIT_NULL;
201 fra.me.REG[2] = NIT_NULL;
202 fra.me.REG[3] = NIT_NULL;
203 fra.me.REG[4] = NIT_NULL;
204 fra.me.REG[0] = p0;
205 fra.me.REG[1] = p1;
206 /* syntax/icode_generation.nit:54 */
207 fra.me.REG[2] = fra.me.REG[0];
208 /* syntax/icode_generation.nit:58 */
209 REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2])!=NIT_NULL);
210 if (UNTAG_Bool(REGB0)) {
211 } else {
212 nit_abort("Uninitialized attribute %s", "_variables", LOCATE_syntax___icode_generation, 58);
213 }
214 fra.me.REG[3] = ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2]);
215 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
216 if (UNTAG_Bool(REGB0)) {
217 /* syntax/icode_generation.nit:59 */
218 REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2])!=NIT_NULL);
219 if (UNTAG_Bool(REGB0)) {
220 } else {
221 nit_abort("Uninitialized attribute %s", "_variables", LOCATE_syntax___icode_generation, 59);
222 }
223 fra.me.REG[3] = ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2]);
224 fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
225 goto label1;
226 } else {
227 /* syntax/icode_generation.nit:61 */
228 fra.me.REG[4] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[1])(fra.me.REG[1]);
229 REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
230 if (UNTAG_Bool(REGB0)) {
231 } else {
232 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 61);
233 }
234 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
235 /* syntax/icode_generation.nit:62 */
236 REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2])!=NIT_NULL);
237 if (UNTAG_Bool(REGB0)) {
238 } else {
239 nit_abort("Uninitialized attribute %s", "_variables", LOCATE_syntax___icode_generation, 62);
240 }
241 fra.me.REG[2] = ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2]);
242 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4]);
243 /* syntax/icode_generation.nit:63 */
244 fra.me.REG[3] = fra.me.REG[4];
245 goto label1;
246 }
247 label1: while(0);
248 stack_frame_head = fra.me.prev;
249 return fra.me.REG[3];
250 }
251 val_t syntax___icode_generation___A2IContext___closurevariables(val_t p0){
252 struct {struct stack_frame_t me;} fra;
253 val_t REGB0;
254 val_t tmp;
255 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
256 fra.me.file = LOCATE_syntax___icode_generation;
257 fra.me.line = 70;
258 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___closurevariables;
259 fra.me.has_broke = 0;
260 fra.me.REG_size = 1;
261 fra.me.nitni_local_ref_head = NULL;
262 fra.me.REG[0] = NIT_NULL;
263 fra.me.REG[0] = p0;
264 /* syntax/icode_generation.nit:70 */
265 REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____closurevariables(fra.me.REG[0])!=NIT_NULL);
266 if (UNTAG_Bool(REGB0)) {
267 } else {
268 nit_abort("Uninitialized attribute %s", "_closurevariables", LOCATE_syntax___icode_generation, 70);
269 }
270 fra.me.REG[0] = ATTR_syntax___icode_generation___A2IContext____closurevariables(fra.me.REG[0]);
271 stack_frame_head = fra.me.prev;
272 return fra.me.REG[0];
273 }
274 val_t syntax___icode_generation___A2IContext___visitor(val_t p0){
275 struct {struct stack_frame_t me;} fra;
276 val_t REGB0;
277 val_t tmp;
278 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
279 fra.me.file = LOCATE_syntax___icode_generation;
280 fra.me.line = 73;
281 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___visitor;
282 fra.me.has_broke = 0;
283 fra.me.REG_size = 1;
284 fra.me.nitni_local_ref_head = NULL;
285 fra.me.REG[0] = NIT_NULL;
286 fra.me.REG[0] = p0;
287 /* syntax/icode_generation.nit:73 */
288 REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____visitor(fra.me.REG[0])!=NIT_NULL);
289 if (UNTAG_Bool(REGB0)) {
290 } else {
291 nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_syntax___icode_generation, 73);
292 }
293 fra.me.REG[0] = ATTR_syntax___icode_generation___A2IContext____visitor(fra.me.REG[0]);
294 stack_frame_head = fra.me.prev;
295 return fra.me.REG[0];
296 }
297 val_t syntax___icode_generation___A2IContext___return_seq(val_t p0){
298 struct {struct stack_frame_t me;} fra;
299 val_t tmp;
300 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
301 fra.me.file = LOCATE_syntax___icode_generation;
302 fra.me.line = 76;
303 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___return_seq;
304 fra.me.has_broke = 0;
305 fra.me.REG_size = 1;
306 fra.me.nitni_local_ref_head = NULL;
307 fra.me.REG[0] = NIT_NULL;
308 fra.me.REG[0] = p0;
309 /* syntax/icode_generation.nit:76 */
310 fra.me.REG[0] = ATTR_syntax___icode_generation___A2IContext____return_seq(fra.me.REG[0]);
311 stack_frame_head = fra.me.prev;
312 return fra.me.REG[0];
313 }
314 void syntax___icode_generation___A2IContext___return_seq__eq(val_t p0, val_t p1){
315 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
316 val_t tmp;
317 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
318 fra.me.file = LOCATE_syntax___icode_generation;
319 fra.me.line = 76;
320 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___return_seq__eq;
321 fra.me.has_broke = 0;
322 fra.me.REG_size = 2;
323 fra.me.nitni_local_ref_head = NULL;
324 fra.me.REG[0] = NIT_NULL;
325 fra.me.REG[1] = NIT_NULL;
326 fra.me.REG[0] = p0;
327 fra.me.REG[1] = p1;
328 /* syntax/icode_generation.nit:76 */
329 ATTR_syntax___icode_generation___A2IContext____return_seq(fra.me.REG[0]) = fra.me.REG[1];
330 stack_frame_head = fra.me.prev;
331 return;
332 }
333 val_t syntax___icode_generation___A2IContext___return_value(val_t p0){
334 struct {struct stack_frame_t me;} fra;
335 val_t tmp;
336 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
337 fra.me.file = LOCATE_syntax___icode_generation;
338 fra.me.line = 79;
339 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___return_value;
340 fra.me.has_broke = 0;
341 fra.me.REG_size = 1;
342 fra.me.nitni_local_ref_head = NULL;
343 fra.me.REG[0] = NIT_NULL;
344 fra.me.REG[0] = p0;
345 /* syntax/icode_generation.nit:79 */
346 fra.me.REG[0] = ATTR_syntax___icode_generation___A2IContext____return_value(fra.me.REG[0]);
347 stack_frame_head = fra.me.prev;
348 return fra.me.REG[0];
349 }
350 void syntax___icode_generation___A2IContext___return_value__eq(val_t p0, val_t p1){
351 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
352 val_t tmp;
353 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
354 fra.me.file = LOCATE_syntax___icode_generation;
355 fra.me.line = 79;
356 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___return_value__eq;
357 fra.me.has_broke = 0;
358 fra.me.REG_size = 2;
359 fra.me.nitni_local_ref_head = NULL;
360 fra.me.REG[0] = NIT_NULL;
361 fra.me.REG[1] = NIT_NULL;
362 fra.me.REG[0] = p0;
363 fra.me.REG[1] = p1;
364 /* syntax/icode_generation.nit:79 */
365 ATTR_syntax___icode_generation___A2IContext____return_value(fra.me.REG[0]) = fra.me.REG[1];
366 stack_frame_head = fra.me.prev;
367 return;
368 }
369 val_t syntax___icode_generation___A2IContext___method(val_t p0){
370 struct {struct stack_frame_t me;} fra;
371 val_t tmp;
372 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
373 fra.me.file = LOCATE_syntax___icode_generation;
374 fra.me.line = 82;
375 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___method;
376 fra.me.has_broke = 0;
377 fra.me.REG_size = 1;
378 fra.me.nitni_local_ref_head = NULL;
379 fra.me.REG[0] = NIT_NULL;
380 fra.me.REG[0] = p0;
381 /* syntax/icode_generation.nit:82 */
382 fra.me.REG[0] = ATTR_syntax___icode_generation___A2IContext____method(fra.me.REG[0]);
383 stack_frame_head = fra.me.prev;
384 return fra.me.REG[0];
385 }
386 val_t syntax___icode_generation___A2IContext___selfreg(val_t p0){
387 struct {struct stack_frame_t me;} fra;
388 val_t tmp;
389 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
390 fra.me.file = LOCATE_syntax___icode_generation;
391 fra.me.line = 85;
392 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___selfreg;
393 fra.me.has_broke = 0;
394 fra.me.REG_size = 1;
395 fra.me.nitni_local_ref_head = NULL;
396 fra.me.REG[0] = NIT_NULL;
397 fra.me.REG[0] = p0;
398 /* syntax/icode_generation.nit:85 */
399 fra.me.REG[0] = ATTR_syntax___icode_generation___A2IContext_____atselfreg(fra.me.REG[0]);
400 stack_frame_head = fra.me.prev;
401 return fra.me.REG[0];
402 }
403 void syntax___icode_generation___A2IContext___selfreg__eq(val_t p0, val_t p1){
404 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
405 val_t tmp;
406 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
407 fra.me.file = LOCATE_syntax___icode_generation;
408 fra.me.line = 85;
409 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___selfreg__eq;
410 fra.me.has_broke = 0;
411 fra.me.REG_size = 2;
412 fra.me.nitni_local_ref_head = NULL;
413 fra.me.REG[0] = NIT_NULL;
414 fra.me.REG[1] = NIT_NULL;
415 fra.me.REG[0] = p0;
416 fra.me.REG[1] = p1;
417 /* syntax/icode_generation.nit:85 */
418 ATTR_syntax___icode_generation___A2IContext_____atselfreg(fra.me.REG[0]) = fra.me.REG[1];
419 stack_frame_head = fra.me.prev;
420 return;
421 }
422 void syntax___icode_generation___A2IContext___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
423 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___icode_generation___A2IContext].i;
424 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
425 val_t tmp;
426 if (init_table[itpos0]) return;
427 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
428 fra.me.file = LOCATE_syntax___icode_generation;
429 fra.me.line = 88;
430 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___init;
431 fra.me.has_broke = 0;
432 fra.me.REG_size = 6;
433 fra.me.nitni_local_ref_head = NULL;
434 fra.me.REG[0] = NIT_NULL;
435 fra.me.REG[1] = NIT_NULL;
436 fra.me.REG[2] = NIT_NULL;
437 fra.me.REG[3] = NIT_NULL;
438 fra.me.REG[4] = NIT_NULL;
439 fra.me.REG[5] = NIT_NULL;
440 fra.me.REG[0] = p0;
441 fra.me.REG[1] = p1;
442 fra.me.REG[2] = p2;
443 fra.me.REG[3] = p3;
444 /* syntax/icode_generation.nit:88 */
445 fra.me.REG[4] = fra.me.REG[0];
446 /* syntax/icode_generation.nit:90 */
447 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
448 CALL_icode___icode_builder___ICodeBuilder___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[2], init_table);
449 /* syntax/icode_generation.nit:91 */
450 ATTR_syntax___icode_generation___A2IContext____visitor(fra.me.REG[4]) = fra.me.REG[1];
451 /* syntax/icode_generation.nit:92 */
452 fra.me.REG[1] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[2])(fra.me.REG[2]);
453 ATTR_syntax___icode_generation___A2IContext____return_seq(fra.me.REG[4]) = fra.me.REG[1];
454 /* syntax/icode_generation.nit:93 */
455 fra.me.REG[2] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[2])(fra.me.REG[2]);
456 ATTR_syntax___icode_generation___A2IContext____return_value(fra.me.REG[4]) = fra.me.REG[2];
457 /* syntax/icode_generation.nit:94 */
458 ATTR_syntax___icode_generation___A2IContext____method(fra.me.REG[4]) = fra.me.REG[3];
459 stack_frame_head = fra.me.prev;
460 init_table[itpos0] = 1;
461 return;
462 }
463 void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_t p0, val_t p1){
464 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
465 val_t REGB0;
466 val_t REGB1;
467 val_t REGB2;
468 val_t REGB3;
469 val_t REGB4;
470 val_t tmp;
471 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
472 fra.me.file = LOCATE_syntax___icode_generation;
473 fra.me.line = 97;
474 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___invoke_super_init_calls_after;
475 fra.me.has_broke = 0;
476 fra.me.REG_size = 6;
477 fra.me.nitni_local_ref_head = NULL;
478 fra.me.REG[0] = NIT_NULL;
479 fra.me.REG[1] = NIT_NULL;
480 fra.me.REG[2] = NIT_NULL;
481 fra.me.REG[3] = NIT_NULL;
482 fra.me.REG[4] = NIT_NULL;
483 fra.me.REG[5] = NIT_NULL;
484 fra.me.REG[0] = p0;
485 fra.me.REG[1] = p1;
486 /* syntax/icode_generation.nit:100 */
487 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___method(fra.me.REG[0])(fra.me.REG[0]);
488 /* syntax/icode_generation.nit:101 */
489 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
490 if (UNTAG_Bool(REGB0)) {
491 } else {
492 nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 101);
493 }
494 /* syntax/icode_generation.nit:102 */
495 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
496 if (UNTAG_Bool(REGB0)) {
497 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 102);
498 }
499 fra.me.REG[2] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[2])(fra.me.REG[2]);
500 /* syntax/icode_generation.nit:103 */
501 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AConcreteInitPropdef, ID_parser___parser_nodes___AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
502 if (UNTAG_Bool(REGB0)) {
503 } else {
504 nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 103);
505 }
506 /* syntax/icode_generation.nit:105 */
507 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
508 if (UNTAG_Bool(REGB0)) {
509 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 105);
510 }
511 fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
512 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
513 if (UNTAG_Bool(REGB0)) {
514 goto label1;
515 }
516 /* syntax/icode_generation.nit:106 */
517 REGB0 = TAG_Int(0);
518 /* syntax/icode_generation.nit:107 */
519 REGB1 = TAG_Int(0);
520 /* syntax/icode_generation.nit:108 */
521 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
522 if (UNTAG_Bool(REGB2)) {
523 } else {
524 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
525 if (UNTAG_Bool(REGB3)) {
526 REGB3 = TAG_Bool(false);
527 REGB2 = REGB3;
528 } else {
529 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
530 REGB2 = REGB3;
531 }
532 }
533 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
534 if (UNTAG_Bool(REGB2)) {
535 /* syntax/icode_generation.nit:109 */
536 while(1) {
537 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
538 if (UNTAG_Bool(REGB2)) {
539 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 109);
540 }
541 fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
542 /* ../lib/standard/collection/array.nit:278 */
543 REGB2 = REGB0;
544 /* ../lib/standard/collection/array.nit:280 */
545 REGB3 = TAG_Int(0);
546 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
547 if (UNTAG_Bool(REGB4)) {
548 } else {
549 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
550 }
551 /* ../lib/standard/kernel.nit:233 */
552 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
553 /* ../lib/standard/collection/array.nit:280 */
554 if (UNTAG_Bool(REGB3)) {
555 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
556 if (UNTAG_Bool(REGB3)) {
557 } else {
558 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
559 }
560 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
561 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
562 if (UNTAG_Bool(REGB4)) {
563 } else {
564 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
565 }
566 /* ../lib/standard/kernel.nit:232 */
567 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
568 } else {
569 /* ../lib/standard/collection/array.nit:280 */
570 REGB4 = TAG_Bool(false);
571 REGB3 = REGB4;
572 }
573 if (UNTAG_Bool(REGB3)) {
574 } else {
575 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
576 }
577 /* ../lib/standard/collection/array.nit:281 */
578 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
579 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
580 if (UNTAG_Bool(REGB3)) {
581 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
582 }
583 /* ../lib/standard/collection/array.nit:718 */
584 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
585 /* ../lib/standard/collection/array.nit:281 */
586 goto label2;
587 label2: while(0);
588 /* syntax/icode_generation.nit:109 */
589 REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
590 if (UNTAG_Bool(REGB2)) {
591 } else {
592 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
593 if (UNTAG_Bool(REGB3)) {
594 REGB3 = TAG_Bool(false);
595 REGB2 = REGB3;
596 } else {
597 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
598 REGB2 = REGB3;
599 }
600 }
601 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
602 if (UNTAG_Bool(REGB2)) {
603 /* syntax/icode_generation.nit:110 */
604 REGB2 = TAG_Int(1);
605 /* ../lib/standard/kernel.nit:235 */
606 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
607 /* syntax/icode_generation.nit:110 */
608 REGB0 = REGB2;
609 } else {
610 /* syntax/icode_generation.nit:109 */
611 goto label3;
612 }
613 }
614 label3: while(0);
615 /* syntax/icode_generation.nit:112 */
616 REGB2 = TAG_Int(1);
617 /* ../lib/standard/kernel.nit:235 */
618 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
619 /* syntax/icode_generation.nit:112 */
620 REGB0 = REGB2;
621 /* syntax/icode_generation.nit:114 */
622 while(1) {
623 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
624 if (UNTAG_Bool(REGB2)) {
625 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 114);
626 }
627 fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
628 /* ../lib/standard/collection/array.nit:278 */
629 REGB2 = REGB1;
630 /* ../lib/standard/collection/array.nit:280 */
631 REGB3 = TAG_Int(0);
632 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
633 if (UNTAG_Bool(REGB4)) {
634 } else {
635 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
636 }
637 /* ../lib/standard/kernel.nit:233 */
638 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
639 /* ../lib/standard/collection/array.nit:280 */
640 if (UNTAG_Bool(REGB3)) {
641 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
642 if (UNTAG_Bool(REGB3)) {
643 } else {
644 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
645 }
646 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
647 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
648 if (UNTAG_Bool(REGB4)) {
649 } else {
650 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
651 }
652 /* ../lib/standard/kernel.nit:232 */
653 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
654 } else {
655 /* ../lib/standard/collection/array.nit:280 */
656 REGB4 = TAG_Bool(false);
657 REGB3 = REGB4;
658 }
659 if (UNTAG_Bool(REGB3)) {
660 } else {
661 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
662 }
663 /* ../lib/standard/collection/array.nit:281 */
664 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
665 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
666 if (UNTAG_Bool(REGB3)) {
667 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
668 }
669 /* ../lib/standard/collection/array.nit:718 */
670 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
671 /* ../lib/standard/collection/array.nit:281 */
672 goto label4;
673 label4: while(0);
674 /* syntax/icode_generation.nit:114 */
675 REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
676 if (UNTAG_Bool(REGB2)) {
677 } else {
678 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
679 if (UNTAG_Bool(REGB3)) {
680 REGB3 = TAG_Bool(false);
681 REGB2 = REGB3;
682 } else {
683 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
684 REGB2 = REGB3;
685 }
686 }
687 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
688 if (UNTAG_Bool(REGB2)) {
689 /* syntax/icode_generation.nit:115 */
690 REGB2 = TAG_Int(1);
691 /* ../lib/standard/kernel.nit:235 */
692 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
693 /* syntax/icode_generation.nit:115 */
694 REGB1 = REGB2;
695 } else {
696 /* syntax/icode_generation.nit:114 */
697 goto label5;
698 }
699 }
700 label5: while(0);
701 /* syntax/icode_generation.nit:117 */
702 REGB2 = TAG_Int(1);
703 /* ../lib/standard/kernel.nit:235 */
704 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
705 /* syntax/icode_generation.nit:117 */
706 REGB1 = REGB2;
707 }
708 /* syntax/icode_generation.nit:119 */
709 fra.me.REG[1] = NIT_NULL;
710 /* syntax/icode_generation.nit:120 */
711 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
712 if (UNTAG_Bool(REGB2)) {
713 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 120);
714 }
715 fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
716 /* ../lib/standard/collection/array.nit:24 */
717 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
718 if (UNTAG_Bool(REGB2)) {
719 } else {
720 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
721 }
722 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
723 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
724 if (UNTAG_Bool(REGB3)) {
725 } else {
726 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
727 }
728 /* ../lib/standard/kernel.nit:232 */
729 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
730 /* syntax/icode_generation.nit:120 */
731 if (UNTAG_Bool(REGB2)) {
732 /* syntax/icode_generation.nit:121 */
733 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
734 if (UNTAG_Bool(REGB2)) {
735 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 121);
736 }
737 fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
738 /* ../lib/standard/collection/array.nit:280 */
739 REGB2 = TAG_Int(0);
740 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
741 if (UNTAG_Bool(REGB3)) {
742 } else {
743 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
744 }
745 /* ../lib/standard/kernel.nit:233 */
746 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
747 /* ../lib/standard/collection/array.nit:280 */
748 if (UNTAG_Bool(REGB2)) {
749 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
750 if (UNTAG_Bool(REGB2)) {
751 } else {
752 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
753 }
754 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
755 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
756 if (UNTAG_Bool(REGB3)) {
757 } else {
758 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
759 }
760 /* ../lib/standard/kernel.nit:232 */
761 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
762 } else {
763 /* ../lib/standard/collection/array.nit:280 */
764 REGB3 = TAG_Bool(false);
765 REGB2 = REGB3;
766 }
767 if (UNTAG_Bool(REGB2)) {
768 } else {
769 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
770 }
771 /* ../lib/standard/collection/array.nit:281 */
772 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
773 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
774 if (UNTAG_Bool(REGB2)) {
775 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
776 }
777 /* ../lib/standard/collection/array.nit:718 */
778 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
779 /* ../lib/standard/collection/array.nit:281 */
780 goto label6;
781 label6: while(0);
782 /* syntax/icode_generation.nit:121 */
783 fra.me.REG[1] = fra.me.REG[3];
784 }
785 /* syntax/icode_generation.nit:123 */
786 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
787 if (UNTAG_Bool(REGB1)) {
788 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 123);
789 }
790 fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
791 /* ../lib/standard/collection/array.nit:24 */
792 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
793 if (UNTAG_Bool(REGB1)) {
794 } else {
795 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
796 }
797 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
798 /* syntax/icode_generation.nit:124 */
799 while(1) {
800 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
801 if (UNTAG_Bool(REGB2)) {
802 } else {
803 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
804 }
805 /* ../lib/standard/kernel.nit:232 */
806 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
807 /* syntax/icode_generation.nit:124 */
808 if (UNTAG_Bool(REGB2)) {
809 /* syntax/icode_generation.nit:125 */
810 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
811 if (UNTAG_Bool(REGB2)) {
812 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 125);
813 }
814 fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
815 /* ../lib/standard/collection/array.nit:278 */
816 REGB2 = REGB0;
817 /* ../lib/standard/collection/array.nit:280 */
818 REGB3 = TAG_Int(0);
819 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
820 if (UNTAG_Bool(REGB4)) {
821 } else {
822 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
823 }
824 /* ../lib/standard/kernel.nit:233 */
825 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
826 /* ../lib/standard/collection/array.nit:280 */
827 if (UNTAG_Bool(REGB3)) {
828 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
829 if (UNTAG_Bool(REGB3)) {
830 } else {
831 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
832 }
833 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
834 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
835 if (UNTAG_Bool(REGB4)) {
836 } else {
837 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
838 }
839 /* ../lib/standard/kernel.nit:232 */
840 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
841 } else {
842 /* ../lib/standard/collection/array.nit:280 */
843 REGB4 = TAG_Bool(false);
844 REGB3 = REGB4;
845 }
846 if (UNTAG_Bool(REGB3)) {
847 } else {
848 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
849 }
850 /* ../lib/standard/collection/array.nit:281 */
851 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
852 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
853 if (UNTAG_Bool(REGB3)) {
854 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
855 }
856 /* ../lib/standard/collection/array.nit:718 */
857 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
858 /* ../lib/standard/collection/array.nit:281 */
859 goto label7;
860 label7: while(0);
861 /* syntax/icode_generation.nit:126 */
862 REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[1]));
863 if (UNTAG_Bool(REGB2)) {
864 } else {
865 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
866 REGB2 = REGB3;
867 }
868 if (UNTAG_Bool(REGB2)) {
869 goto label8;
870 }
871 /* syntax/icode_generation.nit:127 */
872 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
873 /* syntax/icode_generation.nit:128 */
874 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
875 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
876 if (UNTAG_Bool(REGB2)) {
877 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 128);
878 }
879 REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[5])(fra.me.REG[5]);
880 REGB3 = TAG_Int(0);
881 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
882 if (UNTAG_Bool(REGB4)) {
883 } else {
884 /* ../lib/standard/kernel.nit:227 */
885 REGB3 = TAG_Bool((REGB2)==(REGB3));
886 /* syntax/icode_generation.nit:128 */
887 REGB4 = REGB3;
888 }
889 if (UNTAG_Bool(REGB4)) {
890 /* syntax/icode_generation.nit:129 */
891 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
892 fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
893 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
894 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
895 } else {
896 /* syntax/icode_generation.nit:131 */
897 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
898 fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
899 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___A2IContext___invoke_super_init_calls_after_9));
900 }
901 /* syntax/icode_generation.nit:135 */
902 fra.me.REG[4] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[3], fra.me.REG[4]);
903 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
904 /* syntax/icode_generation.nit:136 */
905 REGB4 = TAG_Int(1);
906 /* ../lib/standard/kernel.nit:235 */
907 REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
908 /* syntax/icode_generation.nit:136 */
909 REGB0 = REGB4;
910 } else {
911 /* syntax/icode_generation.nit:124 */
912 goto label8;
913 }
914 }
915 label8: while(0);
916 label1: while(0);
917 stack_frame_head = fra.me.prev;
918 return;
919 }
920 void OC_syntax___icode_generation___A2IContext___invoke_super_init_calls_after_9(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
921 struct {struct stack_frame_t me;} fra;
922 fun_t CREG[1];
923 val_t tmp;
924 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
925 fra.me.file = LOCATE_syntax___icode_generation;
926 fra.me.line = 0;
927 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___invoke_super_init_calls_after;
928 fra.me.has_broke = 0;
929 fra.me.REG_size = 1;
930 fra.me.nitni_local_ref_head = NULL;
931 fra.me.REG[0] = NIT_NULL;
932 fra.me.closure_ctx = closctx_param;
933 fra.me.closure_funs = CREG;
934 fra.me.REG[0] = p0;
935 CREG[0] = clos_fun0;
936 /* syntax/icode_generation.nit:132 */
937 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
938 stack_frame_head = fra.me.prev;
939 return;
940 }
941 void syntax___icode_generation___A2IContext___generate_stmt(val_t p0, val_t p1){
942 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
943 val_t REGB0;
944 val_t REGB1;
945 val_t tmp;
946 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
947 fra.me.file = LOCATE_syntax___icode_generation;
948 fra.me.line = 143;
949 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___generate_stmt;
950 fra.me.has_broke = 0;
951 fra.me.REG_size = 3;
952 fra.me.nitni_local_ref_head = NULL;
953 fra.me.REG[0] = NIT_NULL;
954 fra.me.REG[1] = NIT_NULL;
955 fra.me.REG[2] = NIT_NULL;
956 fra.me.REG[0] = p0;
957 fra.me.REG[1] = p1;
958 /* syntax/icode_generation.nit:146 */
959 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
960 if (UNTAG_Bool(REGB0)) {
961 } else {
962 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
963 if (UNTAG_Bool(REGB1)) {
964 REGB1 = TAG_Bool(false);
965 REGB0 = REGB1;
966 } else {
967 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
968 REGB0 = REGB1;
969 }
970 }
971 if (UNTAG_Bool(REGB0)) {
972 goto label1;
973 }
974 /* syntax/icode_generation.nit:147 */
975 fra.me.REG[2] = ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]);
976 /* syntax/icode_generation.nit:148 */
977 ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[1];
978 /* syntax/icode_generation.nit:149 */
979 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
980 if (UNTAG_Bool(REGB0)) {
981 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 149);
982 }
983 CALL_syntax___icode_generation___AExpr___generate_icode(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
984 /* syntax/icode_generation.nit:150 */
985 ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[2];
986 label1: while(0);
987 stack_frame_head = fra.me.prev;
988 return;
989 }
990 val_t syntax___icode_generation___A2IContext___generate_expr(val_t p0, val_t p1){
991 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
992 val_t REGB0;
993 val_t tmp;
994 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
995 fra.me.file = LOCATE_syntax___icode_generation;
996 fra.me.line = 153;
997 fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___generate_expr;
998 fra.me.has_broke = 0;
999 fra.me.REG_size = 4;
1000 fra.me.nitni_local_ref_head = NULL;
1001 fra.me.REG[0] = NIT_NULL;
1002 fra.me.REG[1] = NIT_NULL;
1003 fra.me.REG[2] = NIT_NULL;
1004 fra.me.REG[3] = NIT_NULL;
1005 fra.me.REG[0] = p0;
1006 fra.me.REG[1] = p1;
1007 /* syntax/icode_generation.nit:153 */
1008 fra.me.REG[2] = fra.me.REG[0];
1009 /* syntax/icode_generation.nit:156 */
1010 fra.me.REG[3] = ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[2]);
1011 /* syntax/icode_generation.nit:157 */
1012 ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[2]) = fra.me.REG[1];
1013 /* syntax/icode_generation.nit:158 */
1014 fra.me.REG[1] = CALL_syntax___icode_generation___AExpr___generate_icode(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1015 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1016 if (UNTAG_Bool(REGB0)) {
1017 } else {
1018 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 158);
1019 }
1020 /* syntax/icode_generation.nit:159 */
1021 ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[2]) = fra.me.REG[3];
1022 /* syntax/icode_generation.nit:160 */
1023 goto label1;
1024 label1: while(0);
1025 stack_frame_head = fra.me.prev;
1026 return fra.me.REG[1];
1027 }
1028 val_t syntax___icode_generation___EscapableBlock___break_seq(val_t p0){
1029 struct {struct stack_frame_t me;} fra;
1030 val_t tmp;
1031 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1032 fra.me.file = LOCATE_syntax___icode_generation;
1033 fra.me.line = 165;
1034 fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___break_seq;
1035 fra.me.has_broke = 0;
1036 fra.me.REG_size = 1;
1037 fra.me.nitni_local_ref_head = NULL;
1038 fra.me.REG[0] = NIT_NULL;
1039 fra.me.REG[0] = p0;
1040 /* syntax/icode_generation.nit:165 */
1041 fra.me.REG[0] = ATTR_syntax___icode_generation___EscapableBlock____break_seq(fra.me.REG[0]);
1042 stack_frame_head = fra.me.prev;
1043 return fra.me.REG[0];
1044 }
1045 void syntax___icode_generation___EscapableBlock___break_seq__eq(val_t p0, val_t p1){
1046 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1047 val_t tmp;
1048 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1049 fra.me.file = LOCATE_syntax___icode_generation;
1050 fra.me.line = 165;
1051 fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___break_seq__eq;
1052 fra.me.has_broke = 0;
1053 fra.me.REG_size = 2;
1054 fra.me.nitni_local_ref_head = NULL;
1055 fra.me.REG[0] = NIT_NULL;
1056 fra.me.REG[1] = NIT_NULL;
1057 fra.me.REG[0] = p0;
1058 fra.me.REG[1] = p1;
1059 /* syntax/icode_generation.nit:165 */
1060 ATTR_syntax___icode_generation___EscapableBlock____break_seq(fra.me.REG[0]) = fra.me.REG[1];
1061 stack_frame_head = fra.me.prev;
1062 return;
1063 }
1064 val_t syntax___icode_generation___EscapableBlock___continue_seq(val_t p0){
1065 struct {struct stack_frame_t me;} fra;
1066 val_t tmp;
1067 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1068 fra.me.file = LOCATE_syntax___icode_generation;
1069 fra.me.line = 168;
1070 fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___continue_seq;
1071 fra.me.has_broke = 0;
1072 fra.me.REG_size = 1;
1073 fra.me.nitni_local_ref_head = NULL;
1074 fra.me.REG[0] = NIT_NULL;
1075 fra.me.REG[0] = p0;
1076 /* syntax/icode_generation.nit:168 */
1077 fra.me.REG[0] = ATTR_syntax___icode_generation___EscapableBlock____continue_seq(fra.me.REG[0]);
1078 stack_frame_head = fra.me.prev;
1079 return fra.me.REG[0];
1080 }
1081 void syntax___icode_generation___EscapableBlock___continue_seq__eq(val_t p0, val_t p1){
1082 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1083 val_t tmp;
1084 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1085 fra.me.file = LOCATE_syntax___icode_generation;
1086 fra.me.line = 168;
1087 fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___continue_seq__eq;
1088 fra.me.has_broke = 0;
1089 fra.me.REG_size = 2;
1090 fra.me.nitni_local_ref_head = NULL;
1091 fra.me.REG[0] = NIT_NULL;
1092 fra.me.REG[1] = NIT_NULL;
1093 fra.me.REG[0] = p0;
1094 fra.me.REG[1] = p1;
1095 /* syntax/icode_generation.nit:168 */
1096 ATTR_syntax___icode_generation___EscapableBlock____continue_seq(fra.me.REG[0]) = fra.me.REG[1];
1097 stack_frame_head = fra.me.prev;
1098 return;
1099 }
1100 val_t syntax___icode_generation___EscapableBlock___break_value(val_t p0){
1101 struct {struct stack_frame_t me;} fra;
1102 val_t tmp;
1103 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1104 fra.me.file = LOCATE_syntax___icode_generation;
1105 fra.me.line = 171;
1106 fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___break_value;
1107 fra.me.has_broke = 0;
1108 fra.me.REG_size = 1;
1109 fra.me.nitni_local_ref_head = NULL;
1110 fra.me.REG[0] = NIT_NULL;
1111 fra.me.REG[0] = p0;
1112 /* syntax/icode_generation.nit:171 */
1113 fra.me.REG[0] = ATTR_syntax___icode_generation___EscapableBlock____break_value(fra.me.REG[0]);
1114 stack_frame_head = fra.me.prev;
1115 return fra.me.REG[0];
1116 }
1117 void syntax___icode_generation___EscapableBlock___break_value__eq(val_t p0, val_t p1){
1118 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1119 val_t tmp;
1120 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1121 fra.me.file = LOCATE_syntax___icode_generation;
1122 fra.me.line = 171;
1123 fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___break_value__eq;
1124 fra.me.has_broke = 0;
1125 fra.me.REG_size = 2;
1126 fra.me.nitni_local_ref_head = NULL;
1127 fra.me.REG[0] = NIT_NULL;
1128 fra.me.REG[1] = NIT_NULL;
1129 fra.me.REG[0] = p0;
1130 fra.me.REG[1] = p1;
1131 /* syntax/icode_generation.nit:171 */
1132 ATTR_syntax___icode_generation___EscapableBlock____break_value(fra.me.REG[0]) = fra.me.REG[1];
1133 stack_frame_head = fra.me.prev;
1134 return;
1135 }
1136 val_t syntax___icode_generation___EscapableBlock___continue_value(val_t p0){
1137 struct {struct stack_frame_t me;} fra;
1138 val_t tmp;
1139 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1140 fra.me.file = LOCATE_syntax___icode_generation;
1141 fra.me.line = 174;
1142 fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___continue_value;
1143 fra.me.has_broke = 0;
1144 fra.me.REG_size = 1;
1145 fra.me.nitni_local_ref_head = NULL;
1146 fra.me.REG[0] = NIT_NULL;
1147 fra.me.REG[0] = p0;
1148 /* syntax/icode_generation.nit:174 */
1149 fra.me.REG[0] = ATTR_syntax___icode_generation___EscapableBlock____continue_value(fra.me.REG[0]);
1150 stack_frame_head = fra.me.prev;
1151 return fra.me.REG[0];
1152 }
1153 void syntax___icode_generation___EscapableBlock___continue_value__eq(val_t p0, val_t p1){
1154 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1155 val_t tmp;
1156 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1157 fra.me.file = LOCATE_syntax___icode_generation;
1158 fra.me.line = 174;
1159 fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___continue_value__eq;
1160 fra.me.has_broke = 0;
1161 fra.me.REG_size = 2;
1162 fra.me.nitni_local_ref_head = NULL;
1163 fra.me.REG[0] = NIT_NULL;
1164 fra.me.REG[1] = NIT_NULL;
1165 fra.me.REG[0] = p0;
1166 fra.me.REG[1] = p1;
1167 /* syntax/icode_generation.nit:174 */
1168 ATTR_syntax___icode_generation___EscapableBlock____continue_value(fra.me.REG[0]) = fra.me.REG[1];
1169 stack_frame_head = fra.me.prev;
1170 return;
1171 }
1172 void syntax___icode_generation___MMSrcModule___generate_icode(val_t p0, val_t p1){
1173 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1174 val_t tmp;
1175 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1176 fra.me.file = LOCATE_syntax___icode_generation;
1177 fra.me.line = 179;
1178 fra.me.meth = LOCATE_syntax___icode_generation___MMSrcModule___generate_icode;
1179 fra.me.has_broke = 0;
1180 fra.me.REG_size = 3;
1181 fra.me.nitni_local_ref_head = NULL;
1182 fra.me.REG[0] = NIT_NULL;
1183 fra.me.REG[1] = NIT_NULL;
1184 fra.me.REG[2] = NIT_NULL;
1185 fra.me.REG[0] = p0;
1186 fra.me.REG[1] = p1;
1187 /* syntax/icode_generation.nit:182 */
1188 fra.me.REG[1] = NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init(fra.me.REG[1], fra.me.REG[0]);
1189 /* syntax/icode_generation.nit:183 */
1190 fra.me.REG[2] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[0])(fra.me.REG[0]);
1191 fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[2])(fra.me.REG[2]);
1192 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___MMSrcModule___generate_icode_1));
1193 stack_frame_head = fra.me.prev;
1194 return;
1195 }
1196 void OC_syntax___icode_generation___MMSrcModule___generate_icode_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1197 struct {struct stack_frame_t me;} fra;
1198 fun_t CREG[1];
1199 val_t tmp;
1200 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1201 fra.me.file = LOCATE_syntax___icode_generation;
1202 fra.me.line = 0;
1203 fra.me.meth = LOCATE_syntax___icode_generation___MMSrcModule___generate_icode;
1204 fra.me.has_broke = 0;
1205 fra.me.REG_size = 1;
1206 fra.me.nitni_local_ref_head = NULL;
1207 fra.me.REG[0] = NIT_NULL;
1208 fra.me.closure_ctx = closctx_param;
1209 fra.me.closure_funs = CREG;
1210 fra.me.REG[0] = p0;
1211 CREG[0] = clos_fun0;
1212 /* syntax/icode_generation.nit:184 */
1213 fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
1214 fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
1215 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_syntax___icode_generation___MMSrcModule___generate_icode_2));
1216 stack_frame_head = fra.me.prev;
1217 return;
1218 }
1219 void OC_syntax___icode_generation___MMSrcModule___generate_icode_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1220 struct {struct stack_frame_t me;} fra;
1221 val_t REGB0;
1222 fun_t CREG[1];
1223 val_t tmp;
1224 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1225 fra.me.file = LOCATE_syntax___icode_generation;
1226 fra.me.line = 0;
1227 fra.me.meth = LOCATE_syntax___icode_generation___MMSrcModule___generate_icode;
1228 fra.me.has_broke = 0;
1229 fra.me.REG_size = 1;
1230 fra.me.nitni_local_ref_head = NULL;
1231 fra.me.REG[0] = NIT_NULL;
1232 fra.me.closure_ctx = closctx_param;
1233 fra.me.closure_funs = CREG;
1234 fra.me.REG[0] = p0;
1235 CREG[0] = clos_fun0;
1236 /* syntax/icode_generation.nit:185 */
1237 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
1238 if (UNTAG_Bool(REGB0)) {
1239 /* syntax/icode_generation.nit:186 */
1240 CALL_syntax___icode_generation___MMSrcMethod___generate_iroutine(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
1241 } else {
1242 /* syntax/icode_generation.nit:187 */
1243 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcAttribute, ID_syntax___syntax_base___MMSrcAttribute)) /*cast MMSrcAttribute*/;
1244 if (UNTAG_Bool(REGB0)) {
1245 /* syntax/icode_generation.nit:188 */
1246 CALL_syntax___icode_generation___MMSrcAttribute___generate_iroutine(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
1247 }
1248 }
1249 stack_frame_head = fra.me.prev;
1250 return;
1251 }
1252 val_t syntax___icode_generation___MMSrcAttribute___iroutine(val_t p0){
1253 struct {struct stack_frame_t me;} fra;
1254 val_t tmp;
1255 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1256 fra.me.file = LOCATE_syntax___icode_generation;
1257 fra.me.line = 196;
1258 fra.me.meth = LOCATE_syntax___icode_generation___MMSrcAttribute___iroutine;
1259 fra.me.has_broke = 0;
1260 fra.me.REG_size = 1;
1261 fra.me.nitni_local_ref_head = NULL;
1262 fra.me.REG[0] = NIT_NULL;
1263 fra.me.REG[0] = p0;
1264 /* syntax/icode_generation.nit:196 */
1265 fra.me.REG[0] = ATTR_syntax___icode_generation___MMSrcAttribute____iroutine(fra.me.REG[0]);
1266 stack_frame_head = fra.me.prev;
1267 return fra.me.REG[0];
1268 }
1269 void syntax___icode_generation___MMSrcAttribute___iroutine__eq(val_t p0, val_t p1){
1270 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1271 val_t tmp;
1272 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1273 fra.me.file = LOCATE_syntax___icode_generation;
1274 fra.me.line = 196;
1275 fra.me.meth = LOCATE_syntax___icode_generation___MMSrcAttribute___iroutine__eq;
1276 fra.me.has_broke = 0;
1277 fra.me.REG_size = 2;
1278 fra.me.nitni_local_ref_head = NULL;
1279 fra.me.REG[0] = NIT_NULL;
1280 fra.me.REG[1] = NIT_NULL;
1281 fra.me.REG[0] = p0;
1282 fra.me.REG[1] = p1;
1283 /* syntax/icode_generation.nit:196 */
1284 ATTR_syntax___icode_generation___MMSrcAttribute____iroutine(fra.me.REG[0]) = fra.me.REG[1];
1285 stack_frame_head = fra.me.prev;
1286 return;
1287 }
1288 void syntax___icode_generation___MMSrcAttribute___generate_iroutine(val_t p0, val_t p1){
1289 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1290 val_t REGB0;
1291 val_t REGB1;
1292 val_t tmp;
1293 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1294 fra.me.file = LOCATE_syntax___icode_generation;
1295 fra.me.line = 198;
1296 fra.me.meth = LOCATE_syntax___icode_generation___MMSrcAttribute___generate_iroutine;
1297 fra.me.has_broke = 0;
1298 fra.me.REG_size = 4;
1299 fra.me.nitni_local_ref_head = NULL;
1300 fra.me.REG[0] = NIT_NULL;
1301 fra.me.REG[1] = NIT_NULL;
1302 fra.me.REG[2] = NIT_NULL;
1303 fra.me.REG[3] = NIT_NULL;
1304 fra.me.REG[0] = p0;
1305 fra.me.REG[1] = p1;
1306 /* syntax/icode_generation.nit:201 */
1307 fra.me.REG[2] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1308 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1309 if (UNTAG_Bool(REGB0)) {
1310 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 201);
1311 }
1312 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1313 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1314 if (UNTAG_Bool(REGB0)) {
1315 } else {
1316 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1317 if (UNTAG_Bool(REGB1)) {
1318 REGB1 = TAG_Bool(false);
1319 REGB0 = REGB1;
1320 } else {
1321 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1322 REGB0 = REGB1;
1323 }
1324 }
1325 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1326 if (UNTAG_Bool(REGB0)) {
1327 /* syntax/icode_generation.nit:202 */
1328 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1329 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1330 if (UNTAG_Bool(REGB0)) {
1331 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 202);
1332 }
1333 fra.me.REG[2] = CALL_icode___icode_builder___MMSignature___generate_empty_iroutine(fra.me.REG[2])(fra.me.REG[2]);
1334 /* syntax/icode_generation.nit:203 */
1335 fra.me.REG[3] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1336 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1337 if (UNTAG_Bool(REGB0)) {
1338 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 203);
1339 }
1340 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
1341 CALL_icode___icode_base___IRoutine___location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1342 /* syntax/icode_generation.nit:204 */
1343 fra.me.REG[3] = NEW_A2IContext_syntax___icode_generation___A2IContext___init(fra.me.REG[1], fra.me.REG[2], NIT_NULL);
1344 /* syntax/icode_generation.nit:205 */
1345 CALL_syntax___icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1346 /* syntax/icode_generation.nit:206 */
1347 fra.me.REG[3] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1348 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1349 /* syntax/icode_generation.nit:207 */
1350 CALL_syntax___icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1351 /* syntax/icode_generation.nit:208 */
1352 ATTR_syntax___icode_generation___MMSrcAttribute____iroutine(fra.me.REG[0]) = fra.me.REG[2];
1353 }
1354 stack_frame_head = fra.me.prev;
1355 return;
1356 }
1357 val_t syntax___icode_generation___MMSrcMethod___iroutine(val_t p0){
1358 struct {struct stack_frame_t me;} fra;
1359 val_t tmp;
1360 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1361 fra.me.file = LOCATE_syntax___icode_generation;
1362 fra.me.line = 214;
1363 fra.me.meth = LOCATE_syntax___icode_generation___MMSrcMethod___iroutine;
1364 fra.me.has_broke = 0;
1365 fra.me.REG_size = 1;
1366 fra.me.nitni_local_ref_head = NULL;
1367 fra.me.REG[0] = NIT_NULL;
1368 fra.me.REG[0] = p0;
1369 /* syntax/icode_generation.nit:214 */
1370 fra.me.REG[0] = ATTR_syntax___icode_generation___MMSrcMethod____iroutine(fra.me.REG[0]);
1371 stack_frame_head = fra.me.prev;
1372 return fra.me.REG[0];
1373 }
1374 void syntax___icode_generation___MMSrcMethod___iroutine__eq(val_t p0, val_t p1){
1375 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1376 val_t tmp;
1377 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1378 fra.me.file = LOCATE_syntax___icode_generation;
1379 fra.me.line = 214;
1380 fra.me.meth = LOCATE_syntax___icode_generation___MMSrcMethod___iroutine__eq;
1381 fra.me.has_broke = 0;
1382 fra.me.REG_size = 2;
1383 fra.me.nitni_local_ref_head = NULL;
1384 fra.me.REG[0] = NIT_NULL;
1385 fra.me.REG[1] = NIT_NULL;
1386 fra.me.REG[0] = p0;
1387 fra.me.REG[1] = p1;
1388 /* syntax/icode_generation.nit:214 */
1389 ATTR_syntax___icode_generation___MMSrcMethod____iroutine(fra.me.REG[0]) = fra.me.REG[1];
1390 stack_frame_head = fra.me.prev;
1391 return;
1392 }
1393 void syntax___icode_generation___MMSrcMethod___generate_iroutine(val_t p0, val_t p1){
1394 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1395 val_t REGB0;
1396 val_t REGB1;
1397 val_t tmp;
1398 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1399 fra.me.file = LOCATE_syntax___icode_generation;
1400 fra.me.line = 216;
1401 fra.me.meth = LOCATE_syntax___icode_generation___MMSrcMethod___generate_iroutine;
1402 fra.me.has_broke = 0;
1403 fra.me.REG_size = 4;
1404 fra.me.nitni_local_ref_head = NULL;
1405 fra.me.REG[0] = NIT_NULL;
1406 fra.me.REG[1] = NIT_NULL;
1407 fra.me.REG[2] = NIT_NULL;
1408 fra.me.REG[3] = NIT_NULL;
1409 fra.me.REG[0] = p0;
1410 fra.me.REG[1] = p1;
1411 /* syntax/icode_generation.nit:219 */
1412 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1413 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1414 if (UNTAG_Bool(REGB0)) {
1415 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 219);
1416 }
1417 fra.me.REG[2] = CALL_icode___icode_builder___MMSignature___generate_empty_iroutine(fra.me.REG[2])(fra.me.REG[2]);
1418 /* syntax/icode_generation.nit:220 */
1419 fra.me.REG[3] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1420 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1421 if (UNTAG_Bool(REGB0)) {
1422 } else {
1423 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1424 if (UNTAG_Bool(REGB1)) {
1425 REGB1 = TAG_Bool(false);
1426 REGB0 = REGB1;
1427 } else {
1428 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1429 REGB0 = REGB1;
1430 }
1431 }
1432 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1433 if (UNTAG_Bool(REGB0)) {
1434 /* syntax/icode_generation.nit:221 */
1435 fra.me.REG[3] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1436 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1437 if (UNTAG_Bool(REGB0)) {
1438 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 221);
1439 }
1440 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
1441 CALL_icode___icode_base___IRoutine___location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1442 }
1443 /* syntax/icode_generation.nit:223 */
1444 fra.me.REG[3] = NEW_A2IContext_syntax___icode_generation___A2IContext___init(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
1445 /* syntax/icode_generation.nit:224 */
1446 CALL_syntax___icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1447 /* syntax/icode_generation.nit:225 */
1448 CALL_syntax___icode_generation___MMSrcMethod___inner_generate_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1449 /* syntax/icode_generation.nit:226 */
1450 CALL_syntax___icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1451 /* syntax/icode_generation.nit:227 */
1452 ATTR_syntax___icode_generation___MMSrcMethod____iroutine(fra.me.REG[0]) = fra.me.REG[2];
1453 stack_frame_head = fra.me.prev;
1454 return;
1455 }
1456 void syntax___icode_generation___MMSrcMethod___inner_generate_iroutine(val_t p0, val_t p1){
1457 struct {struct stack_frame_t me;} fra;
1458 val_t tmp;
1459 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1460 fra.me.file = LOCATE_syntax___icode_generation;
1461 fra.me.line = 230;
1462 fra.me.meth = LOCATE_syntax___icode_generation___MMSrcMethod___inner_generate_iroutine;
1463 fra.me.has_broke = 0;
1464 fra.me.REG_size = 0;
1465 fra.me.nitni_local_ref_head = NULL;
1466 /* syntax/icode_generation.nit:230 */
1467 nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 230);
1468 stack_frame_head = fra.me.prev;
1469 return;
1470 }
1471 void syntax___icode_generation___MMReadImplementationMethod___inner_generate_iroutine(val_t p0, val_t p1){
1472 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1473 val_t REGB0;
1474 val_t tmp;
1475 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1476 fra.me.file = LOCATE_syntax___icode_generation;
1477 fra.me.line = 235;
1478 fra.me.meth = LOCATE_syntax___icode_generation___MMReadImplementationMethod___inner_generate_iroutine;
1479 fra.me.has_broke = 0;
1480 fra.me.REG_size = 3;
1481 fra.me.nitni_local_ref_head = NULL;
1482 fra.me.REG[0] = NIT_NULL;
1483 fra.me.REG[1] = NIT_NULL;
1484 fra.me.REG[2] = NIT_NULL;
1485 fra.me.REG[0] = p0;
1486 fra.me.REG[1] = p1;
1487 /* syntax/icode_generation.nit:237 */
1488 fra.me.REG[0] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1489 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1490 if (UNTAG_Bool(REGB0)) {
1491 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 237);
1492 }
1493 fra.me.REG[0] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[0])(fra.me.REG[0]);
1494 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
1495 fra.me.REG[2] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
1496 fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
1497 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___add_attr_read(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
1498 /* syntax/icode_generation.nit:238 */
1499 CALL_icode___icode_builder___ICodeBuilder___add_return_value(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1500 stack_frame_head = fra.me.prev;
1501 return;
1502 }
1503 void syntax___icode_generation___MMWriteImplementationMethod___inner_generate_iroutine(val_t p0, val_t p1){
1504 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1505 val_t REGB0;
1506 val_t tmp;
1507 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1508 fra.me.file = LOCATE_syntax___icode_generation;
1509 fra.me.line = 243;
1510 fra.me.meth = LOCATE_syntax___icode_generation___MMWriteImplementationMethod___inner_generate_iroutine;
1511 fra.me.has_broke = 0;
1512 fra.me.REG_size = 4;
1513 fra.me.nitni_local_ref_head = NULL;
1514 fra.me.REG[0] = NIT_NULL;
1515 fra.me.REG[1] = NIT_NULL;
1516 fra.me.REG[2] = NIT_NULL;
1517 fra.me.REG[3] = NIT_NULL;
1518 fra.me.REG[0] = p0;
1519 fra.me.REG[1] = p1;
1520 /* syntax/icode_generation.nit:245 */
1521 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
1522 fra.me.REG[2] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
1523 /* syntax/icode_generation.nit:246 */
1524 fra.me.REG[0] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1525 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1526 if (UNTAG_Bool(REGB0)) {
1527 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 246);
1528 }
1529 fra.me.REG[0] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[0])(fra.me.REG[0]);
1530 REGB0 = TAG_Int(0);
1531 fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
1532 REGB0 = TAG_Int(1);
1533 fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
1534 fra.me.REG[2] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
1535 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1536 stack_frame_head = fra.me.prev;
1537 return;
1538 }
1539 void syntax___icode_generation___MMMethSrcMethod___inner_generate_iroutine(val_t p0, val_t p1){
1540 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1541 val_t tmp;
1542 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1543 fra.me.file = LOCATE_syntax___icode_generation;
1544 fra.me.line = 251;
1545 fra.me.meth = LOCATE_syntax___icode_generation___MMMethSrcMethod___inner_generate_iroutine;
1546 fra.me.has_broke = 0;
1547 fra.me.REG_size = 2;
1548 fra.me.nitni_local_ref_head = NULL;
1549 fra.me.REG[0] = NIT_NULL;
1550 fra.me.REG[1] = NIT_NULL;
1551 fra.me.REG[0] = p0;
1552 fra.me.REG[1] = p1;
1553 /* syntax/icode_generation.nit:253 */
1554 fra.me.REG[1] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
1555 fra.me.REG[0] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1556 CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1557 stack_frame_head = fra.me.prev;
1558 return;
1559 }
1560 void syntax___icode_generation___MMImplicitInit___inner_generate_iroutine(val_t p0, val_t p1){
1561 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
1562 val_t REGB0;
1563 val_t REGB1;
1564 val_t REGB2;
1565 val_t REGB3;
1566 val_t REGB4;
1567 val_t REGB5;
1568 val_t REGB6;
1569 val_t tmp;
1570 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1571 fra.me.file = LOCATE_syntax___icode_generation;
1572 fra.me.line = 258;
1573 fra.me.meth = LOCATE_syntax___icode_generation___MMImplicitInit___inner_generate_iroutine;
1574 fra.me.has_broke = 0;
1575 fra.me.REG_size = 10;
1576 fra.me.nitni_local_ref_head = NULL;
1577 fra.me.REG[0] = NIT_NULL;
1578 fra.me.REG[1] = NIT_NULL;
1579 fra.me.REG[2] = NIT_NULL;
1580 fra.me.REG[3] = NIT_NULL;
1581 fra.me.REG[4] = NIT_NULL;
1582 fra.me.REG[5] = NIT_NULL;
1583 fra.me.REG[6] = NIT_NULL;
1584 fra.me.REG[7] = NIT_NULL;
1585 fra.me.REG[8] = NIT_NULL;
1586 fra.me.REG[9] = NIT_NULL;
1587 fra.me.REG[0] = p0;
1588 fra.me.REG[1] = p1;
1589 /* syntax/icode_generation.nit:260 */
1590 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
1591 fra.me.REG[2] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
1592 /* syntax/icode_generation.nit:261 */
1593 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
1594 fra.me.REG[3] = CALL_syntax___syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[0])(fra.me.REG[0]);
1595 /* ../lib/standard/collection/array.nit:24 */
1596 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1597 if (UNTAG_Bool(REGB1)) {
1598 } else {
1599 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1600 }
1601 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
1602 /* ../lib/standard/kernel.nit:237 */
1603 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
1604 /* syntax/icode_generation.nit:262 */
1605 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
1606 /* syntax/icode_generation.nit:263 */
1607 fra.me.REG[4] = CALL_syntax___syntax_base___MMImplicitInit___super_inits(fra.me.REG[0])(fra.me.REG[0]);
1608 /* ../lib/standard/collection/array.nit:269 */
1609 REGB0 = TAG_Int(0);
1610 /* ../lib/standard/collection/array.nit:270 */
1611 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1612 if (UNTAG_Bool(REGB2)) {
1613 } else {
1614 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1615 }
1616 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1617 /* ../lib/standard/collection/array.nit:271 */
1618 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
1619 /* ../lib/standard/collection/array.nit:272 */
1620 while(1) {
1621 /* ../lib/standard/collection/array.nit:24 */
1622 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1623 if (UNTAG_Bool(REGB2)) {
1624 } else {
1625 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1626 }
1627 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
1628 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1629 if (UNTAG_Bool(REGB3)) {
1630 } else {
1631 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1632 }
1633 /* ../lib/standard/kernel.nit:232 */
1634 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
1635 /* ../lib/standard/collection/array.nit:272 */
1636 if (UNTAG_Bool(REGB2)) {
1637 /* ../lib/standard/collection/array.nit:273 */
1638 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1639 if (UNTAG_Bool(REGB2)) {
1640 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1641 }
1642 /* ../lib/standard/collection/array.nit:718 */
1643 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
1644 /* syntax/icode_generation.nit:264 */
1645 REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
1646 if (UNTAG_Bool(REGB2)) {
1647 } else {
1648 nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 264);
1649 }
1650 /* syntax/icode_generation.nit:265 */
1651 REGB2 = TAG_Int(1);
1652 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
1653 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
1654 /* syntax/icode_generation.nit:266 */
1655 fra.me.REG[8] = CALL_syntax___syntax_base___MMImplicitInit___super_init(fra.me.REG[0])(fra.me.REG[0]);
1656 REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[8]));
1657 if (UNTAG_Bool(REGB2)) {
1658 } else {
1659 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
1660 REGB2 = REGB3;
1661 }
1662 if (UNTAG_Bool(REGB2)) {
1663 /* syntax/icode_generation.nit:267 */
1664 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
1665 /* syntax/icode_generation.nit:268 */
1666 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
1667 /* syntax/icode_generation.nit:269 */
1668 REGB2 = TAG_Int(1);
1669 /* ../lib/standard/kernel.nit:347 */
1670 REGB3 = REGB1;
1671 /* ../lib/standard/kernel.nit:352 */
1672 while(1) {
1673 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1674 if (UNTAG_Bool(REGB4)) {
1675 } else {
1676 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1677 }
1678 /* ../lib/standard/kernel.nit:232 */
1679 REGB4 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1680 /* ../lib/standard/kernel.nit:352 */
1681 if (UNTAG_Bool(REGB4)) {
1682 /* syntax/icode_generation.nit:269 */
1683 REGB4 = REGB2;
1684 /* syntax/icode_generation.nit:270 */
1685 fra.me.REG[9] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
1686 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
1687 /* ../lib/standard/kernel.nit:354 */
1688 REGB4 = TAG_Int(1);
1689 /* ../lib/standard/kernel.nit:235 */
1690 REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
1691 /* ../lib/standard/kernel.nit:354 */
1692 REGB2 = REGB4;
1693 } else {
1694 /* ../lib/standard/kernel.nit:352 */
1695 goto label1;
1696 }
1697 }
1698 label1: while(0);
1699 /* syntax/icode_generation.nit:272 */
1700 fra.me.REG[8] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[6], fra.me.REG[8]);
1701 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
1702 } else {
1703 /* syntax/icode_generation.nit:274 */
1704 fra.me.REG[7] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[6], fra.me.REG[7]);
1705 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
1706 }
1707 /* ../lib/standard/collection/array.nit:274 */
1708 REGB2 = TAG_Int(1);
1709 /* ../lib/standard/kernel.nit:235 */
1710 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
1711 /* ../lib/standard/collection/array.nit:274 */
1712 REGB0 = REGB2;
1713 } else {
1714 /* ../lib/standard/collection/array.nit:272 */
1715 goto label2;
1716 }
1717 }
1718 label2: while(0);
1719 /* syntax/icode_generation.nit:277 */
1720 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
1721 /* ../lib/standard/kernel.nit:347 */
1722 REGB2 = REGB1;
1723 /* ../lib/standard/kernel.nit:352 */
1724 while(1) {
1725 REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
1726 if (UNTAG_Bool(REGB3)) {
1727 } else {
1728 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1729 }
1730 /* ../lib/standard/kernel.nit:232 */
1731 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
1732 /* ../lib/standard/kernel.nit:352 */
1733 if (UNTAG_Bool(REGB3)) {
1734 /* syntax/icode_generation.nit:277 */
1735 REGB3 = REGB2;
1736 /* syntax/icode_generation.nit:278 */
1737 fra.me.REG[5] = CALL_syntax___syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[0])(fra.me.REG[0]);
1738 /* ../lib/standard/kernel.nit:237 */
1739 REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB1));
1740 /* ../lib/standard/collection/array.nit:280 */
1741 REGB5 = TAG_Int(0);
1742 REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
1743 if (UNTAG_Bool(REGB6)) {
1744 } else {
1745 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1746 }
1747 /* ../lib/standard/kernel.nit:233 */
1748 REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
1749 /* ../lib/standard/collection/array.nit:280 */
1750 if (UNTAG_Bool(REGB5)) {
1751 REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1752 if (UNTAG_Bool(REGB5)) {
1753 } else {
1754 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
1755 }
1756 REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
1757 REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
1758 if (UNTAG_Bool(REGB6)) {
1759 } else {
1760 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1761 }
1762 /* ../lib/standard/kernel.nit:232 */
1763 REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
1764 } else {
1765 /* ../lib/standard/collection/array.nit:280 */
1766 REGB6 = TAG_Bool(false);
1767 REGB5 = REGB6;
1768 }
1769 if (UNTAG_Bool(REGB5)) {
1770 } else {
1771 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
1772 }
1773 /* ../lib/standard/collection/array.nit:281 */
1774 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
1775 REGB5 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1776 if (UNTAG_Bool(REGB5)) {
1777 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
1778 }
1779 /* ../lib/standard/collection/array.nit:718 */
1780 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB4)];
1781 /* ../lib/standard/collection/array.nit:281 */
1782 goto label3;
1783 label3: while(0);
1784 /* syntax/icode_generation.nit:279 */
1785 fra.me.REG[4] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB3);
1786 fra.me.REG[4] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
1787 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1788 /* ../lib/standard/kernel.nit:354 */
1789 REGB3 = TAG_Int(1);
1790 /* ../lib/standard/kernel.nit:235 */
1791 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1792 /* ../lib/standard/kernel.nit:354 */
1793 REGB2 = REGB3;
1794 } else {
1795 /* ../lib/standard/kernel.nit:352 */
1796 goto label4;
1797 }
1798 }
1799 label4: while(0);
1800 stack_frame_head = fra.me.prev;
1801 return;
1802 }
1803 void syntax___icode_generation___A2IVisitor___icode_ctx__eq(val_t p0, val_t p1){
1804 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1805 val_t tmp;
1806 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1807 fra.me.file = LOCATE_syntax___icode_generation;
1808 fra.me.line = 286;
1809 fra.me.meth = LOCATE_syntax___icode_generation___A2IVisitor___icode_ctx__eq;
1810 fra.me.has_broke = 0;
1811 fra.me.REG_size = 2;
1812 fra.me.nitni_local_ref_head = NULL;
1813 fra.me.REG[0] = NIT_NULL;
1814 fra.me.REG[1] = NIT_NULL;
1815 fra.me.REG[0] = p0;
1816 fra.me.REG[1] = p1;
1817 /* syntax/icode_generation.nit:286 */
1818 ATTR_syntax___icode_generation___A2IVisitor____icode_ctx(fra.me.REG[0]) = fra.me.REG[1];
1819 stack_frame_head = fra.me.prev;
1820 return;
1821 }
1822 val_t syntax___icode_generation___A2IVisitor___icode_ctx(val_t p0){
1823 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1824 val_t REGB0;
1825 val_t tmp;
1826 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1827 fra.me.file = LOCATE_syntax___icode_generation;
1828 fra.me.line = 287;
1829 fra.me.meth = LOCATE_syntax___icode_generation___A2IVisitor___icode_ctx;
1830 fra.me.has_broke = 0;
1831 fra.me.REG_size = 2;
1832 fra.me.nitni_local_ref_head = NULL;
1833 fra.me.REG[0] = NIT_NULL;
1834 fra.me.REG[1] = NIT_NULL;
1835 fra.me.REG[0] = p0;
1836 /* syntax/icode_generation.nit:287 */
1837 fra.me.REG[1] = fra.me.REG[0];
1838 fra.me.REG[1] = ATTR_syntax___icode_generation___A2IVisitor____icode_ctx(fra.me.REG[1]);
1839 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1840 if (UNTAG_Bool(REGB0)) {
1841 } else {
1842 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 287);
1843 }
1844 goto label1;
1845 label1: while(0);
1846 stack_frame_head = fra.me.prev;
1847 return fra.me.REG[1];
1848 }
1849 void syntax___icode_generation___A2IVisitor___visit(val_t p0, val_t p1){
1850 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1851 val_t REGB0;
1852 val_t tmp;
1853 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1854 fra.me.file = LOCATE_syntax___icode_generation;
1855 fra.me.line = 288;
1856 fra.me.meth = LOCATE_syntax___icode_generation___A2IVisitor___visit;
1857 fra.me.has_broke = 0;
1858 fra.me.REG_size = 2;
1859 fra.me.nitni_local_ref_head = NULL;
1860 fra.me.REG[0] = NIT_NULL;
1861 fra.me.REG[1] = NIT_NULL;
1862 fra.me.REG[0] = p0;
1863 fra.me.REG[1] = p1;
1864 /* syntax/icode_generation.nit:288 */
1865 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1866 if (UNTAG_Bool(REGB0)) {
1867 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 288);
1868 }
1869 CALL_syntax___icode_generation___ANode___accept_icode_generation(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1870 stack_frame_head = fra.me.prev;
1871 return;
1872 }
1873 void syntax___icode_generation___A2IVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
1874 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___icode_generation___A2IVisitor].i;
1875 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1876 val_t tmp;
1877 if (init_table[itpos1]) return;
1878 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1879 fra.me.file = LOCATE_syntax___icode_generation;
1880 fra.me.line = 289;
1881 fra.me.meth = LOCATE_syntax___icode_generation___A2IVisitor___init;
1882 fra.me.has_broke = 0;
1883 fra.me.REG_size = 3;
1884 fra.me.nitni_local_ref_head = NULL;
1885 fra.me.REG[0] = NIT_NULL;
1886 fra.me.REG[1] = NIT_NULL;
1887 fra.me.REG[2] = NIT_NULL;
1888 fra.me.REG[0] = p0;
1889 fra.me.REG[1] = p1;
1890 fra.me.REG[2] = p2;
1891 /* syntax/icode_generation.nit:289 */
1892 CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
1893 stack_frame_head = fra.me.prev;
1894 init_table[itpos1] = 1;
1895 return;
1896 }
1897 void syntax___icode_generation___ANode___accept_icode_generation(val_t p0, val_t p1){
1898 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1899 val_t tmp;
1900 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1901 fra.me.file = LOCATE_syntax___icode_generation;
1902 fra.me.line = 296;
1903 fra.me.meth = LOCATE_syntax___icode_generation___ANode___accept_icode_generation;
1904 fra.me.has_broke = 0;
1905 fra.me.REG_size = 2;
1906 fra.me.nitni_local_ref_head = NULL;
1907 fra.me.REG[0] = NIT_NULL;
1908 fra.me.REG[1] = NIT_NULL;
1909 fra.me.REG[0] = p0;
1910 fra.me.REG[1] = p1;
1911 /* syntax/icode_generation.nit:296 */
1912 CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1913 stack_frame_head = fra.me.prev;
1914 return;
1915 }
1916 void syntax___icode_generation___AAttrPropdef___accept_icode_generation(val_t p0, val_t p1){
1917 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1918 val_t REGB0;
1919 val_t REGB1;
1920 val_t tmp;
1921 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1922 fra.me.file = LOCATE_syntax___icode_generation;
1923 fra.me.line = 300;
1924 fra.me.meth = LOCATE_syntax___icode_generation___AAttrPropdef___accept_icode_generation;
1925 fra.me.has_broke = 0;
1926 fra.me.REG_size = 6;
1927 fra.me.nitni_local_ref_head = NULL;
1928 fra.me.REG[0] = NIT_NULL;
1929 fra.me.REG[1] = NIT_NULL;
1930 fra.me.REG[2] = NIT_NULL;
1931 fra.me.REG[3] = NIT_NULL;
1932 fra.me.REG[4] = NIT_NULL;
1933 fra.me.REG[5] = NIT_NULL;
1934 fra.me.REG[0] = p0;
1935 fra.me.REG[1] = p1;
1936 /* syntax/icode_generation.nit:300 */
1937 fra.me.REG[2] = fra.me.REG[0];
1938 fra.me.REG[3] = fra.me.REG[1];
1939 /* syntax/icode_generation.nit:302 */
1940 fra.me.REG[3] = CALL_syntax___icode_generation___A2IVisitor___icode_ctx(fra.me.REG[3])(fra.me.REG[3]);
1941 /* syntax/icode_generation.nit:303 */
1942 fra.me.REG[4] = CALL_syntax___syntax_base___APropdef___self_var(fra.me.REG[2])(fra.me.REG[2]);
1943 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1944 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[3])(fra.me.REG[3]);
1945 fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
1946 fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
1947 fra.me.REG[5] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[4], fra.me.REG[5]);
1948 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
1949 /* syntax/icode_generation.nit:304 */
1950 CALL_SUPER_syntax___icode_generation___AAttrPropdef___accept_icode_generation(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1951 /* syntax/icode_generation.nit:305 */
1952 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1953 /* syntax/icode_generation.nit:306 */
1954 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1955 if (UNTAG_Bool(REGB0)) {
1956 } else {
1957 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1958 if (UNTAG_Bool(REGB1)) {
1959 REGB1 = TAG_Bool(false);
1960 REGB0 = REGB1;
1961 } else {
1962 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1963 REGB0 = REGB1;
1964 }
1965 }
1966 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1967 if (UNTAG_Bool(REGB0)) {
1968 /* syntax/icode_generation.nit:307 */
1969 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[3])(fra.me.REG[3]);
1970 fra.me.REG[1] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[1])(fra.me.REG[1]);
1971 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
1972 if (UNTAG_Bool(REGB0)) {
1973 } else {
1974 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 307);
1975 }
1976 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1977 fra.me.REG[2] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[1], fra.me.REG[2]);
1978 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1979 }
1980 stack_frame_head = fra.me.prev;
1981 return;
1982 }
1983 void syntax___icode_generation___AMethPropdef___accept_icode_generation(val_t p0, val_t p1){
1984 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1985 val_t tmp;
1986 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1987 fra.me.file = LOCATE_syntax___icode_generation;
1988 fra.me.line = 313;
1989 fra.me.meth = LOCATE_syntax___icode_generation___AMethPropdef___accept_icode_generation;
1990 fra.me.has_broke = 0;
1991 fra.me.REG_size = 4;
1992 fra.me.nitni_local_ref_head = NULL;
1993 fra.me.REG[0] = NIT_NULL;
1994 fra.me.REG[1] = NIT_NULL;
1995 fra.me.REG[2] = NIT_NULL;
1996 fra.me.REG[3] = NIT_NULL;
1997 fra.me.REG[0] = p0;
1998 fra.me.REG[1] = p1;
1999 /* syntax/icode_generation.nit:313 */
2000 fra.me.REG[2] = fra.me.REG[0];
2001 fra.me.REG[3] = fra.me.REG[1];
2002 /* syntax/icode_generation.nit:315 */
2003 CALL_SUPER_syntax___icode_generation___AMethPropdef___accept_icode_generation(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
2004 /* syntax/icode_generation.nit:316 */
2005 fra.me.REG[3] = CALL_syntax___icode_generation___A2IVisitor___icode_ctx(fra.me.REG[3])(fra.me.REG[3]);
2006 fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
2007 CALL_syntax___icode_generation___AMethPropdef___fill_iroutine(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
2008 stack_frame_head = fra.me.prev;
2009 return;
2010 }
2011 void syntax___icode_generation___AMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2012 struct {struct stack_frame_t me;} fra;
2013 val_t tmp;
2014 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2015 fra.me.file = LOCATE_syntax___icode_generation;
2016 fra.me.line = 319;
2017 fra.me.meth = LOCATE_syntax___icode_generation___AMethPropdef___fill_iroutine;
2018 fra.me.has_broke = 0;
2019 fra.me.REG_size = 0;
2020 fra.me.nitni_local_ref_head = NULL;
2021 /* syntax/icode_generation.nit:319 */
2022 nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 319);
2023 stack_frame_head = fra.me.prev;
2024 return;
2025 }
2026 void syntax___icode_generation___ASignature___fill_iroutine_parameters(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
2027 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
2028 val_t REGB0;
2029 val_t REGB1;
2030 val_t REGB2;
2031 val_t REGB3;
2032 val_t tmp;
2033 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2034 fra.me.file = LOCATE_syntax___icode_generation;
2035 fra.me.line = 324;
2036 fra.me.meth = LOCATE_syntax___icode_generation___ASignature___fill_iroutine_parameters;
2037 fra.me.has_broke = 0;
2038 fra.me.REG_size = 7;
2039 fra.me.nitni_local_ref_head = NULL;
2040 fra.me.REG[0] = NIT_NULL;
2041 fra.me.REG[1] = NIT_NULL;
2042 fra.me.REG[2] = NIT_NULL;
2043 fra.me.REG[3] = NIT_NULL;
2044 fra.me.REG[4] = NIT_NULL;
2045 fra.me.REG[5] = NIT_NULL;
2046 fra.me.REG[6] = NIT_NULL;
2047 fra.me.REG[0] = p0;
2048 fra.me.REG[1] = p1;
2049 fra.me.REG[2] = p2;
2050 fra.me.REG[3] = p3;
2051 fra.me.REG[4] = p4;
2052 /* syntax/icode_generation.nit:324 */
2053 fra.me.REG[5] = fra.me.REG[0];
2054 /* syntax/icode_generation.nit:326 */
2055 fra.me.REG[6] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[5])(fra.me.REG[5]);
2056 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[6])(fra.me.REG[6], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___ASignature___fill_iroutine_parameters_1));
2057 /* syntax/icode_generation.nit:335 */
2058 REGB0 = TAG_Int(0);
2059 fra.me.REG[3] = CALL_parser___parser_nodes___ASignature___n_closure_decls(fra.me.REG[5])(fra.me.REG[5]);
2060 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
2061 /* ../lib/standard/kernel.nit:352 */
2062 while(1) {
2063 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2064 if (UNTAG_Bool(REGB2)) {
2065 } else {
2066 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2067 }
2068 /* ../lib/standard/kernel.nit:232 */
2069 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2070 /* ../lib/standard/kernel.nit:352 */
2071 if (UNTAG_Bool(REGB2)) {
2072 /* syntax/icode_generation.nit:335 */
2073 REGB2 = REGB0;
2074 /* syntax/icode_generation.nit:336 */
2075 fra.me.REG[3] = CALL_parser___parser_nodes___ASignature___n_closure_decls(fra.me.REG[5])(fra.me.REG[5]);
2076 fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
2077 /* syntax/icode_generation.nit:337 */
2078 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___closurevariables(fra.me.REG[1])(fra.me.REG[1]);
2079 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[3])(fra.me.REG[3]);
2080 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2081 if (UNTAG_Bool(REGB3)) {
2082 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 337);
2083 }
2084 fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[4])(fra.me.REG[4], REGB2);
2085 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
2086 /* ../lib/standard/kernel.nit:354 */
2087 REGB2 = TAG_Int(1);
2088 /* ../lib/standard/kernel.nit:235 */
2089 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
2090 /* ../lib/standard/kernel.nit:354 */
2091 REGB0 = REGB2;
2092 } else {
2093 /* ../lib/standard/kernel.nit:352 */
2094 goto label2;
2095 }
2096 }
2097 label2: while(0);
2098 stack_frame_head = fra.me.prev;
2099 return;
2100 }
2101 void OC_syntax___icode_generation___ASignature___fill_iroutine_parameters_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2102 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2103 val_t REGB0;
2104 fun_t CREG[1];
2105 val_t tmp;
2106 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2107 fra.me.file = LOCATE_syntax___icode_generation;
2108 fra.me.line = 0;
2109 fra.me.meth = LOCATE_syntax___icode_generation___ASignature___fill_iroutine_parameters;
2110 fra.me.has_broke = 0;
2111 fra.me.REG_size = 4;
2112 fra.me.nitni_local_ref_head = NULL;
2113 fra.me.REG[0] = NIT_NULL;
2114 fra.me.REG[1] = NIT_NULL;
2115 fra.me.REG[2] = NIT_NULL;
2116 fra.me.REG[3] = NIT_NULL;
2117 fra.me.closure_ctx = closctx_param;
2118 fra.me.closure_funs = CREG;
2119 fra.me.REG[0] = p0;
2120 CREG[0] = clos_fun0;
2121 /* syntax/icode_generation.nit:327 */
2122 fra.me.REG[1] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
2123 fra.me.REG[1] = CALL_syntax___icode_generation___A2IContext___variable(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
2124 /* syntax/icode_generation.nit:328 */
2125 REGB0 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[0])(fra.me.REG[0]);
2126 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature_____bra(closctx->REG[2])(closctx->REG[2], REGB0);
2127 /* syntax/icode_generation.nit:329 */
2128 fra.me.REG[3] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
2129 fra.me.REG[3] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
2130 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
2131 if (UNTAG_Bool(REGB0)) {
2132 } else {
2133 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 329);
2134 }
2135 /* syntax/icode_generation.nit:330 */
2136 REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
2137 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2138 if (UNTAG_Bool(REGB0)) {
2139 /* syntax/icode_generation.nit:331 */
2140 REGB0 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[0])(fra.me.REG[0]);
2141 fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(closctx->REG[3])(closctx->REG[3], REGB0);
2142 CALL_icode___icode_builder___ICodeBuilder___add_type_cast(closctx->REG[1])(closctx->REG[1], fra.me.REG[2], fra.me.REG[3]);
2143 }
2144 /* syntax/icode_generation.nit:333 */
2145 REGB0 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[0])(fra.me.REG[0]);
2146 fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(closctx->REG[3])(closctx->REG[3], REGB0);
2147 fra.me.REG[0] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[1], fra.me.REG[0]);
2148 CALL_icode___icode_builder___ICodeBuilder___stmt(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
2149 stack_frame_head = fra.me.prev;
2150 return;
2151 }
2152 void syntax___icode_generation___AClosureDecl___accept_icode_generation(val_t p0, val_t p1){
2153 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
2154 val_t REGB0;
2155 val_t REGB1;
2156 val_t tmp;
2157 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2158 fra.me.file = LOCATE_syntax___icode_generation;
2159 fra.me.line = 343;
2160 fra.me.meth = LOCATE_syntax___icode_generation___AClosureDecl___accept_icode_generation;
2161 fra.me.has_broke = 0;
2162 fra.me.REG_size = 8;
2163 fra.me.nitni_local_ref_head = NULL;
2164 fra.me.REG[0] = NIT_NULL;
2165 fra.me.REG[1] = NIT_NULL;
2166 fra.me.REG[2] = NIT_NULL;
2167 fra.me.REG[3] = NIT_NULL;
2168 fra.me.REG[4] = NIT_NULL;
2169 fra.me.REG[5] = NIT_NULL;
2170 fra.me.REG[6] = NIT_NULL;
2171 fra.me.REG[7] = NIT_NULL;
2172 fra.me.REG[0] = p0;
2173 fra.me.REG[1] = p1;
2174 /* syntax/icode_generation.nit:343 */
2175 fra.me.REG[2] = fra.me.REG[0];
2176 /* syntax/icode_generation.nit:345 */
2177 fra.me.REG[1] = CALL_syntax___icode_generation___A2IVisitor___icode_ctx(fra.me.REG[1])(fra.me.REG[1]);
2178 /* syntax/icode_generation.nit:346 */
2179 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2180 fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[3])(fra.me.REG[3]);
2181 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
2182 fra.me.REG[3] = CALL_icode___icode_builder___MMSignature___generate_empty_iclosuredef(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
2183 /* syntax/icode_generation.nit:347 */
2184 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
2185 /* syntax/icode_generation.nit:348 */
2186 fra.me.REG[5] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[3])(fra.me.REG[3]);
2187 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
2188 /* syntax/icode_generation.nit:349 */
2189 fra.me.REG[5] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[2])(fra.me.REG[2]);
2190 fra.me.REG[6] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[3])(fra.me.REG[3]);
2191 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2192 if (UNTAG_Bool(REGB0)) {
2193 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 349);
2194 }
2195 CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2196 /* syntax/icode_generation.nit:350 */
2197 fra.me.REG[6] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[2])(fra.me.REG[2]);
2198 fra.me.REG[5] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[3])(fra.me.REG[3]);
2199 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2200 if (UNTAG_Bool(REGB0)) {
2201 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 350);
2202 }
2203 CALL_syntax___icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
2204 /* syntax/icode_generation.nit:351 */
2205 fra.me.REG[5] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[2])(fra.me.REG[2]);
2206 fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
2207 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2208 if (UNTAG_Bool(REGB0)) {
2209 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 351);
2210 }
2211 CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2212 /* syntax/icode_generation.nit:352 */
2213 fra.me.REG[6] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[2])(fra.me.REG[2]);
2214 fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
2215 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2216 if (UNTAG_Bool(REGB0)) {
2217 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 352);
2218 }
2219 CALL_syntax___icode_generation___EscapableBlock___break_value__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
2220 /* syntax/icode_generation.nit:353 */
2221 fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDecl___n_signature(fra.me.REG[2])(fra.me.REG[2]);
2222 fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2223 fra.me.REG[6] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[6])(fra.me.REG[6]);
2224 fra.me.REG[6] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[6])(fra.me.REG[6]);
2225 fra.me.REG[7] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
2226 CALL_syntax___icode_generation___ASignature___fill_iroutine_parameters(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[6], fra.me.REG[7], NIT_NULL);
2227 /* syntax/icode_generation.nit:355 */
2228 fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
2229 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2230 if (UNTAG_Bool(REGB0)) {
2231 } else {
2232 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2233 if (UNTAG_Bool(REGB1)) {
2234 REGB1 = TAG_Bool(false);
2235 REGB0 = REGB1;
2236 } else {
2237 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
2238 REGB0 = REGB1;
2239 }
2240 }
2241 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2242 if (UNTAG_Bool(REGB0)) {
2243 /* syntax/icode_generation.nit:356 */
2244 fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
2245 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
2246 /* syntax/icode_generation.nit:357 */
2247 fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
2248 fra.me.REG[7] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[7])(fra.me.REG[7]);
2249 REGB0 = CALL_syntax___syntax_base___AClosureDecl___position(fra.me.REG[2])(fra.me.REG[2]);
2250 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2251 if (UNTAG_Bool(REGB1)) {
2252 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 357);
2253 }
2254 fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
2255 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
2256 if (UNTAG_Bool(REGB0)) {
2257 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 357);
2258 }
2259 CALL_icode___icode_base___IClosureDecl___default__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
2260 /* syntax/icode_generation.nit:360 */
2261 fra.me.REG[2] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
2262 fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
2263 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[2])(fra.me.REG[2]);
2264 if (UNTAG_Bool(REGB0)) {
2265 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
2266 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2267 if (UNTAG_Bool(REGB0)) {
2268 } else {
2269 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2270 if (UNTAG_Bool(REGB1)) {
2271 REGB1 = TAG_Bool(false);
2272 REGB0 = REGB1;
2273 } else {
2274 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2275 REGB0 = REGB1;
2276 }
2277 }
2278 } else {
2279 REGB1 = TAG_Bool(false);
2280 REGB0 = REGB1;
2281 }
2282 if (UNTAG_Bool(REGB0)) {
2283 /* syntax/icode_generation.nit:361 */
2284 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
2285 REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
2286 if (UNTAG_Bool(REGB0)) {
2287 } else {
2288 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 361);
2289 }
2290 CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2291 }
2292 }
2293 /* syntax/icode_generation.nit:364 */
2294 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2295 stack_frame_head = fra.me.prev;
2296 return;
2297 }
2298 void syntax___icode_generation___AConcreteMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2299 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
2300 val_t REGB0;
2301 val_t REGB1;
2302 val_t REGB2;
2303 val_t tmp;
2304 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2305 fra.me.file = LOCATE_syntax___icode_generation;
2306 fra.me.line = 369;
2307 fra.me.meth = LOCATE_syntax___icode_generation___AConcreteMethPropdef___fill_iroutine;
2308 fra.me.has_broke = 0;
2309 fra.me.REG_size = 6;
2310 fra.me.nitni_local_ref_head = NULL;
2311 fra.me.REG[0] = NIT_NULL;
2312 fra.me.REG[1] = NIT_NULL;
2313 fra.me.REG[2] = NIT_NULL;
2314 fra.me.REG[3] = NIT_NULL;
2315 fra.me.REG[4] = NIT_NULL;
2316 fra.me.REG[5] = NIT_NULL;
2317 fra.me.REG[0] = p0;
2318 fra.me.REG[1] = p1;
2319 fra.me.REG[2] = p2;
2320 /* syntax/icode_generation.nit:371 */
2321 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
2322 fra.me.REG[3] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
2323 fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
2324 /* syntax/icode_generation.nit:372 */
2325 fra.me.REG[4] = CALL_syntax___syntax_base___APropdef___self_var(fra.me.REG[0])(fra.me.REG[0]);
2326 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2327 /* syntax/icode_generation.nit:373 */
2328 REGB0 = TAG_Int(0);
2329 /* ../lib/standard/collection/array.nit:278 */
2330 fra.me.REG[5] = fra.me.REG[3];
2331 /* ../lib/standard/collection/array.nit:280 */
2332 REGB1 = TAG_Int(0);
2333 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2334 if (UNTAG_Bool(REGB2)) {
2335 } else {
2336 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2337 }
2338 /* ../lib/standard/kernel.nit:233 */
2339 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
2340 /* ../lib/standard/collection/array.nit:280 */
2341 if (UNTAG_Bool(REGB1)) {
2342 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
2343 if (UNTAG_Bool(REGB1)) {
2344 } else {
2345 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
2346 }
2347 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
2348 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
2349 if (UNTAG_Bool(REGB2)) {
2350 } else {
2351 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
2352 }
2353 /* ../lib/standard/kernel.nit:232 */
2354 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2355 } else {
2356 /* ../lib/standard/collection/array.nit:280 */
2357 REGB2 = TAG_Bool(false);
2358 REGB1 = REGB2;
2359 }
2360 if (UNTAG_Bool(REGB1)) {
2361 } else {
2362 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
2363 }
2364 /* ../lib/standard/collection/array.nit:281 */
2365 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
2366 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2367 if (UNTAG_Bool(REGB1)) {
2368 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
2369 }
2370 /* ../lib/standard/collection/array.nit:718 */
2371 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
2372 /* ../lib/standard/collection/array.nit:281 */
2373 goto label1;
2374 label1: while(0);
2375 /* syntax/icode_generation.nit:373 */
2376 fra.me.REG[5] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[4], fra.me.REG[5]);
2377 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
2378 /* syntax/icode_generation.nit:374 */
2379 CALL_syntax___icode_generation___A2IContext___selfreg__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2380 /* syntax/icode_generation.nit:375 */
2381 CALL_standard___collection___abstract_collection___Sequence___shift(fra.me.REG[3])(fra.me.REG[3]);
2382 /* syntax/icode_generation.nit:377 */
2383 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
2384 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
2385 /* syntax/icode_generation.nit:378 */
2386 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2387 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2388 if (UNTAG_Bool(REGB0)) {
2389 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 378);
2390 }
2391 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[2])(fra.me.REG[2]);
2392 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
2393 /* syntax/icode_generation.nit:379 */
2394 fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
2395 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2396 if (UNTAG_Bool(REGB0)) {
2397 } else {
2398 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2399 if (UNTAG_Bool(REGB1)) {
2400 REGB1 = TAG_Bool(false);
2401 REGB0 = REGB1;
2402 } else {
2403 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2404 REGB0 = REGB1;
2405 }
2406 }
2407 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2408 if (UNTAG_Bool(REGB0)) {
2409 /* syntax/icode_generation.nit:380 */
2410 fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
2411 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
2412 fra.me.REG[5] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[5])(fra.me.REG[5]);
2413 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2414 if (UNTAG_Bool(REGB0)) {
2415 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 380);
2416 }
2417 CALL_syntax___icode_generation___ASignature___fill_iroutine_parameters(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[5]);
2418 }
2419 /* syntax/icode_generation.nit:383 */
2420 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AConcreteInitPropdef, ID_parser___parser_nodes___AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
2421 if (UNTAG_Bool(REGB0)) {
2422 /* syntax/icode_generation.nit:384 */
2423 CALL_syntax___icode_generation___A2IContext___invoke_super_init_calls_after(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2424 }
2425 /* syntax/icode_generation.nit:387 */
2426 fra.me.REG[5] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[0])(fra.me.REG[0]);
2427 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2428 if (UNTAG_Bool(REGB0)) {
2429 } else {
2430 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2431 if (UNTAG_Bool(REGB1)) {
2432 REGB1 = TAG_Bool(false);
2433 REGB0 = REGB1;
2434 } else {
2435 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
2436 REGB0 = REGB1;
2437 }
2438 }
2439 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2440 if (UNTAG_Bool(REGB0)) {
2441 /* syntax/icode_generation.nit:388 */
2442 fra.me.REG[0] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[0])(fra.me.REG[0]);
2443 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2444 }
2445 /* syntax/icode_generation.nit:390 */
2446 CALL_syntax___icode_generation___A2IContext___selfreg__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2447 stack_frame_head = fra.me.prev;
2448 return;
2449 }
2450 void syntax___icode_generation___AExternPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2451 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2452 val_t REGB0;
2453 val_t tmp;
2454 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2455 fra.me.file = LOCATE_syntax___icode_generation;
2456 fra.me.line = 395;
2457 fra.me.meth = LOCATE_syntax___icode_generation___AExternPropdef___fill_iroutine;
2458 fra.me.has_broke = 0;
2459 fra.me.REG_size = 3;
2460 fra.me.nitni_local_ref_head = NULL;
2461 fra.me.REG[0] = NIT_NULL;
2462 fra.me.REG[1] = NIT_NULL;
2463 fra.me.REG[2] = NIT_NULL;
2464 fra.me.REG[0] = p0;
2465 fra.me.REG[1] = p1;
2466 fra.me.REG[2] = p2;
2467 /* syntax/icode_generation.nit:398 */
2468 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_syntax___syntax_base___MMMethSrcMethod, ID_syntax___syntax_base___MMMethSrcMethod)) /*cast MMMethSrcMethod*/;
2469 if (UNTAG_Bool(REGB0)) {
2470 } else {
2471 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 398);
2472 }
2473 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[2])(fra.me.REG[2]);
2474 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___AExternPropdef___fill_iroutine_1));
2475 stack_frame_head = fra.me.prev;
2476 return;
2477 }
2478 void OC_syntax___icode_generation___AExternPropdef___fill_iroutine_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2479 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2480 val_t REGB0;
2481 fun_t CREG[1];
2482 val_t tmp;
2483 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2484 fra.me.file = LOCATE_syntax___icode_generation;
2485 fra.me.line = 0;
2486 fra.me.meth = LOCATE_syntax___icode_generation___AExternPropdef___fill_iroutine;
2487 fra.me.has_broke = 0;
2488 fra.me.REG_size = 3;
2489 fra.me.nitni_local_ref_head = NULL;
2490 fra.me.REG[0] = NIT_NULL;
2491 fra.me.REG[1] = NIT_NULL;
2492 fra.me.REG[2] = NIT_NULL;
2493 fra.me.closure_ctx = closctx_param;
2494 fra.me.closure_funs = CREG;
2495 fra.me.REG[0] = p0;
2496 CREG[0] = clos_fun0;
2497 /* syntax/icode_generation.nit:400 */
2498 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
2499 /* syntax/icode_generation.nit:402 */
2500 REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
2501 if (UNTAG_Bool(REGB0)) {
2502 /* syntax/icode_generation.nit:403 */
2503 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
2504 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
2505 if (UNTAG_Bool(REGB0)) {
2506 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 403);
2507 }
2508 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[1])(fra.me.REG[1]);
2509 fra.me.REG[2] = NEW_List_standard___collection___list___List___init();
2510 fra.me.REG[2] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
2511 } else {
2512 /* syntax/icode_generation.nit:405 */
2513 fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
2514 fra.me.REG[1] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[0], fra.me.REG[1]);
2515 fra.me.REG[2] = fra.me.REG[1];
2516 }
2517 /* syntax/icode_generation.nit:407 */
2518 REGB0 = TAG_Bool(true);
2519 CALL_icode___icode_base___IAbsCall___is_explicit_from_extern__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
2520 /* syntax/icode_generation.nit:408 */
2521 CALL_icode___icode_builder___ICodeBuilder___stmt(closctx->REG[1])(closctx->REG[1], fra.me.REG[2]);
2522 stack_frame_head = fra.me.prev;
2523 return;
2524 }
2525 void syntax___icode_generation___AExternInitPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2526 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
2527 val_t REGB0;
2528 val_t REGB1;
2529 val_t REGB2;
2530 val_t tmp;
2531 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2532 fra.me.file = LOCATE_syntax___icode_generation;
2533 fra.me.line = 414;
2534 fra.me.meth = LOCATE_syntax___icode_generation___AExternInitPropdef___fill_iroutine;
2535 fra.me.has_broke = 0;
2536 fra.me.REG_size = 8;
2537 fra.me.nitni_local_ref_head = NULL;
2538 fra.me.REG[0] = NIT_NULL;
2539 fra.me.REG[1] = NIT_NULL;
2540 fra.me.REG[2] = NIT_NULL;
2541 fra.me.REG[3] = NIT_NULL;
2542 fra.me.REG[4] = NIT_NULL;
2543 fra.me.REG[5] = NIT_NULL;
2544 fra.me.REG[6] = NIT_NULL;
2545 fra.me.REG[7] = NIT_NULL;
2546 fra.me.REG[0] = p0;
2547 fra.me.REG[1] = p1;
2548 fra.me.REG[2] = p2;
2549 /* syntax/icode_generation.nit:414 */
2550 fra.me.REG[3] = fra.me.REG[1];
2551 fra.me.REG[4] = fra.me.REG[2];
2552 /* syntax/icode_generation.nit:416 */
2553 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[3])(fra.me.REG[3]);
2554 fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
2555 /* syntax/icode_generation.nit:417 */
2556 fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
2557 /* syntax/icode_generation.nit:418 */
2558 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
2559 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2560 if (UNTAG_Bool(REGB1)) {
2561 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 418);
2562 }
2563 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
2564 REGB2 = TAG_Int(1);
2565 /* ../lib/standard/kernel.nit:235 */
2566 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
2567 /* syntax/icode_generation.nit:418 */
2568 REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
2569 if (UNTAG_Bool(REGB1)) {
2570 } else {
2571 /* ../lib/standard/kernel.nit:227 */
2572 REGB2 = TAG_Bool((REGB0)==(REGB2));
2573 /* syntax/icode_generation.nit:418 */
2574 REGB1 = REGB2;
2575 }
2576 if (UNTAG_Bool(REGB1)) {
2577 } else {
2578 nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 418);
2579 }
2580 /* syntax/icode_generation.nit:419 */
2581 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2582 if (UNTAG_Bool(REGB1)) {
2583 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 419);
2584 }
2585 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[6])(fra.me.REG[6]);
2586 /* syntax/icode_generation.nit:420 */
2587 fra.me.REG[7] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[6]);
2588 fra.me.REG[5] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[4], fra.me.REG[5]);
2589 fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5], fra.me.REG[6]);
2590 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7], fra.me.REG[6]);
2591 /* syntax/icode_generation.nit:422 */
2592 CALL_SUPER_syntax___icode_generation___AExternInitPropdef___fill_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
2593 stack_frame_head = fra.me.prev;
2594 return;
2595 }
2596 void syntax___icode_generation___ADeferredMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2597 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2598 val_t REGB0;
2599 val_t tmp;
2600 static val_t once_value_1; /* Once value */
2601 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2602 fra.me.file = LOCATE_syntax___icode_generation;
2603 fra.me.line = 427;
2604 fra.me.meth = LOCATE_syntax___icode_generation___ADeferredMethPropdef___fill_iroutine;
2605 fra.me.has_broke = 0;
2606 fra.me.REG_size = 3;
2607 fra.me.nitni_local_ref_head = NULL;
2608 fra.me.REG[0] = NIT_NULL;
2609 fra.me.REG[1] = NIT_NULL;
2610 fra.me.REG[2] = NIT_NULL;
2611 fra.me.REG[0] = p0;
2612 fra.me.REG[1] = p1;
2613 fra.me.REG[2] = p2;
2614 /* syntax/icode_generation.nit:429 */
2615 REGB0 = TAG_Int(0);
2616 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
2617 if (!once_value_1) {
2618 fra.me.REG[0] = BOX_NativeString("Deferred method called");
2619 REGB0 = TAG_Int(22);
2620 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
2621 once_value_1 = fra.me.REG[0];
2622 register_static_object(&once_value_1);
2623 } else fra.me.REG[0] = once_value_1;
2624 fra.me.REG[0] = fra.me.REG[0];
2625 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
2626 CALL_icode___icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2627 stack_frame_head = fra.me.prev;
2628 return;
2629 }
2630 void syntax___icode_generation___AExternMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2631 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
2632 val_t REGB0;
2633 val_t REGB1;
2634 val_t tmp;
2635 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2636 fra.me.file = LOCATE_syntax___icode_generation;
2637 fra.me.line = 434;
2638 fra.me.meth = LOCATE_syntax___icode_generation___AExternMethPropdef___fill_iroutine;
2639 fra.me.has_broke = 0;
2640 fra.me.REG_size = 8;
2641 fra.me.nitni_local_ref_head = NULL;
2642 fra.me.REG[0] = NIT_NULL;
2643 fra.me.REG[1] = NIT_NULL;
2644 fra.me.REG[2] = NIT_NULL;
2645 fra.me.REG[3] = NIT_NULL;
2646 fra.me.REG[4] = NIT_NULL;
2647 fra.me.REG[5] = NIT_NULL;
2648 fra.me.REG[6] = NIT_NULL;
2649 fra.me.REG[7] = NIT_NULL;
2650 fra.me.REG[0] = p0;
2651 fra.me.REG[1] = p1;
2652 fra.me.REG[2] = p2;
2653 /* syntax/icode_generation.nit:434 */
2654 fra.me.REG[3] = fra.me.REG[1];
2655 fra.me.REG[4] = fra.me.REG[2];
2656 /* syntax/icode_generation.nit:436 */
2657 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[3])(fra.me.REG[3]);
2658 fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
2659 /* syntax/icode_generation.nit:437 */
2660 fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
2661 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2662 if (UNTAG_Bool(REGB0)) {
2663 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 437);
2664 }
2665 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
2666 /* syntax/icode_generation.nit:438 */
2667 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2668 if (UNTAG_Bool(REGB0)) {
2669 } else {
2670 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2671 if (UNTAG_Bool(REGB1)) {
2672 REGB1 = TAG_Bool(false);
2673 REGB0 = REGB1;
2674 } else {
2675 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
2676 REGB0 = REGB1;
2677 }
2678 }
2679 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2680 if (UNTAG_Bool(REGB0)) {
2681 /* syntax/icode_generation.nit:439 */
2682 fra.me.REG[7] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[4], fra.me.REG[5]);
2683 fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7], fra.me.REG[6]);
2684 CALL_icode___icode_builder___ICodeBuilder___add_return_value(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
2685 } else {
2686 /* syntax/icode_generation.nit:441 */
2687 fra.me.REG[5] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[4], fra.me.REG[5]);
2688 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
2689 }
2690 /* syntax/icode_generation.nit:444 */
2691 CALL_SUPER_syntax___icode_generation___AExternMethPropdef___fill_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
2692 stack_frame_head = fra.me.prev;
2693 return;
2694 }
2695 void syntax___icode_generation___AInternMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2696 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2697 val_t REGB0;
2698 val_t REGB1;
2699 val_t tmp;
2700 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2701 fra.me.file = LOCATE_syntax___icode_generation;
2702 fra.me.line = 449;
2703 fra.me.meth = LOCATE_syntax___icode_generation___AInternMethPropdef___fill_iroutine;
2704 fra.me.has_broke = 0;
2705 fra.me.REG_size = 5;
2706 fra.me.nitni_local_ref_head = NULL;
2707 fra.me.REG[0] = NIT_NULL;
2708 fra.me.REG[1] = NIT_NULL;
2709 fra.me.REG[2] = NIT_NULL;
2710 fra.me.REG[3] = NIT_NULL;
2711 fra.me.REG[4] = NIT_NULL;
2712 fra.me.REG[0] = p0;
2713 fra.me.REG[1] = p1;
2714 fra.me.REG[2] = p2;
2715 /* syntax/icode_generation.nit:451 */
2716 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
2717 fra.me.REG[0] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
2718 /* syntax/icode_generation.nit:452 */
2719 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2720 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2721 if (UNTAG_Bool(REGB0)) {
2722 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 452);
2723 }
2724 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
2725 /* syntax/icode_generation.nit:453 */
2726 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2727 if (UNTAG_Bool(REGB0)) {
2728 } else {
2729 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2730 if (UNTAG_Bool(REGB1)) {
2731 REGB1 = TAG_Bool(false);
2732 REGB0 = REGB1;
2733 } else {
2734 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2735 REGB0 = REGB1;
2736 }
2737 }
2738 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2739 if (UNTAG_Bool(REGB0)) {
2740 /* syntax/icode_generation.nit:454 */
2741 fra.me.REG[4] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[2], fra.me.REG[0]);
2742 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
2743 CALL_icode___icode_builder___ICodeBuilder___add_return_value(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2744 } else {
2745 /* syntax/icode_generation.nit:456 */
2746 fra.me.REG[0] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[2], fra.me.REG[0]);
2747 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2748 }
2749 stack_frame_head = fra.me.prev;
2750 return;
2751 }
2752 void syntax___icode_generation___AExpr___accept_icode_generation(val_t p0, val_t p1){
2753 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2754 val_t tmp;
2755 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2756 fra.me.file = LOCATE_syntax___icode_generation;
2757 fra.me.line = 464;
2758 fra.me.meth = LOCATE_syntax___icode_generation___AExpr___accept_icode_generation;
2759 fra.me.has_broke = 0;
2760 fra.me.REG_size = 2;
2761 fra.me.nitni_local_ref_head = NULL;
2762 fra.me.REG[0] = NIT_NULL;
2763 fra.me.REG[1] = NIT_NULL;
2764 fra.me.REG[0] = p0;
2765 fra.me.REG[1] = p1;
2766 stack_frame_head = fra.me.prev;
2767 return;
2768 }
2769 val_t syntax___icode_generation___AExpr___generate_icode(val_t p0, val_t p1){
2770 struct {struct stack_frame_t me;} fra;
2771 val_t tmp;
2772 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2773 fra.me.file = LOCATE_syntax___icode_generation;
2774 fra.me.line = 466;
2775 fra.me.meth = LOCATE_syntax___icode_generation___AExpr___generate_icode;
2776 fra.me.has_broke = 0;
2777 fra.me.REG_size = 0;
2778 fra.me.nitni_local_ref_head = NULL;
2779 /* syntax/icode_generation.nit:466 */
2780 nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 466);
2781 stack_frame_head = fra.me.prev;
2782 return NIT_NULL;
2783 }
2784 val_t syntax___icode_generation___AVardeclExpr___generate_icode(val_t p0, val_t p1){
2785 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2786 val_t REGB0;
2787 val_t REGB1;
2788 val_t tmp;
2789 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2790 fra.me.file = LOCATE_syntax___icode_generation;
2791 fra.me.line = 472;
2792 fra.me.meth = LOCATE_syntax___icode_generation___AVardeclExpr___generate_icode;
2793 fra.me.has_broke = 0;
2794 fra.me.REG_size = 3;
2795 fra.me.nitni_local_ref_head = NULL;
2796 fra.me.REG[0] = NIT_NULL;
2797 fra.me.REG[1] = NIT_NULL;
2798 fra.me.REG[2] = NIT_NULL;
2799 fra.me.REG[0] = p0;
2800 fra.me.REG[1] = p1;
2801 /* syntax/icode_generation.nit:474 */
2802 fra.me.REG[2] = CALL_syntax___syntax_base___AVardeclExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
2803 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2804 /* syntax/icode_generation.nit:475 */
2805 fra.me.REG[0] = CALL_parser___parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2806 /* syntax/icode_generation.nit:476 */
2807 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2808 if (UNTAG_Bool(REGB0)) {
2809 } else {
2810 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2811 if (UNTAG_Bool(REGB1)) {
2812 REGB1 = TAG_Bool(false);
2813 REGB0 = REGB1;
2814 } else {
2815 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2816 REGB0 = REGB1;
2817 }
2818 }
2819 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2820 if (UNTAG_Bool(REGB0)) {
2821 /* syntax/icode_generation.nit:477 */
2822 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2823 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
2824 }
2825 /* syntax/icode_generation.nit:479 */
2826 fra.me.REG[0] = NIT_NULL;
2827 goto label1;
2828 label1: while(0);
2829 stack_frame_head = fra.me.prev;
2830 return fra.me.REG[0];
2831 }
2832 val_t syntax___icode_generation___ABlockExpr___generate_icode(val_t p0, val_t p1){
2833 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2834 val_t tmp;
2835 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2836 fra.me.file = LOCATE_syntax___icode_generation;
2837 fra.me.line = 484;
2838 fra.me.meth = LOCATE_syntax___icode_generation___ABlockExpr___generate_icode;
2839 fra.me.has_broke = 0;
2840 fra.me.REG_size = 2;
2841 fra.me.nitni_local_ref_head = NULL;
2842 fra.me.REG[0] = NIT_NULL;
2843 fra.me.REG[1] = NIT_NULL;
2844 fra.me.REG[0] = p0;
2845 fra.me.REG[1] = p1;
2846 /* syntax/icode_generation.nit:486 */
2847 fra.me.REG[0] = CALL_parser___parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2848 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___ABlockExpr___generate_icode_1));
2849 /* syntax/icode_generation.nit:487 */
2850 fra.me.REG[1] = NIT_NULL;
2851 goto label2;
2852 label2: while(0);
2853 stack_frame_head = fra.me.prev;
2854 return fra.me.REG[1];
2855 }
2856 void OC_syntax___icode_generation___ABlockExpr___generate_icode_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2857 struct {struct stack_frame_t me;} fra;
2858 fun_t CREG[1];
2859 val_t tmp;
2860 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2861 fra.me.file = LOCATE_syntax___icode_generation;
2862 fra.me.line = 0;
2863 fra.me.meth = LOCATE_syntax___icode_generation___ABlockExpr___generate_icode;
2864 fra.me.has_broke = 0;
2865 fra.me.REG_size = 1;
2866 fra.me.nitni_local_ref_head = NULL;
2867 fra.me.REG[0] = NIT_NULL;
2868 fra.me.closure_ctx = closctx_param;
2869 fra.me.closure_funs = CREG;
2870 fra.me.REG[0] = p0;
2871 CREG[0] = clos_fun0;
2872 CALL_syntax___icode_generation___A2IContext___generate_stmt(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
2873 stack_frame_head = fra.me.prev;
2874 return;
2875 }
2876 val_t syntax___icode_generation___ADoExpr___generate_icode(val_t p0, val_t p1){
2877 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2878 val_t REGB0;
2879 val_t tmp;
2880 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2881 fra.me.file = LOCATE_syntax___icode_generation;
2882 fra.me.line = 492;
2883 fra.me.meth = LOCATE_syntax___icode_generation___ADoExpr___generate_icode;
2884 fra.me.has_broke = 0;
2885 fra.me.REG_size = 5;
2886 fra.me.nitni_local_ref_head = NULL;
2887 fra.me.REG[0] = NIT_NULL;
2888 fra.me.REG[1] = NIT_NULL;
2889 fra.me.REG[2] = NIT_NULL;
2890 fra.me.REG[3] = NIT_NULL;
2891 fra.me.REG[4] = NIT_NULL;
2892 fra.me.REG[0] = p0;
2893 fra.me.REG[1] = p1;
2894 /* syntax/icode_generation.nit:494 */
2895 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
2896 /* syntax/icode_generation.nit:495 */
2897 fra.me.REG[3] = NEW_ISeq_icode___icode_base___ISeq___init();
2898 /* syntax/icode_generation.nit:496 */
2899 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2900 /* syntax/icode_generation.nit:497 */
2901 fra.me.REG[4] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
2902 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2903 if (UNTAG_Bool(REGB0)) {
2904 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 497);
2905 }
2906 CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
2907 /* syntax/icode_generation.nit:498 */
2908 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2909 /* syntax/icode_generation.nit:500 */
2910 fra.me.REG[0] = CALL_parser___parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
2911 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2912 /* syntax/icode_generation.nit:502 */
2913 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2914 /* syntax/icode_generation.nit:503 */
2915 fra.me.REG[2] = NIT_NULL;
2916 goto label1;
2917 label1: while(0);
2918 stack_frame_head = fra.me.prev;
2919 return fra.me.REG[2];
2920 }
2921 val_t syntax___icode_generation___AReturnExpr___generate_icode(val_t p0, val_t p1){
2922 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2923 val_t REGB0;
2924 val_t REGB1;
2925 val_t tmp;
2926 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2927 fra.me.file = LOCATE_syntax___icode_generation;
2928 fra.me.line = 508;
2929 fra.me.meth = LOCATE_syntax___icode_generation___AReturnExpr___generate_icode;
2930 fra.me.has_broke = 0;
2931 fra.me.REG_size = 4;
2932 fra.me.nitni_local_ref_head = NULL;
2933 fra.me.REG[0] = NIT_NULL;
2934 fra.me.REG[1] = NIT_NULL;
2935 fra.me.REG[2] = NIT_NULL;
2936 fra.me.REG[3] = NIT_NULL;
2937 fra.me.REG[0] = p0;
2938 fra.me.REG[1] = p1;
2939 /* syntax/icode_generation.nit:508 */
2940 fra.me.REG[2] = fra.me.REG[0];
2941 /* syntax/icode_generation.nit:510 */
2942 fra.me.REG[2] = CALL_parser___parser_nodes___AReturnExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
2943 /* syntax/icode_generation.nit:511 */
2944 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2945 if (UNTAG_Bool(REGB0)) {
2946 } else {
2947 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2948 if (UNTAG_Bool(REGB1)) {
2949 REGB1 = TAG_Bool(false);
2950 REGB0 = REGB1;
2951 } else {
2952 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2953 REGB0 = REGB1;
2954 }
2955 }
2956 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2957 if (UNTAG_Bool(REGB0)) {
2958 /* syntax/icode_generation.nit:512 */
2959 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
2960 REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
2961 if (UNTAG_Bool(REGB0)) {
2962 } else {
2963 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 512);
2964 }
2965 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2966 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
2967 }
2968 /* syntax/icode_generation.nit:514 */
2969 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
2970 REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
2971 if (UNTAG_Bool(REGB0)) {
2972 } else {
2973 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 514);
2974 }
2975 CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2976 /* syntax/icode_generation.nit:515 */
2977 fra.me.REG[2] = NIT_NULL;
2978 goto label1;
2979 label1: while(0);
2980 stack_frame_head = fra.me.prev;
2981 return fra.me.REG[2];
2982 }
2983 val_t syntax___icode_generation___ABreakExpr___generate_icode(val_t p0, val_t p1){
2984 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2985 val_t REGB0;
2986 val_t REGB1;
2987 val_t tmp;
2988 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2989 fra.me.file = LOCATE_syntax___icode_generation;
2990 fra.me.line = 520;
2991 fra.me.meth = LOCATE_syntax___icode_generation___ABreakExpr___generate_icode;
2992 fra.me.has_broke = 0;
2993 fra.me.REG_size = 5;
2994 fra.me.nitni_local_ref_head = NULL;
2995 fra.me.REG[0] = NIT_NULL;
2996 fra.me.REG[1] = NIT_NULL;
2997 fra.me.REG[2] = NIT_NULL;
2998 fra.me.REG[3] = NIT_NULL;
2999 fra.me.REG[4] = NIT_NULL;
3000 fra.me.REG[0] = p0;
3001 fra.me.REG[1] = p1;
3002 /* syntax/icode_generation.nit:520 */
3003 fra.me.REG[2] = fra.me.REG[0];
3004 /* syntax/icode_generation.nit:522 */
3005 fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3006 /* syntax/icode_generation.nit:523 */
3007 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3008 if (UNTAG_Bool(REGB0)) {
3009 } else {
3010 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3011 if (UNTAG_Bool(REGB1)) {
3012 REGB1 = TAG_Bool(false);
3013 REGB0 = REGB1;
3014 } else {
3015 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3016 REGB0 = REGB1;
3017 }
3018 }
3019 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3020 if (UNTAG_Bool(REGB0)) {
3021 /* syntax/icode_generation.nit:524 */
3022 fra.me.REG[4] = CALL_syntax___scope___AEscapeExpr___escapable(fra.me.REG[2])(fra.me.REG[2]);
3023 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3024 if (UNTAG_Bool(REGB0)) {
3025 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 524);
3026 }
3027 fra.me.REG[4] = CALL_syntax___icode_generation___EscapableBlock___break_value(fra.me.REG[4])(fra.me.REG[4]);
3028 REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
3029 if (UNTAG_Bool(REGB0)) {
3030 } else {
3031 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 524);
3032 }
3033 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3034 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
3035 }
3036 /* syntax/icode_generation.nit:526 */
3037 fra.me.REG[2] = CALL_syntax___scope___AEscapeExpr___escapable(fra.me.REG[2])(fra.me.REG[2]);
3038 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3039 if (UNTAG_Bool(REGB0)) {
3040 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 526);
3041 }
3042 fra.me.REG[2] = CALL_syntax___icode_generation___EscapableBlock___break_seq(fra.me.REG[2])(fra.me.REG[2]);
3043 REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
3044 if (UNTAG_Bool(REGB0)) {
3045 } else {
3046 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 526);
3047 }
3048 CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3049 /* syntax/icode_generation.nit:527 */
3050 fra.me.REG[2] = NIT_NULL;
3051 goto label1;
3052 label1: while(0);
3053 stack_frame_head = fra.me.prev;
3054 return fra.me.REG[2];
3055 }
3056 val_t syntax___icode_generation___AContinueExpr___generate_icode(val_t p0, val_t p1){
3057 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3058 val_t REGB0;
3059 val_t REGB1;
3060 val_t tmp;
3061 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3062 fra.me.file = LOCATE_syntax___icode_generation;
3063 fra.me.line = 532;
3064 fra.me.meth = LOCATE_syntax___icode_generation___AContinueExpr___generate_icode;
3065 fra.me.has_broke = 0;
3066 fra.me.REG_size = 5;
3067 fra.me.nitni_local_ref_head = NULL;
3068 fra.me.REG[0] = NIT_NULL;
3069 fra.me.REG[1] = NIT_NULL;
3070 fra.me.REG[2] = NIT_NULL;
3071 fra.me.REG[3] = NIT_NULL;
3072 fra.me.REG[4] = NIT_NULL;
3073 fra.me.REG[0] = p0;
3074 fra.me.REG[1] = p1;
3075 /* syntax/icode_generation.nit:532 */
3076 fra.me.REG[2] = fra.me.REG[0];
3077 /* syntax/icode_generation.nit:534 */
3078 fra.me.REG[3] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3079 /* syntax/icode_generation.nit:535 */
3080 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3081 if (UNTAG_Bool(REGB0)) {
3082 } else {
3083 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3084 if (UNTAG_Bool(REGB1)) {
3085 REGB1 = TAG_Bool(false);
3086 REGB0 = REGB1;
3087 } else {
3088 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3089 REGB0 = REGB1;
3090 }
3091 }
3092 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3093 if (UNTAG_Bool(REGB0)) {
3094 /* syntax/icode_generation.nit:536 */
3095 fra.me.REG[4] = CALL_syntax___scope___AEscapeExpr___escapable(fra.me.REG[2])(fra.me.REG[2]);
3096 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3097 if (UNTAG_Bool(REGB0)) {
3098 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 536);
3099 }
3100 fra.me.REG[4] = CALL_syntax___icode_generation___EscapableBlock___continue_value(fra.me.REG[4])(fra.me.REG[4]);
3101 REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
3102 if (UNTAG_Bool(REGB0)) {
3103 } else {
3104 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 536);
3105 }
3106 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3107 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
3108 }
3109 /* syntax/icode_generation.nit:538 */
3110 fra.me.REG[2] = CALL_syntax___scope___AEscapeExpr___escapable(fra.me.REG[2])(fra.me.REG[2]);
3111 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3112 if (UNTAG_Bool(REGB0)) {
3113 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 538);
3114 }
3115 fra.me.REG[2] = CALL_syntax___icode_generation___EscapableBlock___continue_seq(fra.me.REG[2])(fra.me.REG[2]);
3116 REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
3117 if (UNTAG_Bool(REGB0)) {
3118 } else {
3119 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 538);
3120 }
3121 CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3122 /* syntax/icode_generation.nit:539 */
3123 fra.me.REG[2] = NIT_NULL;
3124 goto label1;
3125 label1: while(0);
3126 stack_frame_head = fra.me.prev;
3127 return fra.me.REG[2];
3128 }
3129 val_t syntax___icode_generation___AAbortExpr___generate_icode(val_t p0, val_t p1){
3130 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3131 val_t REGB0;
3132 val_t tmp;
3133 static val_t once_value_1; /* Once value */
3134 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3135 fra.me.file = LOCATE_syntax___icode_generation;
3136 fra.me.line = 544;
3137 fra.me.meth = LOCATE_syntax___icode_generation___AAbortExpr___generate_icode;
3138 fra.me.has_broke = 0;
3139 fra.me.REG_size = 3;
3140 fra.me.nitni_local_ref_head = NULL;
3141 fra.me.REG[0] = NIT_NULL;
3142 fra.me.REG[1] = NIT_NULL;
3143 fra.me.REG[2] = NIT_NULL;
3144 fra.me.REG[0] = p0;
3145 fra.me.REG[1] = p1;
3146 /* syntax/icode_generation.nit:546 */
3147 REGB0 = TAG_Int(0);
3148 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3149 if (!once_value_1) {
3150 fra.me.REG[2] = BOX_NativeString("Aborted");
3151 REGB0 = TAG_Int(7);
3152 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
3153 once_value_1 = fra.me.REG[2];
3154 register_static_object(&once_value_1);
3155 } else fra.me.REG[2] = once_value_1;
3156 fra.me.REG[2] = fra.me.REG[2];
3157 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
3158 CALL_icode___icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3159 /* syntax/icode_generation.nit:547 */
3160 fra.me.REG[0] = NIT_NULL;
3161 goto label2;
3162 label2: while(0);
3163 stack_frame_head = fra.me.prev;
3164 return fra.me.REG[0];
3165 }
3166 val_t syntax___icode_generation___AIfExpr___generate_icode(val_t p0, val_t p1){
3167 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3168 val_t REGB0;
3169 val_t REGB1;
3170 val_t tmp;
3171 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3172 fra.me.file = LOCATE_syntax___icode_generation;
3173 fra.me.line = 552;
3174 fra.me.meth = LOCATE_syntax___icode_generation___AIfExpr___generate_icode;
3175 fra.me.has_broke = 0;
3176 fra.me.REG_size = 5;
3177 fra.me.nitni_local_ref_head = NULL;
3178 fra.me.REG[0] = NIT_NULL;
3179 fra.me.REG[1] = NIT_NULL;
3180 fra.me.REG[2] = NIT_NULL;
3181 fra.me.REG[3] = NIT_NULL;
3182 fra.me.REG[4] = NIT_NULL;
3183 fra.me.REG[0] = p0;
3184 fra.me.REG[1] = p1;
3185 /* syntax/icode_generation.nit:554 */
3186 fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3187 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3188 fra.me.REG[2] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[2]);
3189 /* syntax/icode_generation.nit:555 */
3190 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3191 /* syntax/icode_generation.nit:556 */
3192 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3193 /* syntax/icode_generation.nit:558 */
3194 fra.me.REG[4] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3195 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3196 if (UNTAG_Bool(REGB0)) {
3197 } else {
3198 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3199 if (UNTAG_Bool(REGB1)) {
3200 REGB1 = TAG_Bool(false);
3201 REGB0 = REGB1;
3202 } else {
3203 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3204 REGB0 = REGB1;
3205 }
3206 }
3207 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3208 if (UNTAG_Bool(REGB0)) {
3209 /* syntax/icode_generation.nit:559 */
3210 fra.me.REG[4] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[2])(fra.me.REG[2]);
3211 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3212 /* syntax/icode_generation.nit:560 */
3213 fra.me.REG[4] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3214 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3215 }
3216 /* syntax/icode_generation.nit:563 */
3217 fra.me.REG[4] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3218 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3219 if (UNTAG_Bool(REGB0)) {
3220 } else {
3221 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3222 if (UNTAG_Bool(REGB1)) {
3223 REGB1 = TAG_Bool(false);
3224 REGB0 = REGB1;
3225 } else {
3226 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
3227 REGB0 = REGB1;
3228 }
3229 }
3230 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3231 if (UNTAG_Bool(REGB0)) {
3232 /* syntax/icode_generation.nit:564 */
3233 fra.me.REG[2] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[2])(fra.me.REG[2]);
3234 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3235 /* syntax/icode_generation.nit:565 */
3236 fra.me.REG[0] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3237 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3238 }
3239 /* syntax/icode_generation.nit:568 */
3240 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3241 /* syntax/icode_generation.nit:569 */
3242 fra.me.REG[3] = NIT_NULL;
3243 goto label1;
3244 label1: while(0);
3245 stack_frame_head = fra.me.prev;
3246 return fra.me.REG[3];
3247 }
3248 val_t syntax___icode_generation___AWhileExpr___generate_icode(val_t p0, val_t p1){
3249 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3250 val_t REGB0;
3251 val_t REGB1;
3252 val_t tmp;
3253 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3254 fra.me.file = LOCATE_syntax___icode_generation;
3255 fra.me.line = 574;
3256 fra.me.meth = LOCATE_syntax___icode_generation___AWhileExpr___generate_icode;
3257 fra.me.has_broke = 0;
3258 fra.me.REG_size = 7;
3259 fra.me.nitni_local_ref_head = NULL;
3260 fra.me.REG[0] = NIT_NULL;
3261 fra.me.REG[1] = NIT_NULL;
3262 fra.me.REG[2] = NIT_NULL;
3263 fra.me.REG[3] = NIT_NULL;
3264 fra.me.REG[4] = NIT_NULL;
3265 fra.me.REG[5] = NIT_NULL;
3266 fra.me.REG[6] = NIT_NULL;
3267 fra.me.REG[0] = p0;
3268 fra.me.REG[1] = p1;
3269 /* syntax/icode_generation.nit:576 */
3270 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3271 /* syntax/icode_generation.nit:577 */
3272 fra.me.REG[3] = NEW_ILoop_icode___icode_base___ILoop___init();
3273 /* syntax/icode_generation.nit:578 */
3274 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3275 /* syntax/icode_generation.nit:579 */
3276 fra.me.REG[4] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3277 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3278 if (UNTAG_Bool(REGB0)) {
3279 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 579);
3280 }
3281 CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3282 /* syntax/icode_generation.nit:580 */
3283 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3284 /* syntax/icode_generation.nit:583 */
3285 fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3286 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3287 fra.me.REG[4] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[4]);
3288 /* syntax/icode_generation.nit:584 */
3289 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3290 /* syntax/icode_generation.nit:587 */
3291 fra.me.REG[5] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3292 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
3293 if (UNTAG_Bool(REGB0)) {
3294 } else {
3295 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
3296 if (UNTAG_Bool(REGB1)) {
3297 REGB1 = TAG_Bool(false);
3298 REGB0 = REGB1;
3299 } else {
3300 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
3301 REGB0 = REGB1;
3302 }
3303 }
3304 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3305 if (UNTAG_Bool(REGB0)) {
3306 /* syntax/icode_generation.nit:588 */
3307 fra.me.REG[5] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[4])(fra.me.REG[4]);
3308 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3309 /* syntax/icode_generation.nit:589 */
3310 fra.me.REG[5] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3311 fra.me.REG[6] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[4])(fra.me.REG[4]);
3312 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
3313 if (UNTAG_Bool(REGB0)) {
3314 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 589);
3315 }
3316 CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3317 /* syntax/icode_generation.nit:590 */
3318 fra.me.REG[0] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3319 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3320 }
3321 /* syntax/icode_generation.nit:594 */
3322 fra.me.REG[4] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[4])(fra.me.REG[4]);
3323 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3324 /* syntax/icode_generation.nit:595 */
3325 CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3326 /* syntax/icode_generation.nit:597 */
3327 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3328 /* syntax/icode_generation.nit:598 */
3329 fra.me.REG[2] = NIT_NULL;
3330 goto label1;
3331 label1: while(0);
3332 stack_frame_head = fra.me.prev;
3333 return fra.me.REG[2];
3334 }
3335 val_t syntax___icode_generation___ALoopExpr___generate_icode(val_t p0, val_t p1){
3336 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3337 val_t REGB0;
3338 val_t REGB1;
3339 val_t tmp;
3340 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3341 fra.me.file = LOCATE_syntax___icode_generation;
3342 fra.me.line = 603;
3343 fra.me.meth = LOCATE_syntax___icode_generation___ALoopExpr___generate_icode;
3344 fra.me.has_broke = 0;
3345 fra.me.REG_size = 5;
3346 fra.me.nitni_local_ref_head = NULL;
3347 fra.me.REG[0] = NIT_NULL;
3348 fra.me.REG[1] = NIT_NULL;
3349 fra.me.REG[2] = NIT_NULL;
3350 fra.me.REG[3] = NIT_NULL;
3351 fra.me.REG[4] = NIT_NULL;
3352 fra.me.REG[0] = p0;
3353 fra.me.REG[1] = p1;
3354 /* syntax/icode_generation.nit:605 */
3355 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3356 /* syntax/icode_generation.nit:606 */
3357 fra.me.REG[3] = NEW_ILoop_icode___icode_base___ILoop___init();
3358 /* syntax/icode_generation.nit:607 */
3359 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3360 /* syntax/icode_generation.nit:608 */
3361 fra.me.REG[4] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3362 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3363 if (UNTAG_Bool(REGB0)) {
3364 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 608);
3365 }
3366 CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3367 /* syntax/icode_generation.nit:609 */
3368 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3369 /* syntax/icode_generation.nit:612 */
3370 fra.me.REG[3] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3371 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3372 if (UNTAG_Bool(REGB0)) {
3373 } else {
3374 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3375 if (UNTAG_Bool(REGB1)) {
3376 REGB1 = TAG_Bool(false);
3377 REGB0 = REGB1;
3378 } else {
3379 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3380 REGB0 = REGB1;
3381 }
3382 }
3383 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3384 if (UNTAG_Bool(REGB0)) {
3385 /* syntax/icode_generation.nit:613 */
3386 fra.me.REG[3] = NEW_ISeq_icode___icode_base___ISeq___init();
3387 /* syntax/icode_generation.nit:614 */
3388 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3389 /* syntax/icode_generation.nit:615 */
3390 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3391 /* syntax/icode_generation.nit:616 */
3392 fra.me.REG[4] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3393 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3394 if (UNTAG_Bool(REGB0)) {
3395 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 616);
3396 }
3397 CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3398 /* syntax/icode_generation.nit:617 */
3399 fra.me.REG[0] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3400 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3401 }
3402 /* syntax/icode_generation.nit:620 */
3403 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3404 /* syntax/icode_generation.nit:621 */
3405 fra.me.REG[2] = NIT_NULL;
3406 goto label1;
3407 label1: while(0);
3408 stack_frame_head = fra.me.prev;
3409 return fra.me.REG[2];
3410 }
3411 val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
3412 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
3413 val_t REGB0;
3414 val_t REGB1;
3415 val_t REGB2;
3416 val_t REGB3;
3417 val_t REGB4;
3418 val_t REGB5;
3419 val_t tmp;
3420 static val_t once_value_1; /* Once value */
3421 static val_t once_value_2; /* Once value */
3422 static val_t once_value_3; /* Once value */
3423 static val_t once_value_4; /* Once value */
3424 static val_t once_value_5; /* Once value */
3425 static val_t once_value_6; /* Once value */
3426 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3427 fra.me.file = LOCATE_syntax___icode_generation;
3428 fra.me.line = 626;
3429 fra.me.meth = LOCATE_syntax___icode_generation___AForExpr___generate_icode;
3430 fra.me.has_broke = 0;
3431 fra.me.REG_size = 9;
3432 fra.me.nitni_local_ref_head = NULL;
3433 fra.me.REG[0] = NIT_NULL;
3434 fra.me.REG[1] = NIT_NULL;
3435 fra.me.REG[2] = NIT_NULL;
3436 fra.me.REG[3] = NIT_NULL;
3437 fra.me.REG[4] = NIT_NULL;
3438 fra.me.REG[5] = NIT_NULL;
3439 fra.me.REG[6] = NIT_NULL;
3440 fra.me.REG[7] = NIT_NULL;
3441 fra.me.REG[8] = NIT_NULL;
3442 fra.me.REG[0] = p0;
3443 fra.me.REG[1] = p1;
3444 /* syntax/icode_generation.nit:628 */
3445 fra.me.REG[2] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3446 /* syntax/icode_generation.nit:629 */
3447 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
3448 /* syntax/icode_generation.nit:630 */
3449 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3450 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[4])(fra.me.REG[4]);
3451 /* syntax/icode_generation.nit:634 */
3452 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ARangeExpr, ID_parser___parser_nodes___ARangeExpr)) /*cast ARangeExpr*/;
3453 if (UNTAG_Bool(REGB0)) {
3454 fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3455 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3456 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[5]));
3457 if (UNTAG_Bool(REGB0)) {
3458 } else {
3459 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
3460 REGB0 = REGB1;
3461 }
3462 } else {
3463 REGB1 = TAG_Bool(false);
3464 REGB0 = REGB1;
3465 }
3466 if (UNTAG_Bool(REGB0)) {
3467 /* syntax/icode_generation.nit:639 */
3468 REGB0 = TAG_Int(2);
3469 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3470 fra.me.REG[6] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3471 fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3472 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3473 fra.me.REG[6] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
3474 fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3475 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3476 /* syntax/icode_generation.nit:640 */
3477 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ACrangeExpr, ID_parser___parser_nodes___ACrangeExpr)) /*cast ACrangeExpr*/;
3478 if (UNTAG_Bool(REGB0)) {
3479 /* syntax/icode_generation.nit:641 */
3480 fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3481 if (!once_value_1) {
3482 if (!once_value_2) {
3483 fra.me.REG[7] = BOX_NativeString("enumerate_to");
3484 REGB0 = TAG_Int(12);
3485 fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
3486 once_value_2 = fra.me.REG[7];
3487 register_static_object(&once_value_2);
3488 } else fra.me.REG[7] = once_value_2;
3489 fra.me.REG[7] = fra.me.REG[7];
3490 fra.me.REG[7] = CALL_standard___symbol___String___to_symbol(fra.me.REG[7])(fra.me.REG[7]);
3491 once_value_1 = fra.me.REG[7];
3492 register_static_object(&once_value_1);
3493 } else fra.me.REG[7] = once_value_1;
3494 fra.me.REG[7] = fra.me.REG[7];
3495 fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4], fra.me.REG[7]);
3496 } else {
3497 /* syntax/icode_generation.nit:643 */
3498 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AOrangeExpr, ID_parser___parser_nodes___AOrangeExpr)) /*cast AOrangeExpr*/;
3499 if (UNTAG_Bool(REGB0)) {
3500 } else {
3501 nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 643);
3502 }
3503 /* syntax/icode_generation.nit:644 */
3504 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3505 if (!once_value_3) {
3506 if (!once_value_4) {
3507 fra.me.REG[6] = BOX_NativeString("enumerate_before");
3508 REGB0 = TAG_Int(16);
3509 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
3510 once_value_4 = fra.me.REG[6];
3511 register_static_object(&once_value_4);
3512 } else fra.me.REG[6] = once_value_4;
3513 fra.me.REG[6] = fra.me.REG[6];
3514 fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
3515 once_value_3 = fra.me.REG[6];
3516 register_static_object(&once_value_3);
3517 } else fra.me.REG[6] = once_value_3;
3518 fra.me.REG[6] = fra.me.REG[6];
3519 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4], fra.me.REG[6]);
3520 fra.me.REG[7] = fra.me.REG[6];
3521 }
3522 } else {
3523 /* syntax/icode_generation.nit:650 */
3524 fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3525 if (!once_value_5) {
3526 if (!once_value_6) {
3527 fra.me.REG[4] = BOX_NativeString("iterate");
3528 REGB0 = TAG_Int(7);
3529 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3530 once_value_6 = fra.me.REG[4];
3531 register_static_object(&once_value_6);
3532 } else fra.me.REG[4] = once_value_6;
3533 fra.me.REG[4] = fra.me.REG[4];
3534 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
3535 once_value_5 = fra.me.REG[4];
3536 register_static_object(&once_value_5);
3537 } else fra.me.REG[4] = once_value_5;
3538 fra.me.REG[4] = fra.me.REG[4];
3539 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3], fra.me.REG[4]);
3540 fra.me.REG[7] = fra.me.REG[4];
3541 /* syntax/icode_generation.nit:651 */
3542 REGB0 = TAG_Int(1);
3543 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3544 fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3545 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3546 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3547 fra.me.REG[5] = fra.me.REG[4];
3548 }
3549 /* syntax/icode_generation.nit:655 */
3550 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
3551 if (UNTAG_Bool(REGB0)) {
3552 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 655);
3553 }
3554 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
3555 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3556 if (UNTAG_Bool(REGB0)) {
3557 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 655);
3558 }
3559 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[4])(fra.me.REG[4]);
3560 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
3561 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3562 if (UNTAG_Bool(REGB0)) {
3563 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 655);
3564 }
3565 fra.me.REG[4] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[4])(fra.me.REG[4]);
3566 fra.me.REG[4] = CALL_icode___icode_builder___MMSignature___generate_empty_iclosuredef(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
3567 /* syntax/icode_generation.nit:656 */
3568 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3569 /* syntax/icode_generation.nit:658 */
3570 fra.me.REG[6] = NEW_ISeq_icode___icode_base___ISeq___init();
3571 /* syntax/icode_generation.nit:659 */
3572 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3573 /* syntax/icode_generation.nit:660 */
3574 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3575 /* syntax/icode_generation.nit:661 */
3576 fra.me.REG[2] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3577 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3578 if (UNTAG_Bool(REGB0)) {
3579 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 661);
3580 }
3581 CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
3582 /* syntax/icode_generation.nit:662 */
3583 fra.me.REG[2] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3584 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3585 if (UNTAG_Bool(REGB0)) {
3586 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 662);
3587 }
3588 CALL_syntax___icode_generation___EscapableBlock___break_value__eq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3589 /* syntax/icode_generation.nit:664 */
3590 fra.me.REG[2] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[4])(fra.me.REG[4]);
3591 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3592 /* syntax/icode_generation.nit:665 */
3593 fra.me.REG[2] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3594 fra.me.REG[8] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[4])(fra.me.REG[4]);
3595 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3596 if (UNTAG_Bool(REGB0)) {
3597 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 665);
3598 }
3599 CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
3600 /* syntax/icode_generation.nit:666 */
3601 fra.me.REG[8] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3602 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
3603 if (UNTAG_Bool(REGB0)) {
3604 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 666);
3605 }
3606 CALL_syntax___icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
3607 /* syntax/icode_generation.nit:667 */
3608 REGB0 = TAG_Int(0);
3609 fra.me.REG[8] = CALL_syntax___syntax_base___AForExpr___variables(fra.me.REG[0])(fra.me.REG[0]);
3610 /* ../lib/standard/collection/array.nit:24 */
3611 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
3612 if (UNTAG_Bool(REGB1)) {
3613 } else {
3614 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
3615 }
3616 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
3617 /* ../lib/standard/kernel.nit:352 */
3618 while(1) {
3619 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
3620 if (UNTAG_Bool(REGB2)) {
3621 } else {
3622 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
3623 }
3624 /* ../lib/standard/kernel.nit:232 */
3625 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
3626 /* ../lib/standard/kernel.nit:352 */
3627 if (UNTAG_Bool(REGB2)) {
3628 /* syntax/icode_generation.nit:667 */
3629 REGB2 = REGB0;
3630 /* syntax/icode_generation.nit:668 */
3631 fra.me.REG[8] = CALL_syntax___syntax_base___AForExpr___variables(fra.me.REG[0])(fra.me.REG[0]);
3632 /* ../lib/standard/collection/array.nit:278 */
3633 REGB3 = REGB2;
3634 /* ../lib/standard/collection/array.nit:280 */
3635 REGB4 = TAG_Int(0);
3636 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
3637 if (UNTAG_Bool(REGB5)) {
3638 } else {
3639 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
3640 }
3641 /* ../lib/standard/kernel.nit:233 */
3642 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
3643 /* ../lib/standard/collection/array.nit:280 */
3644 if (UNTAG_Bool(REGB4)) {
3645 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
3646 if (UNTAG_Bool(REGB4)) {
3647 } else {
3648 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
3649 }
3650 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
3651 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
3652 if (UNTAG_Bool(REGB5)) {
3653 } else {
3654 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
3655 }
3656 /* ../lib/standard/kernel.nit:232 */
3657 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
3658 } else {
3659 /* ../lib/standard/collection/array.nit:280 */
3660 REGB5 = TAG_Bool(false);
3661 REGB4 = REGB5;
3662 }
3663 if (UNTAG_Bool(REGB4)) {
3664 } else {
3665 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
3666 }
3667 /* ../lib/standard/collection/array.nit:281 */
3668 fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
3669 REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
3670 if (UNTAG_Bool(REGB4)) {
3671 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
3672 }
3673 /* ../lib/standard/collection/array.nit:718 */
3674 fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB3)];
3675 /* ../lib/standard/collection/array.nit:281 */
3676 goto label7;
3677 label7: while(0);
3678 /* syntax/icode_generation.nit:668 */
3679 fra.me.REG[8] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
3680 fra.me.REG[2] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[4])(fra.me.REG[4]);
3681 fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB2);
3682 fra.me.REG[2] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[8], fra.me.REG[2]);
3683 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3684 /* ../lib/standard/kernel.nit:354 */
3685 REGB2 = TAG_Int(1);
3686 /* ../lib/standard/kernel.nit:235 */
3687 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
3688 /* ../lib/standard/kernel.nit:354 */
3689 REGB0 = REGB2;
3690 } else {
3691 /* ../lib/standard/kernel.nit:352 */
3692 goto label8;
3693 }
3694 }
3695 label8: while(0);
3696 /* syntax/icode_generation.nit:670 */
3697 fra.me.REG[0] = CALL_parser___parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3698 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3699 /* syntax/icode_generation.nit:673 */
3700 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3701 /* syntax/icode_generation.nit:674 */
3702 REGB0 = TAG_Int(1);
3703 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3704 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
3705 CALL_icode___icode_builder___ICodeBuilder___add_call(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[5], fra.me.REG[6]);
3706 /* syntax/icode_generation.nit:676 */
3707 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3708 /* syntax/icode_generation.nit:677 */
3709 fra.me.REG[3] = NIT_NULL;
3710 goto label9;
3711 label9: while(0);
3712 stack_frame_head = fra.me.prev;
3713 return fra.me.REG[3];
3714 }
3715 val_t syntax___icode_generation___AAssertExpr___generate_icode(val_t p0, val_t p1){
3716 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3717 val_t REGB0;
3718 val_t REGB1;
3719 val_t tmp;
3720 static val_t once_value_1; /* Once value */
3721 static val_t once_value_2; /* Once value */
3722 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3723 fra.me.file = LOCATE_syntax___icode_generation;
3724 fra.me.line = 682;
3725 fra.me.meth = LOCATE_syntax___icode_generation___AAssertExpr___generate_icode;
3726 fra.me.has_broke = 0;
3727 fra.me.REG_size = 5;
3728 fra.me.nitni_local_ref_head = NULL;
3729 fra.me.REG[0] = NIT_NULL;
3730 fra.me.REG[1] = NIT_NULL;
3731 fra.me.REG[2] = NIT_NULL;
3732 fra.me.REG[3] = NIT_NULL;
3733 fra.me.REG[4] = NIT_NULL;
3734 fra.me.REG[0] = p0;
3735 fra.me.REG[1] = p1;
3736 /* syntax/icode_generation.nit:684 */
3737 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3738 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3739 /* syntax/icode_generation.nit:685 */
3740 fra.me.REG[2] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[2]);
3741 /* syntax/icode_generation.nit:686 */
3742 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3743 /* syntax/icode_generation.nit:687 */
3744 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3745 /* syntax/icode_generation.nit:688 */
3746 fra.me.REG[2] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[2])(fra.me.REG[2]);
3747 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3748 /* syntax/icode_generation.nit:689 */
3749 fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3750 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3751 /* syntax/icode_generation.nit:690 */
3752 fra.me.REG[0] = CALL_parser___parser_nodes___AAssertExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
3753 /* syntax/icode_generation.nit:691 */
3754 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3755 if (UNTAG_Bool(REGB0)) {
3756 } else {
3757 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3758 if (UNTAG_Bool(REGB1)) {
3759 REGB1 = TAG_Bool(false);
3760 REGB0 = REGB1;
3761 } else {
3762 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
3763 REGB0 = REGB1;
3764 }
3765 }
3766 if (UNTAG_Bool(REGB0)) {
3767 /* syntax/icode_generation.nit:692 */
3768 REGB0 = TAG_Int(0);
3769 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3770 if (!once_value_1) {
3771 fra.me.REG[4] = BOX_NativeString("Assert failed");
3772 REGB0 = TAG_Int(13);
3773 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3774 once_value_1 = fra.me.REG[4];
3775 register_static_object(&once_value_1);
3776 } else fra.me.REG[4] = once_value_1;
3777 fra.me.REG[4] = fra.me.REG[4];
3778 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3779 CALL_icode___icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3780 } else {
3781 /* syntax/icode_generation.nit:694 */
3782 REGB0 = TAG_Int(1);
3783 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3784 if (!once_value_2) {
3785 fra.me.REG[4] = BOX_NativeString("Assert '%s' failed");
3786 REGB0 = TAG_Int(18);
3787 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
3788 once_value_2 = fra.me.REG[4];
3789 register_static_object(&once_value_2);
3790 } else fra.me.REG[4] = once_value_2;
3791 fra.me.REG[4] = fra.me.REG[4];
3792 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3793 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3794 if (UNTAG_Bool(REGB0)) {
3795 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 694);
3796 }
3797 fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
3798 fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
3799 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
3800 CALL_icode___icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3801 }
3802 /* syntax/icode_generation.nit:696 */
3803 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3804 /* syntax/icode_generation.nit:697 */
3805 fra.me.REG[3] = NIT_NULL;
3806 goto label3;
3807 label3: while(0);
3808 stack_frame_head = fra.me.prev;
3809 return fra.me.REG[3];
3810 }
3811 val_t syntax___icode_generation___AVarExpr___generate_icode(val_t p0, val_t p1){
3812 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3813 val_t tmp;
3814 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3815 fra.me.file = LOCATE_syntax___icode_generation;
3816 fra.me.line = 702;
3817 fra.me.meth = LOCATE_syntax___icode_generation___AVarExpr___generate_icode;
3818 fra.me.has_broke = 0;
3819 fra.me.REG_size = 2;
3820 fra.me.nitni_local_ref_head = NULL;
3821 fra.me.REG[0] = NIT_NULL;
3822 fra.me.REG[1] = NIT_NULL;
3823 fra.me.REG[0] = p0;
3824 fra.me.REG[1] = p1;
3825 /* syntax/icode_generation.nit:704 */
3826 fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3827 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3828 goto label1;
3829 label1: while(0);
3830 stack_frame_head = fra.me.prev;
3831 return fra.me.REG[0];
3832 }
3833 val_t syntax___icode_generation___AVarAssignExpr___generate_icode(val_t p0, val_t p1){
3834 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3835 val_t tmp;
3836 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3837 fra.me.file = LOCATE_syntax___icode_generation;
3838 fra.me.line = 709;
3839 fra.me.meth = LOCATE_syntax___icode_generation___AVarAssignExpr___generate_icode;
3840 fra.me.has_broke = 0;
3841 fra.me.REG_size = 3;
3842 fra.me.nitni_local_ref_head = NULL;
3843 fra.me.REG[0] = NIT_NULL;
3844 fra.me.REG[1] = NIT_NULL;
3845 fra.me.REG[2] = NIT_NULL;
3846 fra.me.REG[0] = p0;
3847 fra.me.REG[1] = p1;
3848 /* syntax/icode_generation.nit:711 */
3849 fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
3850 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3851 /* syntax/icode_generation.nit:712 */
3852 fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3853 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3854 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
3855 /* syntax/icode_generation.nit:713 */
3856 fra.me.REG[2] = NIT_NULL;
3857 goto label1;
3858 label1: while(0);
3859 stack_frame_head = fra.me.prev;
3860 return fra.me.REG[2];
3861 }
3862 val_t syntax___icode_generation___AVarReassignExpr___generate_icode(val_t p0, val_t p1){
3863 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3864 val_t REGB0;
3865 val_t tmp;
3866 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3867 fra.me.file = LOCATE_syntax___icode_generation;
3868 fra.me.line = 718;
3869 fra.me.meth = LOCATE_syntax___icode_generation___AVarReassignExpr___generate_icode;
3870 fra.me.has_broke = 0;
3871 fra.me.REG_size = 7;
3872 fra.me.nitni_local_ref_head = NULL;
3873 fra.me.REG[0] = NIT_NULL;
3874 fra.me.REG[1] = NIT_NULL;
3875 fra.me.REG[2] = NIT_NULL;
3876 fra.me.REG[3] = NIT_NULL;
3877 fra.me.REG[4] = NIT_NULL;
3878 fra.me.REG[5] = NIT_NULL;
3879 fra.me.REG[6] = NIT_NULL;
3880 fra.me.REG[0] = p0;
3881 fra.me.REG[1] = p1;
3882 /* syntax/icode_generation.nit:718 */
3883 fra.me.REG[2] = fra.me.REG[0];
3884 /* syntax/icode_generation.nit:720 */
3885 fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[2])(fra.me.REG[2]);
3886 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3887 /* syntax/icode_generation.nit:721 */
3888 fra.me.REG[4] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
3889 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3890 /* syntax/icode_generation.nit:722 */
3891 fra.me.REG[5] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[2])(fra.me.REG[2]);
3892 REGB0 = TAG_Int(2);
3893 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
3894 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
3895 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
3896 fra.me.REG[6] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[5], fra.me.REG[6]);
3897 fra.me.REG[2] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[2])(fra.me.REG[2]);
3898 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
3899 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3900 if (UNTAG_Bool(REGB0)) {
3901 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 722);
3902 }
3903 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
3904 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
3905 if (UNTAG_Bool(REGB0)) {
3906 } else {
3907 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 722);
3908 }
3909 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[2]);
3910 /* syntax/icode_generation.nit:723 */
3911 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3912 /* syntax/icode_generation.nit:724 */
3913 fra.me.REG[2] = NIT_NULL;
3914 goto label1;
3915 label1: while(0);
3916 stack_frame_head = fra.me.prev;
3917 return fra.me.REG[2];
3918 }
3919 val_t syntax___icode_generation___ASelfExpr___generate_icode(val_t p0, val_t p1){
3920 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3921 val_t tmp;
3922 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3923 fra.me.file = LOCATE_syntax___icode_generation;
3924 fra.me.line = 729;
3925 fra.me.meth = LOCATE_syntax___icode_generation___ASelfExpr___generate_icode;
3926 fra.me.has_broke = 0;
3927 fra.me.REG_size = 2;
3928 fra.me.nitni_local_ref_head = NULL;
3929 fra.me.REG[0] = NIT_NULL;
3930 fra.me.REG[1] = NIT_NULL;
3931 fra.me.REG[0] = p0;
3932 fra.me.REG[1] = p1;
3933 /* syntax/icode_generation.nit:731 */
3934 fra.me.REG[0] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3935 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3936 goto label1;
3937 label1: while(0);
3938 stack_frame_head = fra.me.prev;
3939 return fra.me.REG[0];
3940 }
3941 val_t syntax___icode_generation___AIfexprExpr___generate_icode(val_t p0, val_t p1){
3942 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3943 val_t tmp;
3944 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3945 fra.me.file = LOCATE_syntax___icode_generation;
3946 fra.me.line = 736;
3947 fra.me.meth = LOCATE_syntax___icode_generation___AIfexprExpr___generate_icode;
3948 fra.me.has_broke = 0;
3949 fra.me.REG_size = 6;
3950 fra.me.nitni_local_ref_head = NULL;
3951 fra.me.REG[0] = NIT_NULL;
3952 fra.me.REG[1] = NIT_NULL;
3953 fra.me.REG[2] = NIT_NULL;
3954 fra.me.REG[3] = NIT_NULL;
3955 fra.me.REG[4] = NIT_NULL;
3956 fra.me.REG[5] = NIT_NULL;
3957 fra.me.REG[0] = p0;
3958 fra.me.REG[1] = p1;
3959 /* syntax/icode_generation.nit:739 */
3960 fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3961 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3962 fra.me.REG[2] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[2]);
3963 /* syntax/icode_generation.nit:740 */
3964 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3965 /* syntax/icode_generation.nit:741 */
3966 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3967 /* syntax/icode_generation.nit:744 */
3968 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3969 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3970 /* syntax/icode_generation.nit:747 */
3971 fra.me.REG[5] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[2])(fra.me.REG[2]);
3972 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3973 /* syntax/icode_generation.nit:748 */
3974 fra.me.REG[5] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3975 fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3976 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
3977 /* syntax/icode_generation.nit:751 */
3978 fra.me.REG[2] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[2])(fra.me.REG[2]);
3979 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3980 /* syntax/icode_generation.nit:752 */
3981 fra.me.REG[0] = CALL_parser___parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3982 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3983 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
3984 /* syntax/icode_generation.nit:754 */
3985 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3986 /* syntax/icode_generation.nit:755 */
3987 goto label1;
3988 label1: while(0);
3989 stack_frame_head = fra.me.prev;
3990 return fra.me.REG[4];
3991 }
3992 val_t syntax___icode_generation___AEeExpr___generate_icode(val_t p0, val_t p1){
3993 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3994 val_t tmp;
3995 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3996 fra.me.file = LOCATE_syntax___icode_generation;
3997 fra.me.line = 760;
3998 fra.me.meth = LOCATE_syntax___icode_generation___AEeExpr___generate_icode;
3999 fra.me.has_broke = 0;
4000 fra.me.REG_size = 4;
4001 fra.me.nitni_local_ref_head = NULL;
4002 fra.me.REG[0] = NIT_NULL;
4003 fra.me.REG[1] = NIT_NULL;
4004 fra.me.REG[2] = NIT_NULL;
4005 fra.me.REG[3] = NIT_NULL;
4006 fra.me.REG[0] = p0;
4007 fra.me.REG[1] = p1;
4008 /* syntax/icode_generation.nit:762 */
4009 fra.me.REG[2] = CALL_parser___parser_nodes___AEeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4010 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4011 /* syntax/icode_generation.nit:763 */
4012 fra.me.REG[3] = CALL_parser___parser_nodes___AEeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4013 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4014 /* syntax/icode_generation.nit:764 */
4015 fra.me.REG[3] = NEW_IIs_icode___icode_base___IIs___init(fra.me.REG[2], fra.me.REG[3]);
4016 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4017 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
4018 goto label1;
4019 label1: while(0);
4020 stack_frame_head = fra.me.prev;
4021 return fra.me.REG[0];
4022 }
4023 val_t syntax___icode_generation___AOrExpr___generate_icode(val_t p0, val_t p1){
4024 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
4025 val_t tmp;
4026 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4027 fra.me.file = LOCATE_syntax___icode_generation;
4028 fra.me.line = 769;
4029 fra.me.meth = LOCATE_syntax___icode_generation___AOrExpr___generate_icode;
4030 fra.me.has_broke = 0;
4031 fra.me.REG_size = 6;
4032 fra.me.nitni_local_ref_head = NULL;
4033 fra.me.REG[0] = NIT_NULL;
4034 fra.me.REG[1] = NIT_NULL;
4035 fra.me.REG[2] = NIT_NULL;
4036 fra.me.REG[3] = NIT_NULL;
4037 fra.me.REG[4] = NIT_NULL;
4038 fra.me.REG[5] = NIT_NULL;
4039 fra.me.REG[0] = p0;
4040 fra.me.REG[1] = p1;
4041 /* syntax/icode_generation.nit:772 */
4042 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4043 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4044 /* syntax/icode_generation.nit:775 */
4045 fra.me.REG[3] = CALL_parser___parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4046 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4047 fra.me.REG[3] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[3]);
4048 /* syntax/icode_generation.nit:776 */
4049 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4050 /* syntax/icode_generation.nit:777 */
4051 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
4052 /* syntax/icode_generation.nit:778 */
4053 fra.me.REG[5] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[3])(fra.me.REG[3]);
4054 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
4055 /* syntax/icode_generation.nit:779 */
4056 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___lit_true_reg(fra.me.REG[1])(fra.me.REG[1]);
4057 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[5]);
4058 /* syntax/icode_generation.nit:782 */
4059 fra.me.REG[3] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[3])(fra.me.REG[3]);
4060 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4061 /* syntax/icode_generation.nit:783 */
4062 fra.me.REG[0] = CALL_parser___parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4063 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4064 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
4065 /* syntax/icode_generation.nit:785 */
4066 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4067 /* syntax/icode_generation.nit:786 */
4068 goto label1;
4069 label1: while(0);
4070 stack_frame_head = fra.me.prev;
4071 return fra.me.REG[2];
4072 }
4073 val_t syntax___icode_generation___AAndExpr___generate_icode(val_t p0, val_t p1){
4074 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
4075 val_t tmp;
4076 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4077 fra.me.file = LOCATE_syntax___icode_generation;
4078 fra.me.line = 791;
4079 fra.me.meth = LOCATE_syntax___icode_generation___AAndExpr___generate_icode;
4080 fra.me.has_broke = 0;
4081 fra.me.REG_size = 6;
4082 fra.me.nitni_local_ref_head = NULL;
4083 fra.me.REG[0] = NIT_NULL;
4084 fra.me.REG[1] = NIT_NULL;
4085 fra.me.REG[2] = NIT_NULL;
4086 fra.me.REG[3] = NIT_NULL;
4087 fra.me.REG[4] = NIT_NULL;
4088 fra.me.REG[5] = NIT_NULL;
4089 fra.me.REG[0] = p0;
4090 fra.me.REG[1] = p1;
4091 /* syntax/icode_generation.nit:794 */
4092 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4093 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4094 /* syntax/icode_generation.nit:797 */
4095 fra.me.REG[3] = CALL_parser___parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4096 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4097 fra.me.REG[3] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[3]);
4098 /* syntax/icode_generation.nit:798 */
4099 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4100 /* syntax/icode_generation.nit:799 */
4101 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
4102 /* syntax/icode_generation.nit:800 */
4103 fra.me.REG[5] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[3])(fra.me.REG[3]);
4104 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
4105 /* syntax/icode_generation.nit:801 */
4106 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[1])(fra.me.REG[1]);
4107 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[5]);
4108 /* syntax/icode_generation.nit:804 */
4109 fra.me.REG[3] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[3])(fra.me.REG[3]);
4110 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4111 /* syntax/icode_generation.nit:805 */
4112 fra.me.REG[0] = CALL_parser___parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4113 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4114 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
4115 /* syntax/icode_generation.nit:807 */
4116 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4117 /* syntax/icode_generation.nit:808 */
4118 goto label1;
4119 label1: while(0);
4120 stack_frame_head = fra.me.prev;
4121 return fra.me.REG[2];
4122 }
4123 val_t syntax___icode_generation___ANotExpr___generate_icode(val_t p0, val_t p1){
4124 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4125 val_t tmp;
4126 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4127 fra.me.file = LOCATE_syntax___icode_generation;
4128 fra.me.line = 813;
4129 fra.me.meth = LOCATE_syntax___icode_generation___ANotExpr___generate_icode;
4130 fra.me.has_broke = 0;
4131 fra.me.REG_size = 3;
4132 fra.me.nitni_local_ref_head = NULL;
4133 fra.me.REG[0] = NIT_NULL;
4134 fra.me.REG[1] = NIT_NULL;
4135 fra.me.REG[2] = NIT_NULL;
4136 fra.me.REG[0] = p0;
4137 fra.me.REG[1] = p1;
4138 /* syntax/icode_generation.nit:815 */
4139 fra.me.REG[2] = CALL_parser___parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4140 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4141 /* syntax/icode_generation.nit:816 */
4142 fra.me.REG[2] = NEW_INot_icode___icode_base___INot___init(fra.me.REG[2]);
4143 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4144 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
4145 goto label1;
4146 label1: while(0);
4147 stack_frame_head = fra.me.prev;
4148 return fra.me.REG[0];
4149 }
4150 val_t syntax___icode_generation___AOrElseExpr___generate_icode(val_t p0, val_t p1){
4151 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
4152 val_t tmp;
4153 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4154 fra.me.file = LOCATE_syntax___icode_generation;
4155 fra.me.line = 821;
4156 fra.me.meth = LOCATE_syntax___icode_generation___AOrElseExpr___generate_icode;
4157 fra.me.has_broke = 0;
4158 fra.me.REG_size = 7;
4159 fra.me.nitni_local_ref_head = NULL;
4160 fra.me.REG[0] = NIT_NULL;
4161 fra.me.REG[1] = NIT_NULL;
4162 fra.me.REG[2] = NIT_NULL;
4163 fra.me.REG[3] = NIT_NULL;
4164 fra.me.REG[4] = NIT_NULL;
4165 fra.me.REG[5] = NIT_NULL;
4166 fra.me.REG[6] = NIT_NULL;
4167 fra.me.REG[0] = p0;
4168 fra.me.REG[1] = p1;
4169 /* syntax/icode_generation.nit:824 */
4170 fra.me.REG[2] = CALL_parser___parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4171 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4172 /* syntax/icode_generation.nit:827 */
4173 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4174 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4175 /* syntax/icode_generation.nit:830 */
4176 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[1])(fra.me.REG[1]);
4177 /* syntax/icode_generation.nit:831 */
4178 fra.me.REG[4] = NEW_IIs_icode___icode_base___IIs___init(fra.me.REG[2], fra.me.REG[4]);
4179 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
4180 fra.me.REG[5] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[5])(fra.me.REG[5]);
4181 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
4182 /* syntax/icode_generation.nit:832 */
4183 fra.me.REG[5] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[5]);
4184 /* syntax/icode_generation.nit:833 */
4185 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
4186 /* syntax/icode_generation.nit:834 */
4187 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
4188 /* syntax/icode_generation.nit:837 */
4189 fra.me.REG[6] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[5])(fra.me.REG[5]);
4190 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
4191 /* syntax/icode_generation.nit:838 */
4192 fra.me.REG[0] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4193 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
4194 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
4195 /* syntax/icode_generation.nit:841 */
4196 fra.me.REG[5] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[5])(fra.me.REG[5]);
4197 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
4198 /* syntax/icode_generation.nit:842 */
4199 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
4200 /* syntax/icode_generation.nit:844 */
4201 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4202 /* syntax/icode_generation.nit:846 */
4203 goto label1;
4204 label1: while(0);
4205 stack_frame_head = fra.me.prev;
4206 return fra.me.REG[3];
4207 }
4208 val_t syntax___icode_generation___AIsaExpr___generate_icode(val_t p0, val_t p1){
4209 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
4210 val_t REGB0;
4211 val_t tmp;
4212 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4213 fra.me.file = LOCATE_syntax___icode_generation;
4214 fra.me.line = 851;
4215 fra.me.meth = LOCATE_syntax___icode_generation___AIsaExpr___generate_icode;
4216 fra.me.has_broke = 0;
4217 fra.me.REG_size = 5;
4218 fra.me.nitni_local_ref_head = NULL;
4219 fra.me.REG[0] = NIT_NULL;
4220 fra.me.REG[1] = NIT_NULL;
4221 fra.me.REG[2] = NIT_NULL;
4222 fra.me.REG[3] = NIT_NULL;
4223 fra.me.REG[4] = NIT_NULL;
4224 fra.me.REG[0] = p0;
4225 fra.me.REG[1] = p1;
4226 /* syntax/icode_generation.nit:851 */
4227 fra.me.REG[2] = fra.me.REG[0];
4228 /* syntax/icode_generation.nit:853 */
4229 fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
4230 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4231 /* syntax/icode_generation.nit:854 */
4232 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___selfreg(fra.me.REG[1])(fra.me.REG[1]);
4233 REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
4234 if (UNTAG_Bool(REGB0)) {
4235 } else {
4236 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 854);
4237 }
4238 fra.me.REG[0] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[2])(fra.me.REG[2]);
4239 fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
4240 fra.me.REG[0] = NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(fra.me.REG[4], fra.me.REG[3], fra.me.REG[0]);
4241 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
4242 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
4243 goto label1;
4244 label1: while(0);
4245 stack_frame_head = fra.me.prev;
4246 return fra.me.REG[2];
4247 }
4248 val_t syntax___icode_generation___AAsCastExpr___generate_icode(val_t p0, val_t p1){
4249 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4250 val_t tmp;
4251 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4252 fra.me.file = LOCATE_syntax___icode_generation;
4253 fra.me.line = 859;
4254 fra.me.meth = LOCATE_syntax___icode_generation___AAsCastExpr___generate_icode;
4255 fra.me.has_broke = 0;
4256 fra.me.REG_size = 3;
4257 fra.me.nitni_local_ref_head = NULL;
4258 fra.me.REG[0] = NIT_NULL;
4259 fra.me.REG[1] = NIT_NULL;
4260 fra.me.REG[2] = NIT_NULL;
4261 fra.me.REG[0] = p0;
4262 fra.me.REG[1] = p1;
4263 /* syntax/icode_generation.nit:861 */
4264 fra.me.REG[2] = CALL_parser___parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4265 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4266 /* syntax/icode_generation.nit:862 */
4267 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4268 CALL_icode___icode_builder___ICodeBuilder___add_type_cast(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
4269 /* syntax/icode_generation.nit:863 */
4270 goto label1;
4271 label1: while(0);
4272 stack_frame_head = fra.me.prev;
4273 return fra.me.REG[2];
4274 }
4275 val_t syntax___icode_generation___AAsNotnullExpr___generate_icode(val_t p0, val_t p1){
4276 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4277 val_t tmp;
4278 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4279 fra.me.file = LOCATE_syntax___icode_generation;
4280 fra.me.line = 868;
4281 fra.me.meth = LOCATE_syntax___icode_generation___AAsNotnullExpr___generate_icode;
4282 fra.me.has_broke = 0;
4283 fra.me.REG_size = 3;
4284 fra.me.nitni_local_ref_head = NULL;
4285 fra.me.REG[0] = NIT_NULL;
4286 fra.me.REG[1] = NIT_NULL;
4287 fra.me.REG[2] = NIT_NULL;
4288 fra.me.REG[0] = p0;
4289 fra.me.REG[1] = p1;
4290 /* syntax/icode_generation.nit:870 */
4291 fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4292 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4293 /* syntax/icode_generation.nit:871 */
4294 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4295 CALL_icode___icode_builder___ICodeBuilder___add_type_cast(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
4296 /* syntax/icode_generation.nit:872 */
4297 goto label1;
4298 label1: while(0);
4299 stack_frame_head = fra.me.prev;
4300 return fra.me.REG[2];
4301 }
4302 val_t syntax___icode_generation___ATrueExpr___generate_icode(val_t p0, val_t p1){
4303 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4304 val_t tmp;
4305 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4306 fra.me.file = LOCATE_syntax___icode_generation;
4307 fra.me.line = 877;
4308 fra.me.meth = LOCATE_syntax___icode_generation___ATrueExpr___generate_icode;
4309 fra.me.has_broke = 0;
4310 fra.me.REG_size = 2;
4311 fra.me.nitni_local_ref_head = NULL;
4312 fra.me.REG[0] = NIT_NULL;
4313 fra.me.REG[1] = NIT_NULL;
4314 fra.me.REG[0] = p0;
4315 fra.me.REG[1] = p1;
4316 /* syntax/icode_generation.nit:879 */
4317 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___lit_true_reg(fra.me.REG[1])(fra.me.REG[1]);
4318 goto label1;
4319 label1: while(0);
4320 stack_frame_head = fra.me.prev;
4321 return fra.me.REG[1];
4322 }
4323 val_t syntax___icode_generation___AFalseExpr___generate_icode(val_t p0, val_t p1){
4324 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4325 val_t tmp;
4326 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4327 fra.me.file = LOCATE_syntax___icode_generation;
4328 fra.me.line = 884;
4329 fra.me.meth = LOCATE_syntax___icode_generation___AFalseExpr___generate_icode;
4330 fra.me.has_broke = 0;
4331 fra.me.REG_size = 2;
4332 fra.me.nitni_local_ref_head = NULL;
4333 fra.me.REG[0] = NIT_NULL;
4334 fra.me.REG[1] = NIT_NULL;
4335 fra.me.REG[0] = p0;
4336 fra.me.REG[1] = p1;
4337 /* syntax/icode_generation.nit:886 */
4338 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[1])(fra.me.REG[1]);
4339 goto label1;
4340 label1: while(0);
4341 stack_frame_head = fra.me.prev;
4342 return fra.me.REG[1];
4343 }
4344 val_t syntax___icode_generation___AIntExpr___generate_icode(val_t p0, val_t p1){
4345 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4346 val_t tmp;
4347 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4348 fra.me.file = LOCATE_syntax___icode_generation;
4349 fra.me.line = 891;
4350 fra.me.meth = LOCATE_syntax___icode_generation___AIntExpr___generate_icode;
4351 fra.me.has_broke = 0;
4352 fra.me.REG_size = 3;
4353 fra.me.nitni_local_ref_head = NULL;
4354 fra.me.REG[0] = NIT_NULL;
4355 fra.me.REG[1] = NIT_NULL;
4356 fra.me.REG[2] = NIT_NULL;
4357 fra.me.REG[0] = p0;
4358 fra.me.REG[1] = p1;
4359 /* syntax/icode_generation.nit:893 */
4360 fra.me.REG[2] = CALL_parser___parser_nodes___AIntExpr___n_number(fra.me.REG[0])(fra.me.REG[0]);
4361 fra.me.REG[2] = CALL_parser___parser_nodes___Token___text(fra.me.REG[2])(fra.me.REG[2]);
4362 fra.me.REG[2] = NEW_IIntValue_icode___icode_base___IIntValue___init(fra.me.REG[2]);
4363 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4364 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
4365 goto label1;
4366 label1: while(0);
4367 stack_frame_head = fra.me.prev;
4368 return fra.me.REG[0];
4369 }
4370 val_t syntax___icode_generation___AFloatExpr___generate_icode(val_t p0, val_t p1){
4371 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4372 val_t tmp;
4373 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4374 fra.me.file = LOCATE_syntax___icode_generation;
4375 fra.me.line = 898;
4376 fra.me.meth = LOCATE_syntax___icode_generation___AFloatExpr___generate_icode;
4377 fra.me.has_broke = 0;
4378 fra.me.REG_size = 3;
4379 fra.me.nitni_local_ref_head = NULL;
4380 fra.me.REG[0] = NIT_NULL;
4381 fra.me.REG[1] = NIT_NULL;
4382 fra.me.REG[2] = NIT_NULL;
4383 fra.me.REG[0] = p0;
4384 fra.me.REG[1] = p1;
4385 /* syntax/icode_generation.nit:900 */
4386 fra.me.REG[2] = CALL_parser___parser_nodes___AFloatExpr___n_float(fra.me.REG[0])(fra.me.REG[0]);
4387 fra.me.REG[2] = CALL_parser___parser_nodes___Token___text(fra.me.REG[2])(fra.me.REG[2]);
4388 fra.me.REG[2] = NEW_IFloatValue_icode___icode_base___IFloatValue___init(fra.me.REG[2]);
4389 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4390 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
4391 goto label1;
4392 label1: while(0);
4393 stack_frame_head = fra.me.prev;
4394 return fra.me.REG[0];
4395 }
4396 val_t syntax___icode_generation___ACharExpr___generate_icode(val_t p0, val_t p1){
4397 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4398 val_t tmp;
4399 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4400 fra.me.file = LOCATE_syntax___icode_generation;
4401 fra.me.line = 905;
4402 fra.me.meth = LOCATE_syntax___icode_generation___ACharExpr___generate_icode;
4403 fra.me.has_broke = 0;
4404 fra.me.REG_size = 3;
4405 fra.me.nitni_local_ref_head = NULL;
4406 fra.me.REG[0] = NIT_NULL;
4407 fra.me.REG[1] = NIT_NULL;
4408 fra.me.REG[2] = NIT_NULL;
4409 fra.me.REG[0] = p0;
4410 fra.me.REG[1] = p1;
4411 /* syntax/icode_generation.nit:907 */
4412 fra.me.REG[2] = CALL_parser___parser_nodes___ACharExpr___n_char(fra.me.REG[0])(fra.me.REG[0]);
4413 fra.me.REG[2] = CALL_parser___parser_nodes___Token___text(fra.me.REG[2])(fra.me.REG[2]);
4414 fra.me.REG[2] = NEW_ICharValue_icode___icode_base___ICharValue___init(fra.me.REG[2]);
4415 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4416 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
4417 goto label1;
4418 label1: while(0);
4419 stack_frame_head = fra.me.prev;
4420 return fra.me.REG[0];
4421 }
4422 val_t syntax___icode_generation___AStringFormExpr___generate_icode(val_t p0, val_t p1){
4423 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
4424 val_t REGB0;
4425 val_t tmp;
4426 static val_t once_value_1; /* Once value */
4427 static val_t once_value_2; /* Once value */
4428 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4429 fra.me.file = LOCATE_syntax___icode_generation;
4430 fra.me.line = 912;
4431 fra.me.meth = LOCATE_syntax___icode_generation___AStringFormExpr___generate_icode;
4432 fra.me.has_broke = 0;
4433 fra.me.REG_size = 9;
4434 fra.me.nitni_local_ref_head = NULL;
4435 fra.me.REG[0] = NIT_NULL;
4436 fra.me.REG[1] = NIT_NULL;
4437 fra.me.REG[2] = NIT_NULL;
4438 fra.me.REG[3] = NIT_NULL;
4439 fra.me.REG[4] = NIT_NULL;
4440 fra.me.REG[5] = NIT_NULL;
4441 fra.me.REG[6] = NIT_NULL;
4442 fra.me.REG[7] = NIT_NULL;
4443 fra.me.REG[8] = NIT_NULL;
4444 fra.me.REG[0] = p0;
4445 fra.me.REG[1] = p1;
4446 /* syntax/icode_generation.nit:912 */
4447 fra.me.REG[2] = fra.me.REG[0];
4448 /* syntax/icode_generation.nit:914 */
4449 CALL_syntax___icode_generation___AStringFormExpr___compute_string_infos(fra.me.REG[2])(fra.me.REG[2]);
4450 /* syntax/icode_generation.nit:915 */
4451 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
4452 /* syntax/icode_generation.nit:916 */
4453 fra.me.REG[4] = NEW_IOnce_icode___icode_base___IOnce___init();
4454 /* syntax/icode_generation.nit:917 */
4455 fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
4456 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
4457 /* syntax/icode_generation.nit:918 */
4458 fra.me.REG[4] = CALL_icode___icode_base___IOnce___body(fra.me.REG[4])(fra.me.REG[4]);
4459 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
4460 /* syntax/icode_generation.nit:919 */
4461 fra.me.REG[4] = ATTR_syntax___icode_generation___AStringFormExpr____cstring(fra.me.REG[2]);
4462 REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
4463 if (UNTAG_Bool(REGB0)) {
4464 } else {
4465 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 919);
4466 }
4467 fra.me.REG[4] = NEW_IStringValue_icode___icode_base___IStringValue___init(fra.me.REG[4]);
4468 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
4469 fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_nativestring(fra.me.REG[0])(fra.me.REG[0]);
4470 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
4471 /* syntax/icode_generation.nit:920 */
4472 fra.me.REG[4] = ATTR_syntax___icode_generation___AStringFormExpr____cstring_length(fra.me.REG[2]);
4473 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4474 if (UNTAG_Bool(REGB0)) {
4475 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 920);
4476 }
4477 fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
4478 fra.me.REG[4] = NEW_IIntValue_icode___icode_base___IIntValue___init(fra.me.REG[4]);
4479 fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
4480 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[6])(fra.me.REG[6]);
4481 fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
4482 /* syntax/icode_generation.nit:921 */
4483 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
4484 fra.me.REG[7] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
4485 if (!once_value_1) {
4486 if (!once_value_2) {
4487 fra.me.REG[8] = BOX_NativeString("with_native");
4488 REGB0 = TAG_Int(11);
4489 fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
4490 once_value_2 = fra.me.REG[8];
4491 register_static_object(&once_value_2);
4492 } else fra.me.REG[8] = once_value_2;
4493 fra.me.REG[8] = fra.me.REG[8];
4494 fra.me.REG[8] = CALL_standard___symbol___String___to_symbol(fra.me.REG[8])(fra.me.REG[8]);
4495 once_value_1 = fra.me.REG[8];
4496 register_static_object(&once_value_1);
4497 } else fra.me.REG[8] = once_value_1;
4498 fra.me.REG[8] = fra.me.REG[8];
4499 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7], fra.me.REG[8]);
4500 /* syntax/icode_generation.nit:922 */
4501 fra.me.REG[7] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
4502 REGB0 = TAG_Int(2);
4503 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4504 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
4505 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
4506 fra.me.REG[4] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[7], fra.me.REG[8], fra.me.REG[4]);
4507 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
4508 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[2]);
4509 /* syntax/icode_generation.nit:923 */
4510 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[2]);
4511 /* syntax/icode_generation.nit:924 */
4512 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4513 /* syntax/icode_generation.nit:925 */
4514 goto label3;
4515 label3: while(0);
4516 stack_frame_head = fra.me.prev;
4517 return fra.me.REG[5];
4518 }
4519 val_t syntax___icode_generation___AStringFormExpr___string_text(val_t p0){
4520 struct {struct stack_frame_t me;} fra;
4521 val_t tmp;
4522 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4523 fra.me.file = LOCATE_syntax___icode_generation;
4524 fra.me.line = 928;
4525 fra.me.meth = LOCATE_syntax___icode_generation___AStringFormExpr___string_text;
4526 fra.me.has_broke = 0;
4527 fra.me.REG_size = 0;
4528 fra.me.nitni_local_ref_head = NULL;
4529 /* syntax/icode_generation.nit:928 */
4530 nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 928);
4531 stack_frame_head = fra.me.prev;
4532 return NIT_NULL;
4533 }
4534 void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0){
4535 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4536 val_t REGB0;
4537 val_t REGB1;
4538 val_t REGB2;
4539 val_t REGB3;
4540 val_t REGB4;
4541 val_t REGB5;
4542 val_t tmp;
4543 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4544 fra.me.file = LOCATE_syntax___icode_generation;
4545 fra.me.line = 937;
4546 fra.me.meth = LOCATE_syntax___icode_generation___AStringFormExpr___compute_string_infos;
4547 fra.me.has_broke = 0;
4548 fra.me.REG_size = 3;
4549 fra.me.nitni_local_ref_head = NULL;
4550 fra.me.REG[0] = NIT_NULL;
4551 fra.me.REG[1] = NIT_NULL;
4552 fra.me.REG[2] = NIT_NULL;
4553 fra.me.REG[0] = p0;
4554 /* syntax/icode_generation.nit:940 */
4555 REGB0 = TAG_Int(0);
4556 /* syntax/icode_generation.nit:941 */
4557 fra.me.REG[1] = CALL_syntax___icode_generation___AStringFormExpr___string_text(fra.me.REG[0])(fra.me.REG[0]);
4558 /* syntax/icode_generation.nit:942 */
4559 fra.me.REG[2] = NEW_Buffer_standard___string___Buffer___init();
4560 /* syntax/icode_generation.nit:943 */
4561 REGB1 = TAG_Int(0);
4562 /* syntax/icode_generation.nit:944 */
4563 while(1) {
4564 /* ../lib/standard/collection/array.nit:24 */
4565 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
4566 if (UNTAG_Bool(REGB2)) {
4567 } else {
4568 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4569 }
4570 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
4571 REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
4572 if (UNTAG_Bool(REGB3)) {
4573 } else {
4574 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
4575 }
4576 /* ../lib/standard/kernel.nit:232 */
4577 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
4578 /* syntax/icode_generation.nit:944 */
4579 if (UNTAG_Bool(REGB2)) {
4580 /* syntax/icode_generation.nit:945 */
4581 REGB2 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
4582 /* syntax/icode_generation.nit:946 */
4583 REGB3 = TAG_Char('\\');
4584 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
4585 if (UNTAG_Bool(REGB4)) {
4586 } else {
4587 /* ../lib/standard/kernel.nit:378 */
4588 REGB3 = TAG_Bool((REGB2)==(REGB3));
4589 /* syntax/icode_generation.nit:946 */
4590 REGB4 = REGB3;
4591 }
4592 if (UNTAG_Bool(REGB4)) {
4593 /* syntax/icode_generation.nit:947 */
4594 REGB4 = TAG_Int(1);
4595 /* ../lib/standard/kernel.nit:235 */
4596 REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
4597 /* syntax/icode_generation.nit:947 */
4598 REGB1 = REGB4;
4599 /* syntax/icode_generation.nit:948 */
4600 REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
4601 /* syntax/icode_generation.nit:949 */
4602 REGB3 = TAG_Char('{');
4603 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
4604 if (UNTAG_Bool(REGB5)) {
4605 } else {
4606 /* ../lib/standard/kernel.nit:378 */
4607 REGB3 = TAG_Bool((REGB4)==(REGB3));
4608 /* syntax/icode_generation.nit:949 */
4609 REGB5 = REGB3;
4610 }
4611 REGB5 = TAG_Bool(!UNTAG_Bool(REGB5));
4612 if (UNTAG_Bool(REGB5)) {
4613 REGB5 = TAG_Char('}');
4614 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB5));
4615 if (UNTAG_Bool(REGB3)) {
4616 } else {
4617 /* ../lib/standard/kernel.nit:378 */
4618 REGB5 = TAG_Bool((REGB4)==(REGB5));
4619 /* syntax/icode_generation.nit:949 */
4620 REGB3 = REGB5;
4621 }
4622 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
4623 } else {
4624 REGB5 = TAG_Bool(false);
4625 REGB3 = REGB5;
4626 }
4627 if (UNTAG_Bool(REGB3)) {
4628 /* syntax/icode_generation.nit:950 */
4629 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB2);
4630 }
4631 /* syntax/icode_generation.nit:952 */
4632 REGB2 = REGB4;
4633 }
4634 /* syntax/icode_generation.nit:954 */
4635 REGB4 = TAG_Int(1);
4636 /* ../lib/standard/kernel.nit:235 */
4637 REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
4638 /* syntax/icode_generation.nit:954 */
4639 REGB0 = REGB4;
4640 /* syntax/icode_generation.nit:955 */
4641 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB2);
4642 /* syntax/icode_generation.nit:956 */
4643 REGB2 = TAG_Int(1);
4644 /* ../lib/standard/kernel.nit:235 */
4645 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
4646 /* syntax/icode_generation.nit:956 */
4647 REGB1 = REGB2;
4648 } else {
4649 /* syntax/icode_generation.nit:944 */
4650 goto label1;
4651 }
4652 }
4653 label1: while(0);
4654 /* syntax/icode_generation.nit:958 */
4655 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4656 ATTR_syntax___icode_generation___AStringFormExpr____cstring(fra.me.REG[0]) = fra.me.REG[2];
4657 /* syntax/icode_generation.nit:959 */
4658 ATTR_syntax___icode_generation___AStringFormExpr____cstring_length(fra.me.REG[0]) = REGB0;
4659 stack_frame_head = fra.me.prev;
4660 return;
4661 }
4662 val_t syntax___icode_generation___AStringExpr___string_text(val_t p0){
4663 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4664 val_t REGB0;
4665 val_t REGB1;
4666 val_t REGB2;
4667 val_t tmp;
4668 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4669 fra.me.file = LOCATE_syntax___icode_generation;
4670 fra.me.line = 964;
4671 fra.me.meth = LOCATE_syntax___icode_generation___AStringExpr___string_text;
4672 fra.me.has_broke = 0;
4673 fra.me.REG_size = 2;
4674 fra.me.nitni_local_ref_head = NULL;
4675 fra.me.REG[0] = NIT_NULL;
4676 fra.me.REG[1] = NIT_NULL;
4677 fra.me.REG[0] = p0;
4678 /* syntax/icode_generation.nit:964 */
4679 fra.me.REG[1] = CALL_parser___parser_nodes___AStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4680 fra.me.REG[1] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
4681 REGB0 = TAG_Int(1);
4682 fra.me.REG[0] = CALL_parser___parser_nodes___AStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4683 fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
4684 /* ../lib/standard/collection/array.nit:24 */
4685 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
4686 if (UNTAG_Bool(REGB1)) {
4687 } else {
4688 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4689 }
4690 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
4691 /* syntax/icode_generation.nit:964 */
4692 REGB2 = TAG_Int(2);
4693 /* ../lib/standard/kernel.nit:237 */
4694 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
4695 /* syntax/icode_generation.nit:964 */
4696 fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
4697 goto label1;
4698 label1: while(0);
4699 stack_frame_head = fra.me.prev;
4700 return fra.me.REG[1];
4701 }
4702 val_t syntax___icode_generation___AStartStringExpr___string_text(val_t p0){
4703 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4704 val_t REGB0;
4705 val_t REGB1;
4706 val_t REGB2;
4707 val_t tmp;
4708 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4709 fra.me.file = LOCATE_syntax___icode_generation;
4710 fra.me.line = 967;
4711 fra.me.meth = LOCATE_syntax___icode_generation___AStartStringExpr___string_text;
4712 fra.me.has_broke = 0;
4713 fra.me.REG_size = 2;
4714 fra.me.nitni_local_ref_head = NULL;
4715 fra.me.REG[0] = NIT_NULL;
4716 fra.me.REG[1] = NIT_NULL;
4717 fra.me.REG[0] = p0;
4718 /* syntax/icode_generation.nit:967 */
4719 fra.me.REG[1] = CALL_parser___parser_nodes___AStartStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4720 fra.me.REG[1] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
4721 REGB0 = TAG_Int(1);
4722 fra.me.REG[0] = CALL_parser___parser_nodes___AStartStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4723 fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
4724 /* ../lib/standard/collection/array.nit:24 */
4725 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
4726 if (UNTAG_Bool(REGB1)) {
4727 } else {
4728 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4729 }
4730 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
4731 /* syntax/icode_generation.nit:967 */
4732 REGB2 = TAG_Int(2);
4733 /* ../lib/standard/kernel.nit:237 */
4734 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
4735 /* syntax/icode_generation.nit:967 */
4736 fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
4737 goto label1;
4738 label1: while(0);
4739 stack_frame_head = fra.me.prev;
4740 return fra.me.REG[1];
4741 }
4742 val_t syntax___icode_generation___AMidStringExpr___string_text(val_t p0){
4743 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4744 val_t REGB0;
4745 val_t REGB1;
4746 val_t REGB2;
4747 val_t tmp;
4748 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4749 fra.me.file = LOCATE_syntax___icode_generation;
4750 fra.me.line = 970;
4751 fra.me.meth = LOCATE_syntax___icode_generation___AMidStringExpr___string_text;
4752 fra.me.has_broke = 0;
4753 fra.me.REG_size = 2;
4754 fra.me.nitni_local_ref_head = NULL;
4755 fra.me.REG[0] = NIT_NULL;
4756 fra.me.REG[1] = NIT_NULL;
4757 fra.me.REG[0] = p0;
4758 /* syntax/icode_generation.nit:970 */
4759 fra.me.REG[1] = CALL_parser___parser_nodes___AMidStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4760 fra.me.REG[1] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
4761 REGB0 = TAG_Int(1);
4762 fra.me.REG[0] = CALL_parser___parser_nodes___AMidStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4763 fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
4764 /* ../lib/standard/collection/array.nit:24 */
4765 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
4766 if (UNTAG_Bool(REGB1)) {
4767 } else {
4768 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4769 }
4770 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
4771 /* syntax/icode_generation.nit:970 */
4772 REGB2 = TAG_Int(2);
4773 /* ../lib/standard/kernel.nit:237 */
4774 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
4775 /* syntax/icode_generation.nit:970 */
4776 fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
4777 goto label1;
4778 label1: while(0);
4779 stack_frame_head = fra.me.prev;
4780 return fra.me.REG[1];
4781 }
4782 val_t syntax___icode_generation___AEndStringExpr___string_text(val_t p0){
4783 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4784 val_t REGB0;
4785 val_t REGB1;
4786 val_t REGB2;
4787 val_t tmp;
4788 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4789 fra.me.file = LOCATE_syntax___icode_generation;
4790 fra.me.line = 973;
4791 fra.me.meth = LOCATE_syntax___icode_generation___AEndStringExpr___string_text;
4792 fra.me.has_broke = 0;
4793 fra.me.REG_size = 2;
4794 fra.me.nitni_local_ref_head = NULL;
4795 fra.me.REG[0] = NIT_NULL;
4796 fra.me.REG[1] = NIT_NULL;
4797 fra.me.REG[0] = p0;
4798 /* syntax/icode_generation.nit:973 */
4799 fra.me.REG[1] = CALL_parser___parser_nodes___AEndStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4800 fra.me.REG[1] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
4801 REGB0 = TAG_Int(1);
4802 fra.me.REG[0] = CALL_parser___parser_nodes___AEndStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4803 fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
4804 /* ../lib/standard/collection/array.nit:24 */
4805 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
4806 if (UNTAG_Bool(REGB1)) {
4807 } else {
4808 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
4809 }
4810 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
4811 /* syntax/icode_generation.nit:973 */
4812 REGB2 = TAG_Int(2);
4813 /* ../lib/standard/kernel.nit:237 */
4814 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
4815 /* syntax/icode_generation.nit:973 */
4816 fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
4817 goto label1;
4818 label1: while(0);
4819 stack_frame_head = fra.me.prev;
4820 return fra.me.REG[1];
4821 }
4822 val_t syntax___icode_generation___ASuperstringExpr___generate_icode(val_t p0, val_t p1){
4823 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
4824 val_t REGB0;
4825 val_t tmp;
4826 static val_t once_value_1; /* Once value */
4827 static val_t once_value_2; /* Once value */
4828 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4829 fra.me.file = LOCATE_syntax___icode_generation;
4830 fra.me.line = 977;
4831 fra.me.meth = LOCATE_syntax___icode_generation___ASuperstringExpr___generate_icode;
4832 fra.me.has_broke = 0;
4833 fra.me.REG_size = 6;
4834 fra.me.nitni_local_ref_head = NULL;
4835 fra.me.REG[0] = NIT_NULL;
4836 fra.me.REG[1] = NIT_NULL;
4837 fra.me.REG[2] = NIT_NULL;
4838 fra.me.REG[3] = NIT_NULL;
4839 fra.me.REG[4] = NIT_NULL;
4840 fra.me.REG[5] = NIT_NULL;
4841 fra.me.REG[0] = p0;
4842 fra.me.REG[1] = p1;
4843 /* syntax/icode_generation.nit:979 */
4844 fra.me.REG[2] = CALL_syntax___syntax_base___ASuperstringExpr___atype(fra.me.REG[0])(fra.me.REG[0]);
4845 fra.me.REG[3] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
4846 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
4847 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___add_new_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], REGB0);
4848 /* syntax/icode_generation.nit:980 */
4849 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
4850 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
4851 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[4])(fra.me.REG[4]);
4852 if (!once_value_1) {
4853 if (!once_value_2) {
4854 fra.me.REG[5] = BOX_NativeString("to_s");
4855 REGB0 = TAG_Int(4);
4856 fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
4857 once_value_2 = fra.me.REG[5];
4858 register_static_object(&once_value_2);
4859 } else fra.me.REG[5] = once_value_2;
4860 fra.me.REG[5] = fra.me.REG[5];
4861 fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
4862 once_value_1 = fra.me.REG[5];
4863 register_static_object(&once_value_1);
4864 } else fra.me.REG[5] = once_value_1;
4865 fra.me.REG[5] = fra.me.REG[5];
4866 fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
4867 /* syntax/icode_generation.nit:981 */
4868 fra.me.REG[4] = CALL_parser___parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
4869 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___ASuperstringExpr___generate_icode_3));
4870 /* syntax/icode_generation.nit:988 */
4871 REGB0 = TAG_Int(1);
4872 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4873 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4874 fra.me.REG[4] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[5], fra.me.REG[4]);
4875 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4876 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
4877 goto label4;
4878 label4: while(0);
4879 stack_frame_head = fra.me.prev;
4880 return fra.me.REG[0];
4881 }
4882 void OC_syntax___icode_generation___ASuperstringExpr___generate_icode_3(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
4883 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4884 val_t REGB0;
4885 val_t REGB1;
4886 fun_t CREG[1];
4887 val_t tmp;
4888 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4889 fra.me.file = LOCATE_syntax___icode_generation;
4890 fra.me.line = 0;
4891 fra.me.meth = LOCATE_syntax___icode_generation___ASuperstringExpr___generate_icode;
4892 fra.me.has_broke = 0;
4893 fra.me.REG_size = 3;
4894 fra.me.nitni_local_ref_head = NULL;
4895 fra.me.REG[0] = NIT_NULL;
4896 fra.me.REG[1] = NIT_NULL;
4897 fra.me.REG[2] = NIT_NULL;
4898 fra.me.closure_ctx = closctx_param;
4899 fra.me.closure_funs = CREG;
4900 fra.me.REG[0] = p0;
4901 CREG[0] = clos_fun0;
4902 /* syntax/icode_generation.nit:982 */
4903 fra.me.REG[1] = CALL_syntax___icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
4904 /* syntax/icode_generation.nit:983 */
4905 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4906 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(closctx->REG[0])(closctx->REG[0]);
4907 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[2]));
4908 if (UNTAG_Bool(REGB0)) {
4909 } else {
4910 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
4911 REGB0 = REGB1;
4912 }
4913 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4914 if (UNTAG_Bool(REGB0)) {
4915 /* syntax/icode_generation.nit:984 */
4916 REGB0 = TAG_Int(1);
4917 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
4918 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
4919 fra.me.REG[2] = NEW_ICall_icode___icode_base___ICall___init(closctx->REG[5], fra.me.REG[2]);
4920 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(closctx->REG[0])(closctx->REG[0]);
4921 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[2], fra.me.REG[0]);
4922 fra.me.REG[1] = fra.me.REG[0];
4923 }
4924 /* syntax/icode_generation.nit:986 */
4925 CALL_syntax___icode_generation___A2IContext___add_call_array_add(closctx->REG[1])(closctx->REG[1], closctx->REG[2], fra.me.REG[1]);
4926 stack_frame_head = fra.me.prev;
4927 return;
4928 }
4929 val_t syntax___icode_generation___ANullExpr___generate_icode(val_t p0, val_t p1){
4930 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4931 val_t tmp;
4932 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4933 fra.me.file = LOCATE_syntax___icode_generation;
4934 fra.me.line = 993;
4935 fra.me.meth = LOCATE_syntax___icode_generation___ANullExpr___generate_icode;
4936 fra.me.has_broke = 0;
4937 fra.me.REG_size = 2;
4938 fra.me.nitni_local_ref_head = NULL;
4939 fra.me.REG[0] = NIT_NULL;
4940 fra.me.REG[1] = NIT_NULL;
4941 fra.me.REG[0] = p0;
4942 fra.me.REG[1] = p1;
4943 /* syntax/icode_generation.nit:995 */
4944 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[1])(fra.me.REG[1]);
4945 goto label1;
4946 label1: while(0);
4947 stack_frame_head = fra.me.prev;
4948 return fra.me.REG[1];
4949 }
4950 val_t syntax___icode_generation___AArrayExpr___generate_icode(val_t p0, val_t p1){
4951 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4952 val_t REGB0;
4953 val_t tmp;
4954 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4955 fra.me.file = LOCATE_syntax___icode_generation;
4956 fra.me.line = 1000;
4957 fra.me.meth = LOCATE_syntax___icode_generation___AArrayExpr___generate_icode;
4958 fra.me.has_broke = 0;
4959 fra.me.REG_size = 3;
4960 fra.me.nitni_local_ref_head = NULL;
4961 fra.me.REG[0] = NIT_NULL;
4962 fra.me.REG[1] = NIT_NULL;
4963 fra.me.REG[2] = NIT_NULL;
4964 fra.me.REG[0] = p0;
4965 fra.me.REG[1] = p1;
4966 /* syntax/icode_generation.nit:1002 */
4967 fra.me.REG[2] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
4968 fra.me.REG[2] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[2])(fra.me.REG[2]);
4969 /* syntax/icode_generation.nit:1003 */
4970 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4971 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
4972 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___add_new_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], REGB0);
4973 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___AArrayExpr___generate_icode_1));
4974 /* syntax/icode_generation.nit:1008 */
4975 goto label2;
4976 label2: while(0);
4977 stack_frame_head = fra.me.prev;
4978 return fra.me.REG[0];
4979 }
4980 void OC_syntax___icode_generation___AArrayExpr___generate_icode_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
4981 struct {struct stack_frame_t me;} fra;
4982 fun_t CREG[1];
4983 val_t tmp;
4984 /* syntax/icode_generation.nit:1004 */
4985 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4986 fra.me.file = LOCATE_syntax___icode_generation;
4987 fra.me.line = 0;
4988 fra.me.meth = LOCATE_syntax___icode_generation___AArrayExpr___generate_icode;
4989 fra.me.has_broke = 0;
4990 fra.me.REG_size = 1;
4991 fra.me.nitni_local_ref_head = NULL;
4992 fra.me.REG[0] = NIT_NULL;
4993 fra.me.closure_ctx = closctx_param;
4994 fra.me.closure_funs = CREG;
4995 fra.me.REG[0] = p0;
4996 CREG[0] = clos_fun0;
4997 /* syntax/icode_generation.nit:1005 */
4998 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
4999 /* syntax/icode_generation.nit:1006 */
5000 CALL_syntax___icode_generation___A2IContext___add_call_array_add(closctx->REG[1])(closctx->REG[1], closctx->REG[0], fra.me.REG[0]);
5001 stack_frame_head = fra.me.prev;
5002 return;
5003 }
5004 val_t syntax___icode_generation___ACrangeExpr___generate_icode(val_t p0, val_t p1){
5005 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5006 val_t REGB0;
5007 val_t tmp;
5008 static val_t once_value_1; /* Once value */
5009 static val_t once_value_2; /* Once value */
5010 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5011 fra.me.file = LOCATE_syntax___icode_generation;
5012 fra.me.line = 1013;
5013 fra.me.meth = LOCATE_syntax___icode_generation___ACrangeExpr___generate_icode;
5014 fra.me.has_broke = 0;
5015 fra.me.REG_size = 7;
5016 fra.me.nitni_local_ref_head = NULL;
5017 fra.me.REG[0] = NIT_NULL;
5018 fra.me.REG[1] = NIT_NULL;
5019 fra.me.REG[2] = NIT_NULL;
5020 fra.me.REG[3] = NIT_NULL;
5021 fra.me.REG[4] = NIT_NULL;
5022 fra.me.REG[5] = NIT_NULL;
5023 fra.me.REG[6] = NIT_NULL;
5024 fra.me.REG[0] = p0;
5025 fra.me.REG[1] = p1;
5026 /* syntax/icode_generation.nit:1015 */
5027 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5028 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5029 /* syntax/icode_generation.nit:1016 */
5030 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5031 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5032 /* syntax/icode_generation.nit:1017 */
5033 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
5034 fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5035 if (!once_value_1) {
5036 if (!once_value_2) {
5037 fra.me.REG[6] = BOX_NativeString("init");
5038 REGB0 = TAG_Int(4);
5039 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5040 once_value_2 = fra.me.REG[6];
5041 register_static_object(&once_value_2);
5042 } else fra.me.REG[6] = once_value_2;
5043 fra.me.REG[6] = fra.me.REG[6];
5044 fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
5045 once_value_1 = fra.me.REG[6];
5046 register_static_object(&once_value_1);
5047 } else fra.me.REG[6] = once_value_1;
5048 fra.me.REG[6] = fra.me.REG[6];
5049 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
5050 /* syntax/icode_generation.nit:1018 */
5051 fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5052 REGB0 = TAG_Int(2);
5053 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5054 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
5055 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5056 fra.me.REG[4] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4]);
5057 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5058 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
5059 goto label3;
5060 label3: while(0);
5061 stack_frame_head = fra.me.prev;
5062 return fra.me.REG[0];
5063 }
5064 val_t syntax___icode_generation___AOrangeExpr___generate_icode(val_t p0, val_t p1){
5065 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5066 val_t REGB0;
5067 val_t tmp;
5068 static val_t once_value_1; /* Once value */
5069 static val_t once_value_2; /* Once value */
5070 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5071 fra.me.file = LOCATE_syntax___icode_generation;
5072 fra.me.line = 1023;
5073 fra.me.meth = LOCATE_syntax___icode_generation___AOrangeExpr___generate_icode;
5074 fra.me.has_broke = 0;
5075 fra.me.REG_size = 7;
5076 fra.me.nitni_local_ref_head = NULL;
5077 fra.me.REG[0] = NIT_NULL;
5078 fra.me.REG[1] = NIT_NULL;
5079 fra.me.REG[2] = NIT_NULL;
5080 fra.me.REG[3] = NIT_NULL;
5081 fra.me.REG[4] = NIT_NULL;
5082 fra.me.REG[5] = NIT_NULL;
5083 fra.me.REG[6] = NIT_NULL;
5084 fra.me.REG[0] = p0;
5085 fra.me.REG[1] = p1;
5086 /* syntax/icode_generation.nit:1025 */
5087 fra.me.REG[2] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5088 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5089 /* syntax/icode_generation.nit:1026 */
5090 fra.me.REG[3] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
5091 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5092 /* syntax/icode_generation.nit:1027 */
5093 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
5094 fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5095 if (!once_value_1) {
5096 if (!once_value_2) {
5097 fra.me.REG[6] = BOX_NativeString("without_last");
5098 REGB0 = TAG_Int(12);
5099 fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
5100 once_value_2 = fra.me.REG[6];
5101 register_static_object(&once_value_2);
5102 } else fra.me.REG[6] = once_value_2;
5103 fra.me.REG[6] = fra.me.REG[6];
5104 fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
5105 once_value_1 = fra.me.REG[6];
5106 register_static_object(&once_value_1);
5107 } else fra.me.REG[6] = once_value_1;
5108 fra.me.REG[6] = fra.me.REG[6];
5109 fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
5110 /* syntax/icode_generation.nit:1028 */
5111 fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5112 REGB0 = TAG_Int(2);
5113 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5114 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
5115 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5116 fra.me.REG[4] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4]);
5117 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5118 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
5119 goto label3;
5120 label3: while(0);
5121 stack_frame_head = fra.me.prev;
5122 return fra.me.REG[0];
5123 }
5124 val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1){
5125 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
5126 val_t REGB0;
5127 val_t REGB1;
5128 val_t REGB2;
5129 val_t REGB3;
5130 val_t tmp;
5131 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5132 fra.me.file = LOCATE_syntax___icode_generation;
5133 fra.me.line = 1033;
5134 fra.me.meth = LOCATE_syntax___icode_generation___ASuperExpr___generate_icode;
5135 fra.me.has_broke = 0;
5136 fra.me.REG_size = 6;
5137 fra.me.nitni_local_ref_head = NULL;
5138 fra.me.REG[0] = NIT_NULL;
5139 fra.me.REG[1] = NIT_NULL;
5140 fra.me.REG[2] = NIT_NULL;
5141 fra.me.REG[3] = NIT_NULL;
5142 fra.me.REG[4] = NIT_NULL;
5143 fra.me.REG[5] = NIT_NULL;
5144 fra.me.REG[0] = p0;
5145 fra.me.REG[1] = p1;
5146 /* syntax/icode_generation.nit:1035 */
5147 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
5148 fra.me.REG[2] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
5149 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
5150 REGB1 = TAG_Int(1);
5151 /* ../lib/standard/kernel.nit:237 */
5152 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
5153 /* syntax/icode_generation.nit:1036 */
5154 fra.me.REG[2] = CALL_syntax___syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
5155 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5156 if (UNTAG_Bool(REGB0)) {
5157 } else {
5158 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5159 if (UNTAG_Bool(REGB2)) {
5160 REGB2 = TAG_Bool(false);
5161 REGB0 = REGB2;
5162 } else {
5163 REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
5164 REGB0 = REGB2;
5165 }
5166 }
5167 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5168 if (UNTAG_Bool(REGB0)) {
5169 /* syntax/icode_generation.nit:1037 */
5170 fra.me.REG[2] = CALL_syntax___syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
5171 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5172 if (UNTAG_Bool(REGB0)) {
5173 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1037);
5174 }
5175 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
5176 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
5177 if (UNTAG_Bool(REGB0)) {
5178 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1037);
5179 }
5180 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
5181 REGB1 = REGB0;
5182 }
5183 /* syntax/icode_generation.nit:1039 */
5184 REGB0 = TAG_Int(1);
5185 /* ../lib/standard/kernel.nit:235 */
5186 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
5187 /* syntax/icode_generation.nit:1039 */
5188 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5189 /* syntax/icode_generation.nit:1040 */
5190 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
5191 fra.me.REG[3] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
5192 REGB0 = TAG_Int(0);
5193 fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
5194 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
5195 /* syntax/icode_generation.nit:1041 */
5196 fra.me.REG[3] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
5197 fra.me.REG[3] = CALL_parser___parser_nodes___AExprs___n_exprs(fra.me.REG[3])(fra.me.REG[3]);
5198 /* syntax/icode_generation.nit:1042 */
5199 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
5200 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
5201 if (UNTAG_Bool(REGB2)) {
5202 } else {
5203 /* ../lib/standard/kernel.nit:227 */
5204 REGB0 = TAG_Bool((REGB0)==(REGB1));
5205 /* syntax/icode_generation.nit:1042 */
5206 REGB2 = REGB0;
5207 }
5208 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
5209 if (UNTAG_Bool(REGB2)) {
5210 /* syntax/icode_generation.nit:1043 */
5211 REGB2 = TAG_Int(0);
5212 /* ../lib/standard/kernel.nit:352 */
5213 while(1) {
5214 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
5215 if (UNTAG_Bool(REGB0)) {
5216 } else {
5217 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5218 }
5219 /* ../lib/standard/kernel.nit:232 */
5220 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
5221 /* ../lib/standard/kernel.nit:352 */
5222 if (UNTAG_Bool(REGB0)) {
5223 /* syntax/icode_generation.nit:1043 */
5224 REGB0 = REGB2;
5225 /* syntax/icode_generation.nit:1044 */
5226 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
5227 fra.me.REG[4] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[4])(fra.me.REG[4]);
5228 REGB3 = TAG_Int(1);
5229 /* ../lib/standard/kernel.nit:235 */
5230 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
5231 /* syntax/icode_generation.nit:1044 */
5232 fra.me.REG[4] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[4])(fra.me.REG[4], REGB3);
5233 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5234 /* ../lib/standard/kernel.nit:354 */
5235 REGB3 = TAG_Int(1);
5236 /* ../lib/standard/kernel.nit:235 */
5237 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
5238 /* ../lib/standard/kernel.nit:354 */
5239 REGB2 = REGB3;
5240 } else {
5241 /* ../lib/standard/kernel.nit:352 */
5242 goto label1;
5243 }
5244 }
5245 label1: while(0);
5246 } else {
5247 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___ASuperExpr___generate_icode_2));
5248 }
5249 /* syntax/icode_generation.nit:1051 */
5250 fra.me.REG[3] = CALL_syntax___syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
5251 /* syntax/icode_generation.nit:1052 */
5252 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5253 if (UNTAG_Bool(REGB2)) {
5254 } else {
5255 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5256 if (UNTAG_Bool(REGB1)) {
5257 REGB1 = TAG_Bool(false);
5258 REGB2 = REGB1;
5259 } else {
5260 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5261 REGB2 = REGB1;
5262 }
5263 }
5264 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
5265 if (UNTAG_Bool(REGB2)) {
5266 /* syntax/icode_generation.nit:1053 */
5267 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5268 if (UNTAG_Bool(REGB2)) {
5269 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1053);
5270 }
5271 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
5272 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5273 if (UNTAG_Bool(REGB2)) {
5274 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1053);
5275 }
5276 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
5277 /* syntax/icode_generation.nit:1054 */
5278 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5279 if (UNTAG_Bool(REGB2)) {
5280 } else {
5281 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5282 if (UNTAG_Bool(REGB1)) {
5283 REGB1 = TAG_Bool(false);
5284 REGB2 = REGB1;
5285 } else {
5286 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5287 REGB2 = REGB1;
5288 }
5289 }
5290 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
5291 if (UNTAG_Bool(REGB2)) {
5292 /* syntax/icode_generation.nit:1055 */
5293 fra.me.REG[5] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[3], fra.me.REG[2]);
5294 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[4]);
5295 goto label3;
5296 } else {
5297 /* syntax/icode_generation.nit:1057 */
5298 fra.me.REG[5] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[3], fra.me.REG[2]);
5299 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
5300 /* syntax/icode_generation.nit:1058 */
5301 fra.me.REG[4] = NIT_NULL;
5302 goto label3;
5303 }
5304 } else {
5305 /* syntax/icode_generation.nit:1061 */
5306 fra.me.REG[0] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5307 fra.me.REG[3] = fra.me.REG[0];
5308 /* syntax/icode_generation.nit:1062 */
5309 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5310 if (UNTAG_Bool(REGB2)) {
5311 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1062);
5312 }
5313 fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
5314 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
5315 if (UNTAG_Bool(REGB2)) {
5316 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1062);
5317 }
5318 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
5319 /* syntax/icode_generation.nit:1063 */
5320 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
5321 if (UNTAG_Bool(REGB2)) {
5322 } else {
5323 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
5324 if (UNTAG_Bool(REGB1)) {
5325 REGB1 = TAG_Bool(false);
5326 REGB2 = REGB1;
5327 } else {
5328 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
5329 REGB2 = REGB1;
5330 }
5331 }
5332 if (UNTAG_Bool(REGB2)) {
5333 /* syntax/icode_generation.nit:1064 */
5334 fra.me.REG[5] = NEW_ISuper_icode___icode_base___ISuper___init(fra.me.REG[3], fra.me.REG[2]);
5335 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
5336 /* syntax/icode_generation.nit:1065 */
5337 fra.me.REG[4] = NIT_NULL;
5338 goto label3;
5339 } else {
5340 /* syntax/icode_generation.nit:1067 */
5341 fra.me.REG[2] = NEW_ISuper_icode___icode_base___ISuper___init(fra.me.REG[3], fra.me.REG[2]);
5342 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
5343 fra.me.REG[4] = fra.me.REG[0];
5344 goto label3;
5345 }
5346 }
5347 label3: while(0);
5348 stack_frame_head = fra.me.prev;
5349 return fra.me.REG[4];
5350 }
5351 void OC_syntax___icode_generation___ASuperExpr___generate_icode_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
5352 struct {struct stack_frame_t me;} fra;
5353 fun_t CREG[1];
5354 val_t tmp;
5355 /* syntax/icode_generation.nit:1047 */
5356 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5357 fra.me.file = LOCATE_syntax___icode_generation;
5358 fra.me.line = 0;
5359 fra.me.meth = LOCATE_syntax___icode_generation___ASuperExpr___generate_icode;
5360 fra.me.has_broke = 0;
5361 fra.me.REG_size = 1;
5362 fra.me.nitni_local_ref_head = NULL;
5363 fra.me.REG[0] = NIT_NULL;
5364 fra.me.closure_ctx = closctx_param;
5365 fra.me.closure_funs = CREG;
5366 fra.me.REG[0] = p0;
5367 CREG[0] = clos_fun0;
5368 /* syntax/icode_generation.nit:1048 */
5369 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
5370 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
5371 stack_frame_head = fra.me.prev;
5372 return;
5373 }
5374 val_t syntax___icode_generation___AAttrExpr___generate_icode(val_t p0, val_t p1){
5375 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5376 val_t REGB0;
5377 val_t tmp;
5378 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5379 fra.me.file = LOCATE_syntax___icode_generation;
5380 fra.me.line = 1074;
5381 fra.me.meth = LOCATE_syntax___icode_generation___AAttrExpr___generate_icode;
5382 fra.me.has_broke = 0;
5383 fra.me.REG_size = 4;
5384 fra.me.nitni_local_ref_head = NULL;
5385 fra.me.REG[0] = NIT_NULL;
5386 fra.me.REG[1] = NIT_NULL;
5387 fra.me.REG[2] = NIT_NULL;
5388 fra.me.REG[3] = NIT_NULL;
5389 fra.me.REG[0] = p0;
5390 fra.me.REG[1] = p1;
5391 /* syntax/icode_generation.nit:1076 */
5392 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5393 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5394 /* syntax/icode_generation.nit:1077 */
5395 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5396 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5397 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5398 if (UNTAG_Bool(REGB0)) {
5399 CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5400 }
5401 /* syntax/icode_generation.nit:1078 */
5402 fra.me.REG[0] = CALL_syntax___syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5403 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___add_attr_read(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
5404 goto label1;
5405 label1: while(0);
5406 stack_frame_head = fra.me.prev;
5407 return fra.me.REG[2];
5408 }
5409 val_t syntax___icode_generation___AAttrAssignExpr___generate_icode(val_t p0, val_t p1){
5410 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5411 val_t REGB0;
5412 val_t tmp;
5413 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5414 fra.me.file = LOCATE_syntax___icode_generation;
5415 fra.me.line = 1083;
5416 fra.me.meth = LOCATE_syntax___icode_generation___AAttrAssignExpr___generate_icode;
5417 fra.me.has_broke = 0;
5418 fra.me.REG_size = 4;
5419 fra.me.nitni_local_ref_head = NULL;
5420 fra.me.REG[0] = NIT_NULL;
5421 fra.me.REG[1] = NIT_NULL;
5422 fra.me.REG[2] = NIT_NULL;
5423 fra.me.REG[3] = NIT_NULL;
5424 fra.me.REG[0] = p0;
5425 fra.me.REG[1] = p1;
5426 /* syntax/icode_generation.nit:1085 */
5427 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5428 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5429 /* syntax/icode_generation.nit:1086 */
5430 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5431 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5432 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5433 if (UNTAG_Bool(REGB0)) {
5434 CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5435 }
5436 /* syntax/icode_generation.nit:1087 */
5437 fra.me.REG[3] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5438 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5439 /* syntax/icode_generation.nit:1088 */
5440 fra.me.REG[0] = CALL_syntax___syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5441 fra.me.REG[3] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
5442 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5443 /* syntax/icode_generation.nit:1089 */
5444 fra.me.REG[3] = NIT_NULL;
5445 goto label1;
5446 label1: while(0);
5447 stack_frame_head = fra.me.prev;
5448 return fra.me.REG[3];
5449 }
5450 val_t syntax___icode_generation___AAttrReassignExpr___generate_icode(val_t p0, val_t p1){
5451 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5452 val_t REGB0;
5453 val_t tmp;
5454 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5455 fra.me.file = LOCATE_syntax___icode_generation;
5456 fra.me.line = 1093;
5457 fra.me.meth = LOCATE_syntax___icode_generation___AAttrReassignExpr___generate_icode;
5458 fra.me.has_broke = 0;
5459 fra.me.REG_size = 7;
5460 fra.me.nitni_local_ref_head = NULL;
5461 fra.me.REG[0] = NIT_NULL;
5462 fra.me.REG[1] = NIT_NULL;
5463 fra.me.REG[2] = NIT_NULL;
5464 fra.me.REG[3] = NIT_NULL;
5465 fra.me.REG[4] = NIT_NULL;
5466 fra.me.REG[5] = NIT_NULL;
5467 fra.me.REG[6] = NIT_NULL;
5468 fra.me.REG[0] = p0;
5469 fra.me.REG[1] = p1;
5470 /* syntax/icode_generation.nit:1095 */
5471 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5472 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5473 /* syntax/icode_generation.nit:1096 */
5474 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5475 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5476 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5477 if (UNTAG_Bool(REGB0)) {
5478 CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5479 }
5480 /* syntax/icode_generation.nit:1097 */
5481 fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5482 fra.me.REG[3] = NEW_IAttrRead_icode___icode_base___IAttrRead___init(fra.me.REG[3], fra.me.REG[2]);
5483 fra.me.REG[4] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
5484 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5485 /* syntax/icode_generation.nit:1098 */
5486 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5487 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5488 /* syntax/icode_generation.nit:1099 */
5489 fra.me.REG[5] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[0])(fra.me.REG[0]);
5490 REGB0 = TAG_Int(2);
5491 fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
5492 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
5493 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
5494 fra.me.REG[6] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[5], fra.me.REG[6]);
5495 fra.me.REG[5] = CALL_syntax___syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
5496 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[5]);
5497 /* syntax/icode_generation.nit:1100 */
5498 fra.me.REG[0] = CALL_syntax___syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5499 fra.me.REG[5] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[0], fra.me.REG[2], fra.me.REG[5]);
5500 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
5501 /* syntax/icode_generation.nit:1101 */
5502 fra.me.REG[5] = NIT_NULL;
5503 goto label1;
5504 label1: while(0);
5505 stack_frame_head = fra.me.prev;
5506 return fra.me.REG[5];
5507 }
5508 val_t syntax___icode_generation___AIssetAttrExpr___generate_icode(val_t p0, val_t p1){
5509 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5510 val_t REGB0;
5511 val_t tmp;
5512 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5513 fra.me.file = LOCATE_syntax___icode_generation;
5514 fra.me.line = 1106;
5515 fra.me.meth = LOCATE_syntax___icode_generation___AIssetAttrExpr___generate_icode;
5516 fra.me.has_broke = 0;
5517 fra.me.REG_size = 4;
5518 fra.me.nitni_local_ref_head = NULL;
5519 fra.me.REG[0] = NIT_NULL;
5520 fra.me.REG[1] = NIT_NULL;
5521 fra.me.REG[2] = NIT_NULL;
5522 fra.me.REG[3] = NIT_NULL;
5523 fra.me.REG[0] = p0;
5524 fra.me.REG[1] = p1;
5525 /* syntax/icode_generation.nit:1108 */
5526 fra.me.REG[2] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5527 fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5528 /* syntax/icode_generation.nit:1109 */
5529 fra.me.REG[3] = CALL_parser___parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5530 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5531 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5532 if (UNTAG_Bool(REGB0)) {
5533 CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5534 }
5535 /* syntax/icode_generation.nit:1110 */
5536 fra.me.REG[3] = CALL_syntax___syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5537 fra.me.REG[2] = NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(fra.me.REG[3], fra.me.REG[2]);
5538 fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5539 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
5540 goto label1;
5541 label1: while(0);
5542 stack_frame_head = fra.me.prev;
5543 return fra.me.REG[0];
5544 }
5545 void syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(val_t p0, val_t p1, val_t p2, val_t p3){
5546 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5547 val_t REGB0;
5548 val_t REGB1;
5549 val_t REGB2;
5550 val_t REGB3;
5551 val_t REGB4;
5552 val_t REGB5;
5553 val_t REGB6;
5554 val_t REGB7;
5555 val_t REGB8;
5556 val_t REGB9;
5557 val_t REGB10;
5558 val_t tmp;
5559 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5560 fra.me.file = LOCATE_syntax___icode_generation;
5561 fra.me.line = 1115;
5562 fra.me.meth = LOCATE_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in;
5563 fra.me.has_broke = 0;
5564 fra.me.REG_size = 7;
5565 fra.me.nitni_local_ref_head = NULL;
5566 fra.me.REG[0] = NIT_NULL;
5567 fra.me.REG[1] = NIT_NULL;
5568 fra.me.REG[2] = NIT_NULL;
5569 fra.me.REG[3] = NIT_NULL;
5570 fra.me.REG[4] = NIT_NULL;
5571 fra.me.REG[5] = NIT_NULL;
5572 fra.me.REG[6] = NIT_NULL;
5573 fra.me.REG[0] = p0;
5574 fra.me.REG[1] = p1;
5575 fra.me.REG[2] = p2;
5576 fra.me.REG[3] = p3;
5577 /* syntax/icode_generation.nit:1118 */
5578 REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
5579 /* syntax/icode_generation.nit:1119 */
5580 REGB1 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[3])(fra.me.REG[3]);
5581 /* syntax/icode_generation.nit:1120 */
5582 fra.me.REG[0] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
5583 /* ../lib/standard/collection/array.nit:24 */
5584 REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
5585 if (UNTAG_Bool(REGB2)) {
5586 } else {
5587 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
5588 }
5589 REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
5590 /* syntax/icode_generation.nit:1122 */
5591 REGB3 = TAG_Int(0);
5592 /* syntax/icode_generation.nit:1123 */
5593 REGB4 = TAG_Int(0);
5594 /* ../lib/standard/kernel.nit:347 */
5595 REGB5 = REGB0;
5596 /* ../lib/standard/kernel.nit:352 */
5597 while(1) {
5598 REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
5599 if (UNTAG_Bool(REGB6)) {
5600 } else {
5601 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5602 }
5603 /* ../lib/standard/kernel.nit:232 */
5604 REGB6 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
5605 /* ../lib/standard/kernel.nit:352 */
5606 if (UNTAG_Bool(REGB6)) {
5607 /* syntax/icode_generation.nit:1123 */
5608 REGB6 = REGB4;
5609 /* syntax/icode_generation.nit:1125 */
5610 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB6);
5611 /* syntax/icode_generation.nit:1126 */
5612 REGB7 = TAG_Bool(IS_EQUAL_OO(REGB6,REGB1));
5613 if (UNTAG_Bool(REGB7)) {
5614 } else {
5615 /* ../lib/standard/kernel.nit:227 */
5616 REGB6 = TAG_Bool((REGB6)==(REGB1));
5617 /* syntax/icode_generation.nit:1126 */
5618 REGB7 = REGB6;
5619 }
5620 if (UNTAG_Bool(REGB7)) {
5621 /* syntax/icode_generation.nit:1127 */
5622 fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
5623 fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5624 /* ../lib/standard/kernel.nit:237 */
5625 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
5626 /* syntax/icode_generation.nit:1127 */
5627 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___add_new_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], REGB7);
5628 /* syntax/icode_generation.nit:1128 */
5629 REGB7 = TAG_Int(0);
5630 /* ../lib/standard/kernel.nit:237 */
5631 REGB6 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
5632 /* ../lib/standard/kernel.nit:341 */
5633 while(1) {
5634 REGB8 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB7), VTID_standard___kernel___Comparable___OTHER(REGB7))) /*cast OTHER*/;
5635 if (UNTAG_Bool(REGB8)) {
5636 } else {
5637 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5638 }
5639 /* ../lib/standard/kernel.nit:231 */
5640 REGB8 = TAG_Bool(UNTAG_Int(REGB7)<=UNTAG_Int(REGB6));
5641 /* ../lib/standard/kernel.nit:341 */
5642 if (UNTAG_Bool(REGB8)) {
5643 /* ../lib/standard/collection/array.nit:278 */
5644 fra.me.REG[5] = fra.me.REG[0];
5645 REGB8 = REGB3;
5646 /* ../lib/standard/collection/array.nit:280 */
5647 REGB9 = TAG_Int(0);
5648 REGB10 = TAG_Bool(VAL_ISA(REGB9, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
5649 if (UNTAG_Bool(REGB10)) {
5650 } else {
5651 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5652 }
5653 /* ../lib/standard/kernel.nit:233 */
5654 REGB9 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB9));
5655 /* ../lib/standard/collection/array.nit:280 */
5656 if (UNTAG_Bool(REGB9)) {
5657 REGB9 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
5658 if (UNTAG_Bool(REGB9)) {
5659 } else {
5660 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
5661 }
5662 REGB9 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
5663 REGB10 = TAG_Bool(VAL_ISA(REGB9, VTCOLOR_standard___kernel___Comparable___OTHER(REGB8), VTID_standard___kernel___Comparable___OTHER(REGB8))) /*cast OTHER*/;
5664 if (UNTAG_Bool(REGB10)) {
5665 } else {
5666 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5667 }
5668 /* ../lib/standard/kernel.nit:232 */
5669 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB9));
5670 } else {
5671 /* ../lib/standard/collection/array.nit:280 */
5672 REGB10 = TAG_Bool(false);
5673 REGB9 = REGB10;
5674 }
5675 if (UNTAG_Bool(REGB9)) {
5676 } else {
5677 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
5678 }
5679 /* ../lib/standard/collection/array.nit:281 */
5680 fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
5681 REGB9 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5682 if (UNTAG_Bool(REGB9)) {
5683 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
5684 }
5685 /* ../lib/standard/collection/array.nit:718 */
5686 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB8)];
5687 /* ../lib/standard/collection/array.nit:281 */
5688 goto label1;
5689 label1: while(0);
5690 /* syntax/icode_generation.nit:1130 */
5691 fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
5692 CALL_syntax___icode_generation___A2IContext___add_call_array_add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
5693 /* syntax/icode_generation.nit:1131 */
5694 REGB8 = TAG_Int(1);
5695 /* ../lib/standard/kernel.nit:235 */
5696 REGB8 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB8));
5697 /* syntax/icode_generation.nit:1131 */
5698 REGB3 = REGB8;
5699 /* ../lib/standard/kernel.nit:343 */
5700 REGB8 = TAG_Int(1);
5701 /* ../lib/standard/kernel.nit:235 */
5702 REGB8 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB8));
5703 /* ../lib/standard/kernel.nit:343 */
5704 REGB7 = REGB8;
5705 } else {
5706 /* ../lib/standard/kernel.nit:341 */
5707 goto label2;
5708 }
5709 }
5710 label2: while(0);
5711 /* syntax/icode_generation.nit:1133 */
5712 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5713 } else {
5714 /* ../lib/standard/collection/array.nit:278 */
5715 fra.me.REG[4] = fra.me.REG[0];
5716 REGB7 = REGB3;
5717 /* ../lib/standard/collection/array.nit:280 */
5718 REGB6 = TAG_Int(0);
5719 REGB8 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB7), VTID_standard___kernel___Comparable___OTHER(REGB7))) /*cast OTHER*/;
5720 if (UNTAG_Bool(REGB8)) {
5721 } else {
5722 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5723 }
5724 /* ../lib/standard/kernel.nit:233 */
5725 REGB6 = TAG_Bool(UNTAG_Int(REGB7)>=UNTAG_Int(REGB6));
5726 /* ../lib/standard/collection/array.nit:280 */
5727 if (UNTAG_Bool(REGB6)) {
5728 REGB6 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
5729 if (UNTAG_Bool(REGB6)) {
5730 } else {
5731 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
5732 }
5733 REGB6 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
5734 REGB8 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB7), VTID_standard___kernel___Comparable___OTHER(REGB7))) /*cast OTHER*/;
5735 if (UNTAG_Bool(REGB8)) {
5736 } else {
5737 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5738 }
5739 /* ../lib/standard/kernel.nit:232 */
5740 REGB6 = TAG_Bool(UNTAG_Int(REGB7)<UNTAG_Int(REGB6));
5741 } else {
5742 /* ../lib/standard/collection/array.nit:280 */
5743 REGB8 = TAG_Bool(false);
5744 REGB6 = REGB8;
5745 }
5746 if (UNTAG_Bool(REGB6)) {
5747 } else {
5748 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
5749 }
5750 /* ../lib/standard/collection/array.nit:281 */
5751 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
5752 REGB6 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5753 if (UNTAG_Bool(REGB6)) {
5754 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
5755 }
5756 /* ../lib/standard/collection/array.nit:718 */
5757 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB7)];
5758 /* ../lib/standard/collection/array.nit:281 */
5759 goto label3;
5760 label3: while(0);
5761 /* syntax/icode_generation.nit:1135 */
5762 fra.me.REG[5] = fra.me.REG[4];
5763 /* syntax/icode_generation.nit:1136 */
5764 fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
5765 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
5766 /* syntax/icode_generation.nit:1137 */
5767 REGB7 = TAG_Int(1);
5768 /* ../lib/standard/kernel.nit:235 */
5769 REGB7 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB7));
5770 /* syntax/icode_generation.nit:1137 */
5771 REGB3 = REGB7;
5772 }
5773 /* ../lib/standard/kernel.nit:354 */
5774 REGB7 = TAG_Int(1);
5775 /* ../lib/standard/kernel.nit:235 */
5776 REGB7 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB7));
5777 /* ../lib/standard/kernel.nit:354 */
5778 REGB4 = REGB7;
5779 } else {
5780 /* ../lib/standard/kernel.nit:352 */
5781 goto label4;
5782 }
5783 }
5784 label4: while(0);
5785 stack_frame_head = fra.me.prev;
5786 return;
5787 }
5788 val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1){
5789 struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
5790 val_t REGB0;
5791 val_t REGB1;
5792 val_t REGB2;
5793 val_t REGB3;
5794 val_t REGB4;
5795 val_t tmp;
5796 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5797 fra.me.file = LOCATE_syntax___icode_generation;
5798 fra.me.line = 1144;
5799 fra.me.meth = LOCATE_syntax___icode_generation___ASendExpr___generate_icode;
5800 fra.me.has_broke = 0;
5801 fra.me.REG_size = 16;
5802 fra.me.nitni_local_ref_head = NULL;
5803 fra.me.REG[0] = NIT_NULL;
5804 fra.me.REG[1] = NIT_NULL;
5805 fra.me.REG[2] = NIT_NULL;
5806 fra.me.REG[3] = NIT_NULL;
5807 fra.me.REG[4] = NIT_NULL;
5808 fra.me.REG[5] = NIT_NULL;
5809 fra.me.REG[6] = NIT_NULL;
5810 fra.me.REG[7] = NIT_NULL;
5811 fra.me.REG[8] = NIT_NULL;
5812 fra.me.REG[9] = NIT_NULL;
5813 fra.me.REG[10] = NIT_NULL;
5814 fra.me.REG[11] = NIT_NULL;
5815 fra.me.REG[12] = NIT_NULL;
5816 fra.me.REG[13] = NIT_NULL;
5817 fra.me.REG[14] = NIT_NULL;
5818 fra.me.REG[15] = NIT_NULL;
5819 fra.me.REG[0] = p0;
5820 fra.me.REG[1] = p1;
5821 /* syntax/icode_generation.nit:1144 */
5822 fra.me.REG[2] = fra.me.REG[0];
5823 /* syntax/icode_generation.nit:1146 */
5824 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
5825 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5826 /* syntax/icode_generation.nit:1147 */
5827 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
5828 /* syntax/icode_generation.nit:1148 */
5829 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
5830 /* syntax/icode_generation.nit:1149 */
5831 fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[2])(fra.me.REG[2]);
5832 /* syntax/icode_generation.nit:1150 */
5833 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
5834 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
5835 if (UNTAG_Bool(REGB0)) {
5836 } else {
5837 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1150);
5838 }
5839 CALL_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
5840 /* syntax/icode_generation.nit:1151 */
5841 fra.me.REG[5] = NIT_NULL;
5842 /* syntax/icode_generation.nit:1155 */
5843 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
5844 /* syntax/icode_generation.nit:1156 */
5845 fra.me.REG[6] = NIT_NULL;
5846 /* syntax/icode_generation.nit:1157 */
5847 fra.me.REG[7] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[2])(fra.me.REG[2]);
5848 fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[7])(fra.me.REG[7]);
5849 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
5850 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5851 if (UNTAG_Bool(REGB0)) {
5852 /* syntax/icode_generation.nit:1158 */
5853 fra.me.REG[7] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[2])(fra.me.REG[2]);
5854 fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
5855 /* syntax/icode_generation.nit:1159 */
5856 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
5857 if (UNTAG_Bool(REGB0)) {
5858 } else {
5859 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
5860 if (UNTAG_Bool(REGB1)) {
5861 REGB1 = TAG_Bool(false);
5862 REGB0 = REGB1;
5863 } else {
5864 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
5865 REGB0 = REGB1;
5866 }
5867 }
5868 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5869 if (UNTAG_Bool(REGB0)) {
5870 /* syntax/icode_generation.nit:1160 */
5871 fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
5872 fra.me.REG[5] = fra.me.REG[7];
5873 }
5874 /* syntax/icode_generation.nit:1162 */
5875 fra.me.REG[7] = NEW_ISeq_icode___icode_base___ISeq___init();
5876 /* syntax/icode_generation.nit:1163 */
5877 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
5878 /* syntax/icode_generation.nit:1164 */
5879 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
5880 /* syntax/icode_generation.nit:1165 */
5881 fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
5882 fra.me.REG[6] = fra.me.REG[8];
5883 /* syntax/icode_generation.nit:1166 */
5884 REGB0 = TAG_Int(0);
5885 /* syntax/icode_generation.nit:1167 */
5886 fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
5887 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5888 if (UNTAG_Bool(REGB0)) {
5889 } else {
5890 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5891 if (UNTAG_Bool(REGB1)) {
5892 REGB1 = TAG_Bool(false);
5893 REGB0 = REGB1;
5894 } else {
5895 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
5896 REGB0 = REGB1;
5897 }
5898 }
5899 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5900 if (UNTAG_Bool(REGB0)) {
5901 fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
5902 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5903 if (UNTAG_Bool(REGB0)) {
5904 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1167);
5905 }
5906 /* ../lib/standard/collection/array.nit:24 */
5907 REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
5908 if (UNTAG_Bool(REGB0)) {
5909 } else {
5910 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
5911 }
5912 REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
5913 }
5914 /* syntax/icode_generation.nit:1168 */
5915 fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
5916 /* syntax/icode_generation.nit:1169 */
5917 fra.me.REG[9] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[2])(fra.me.REG[2]);
5918 fra.me.REG[9] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[9])(fra.me.REG[9]);
5919 /* ../lib/standard/collection/array.nit:269 */
5920 REGB0 = TAG_Int(0);
5921 /* ../lib/standard/collection/array.nit:270 */
5922 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
5923 if (UNTAG_Bool(REGB1)) {
5924 } else {
5925 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
5926 }
5927 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
5928 /* ../lib/standard/collection/array.nit:271 */
5929 fra.me.REG[10] = ATTR_standard___collection___array___Array____items(fra.me.REG[9]);
5930 /* ../lib/standard/collection/array.nit:272 */
5931 while(1) {
5932 /* ../lib/standard/collection/array.nit:24 */
5933 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
5934 if (UNTAG_Bool(REGB1)) {
5935 } else {
5936 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
5937 }
5938 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
5939 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
5940 if (UNTAG_Bool(REGB2)) {
5941 } else {
5942 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
5943 }
5944 /* ../lib/standard/kernel.nit:232 */
5945 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5946 /* ../lib/standard/collection/array.nit:272 */
5947 if (UNTAG_Bool(REGB1)) {
5948 /* ../lib/standard/collection/array.nit:273 */
5949 REGB1 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
5950 if (UNTAG_Bool(REGB1)) {
5951 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
5952 }
5953 /* ../lib/standard/collection/array.nit:718 */
5954 fra.me.REG[11] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
5955 /* syntax/icode_generation.nit:1170 */
5956 REGB1 = TAG_Bool(false);
5957 /* syntax/icode_generation.nit:1171 */
5958 fra.me.REG[11] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[11])(fra.me.REG[11]);
5959 /* syntax/icode_generation.nit:1172 */
5960 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5961 if (UNTAG_Bool(REGB2)) {
5962 } else {
5963 REGB3 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5964 if (UNTAG_Bool(REGB3)) {
5965 REGB3 = TAG_Bool(false);
5966 REGB2 = REGB3;
5967 } else {
5968 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
5969 REGB2 = REGB3;
5970 }
5971 }
5972 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
5973 if (UNTAG_Bool(REGB2)) {
5974 /* syntax/icode_generation.nit:1173 */
5975 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5976 if (UNTAG_Bool(REGB2)) {
5977 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1173);
5978 }
5979 /* ../lib/standard/collection/array.nit:266 */
5980 fra.me.REG[12] = fra.me.REG[8];
5981 /* ../lib/standard/collection/array.nit:269 */
5982 REGB2 = TAG_Int(0);
5983 /* ../lib/standard/collection/array.nit:270 */
5984 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12])!=NIT_NULL);
5985 if (UNTAG_Bool(REGB3)) {
5986 } else {
5987 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
5988 }
5989 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12]);
5990 /* ../lib/standard/collection/array.nit:271 */
5991 fra.me.REG[13] = ATTR_standard___collection___array___Array____items(fra.me.REG[12]);
5992 /* ../lib/standard/collection/array.nit:272 */
5993 while(1) {
5994 /* ../lib/standard/collection/array.nit:24 */
5995 REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12])!=NIT_NULL);
5996 if (UNTAG_Bool(REGB3)) {
5997 } else {
5998 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
5999 }
6000 REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12]);
6001 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
6002 if (UNTAG_Bool(REGB4)) {
6003 } else {
6004 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6005 }
6006 /* ../lib/standard/kernel.nit:232 */
6007 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
6008 /* ../lib/standard/collection/array.nit:272 */
6009 if (UNTAG_Bool(REGB3)) {
6010 /* ../lib/standard/collection/array.nit:273 */
6011 REGB3 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
6012 if (UNTAG_Bool(REGB3)) {
6013 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
6014 }
6015 /* ../lib/standard/collection/array.nit:718 */
6016 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB2)];
6017 /* syntax/icode_generation.nit:1174 */
6018 fra.me.REG[15] = CALL_parser___parser_nodes___AClosureDef___n_id(fra.me.REG[14])(fra.me.REG[14]);
6019 fra.me.REG[15] = CALL_syntax___typing___AClosureId___to_symbol(fra.me.REG[15])(fra.me.REG[15]);
6020 REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[15],fra.me.REG[11]));
6021 if (UNTAG_Bool(REGB3)) {
6022 } else {
6023 REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[11]);
6024 REGB3 = REGB4;
6025 }
6026 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
6027 if (UNTAG_Bool(REGB3)) {
6028 goto label1;
6029 }
6030 /* syntax/icode_generation.nit:1175 */
6031 REGB3 = TAG_Bool(false);
6032 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
6033 if (UNTAG_Bool(REGB4)) {
6034 } else {
6035 /* ../lib/standard/kernel.nit:195 */
6036 REGB3 = TAG_Bool((REGB1)==(REGB3));
6037 /* syntax/icode_generation.nit:1175 */
6038 REGB4 = REGB3;
6039 }
6040 if (UNTAG_Bool(REGB4)) {
6041 } else {
6042 nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1175);
6043 }
6044 /* syntax/icode_generation.nit:1176 */
6045 REGB4 = TAG_Bool(true);
6046 REGB1 = REGB4;
6047 /* syntax/icode_generation.nit:1177 */
6048 fra.me.REG[15] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[14])(fra.me.REG[14]);
6049 REGB4 = TAG_Bool(fra.me.REG[15]==NIT_NULL);
6050 if (UNTAG_Bool(REGB4)) {
6051 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1177);
6052 }
6053 CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[7]);
6054 /* syntax/icode_generation.nit:1178 */
6055 fra.me.REG[15] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[14])(fra.me.REG[14]);
6056 REGB4 = TAG_Bool(fra.me.REG[15]==NIT_NULL);
6057 if (UNTAG_Bool(REGB4)) {
6058 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1178);
6059 }
6060 CALL_syntax___icode_generation___EscapableBlock___break_value__eq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[5]);
6061 /* syntax/icode_generation.nit:1179 */
6062 fra.me.REG[14] = CALL_syntax___icode_generation___AClosureDef___generate_iclosuredef(fra.me.REG[14])(fra.me.REG[14], fra.me.REG[1]);
6063 /* syntax/icode_generation.nit:1180 */
6064 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6065 if (UNTAG_Bool(REGB4)) {
6066 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1180);
6067 }
6068 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[14]);
6069 label1: while(0);
6070 /* ../lib/standard/collection/array.nit:274 */
6071 REGB4 = TAG_Int(1);
6072 /* ../lib/standard/kernel.nit:235 */
6073 REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
6074 /* ../lib/standard/collection/array.nit:274 */
6075 REGB2 = REGB4;
6076 } else {
6077 /* ../lib/standard/collection/array.nit:272 */
6078 goto label2;
6079 }
6080 }
6081 label2: while(0);
6082 }
6083 /* syntax/icode_generation.nit:1183 */
6084 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
6085 if (UNTAG_Bool(REGB1)) {
6086 /* syntax/icode_generation.nit:1184 */
6087 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6088 if (UNTAG_Bool(REGB1)) {
6089 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1184);
6090 }
6091 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
6092 }
6093 /* ../lib/standard/collection/array.nit:274 */
6094 REGB1 = TAG_Int(1);
6095 /* ../lib/standard/kernel.nit:235 */
6096 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
6097 /* ../lib/standard/collection/array.nit:274 */
6098 REGB0 = REGB1;
6099 } else {
6100 /* ../lib/standard/collection/array.nit:272 */
6101 goto label3;
6102 }
6103 }
6104 label3: while(0);
6105 }
6106 /* syntax/icode_generation.nit:1189 */
6107 fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___add_call(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4], fra.me.REG[6]);
6108 /* syntax/icode_generation.nit:1192 */
6109 fra.me.REG[2] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[2])(fra.me.REG[2]);
6110 fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
6111 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
6112 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6113 if (UNTAG_Bool(REGB0)) {
6114 /* syntax/icode_generation.nit:1193 */
6115 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6116 if (UNTAG_Bool(REGB0)) {
6117 } else {
6118 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6119 if (UNTAG_Bool(REGB1)) {
6120 REGB1 = TAG_Bool(false);
6121 REGB0 = REGB1;
6122 } else {
6123 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
6124 REGB0 = REGB1;
6125 }
6126 }
6127 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6128 if (UNTAG_Bool(REGB0)) {
6129 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6130 if (UNTAG_Bool(REGB0)) {
6131 } else {
6132 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6133 if (UNTAG_Bool(REGB1)) {
6134 REGB1 = TAG_Bool(false);
6135 REGB0 = REGB1;
6136 } else {
6137 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
6138 REGB0 = REGB1;
6139 }
6140 }
6141 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6142 } else {
6143 REGB1 = TAG_Bool(false);
6144 REGB0 = REGB1;
6145 }
6146 if (UNTAG_Bool(REGB0)) {
6147 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[6]);
6148 }
6149 /* syntax/icode_generation.nit:1194 */
6150 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
6151 } else {
6152 /* syntax/icode_generation.nit:1196 */
6153 fra.me.REG[5] = fra.me.REG[6];
6154 }
6155 /* syntax/icode_generation.nit:1199 */
6156 fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
6157 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[6])(fra.me.REG[6]);
6158 if (UNTAG_Bool(REGB0)) {
6159 /* syntax/icode_generation.nit:1200 */
6160 CALL_syntax___icode_generation___A2IContext___invoke_super_init_calls_after(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
6161 }
6162 /* syntax/icode_generation.nit:1202 */
6163 goto label4;
6164 label4: while(0);
6165 stack_frame_head = fra.me.prev;
6166 return fra.me.REG[5];
6167 }
6168 val_t syntax___icode_generation___ASendReassignExpr___generate_icode(val_t p0, val_t p1){
6169 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
6170 val_t REGB0;
6171 val_t tmp;
6172 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6173 fra.me.file = LOCATE_syntax___icode_generation;
6174 fra.me.line = 1207;
6175 fra.me.meth = LOCATE_syntax___icode_generation___ASendReassignExpr___generate_icode;
6176 fra.me.has_broke = 0;
6177 fra.me.REG_size = 8;
6178 fra.me.nitni_local_ref_head = NULL;
6179 fra.me.REG[0] = NIT_NULL;
6180 fra.me.REG[1] = NIT_NULL;
6181 fra.me.REG[2] = NIT_NULL;
6182 fra.me.REG[3] = NIT_NULL;
6183 fra.me.REG[4] = NIT_NULL;
6184 fra.me.REG[5] = NIT_NULL;
6185 fra.me.REG[6] = NIT_NULL;
6186 fra.me.REG[7] = NIT_NULL;
6187 fra.me.REG[0] = p0;
6188 fra.me.REG[1] = p1;
6189 /* syntax/icode_generation.nit:1207 */
6190 fra.me.REG[2] = fra.me.REG[0];
6191 /* syntax/icode_generation.nit:1209 */
6192 fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
6193 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
6194 /* syntax/icode_generation.nit:1210 */
6195 fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
6196 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
6197 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[4])(fra.me.REG[4]);
6198 if (UNTAG_Bool(REGB0)) {
6199 CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
6200 }
6201 /* syntax/icode_generation.nit:1211 */
6202 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
6203 /* syntax/icode_generation.nit:1212 */
6204 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
6205 /* syntax/icode_generation.nit:1213 */
6206 fra.me.REG[3] = CALL_syntax___syntax_base___ASendReassignExpr___read_prop(fra.me.REG[2])(fra.me.REG[2]);
6207 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
6208 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
6209 if (UNTAG_Bool(REGB0)) {
6210 } else {
6211 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1213);
6212 }
6213 CALL_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
6214 /* syntax/icode_generation.nit:1215 */
6215 fra.me.REG[3] = CALL_syntax___syntax_base___ASendReassignExpr___read_prop(fra.me.REG[2])(fra.me.REG[2]);
6216 fra.me.REG[3] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[3], fra.me.REG[4]);
6217 fra.me.REG[5] = CALL_syntax___syntax_base___ASendReassignExpr___read_prop(fra.me.REG[2])(fra.me.REG[2]);
6218 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[5])(fra.me.REG[5]);
6219 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6220 if (UNTAG_Bool(REGB0)) {
6221 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1215);
6222 }
6223 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
6224 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
6225 if (UNTAG_Bool(REGB0)) {
6226 } else {
6227 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1215);
6228 }
6229 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
6230 /* syntax/icode_generation.nit:1216 */
6231 fra.me.REG[3] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
6232 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
6233 /* syntax/icode_generation.nit:1217 */
6234 fra.me.REG[6] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[2])(fra.me.REG[2]);
6235 REGB0 = TAG_Int(2);
6236 fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
6237 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
6238 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
6239 fra.me.REG[7] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[6], fra.me.REG[7]);
6240 fra.me.REG[6] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[2])(fra.me.REG[2]);
6241 fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[6])(fra.me.REG[6]);
6242 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6243 if (UNTAG_Bool(REGB0)) {
6244 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1217);
6245 }
6246 fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
6247 REGB0 = TAG_Bool((fra.me.REG[6]!=NIT_NULL) && VAL_ISA(fra.me.REG[6], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
6248 if (UNTAG_Bool(REGB0)) {
6249 } else {
6250 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1217);
6251 }
6252 fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[6]);
6253 /* syntax/icode_generation.nit:1218 */
6254 fra.me.REG[4] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[4])(fra.me.REG[4]);
6255 /* syntax/icode_generation.nit:1219 */
6256 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
6257 /* syntax/icode_generation.nit:1220 */
6258 fra.me.REG[2] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[2])(fra.me.REG[2]);
6259 fra.me.REG[4] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[2], fra.me.REG[4]);
6260 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
6261 /* syntax/icode_generation.nit:1221 */
6262 fra.me.REG[4] = NIT_NULL;
6263 goto label1;
6264 label1: while(0);
6265 stack_frame_head = fra.me.prev;
6266 return fra.me.REG[4];
6267 }
6268 val_t syntax___icode_generation___ANewExpr___generate_icode(val_t p0, val_t p1){
6269 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
6270 val_t REGB0;
6271 val_t tmp;
6272 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6273 fra.me.file = LOCATE_syntax___icode_generation;
6274 fra.me.line = 1226;
6275 fra.me.meth = LOCATE_syntax___icode_generation___ANewExpr___generate_icode;
6276 fra.me.has_broke = 0;
6277 fra.me.REG_size = 5;
6278 fra.me.nitni_local_ref_head = NULL;
6279 fra.me.REG[0] = NIT_NULL;
6280 fra.me.REG[1] = NIT_NULL;
6281 fra.me.REG[2] = NIT_NULL;
6282 fra.me.REG[3] = NIT_NULL;
6283 fra.me.REG[4] = NIT_NULL;
6284 fra.me.REG[0] = p0;
6285 fra.me.REG[1] = p1;
6286 /* syntax/icode_generation.nit:1226 */
6287 fra.me.REG[2] = fra.me.REG[0];
6288 /* syntax/icode_generation.nit:1228 */
6289 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
6290 /* syntax/icode_generation.nit:1229 */
6291 fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[2])(fra.me.REG[2]);
6292 fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
6293 REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
6294 if (UNTAG_Bool(REGB0)) {
6295 } else {
6296 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1229);
6297 }
6298 CALL_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
6299 /* syntax/icode_generation.nit:1230 */
6300 fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
6301 fra.me.REG[0] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[2])(fra.me.REG[2]);
6302 fra.me.REG[3] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3]);
6303 fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
6304 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
6305 goto label1;
6306 label1: while(0);
6307 stack_frame_head = fra.me.prev;
6308 return fra.me.REG[2];
6309 }
6310 val_t syntax___icode_generation___AProxyExpr___generate_icode(val_t p0, val_t p1){
6311 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6312 val_t tmp;
6313 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6314 fra.me.file = LOCATE_syntax___icode_generation;
6315 fra.me.line = 1235;
6316 fra.me.meth = LOCATE_syntax___icode_generation___AProxyExpr___generate_icode;
6317 fra.me.has_broke = 0;
6318 fra.me.REG_size = 2;
6319 fra.me.nitni_local_ref_head = NULL;
6320 fra.me.REG[0] = NIT_NULL;
6321 fra.me.REG[1] = NIT_NULL;
6322 fra.me.REG[0] = p0;
6323 fra.me.REG[1] = p1;
6324 /* syntax/icode_generation.nit:1237 */
6325 fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6326 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
6327 goto label1;
6328 label1: while(0);
6329 stack_frame_head = fra.me.prev;
6330 return fra.me.REG[0];
6331 }
6332 val_t syntax___icode_generation___AOnceExpr___generate_icode(val_t p0, val_t p1){
6333 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
6334 val_t tmp;
6335 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6336 fra.me.file = LOCATE_syntax___icode_generation;
6337 fra.me.line = 1242;
6338 fra.me.meth = LOCATE_syntax___icode_generation___AOnceExpr___generate_icode;
6339 fra.me.has_broke = 0;
6340 fra.me.REG_size = 5;
6341 fra.me.nitni_local_ref_head = NULL;
6342 fra.me.REG[0] = NIT_NULL;
6343 fra.me.REG[1] = NIT_NULL;
6344 fra.me.REG[2] = NIT_NULL;
6345 fra.me.REG[3] = NIT_NULL;
6346 fra.me.REG[4] = NIT_NULL;
6347 fra.me.REG[0] = p0;
6348 fra.me.REG[1] = p1;
6349 /* syntax/icode_generation.nit:1244 */
6350 fra.me.REG[2] = NEW_IOnce_icode___icode_base___IOnce___init();
6351 /* syntax/icode_generation.nit:1245 */
6352 fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
6353 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
6354 /* syntax/icode_generation.nit:1246 */
6355 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
6356 /* syntax/icode_generation.nit:1247 */
6357 fra.me.REG[2] = CALL_icode___icode_base___IOnce___body(fra.me.REG[2])(fra.me.REG[2]);
6358 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6359 /* syntax/icode_generation.nit:1249 */
6360 fra.me.REG[0] = CALL_parser___parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
6361 fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
6362 /* syntax/icode_generation.nit:1250 */
6363 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
6364 /* syntax/icode_generation.nit:1252 */
6365 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
6366 /* syntax/icode_generation.nit:1253 */
6367 goto label1;
6368 label1: while(0);
6369 stack_frame_head = fra.me.prev;
6370 return fra.me.REG[3];
6371 }
6372 val_t syntax___icode_generation___AClosureDef___generate_iclosuredef(val_t p0, val_t p1){
6373 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
6374 val_t REGB0;
6375 val_t REGB1;
6376 val_t REGB2;
6377 val_t REGB3;
6378 val_t REGB4;
6379 val_t REGB5;
6380 val_t tmp;
6381 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6382 fra.me.file = LOCATE_syntax___icode_generation;
6383 fra.me.line = 1261;
6384 fra.me.meth = LOCATE_syntax___icode_generation___AClosureDef___generate_iclosuredef;
6385 fra.me.has_broke = 0;
6386 fra.me.REG_size = 7;
6387 fra.me.nitni_local_ref_head = NULL;
6388 fra.me.REG[0] = NIT_NULL;
6389 fra.me.REG[1] = NIT_NULL;
6390 fra.me.REG[2] = NIT_NULL;
6391 fra.me.REG[3] = NIT_NULL;
6392 fra.me.REG[4] = NIT_NULL;
6393 fra.me.REG[5] = NIT_NULL;
6394 fra.me.REG[6] = NIT_NULL;
6395 fra.me.REG[0] = p0;
6396 fra.me.REG[1] = p1;
6397 /* syntax/icode_generation.nit:1261 */
6398 fra.me.REG[2] = fra.me.REG[0];
6399 /* syntax/icode_generation.nit:1264 */
6400 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
6401 /* syntax/icode_generation.nit:1265 */
6402 fra.me.REG[4] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[2])(fra.me.REG[2]);
6403 fra.me.REG[4] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[4])(fra.me.REG[4]);
6404 /* syntax/icode_generation.nit:1266 */
6405 REGB0 = TAG_Int(0);
6406 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
6407 /* ../lib/standard/kernel.nit:352 */
6408 while(1) {
6409 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6410 if (UNTAG_Bool(REGB2)) {
6411 } else {
6412 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6413 }
6414 /* ../lib/standard/kernel.nit:232 */
6415 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6416 /* ../lib/standard/kernel.nit:352 */
6417 if (UNTAG_Bool(REGB2)) {
6418 /* syntax/icode_generation.nit:1266 */
6419 REGB2 = REGB0;
6420 /* syntax/icode_generation.nit:1267 */
6421 fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[4])(fra.me.REG[4], REGB2);
6422 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
6423 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
6424 /* ../lib/standard/kernel.nit:354 */
6425 REGB2 = TAG_Int(1);
6426 /* ../lib/standard/kernel.nit:235 */
6427 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
6428 /* ../lib/standard/kernel.nit:354 */
6429 REGB0 = REGB2;
6430 } else {
6431 /* ../lib/standard/kernel.nit:352 */
6432 goto label1;
6433 }
6434 }
6435 label1: while(0);
6436 /* syntax/icode_generation.nit:1269 */
6437 fra.me.REG[5] = NIT_NULL;
6438 /* syntax/icode_generation.nit:1270 */
6439 fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
6440 /* syntax/icode_generation.nit:1271 */
6441 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6442 if (UNTAG_Bool(REGB0)) {
6443 } else {
6444 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6445 if (UNTAG_Bool(REGB1)) {
6446 REGB1 = TAG_Bool(false);
6447 REGB0 = REGB1;
6448 } else {
6449 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
6450 REGB0 = REGB1;
6451 }
6452 }
6453 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
6454 if (UNTAG_Bool(REGB0)) {
6455 /* syntax/icode_generation.nit:1272 */
6456 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
6457 fra.me.REG[5] = fra.me.REG[4];
6458 }
6459 /* syntax/icode_generation.nit:1275 */
6460 fra.me.REG[5] = NEW_IClosureDef_icode___icode_base___IClosureDef___init(fra.me.REG[3], fra.me.REG[5]);
6461 /* syntax/icode_generation.nit:1276 */
6462 fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[2])(fra.me.REG[2]);
6463 CALL_icode___icode_base___IRoutine___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
6464 /* syntax/icode_generation.nit:1279 */
6465 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
6466 /* syntax/icode_generation.nit:1280 */
6467 fra.me.REG[4] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[5])(fra.me.REG[5]);
6468 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
6469 /* syntax/icode_generation.nit:1281 */
6470 fra.me.REG[4] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[2])(fra.me.REG[2]);
6471 fra.me.REG[6] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[5])(fra.me.REG[5]);
6472 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6473 if (UNTAG_Bool(REGB0)) {
6474 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1281);
6475 }
6476 CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
6477 /* syntax/icode_generation.nit:1282 */
6478 fra.me.REG[6] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[2])(fra.me.REG[2]);
6479 fra.me.REG[4] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[5])(fra.me.REG[5]);
6480 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6481 if (UNTAG_Bool(REGB0)) {
6482 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1282);
6483 }
6484 CALL_syntax___icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
6485 /* syntax/icode_generation.nit:1285 */
6486 REGB0 = TAG_Int(0);
6487 fra.me.REG[4] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[2])(fra.me.REG[2]);
6488 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6489 if (UNTAG_Bool(REGB1)) {
6490 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1285);
6491 }
6492 /* ../lib/standard/collection/array.nit:24 */
6493 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6494 if (UNTAG_Bool(REGB1)) {
6495 } else {
6496 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
6497 }
6498 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6499 /* ../lib/standard/kernel.nit:352 */
6500 while(1) {
6501 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
6502 if (UNTAG_Bool(REGB2)) {
6503 } else {
6504 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6505 }
6506 /* ../lib/standard/kernel.nit:232 */
6507 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
6508 /* ../lib/standard/kernel.nit:352 */
6509 if (UNTAG_Bool(REGB2)) {
6510 /* syntax/icode_generation.nit:1285 */
6511 REGB2 = REGB0;
6512 /* syntax/icode_generation.nit:1286 */
6513 fra.me.REG[4] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[2])(fra.me.REG[2]);
6514 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6515 if (UNTAG_Bool(REGB3)) {
6516 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1286);
6517 }
6518 /* ../lib/standard/collection/array.nit:278 */
6519 REGB3 = REGB2;
6520 /* ../lib/standard/collection/array.nit:280 */
6521 REGB4 = TAG_Int(0);
6522 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
6523 if (UNTAG_Bool(REGB5)) {
6524 } else {
6525 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6526 }
6527 /* ../lib/standard/kernel.nit:233 */
6528 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
6529 /* ../lib/standard/collection/array.nit:280 */
6530 if (UNTAG_Bool(REGB4)) {
6531 REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
6532 if (UNTAG_Bool(REGB4)) {
6533 } else {
6534 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
6535 }
6536 REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
6537 REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
6538 if (UNTAG_Bool(REGB5)) {
6539 } else {
6540 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
6541 }
6542 /* ../lib/standard/kernel.nit:232 */
6543 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
6544 } else {
6545 /* ../lib/standard/collection/array.nit:280 */
6546 REGB5 = TAG_Bool(false);
6547 REGB4 = REGB5;
6548 }
6549 if (UNTAG_Bool(REGB4)) {
6550 } else {
6551 nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
6552 }
6553 /* ../lib/standard/collection/array.nit:281 */
6554 fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
6555 REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
6556 if (UNTAG_Bool(REGB4)) {
6557 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
6558 }
6559 /* ../lib/standard/collection/array.nit:718 */
6560 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
6561 /* ../lib/standard/collection/array.nit:281 */
6562 goto label2;
6563 label2: while(0);
6564 /* syntax/icode_generation.nit:1286 */
6565 fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
6566 /* syntax/icode_generation.nit:1287 */
6567 fra.me.REG[6] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
6568 fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB2);
6569 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
6570 /* ../lib/standard/kernel.nit:354 */
6571 REGB2 = TAG_Int(1);
6572 /* ../lib/standard/kernel.nit:235 */
6573 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
6574 /* ../lib/standard/kernel.nit:354 */
6575 REGB0 = REGB2;
6576 } else {
6577 /* ../lib/standard/kernel.nit:352 */
6578 goto label3;
6579 }
6580 }
6581 label3: while(0);
6582 /* syntax/icode_generation.nit:1290 */
6583 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
6584 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6585 /* syntax/icode_generation.nit:1293 */
6586 fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[2])(fra.me.REG[2]);
6587 REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[6])(fra.me.REG[6]);
6588 if (UNTAG_Bool(REGB0)) {
6589 fra.me.REG[6] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[2])(fra.me.REG[2]);
6590 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6591 if (UNTAG_Bool(REGB0)) {
6592 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1293);
6593 }
6594 fra.me.REG[6] = CALL_syntax___icode_generation___EscapableBlock___break_value(fra.me.REG[6])(fra.me.REG[6]);
6595 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6596 if (UNTAG_Bool(REGB0)) {
6597 } else {
6598 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6599 if (UNTAG_Bool(REGB1)) {
6600 REGB1 = TAG_Bool(false);
6601 REGB0 = REGB1;
6602 } else {
6603 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
6604 REGB0 = REGB1;
6605 }
6606 }
6607 } else {
6608 REGB1 = TAG_Bool(false);
6609 REGB0 = REGB1;
6610 }
6611 if (UNTAG_Bool(REGB0)) {
6612 /* syntax/icode_generation.nit:1294 */
6613 fra.me.REG[6] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[2])(fra.me.REG[2]);
6614 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6615 if (UNTAG_Bool(REGB0)) {
6616 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1294);
6617 }
6618 fra.me.REG[6] = CALL_syntax___icode_generation___EscapableBlock___break_seq(fra.me.REG[6])(fra.me.REG[6]);
6619 REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
6620 if (UNTAG_Bool(REGB0)) {
6621 } else {
6622 nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1294);
6623 }
6624 CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6625 }
6626 /* syntax/icode_generation.nit:1297 */
6627 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
6628 /* syntax/icode_generation.nit:1298 */
6629 ATTR_syntax___icode_generation___AClosureDef____iclosure_def(fra.me.REG[2]) = fra.me.REG[5];
6630 /* syntax/icode_generation.nit:1299 */
6631 goto label4;
6632 label4: while(0);
6633 stack_frame_head = fra.me.prev;
6634 return fra.me.REG[5];
6635 }
6636 val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, val_t p1){
6637 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
6638 val_t REGB0;
6639 val_t REGB1;
6640 val_t REGB2;
6641 val_t tmp;
6642 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6643 fra.me.file = LOCATE_syntax___icode_generation;
6644 fra.me.line = 1304;
6645 fra.me.meth = LOCATE_syntax___icode_generation___AClosureCallExpr___generate_icode;
6646 fra.me.has_broke = 0;
6647 fra.me.REG_size = 9;
6648 fra.me.nitni_local_ref_head = NULL;
6649 fra.me.REG[0] = NIT_NULL;
6650 fra.me.REG[1] = NIT_NULL;
6651 fra.me.REG[2] = NIT_NULL;
6652 fra.me.REG[3] = NIT_NULL;
6653 fra.me.REG[4] = NIT_NULL;
6654 fra.me.REG[5] = NIT_NULL;
6655 fra.me.REG[6] = NIT_NULL;
6656 fra.me.REG[7] = NIT_NULL;
6657 fra.me.REG[8] = NIT_NULL;
6658 fra.me.REG[0] = p0;
6659 fra.me.REG[1] = p1;
6660 /* syntax/icode_generation.nit:1307 */
6661 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
6662 /* syntax/icode_generation.nit:1308 */
6663 fra.me.REG[3] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
6664 fra.me.REG[3] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[3])(fra.me.REG[3]);
6665 fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
6666 CALL_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
6667 /* syntax/icode_generation.nit:1311 */
6668 fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___closurevariables(fra.me.REG[1])(fra.me.REG[1]);
6669 fra.me.REG[4] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
6670 fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6671 /* syntax/icode_generation.nit:1312 */
6672 fra.me.REG[3] = NEW_IClosCall_icode___icode_base___IClosCall___init(fra.me.REG[4], fra.me.REG[2]);
6673 /* syntax/icode_generation.nit:1313 */
6674 fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
6675 /* syntax/icode_generation.nit:1316 */
6676 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
6677 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
6678 REGB1 = TAG_Int(1);
6679 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
6680 if (UNTAG_Bool(REGB2)) {
6681 } else {
6682 /* ../lib/standard/kernel.nit:227 */
6683 REGB1 = TAG_Bool((REGB0)==(REGB1));
6684 /* syntax/icode_generation.nit:1316 */
6685 REGB2 = REGB1;
6686 }
6687 if (UNTAG_Bool(REGB2)) {
6688 /* syntax/icode_generation.nit:1317 */
6689 fra.me.REG[6] = NEW_ISeq_icode___icode_base___ISeq___init();
6690 /* syntax/icode_generation.nit:1318 */
6691 CALL_icode___icode_base___IClosCall___break_seq__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
6692 /* syntax/icode_generation.nit:1319 */
6693 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6694 /* syntax/icode_generation.nit:1320 */
6695 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
6696 fra.me.REG[6] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
6697 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6698 if (UNTAG_Bool(REGB2)) {
6699 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1320);
6700 }
6701 fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDef___n_expr(fra.me.REG[6])(fra.me.REG[6]);
6702 CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6703 /* syntax/icode_generation.nit:1321 */
6704 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
6705 }
6706 /* syntax/icode_generation.nit:1325 */
6707 fra.me.REG[6] = NIT_NULL;
6708 /* syntax/icode_generation.nit:1326 */
6709 fra.me.REG[7] = CALL_icode___icode_base___IClosureDecl___default(fra.me.REG[4])(fra.me.REG[4]);
6710 /* syntax/icode_generation.nit:1327 */
6711 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6712 if (UNTAG_Bool(REGB2)) {
6713 } else {
6714 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6715 if (UNTAG_Bool(REGB1)) {
6716 REGB1 = TAG_Bool(false);
6717 REGB2 = REGB1;
6718 } else {
6719 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
6720 REGB2 = REGB1;
6721 }
6722 }
6723 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6724 if (UNTAG_Bool(REGB2)) {
6725 /* syntax/icode_generation.nit:1328 */
6726 fra.me.REG[4] = NEW_IHasClos_icode___icode_base___IHasClos___init(fra.me.REG[4]);
6727 fra.me.REG[8] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
6728 fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[8])(fra.me.REG[8]);
6729 fra.me.REG[8] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[8]);
6730 fra.me.REG[8] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[8]);
6731 fra.me.REG[6] = fra.me.REG[8];
6732 /* syntax/icode_generation.nit:1329 */
6733 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6734 /* syntax/icode_generation.nit:1330 */
6735 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6736 if (UNTAG_Bool(REGB2)) {
6737 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1330);
6738 }
6739 fra.me.REG[8] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[6])(fra.me.REG[6]);
6740 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
6741 }
6742 /* syntax/icode_generation.nit:1334 */
6743 fra.me.REG[8] = NIT_NULL;
6744 /* syntax/icode_generation.nit:1335 */
6745 fra.me.REG[0] = CALL_syntax___syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
6746 fra.me.REG[0] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[0])(fra.me.REG[0]);
6747 fra.me.REG[0] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[0])(fra.me.REG[0]);
6748 fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
6749 /* syntax/icode_generation.nit:1336 */
6750 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
6751 if (UNTAG_Bool(REGB2)) {
6752 } else {
6753 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
6754 if (UNTAG_Bool(REGB1)) {
6755 REGB1 = TAG_Bool(false);
6756 REGB2 = REGB1;
6757 } else {
6758 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
6759 REGB2 = REGB1;
6760 }
6761 }
6762 if (UNTAG_Bool(REGB2)) {
6763 /* syntax/icode_generation.nit:1337 */
6764 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
6765 } else {
6766 /* syntax/icode_generation.nit:1339 */
6767 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
6768 fra.me.REG[8] = fra.me.REG[3];
6769 }
6770 /* syntax/icode_generation.nit:1343 */
6771 fra.me.REG[3] = NIT_NULL;
6772 /* syntax/icode_generation.nit:1344 */
6773 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6774 if (UNTAG_Bool(REGB2)) {
6775 } else {
6776 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6777 if (UNTAG_Bool(REGB1)) {
6778 REGB1 = TAG_Bool(false);
6779 REGB2 = REGB1;
6780 } else {
6781 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
6782 REGB2 = REGB1;
6783 }
6784 }
6785 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6786 if (UNTAG_Bool(REGB2)) {
6787 /* syntax/icode_generation.nit:1345 */
6788 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6789 if (UNTAG_Bool(REGB2)) {
6790 } else {
6791 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6792 if (UNTAG_Bool(REGB1)) {
6793 REGB1 = TAG_Bool(false);
6794 REGB2 = REGB1;
6795 } else {
6796 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
6797 REGB2 = REGB1;
6798 }
6799 }
6800 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6801 if (UNTAG_Bool(REGB2)) {
6802 } else {
6803 nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1345);
6804 }
6805 /* syntax/icode_generation.nit:1346 */
6806 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6807 if (UNTAG_Bool(REGB2)) {
6808 } else {
6809 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6810 if (UNTAG_Bool(REGB1)) {
6811 REGB1 = TAG_Bool(false);
6812 REGB2 = REGB1;
6813 } else {
6814 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
6815 REGB2 = REGB1;
6816 }
6817 }
6818 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6819 if (UNTAG_Bool(REGB2)) {
6820 /* syntax/icode_generation.nit:1347 */
6821 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
6822 if (UNTAG_Bool(REGB2)) {
6823 } else {
6824 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
6825 if (UNTAG_Bool(REGB1)) {
6826 REGB1 = TAG_Bool(false);
6827 REGB2 = REGB1;
6828 } else {
6829 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
6830 REGB2 = REGB1;
6831 }
6832 }
6833 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6834 if (UNTAG_Bool(REGB2)) {
6835 } else {
6836 nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1347);
6837 }
6838 /* syntax/icode_generation.nit:1348 */
6839 fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
6840 fra.me.REG[3] = fra.me.REG[0];
6841 /* syntax/icode_generation.nit:1349 */
6842 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[8]);
6843 }
6844 /* syntax/icode_generation.nit:1351 */
6845 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6846 if (UNTAG_Bool(REGB2)) {
6847 nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1351);
6848 }
6849 fra.me.REG[6] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[6])(fra.me.REG[6]);
6850 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6851 /* syntax/icode_generation.nit:1352 */
6852 fra.me.REG[2] = CALL_icode___icode_tools___ICodeBuilder___inline_routine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[2], NIT_NULL);
6853 /* syntax/icode_generation.nit:1353 */
6854 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6855 if (UNTAG_Bool(REGB2)) {
6856 } else {
6857 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6858 if (UNTAG_Bool(REGB1)) {
6859 REGB1 = TAG_Bool(false);
6860 REGB2 = REGB1;
6861 } else {
6862 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
6863 REGB2 = REGB1;
6864 }
6865 }
6866 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6867 if (UNTAG_Bool(REGB2)) {
6868 /* syntax/icode_generation.nit:1354 */
6869 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6870 if (UNTAG_Bool(REGB2)) {
6871 } else {
6872 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6873 if (UNTAG_Bool(REGB1)) {
6874 REGB1 = TAG_Bool(false);
6875 REGB2 = REGB1;
6876 } else {
6877 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6878 REGB2 = REGB1;
6879 }
6880 }
6881 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6882 if (UNTAG_Bool(REGB2)) {
6883 } else {
6884 nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1354);
6885 }
6886 /* syntax/icode_generation.nit:1355 */
6887 CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
6888 }
6889 /* syntax/icode_generation.nit:1357 */
6890 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
6891 } else {
6892 /* syntax/icode_generation.nit:1359 */
6893 fra.me.REG[3] = fra.me.REG[8];
6894 }
6895 /* syntax/icode_generation.nit:1361 */
6896 goto label1;
6897 label1: while(0);
6898 stack_frame_head = fra.me.prev;
6899 return fra.me.REG[3];
6900 }
6901 val_t syntax___icode_generation___ADebugTypeExpr___generate_icode(val_t p0, val_t p1){
6902 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
6903 val_t tmp;
6904 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6905 fra.me.file = LOCATE_syntax___icode_generation;
6906 fra.me.line = 1366;
6907 fra.me.meth = LOCATE_syntax___icode_generation___ADebugTypeExpr___generate_icode;
6908 fra.me.has_broke = 0;
6909 fra.me.REG_size = 2;
6910 fra.me.nitni_local_ref_head = NULL;
6911 fra.me.REG[0] = NIT_NULL;
6912 fra.me.REG[1] = NIT_NULL;
6913 fra.me.REG[0] = p0;
6914 fra.me.REG[1] = p1;
6915 /* syntax/icode_generation.nit:1369 */
6916 fra.me.REG[1] = NIT_NULL;
6917 goto label1;
6918 label1: while(0);
6919 stack_frame_head = fra.me.prev;
6920 return fra.me.REG[1];
6921 }