update NOTICE and LICENSE
[nit.git] / c_src / icode_generation._sep.c
1 /* This C file is generated by NIT to compile module icode_generation. */
2 #include "icode_generation._sep.h"
3 void 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_icode_generation;
10 fra.me.line = 28;
11 fra.me.meth = LOCATE_icode_generation___A2IContext___stmt;
12 fra.me.has_broke = 0;
13 fra.me.REG_size = 4;
14 fra.me.REG[0] = NIT_NULL;
15 fra.me.REG[1] = NIT_NULL;
16 fra.me.REG[2] = NIT_NULL;
17 fra.me.REG[3] = NIT_NULL;
18 fra.me.REG[0] = p0;
19 fra.me.REG[1] = p1;
20 /* ./syntax//icode_generation.nit:28 */
21 fra.me.REG[2] = fra.me.REG[0];
22 /* ./syntax//icode_generation.nit:30 */
23 fra.me.REG[3] = ATTR_icode_generation___A2IContext____current_node(fra.me.REG[2]);
24 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
25 if (UNTAG_Bool(REGB0)) {
26 } else {
27 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
28 if (UNTAG_Bool(REGB1)) {
29 REGB1 = TAG_Bool(false);
30 REGB0 = REGB1;
31 } else {
32 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
33 REGB0 = REGB1;
34 }
35 }
36 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
37 if (UNTAG_Bool(REGB0)) {
38 /* ./syntax//icode_generation.nit:31 */
39 fra.me.REG[3] = ATTR_icode_generation___A2IContext____current_node(fra.me.REG[2]);
40 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
41 if (UNTAG_Bool(REGB0)) {
42 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 31);
43 }
44 fra.me.REG[3] = CALL_parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
45 CALL_icode_builder___ICodeBuilder___current_location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
46 } else {
47 /* ./syntax//icode_generation.nit:32 */
48 fra.me.REG[3] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[2])(fra.me.REG[2]);
49 fra.me.REG[3] = CALL_parser_prod___Visitor___current_node(fra.me.REG[3])(fra.me.REG[3]);
50 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
51 if (UNTAG_Bool(REGB0)) {
52 } else {
53 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
54 if (UNTAG_Bool(REGB1)) {
55 REGB1 = TAG_Bool(false);
56 REGB0 = REGB1;
57 } else {
58 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
59 REGB0 = REGB1;
60 }
61 }
62 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
63 if (UNTAG_Bool(REGB0)) {
64 /* ./syntax//icode_generation.nit:33 */
65 fra.me.REG[3] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[2])(fra.me.REG[2]);
66 fra.me.REG[3] = CALL_parser_prod___Visitor___current_node(fra.me.REG[3])(fra.me.REG[3]);
67 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
68 if (UNTAG_Bool(REGB0)) {
69 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 33);
70 }
71 fra.me.REG[3] = CALL_parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
72 CALL_icode_builder___ICodeBuilder___current_location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
73 }
74 }
75 /* ./syntax//icode_generation.nit:35 */
76 CALL_SUPER_icode_generation___A2IContext___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
77 stack_frame_head = fra.me.prev;
78 return;
79 }
80 val_t icode_generation___A2IContext___add_new_array(val_t p0, val_t p1, val_t p2){
81 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
82 val_t REGB0;
83 val_t REGB1;
84 val_t tmp;
85 static val_t once_value_1; /* Once value */
86 static val_t once_value_2; /* Once value */
87 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
88 fra.me.file = LOCATE_icode_generation;
89 fra.me.line = 38;
90 fra.me.meth = LOCATE_icode_generation___A2IContext___add_new_array;
91 fra.me.has_broke = 0;
92 fra.me.REG_size = 5;
93 fra.me.REG[0] = NIT_NULL;
94 fra.me.REG[1] = NIT_NULL;
95 fra.me.REG[2] = NIT_NULL;
96 fra.me.REG[3] = NIT_NULL;
97 fra.me.REG[4] = NIT_NULL;
98 fra.me.REG[0] = p0;
99 fra.me.REG[1] = p1;
100 REGB0 = p2;
101 /* ./syntax//icode_generation.nit:41 */
102 fra.me.REG[2] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[0])(fra.me.REG[0]);
103 if (!once_value_1) {
104 if (!once_value_2) {
105 fra.me.REG[3] = BOX_NativeString("with_capacity");
106 REGB1 = TAG_Int(13);
107 fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB1);
108 once_value_2 = fra.me.REG[3];
109 register_static_object(&once_value_2);
110 } else fra.me.REG[3] = once_value_2;
111 fra.me.REG[3] = fra.me.REG[3];
112 fra.me.REG[3] = CALL_symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
113 once_value_1 = fra.me.REG[3];
114 register_static_object(&once_value_1);
115 } else fra.me.REG[3] = once_value_1;
116 fra.me.REG[3] = fra.me.REG[3];
117 fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3]);
118 /* ./syntax//icode_generation.nit:42 */
119 fra.me.REG[2] = CALL_string___Object___to_s(REGB0)(REGB0);
120 fra.me.REG[2] = NEW_IIntValue_icode_base___IIntValue___init(fra.me.REG[2]);
121 fra.me.REG[4] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[0])(fra.me.REG[0]);
122 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[4])(fra.me.REG[4]);
123 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[4]);
124 /* ./syntax//icode_generation.nit:43 */
125 REGB0 = TAG_Int(1);
126 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
127 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
128 fra.me.REG[2] = NEW_INew_icode_base___INew___init(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
129 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[1]);
130 goto label3;
131 label3: while(0);
132 stack_frame_head = fra.me.prev;
133 return fra.me.REG[1];
134 }
135 void icode_generation___A2IContext___add_call_array_add(val_t p0, val_t p1, val_t p2){
136 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
137 val_t REGB0;
138 val_t tmp;
139 static val_t once_value_1; /* Once value */
140 static val_t once_value_2; /* Once value */
141 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
142 fra.me.file = LOCATE_icode_generation;
143 fra.me.line = 46;
144 fra.me.meth = LOCATE_icode_generation___A2IContext___add_call_array_add;
145 fra.me.has_broke = 0;
146 fra.me.REG_size = 6;
147 fra.me.REG[0] = NIT_NULL;
148 fra.me.REG[1] = NIT_NULL;
149 fra.me.REG[2] = NIT_NULL;
150 fra.me.REG[3] = NIT_NULL;
151 fra.me.REG[4] = NIT_NULL;
152 fra.me.REG[5] = NIT_NULL;
153 fra.me.REG[0] = p0;
154 fra.me.REG[1] = p1;
155 fra.me.REG[2] = p2;
156 /* ./syntax//icode_generation.nit:49 */
157 fra.me.REG[3] = CALL_icode_base___IRegister___stype(fra.me.REG[1])(fra.me.REG[1]);
158 /* ./syntax//icode_generation.nit:50 */
159 fra.me.REG[4] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[0])(fra.me.REG[0]);
160 if (!once_value_1) {
161 if (!once_value_2) {
162 fra.me.REG[5] = BOX_NativeString("add");
163 REGB0 = TAG_Int(3);
164 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
165 once_value_2 = fra.me.REG[5];
166 register_static_object(&once_value_2);
167 } else fra.me.REG[5] = once_value_2;
168 fra.me.REG[5] = fra.me.REG[5];
169 fra.me.REG[5] = CALL_symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
170 once_value_1 = fra.me.REG[5];
171 register_static_object(&once_value_1);
172 } else fra.me.REG[5] = once_value_1;
173 fra.me.REG[5] = fra.me.REG[5];
174 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3], fra.me.REG[5]);
175 /* ./syntax//icode_generation.nit:51 */
176 REGB0 = TAG_Int(2);
177 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
178 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
179 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
180 fra.me.REG[3] = NEW_ICall_icode_base___ICall___init(fra.me.REG[5], fra.me.REG[3]);
181 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
182 stack_frame_head = fra.me.prev;
183 return;
184 }
185 val_t icode_generation___A2IContext___variable(val_t p0, val_t p1){
186 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
187 val_t REGB0;
188 val_t tmp;
189 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
190 fra.me.file = LOCATE_icode_generation;
191 fra.me.line = 54;
192 fra.me.meth = LOCATE_icode_generation___A2IContext___variable;
193 fra.me.has_broke = 0;
194 fra.me.REG_size = 4;
195 fra.me.REG[0] = NIT_NULL;
196 fra.me.REG[1] = NIT_NULL;
197 fra.me.REG[2] = NIT_NULL;
198 fra.me.REG[3] = NIT_NULL;
199 fra.me.REG[0] = p0;
200 fra.me.REG[1] = p1;
201 /* ./syntax//icode_generation.nit:58 */
202 REGB0 = TAG_Bool(ATTR_icode_generation___A2IContext____variables(fra.me.REG[0])!=NIT_NULL);
203 if (UNTAG_Bool(REGB0)) {
204 } else {
205 nit_abort("Uninitialized attribute %s", "_variables", LOCATE_icode_generation, 58);
206 }
207 fra.me.REG[2] = ATTR_icode_generation___A2IContext____variables(fra.me.REG[0]);
208 REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
209 if (UNTAG_Bool(REGB0)) {
210 /* ./syntax//icode_generation.nit:59 */
211 REGB0 = TAG_Bool(ATTR_icode_generation___A2IContext____variables(fra.me.REG[0])!=NIT_NULL);
212 if (UNTAG_Bool(REGB0)) {
213 } else {
214 nit_abort("Uninitialized attribute %s", "_variables", LOCATE_icode_generation, 59);
215 }
216 fra.me.REG[2] = ATTR_icode_generation___A2IContext____variables(fra.me.REG[0]);
217 fra.me.REG[2] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
218 goto label1;
219 } else {
220 /* ./syntax//icode_generation.nit:61 */
221 fra.me.REG[3] = CALL_syntax_base___Variable___stype(fra.me.REG[1])(fra.me.REG[1]);
222 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_MMType, ID_MMType)) /*cast MMType*/;
223 if (UNTAG_Bool(REGB0)) {
224 } else {
225 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 61);
226 }
227 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
228 /* ./syntax//icode_generation.nit:62 */
229 REGB0 = TAG_Bool(ATTR_icode_generation___A2IContext____variables(fra.me.REG[0])!=NIT_NULL);
230 if (UNTAG_Bool(REGB0)) {
231 } else {
232 nit_abort("Uninitialized attribute %s", "_variables", LOCATE_icode_generation, 62);
233 }
234 fra.me.REG[0] = ATTR_icode_generation___A2IContext____variables(fra.me.REG[0]);
235 CALL_abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
236 /* ./syntax//icode_generation.nit:63 */
237 fra.me.REG[2] = fra.me.REG[3];
238 goto label1;
239 }
240 label1: while(0);
241 stack_frame_head = fra.me.prev;
242 return fra.me.REG[2];
243 }
244 val_t icode_generation___A2IContext___closurevariables(val_t p0){
245 struct {struct stack_frame_t me;} fra;
246 val_t REGB0;
247 val_t tmp;
248 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
249 fra.me.file = LOCATE_icode_generation;
250 fra.me.line = 70;
251 fra.me.meth = LOCATE_icode_generation___A2IContext___closurevariables;
252 fra.me.has_broke = 0;
253 fra.me.REG_size = 1;
254 fra.me.REG[0] = NIT_NULL;
255 fra.me.REG[0] = p0;
256 /* ./syntax//icode_generation.nit:70 */
257 REGB0 = TAG_Bool(ATTR_icode_generation___A2IContext____closurevariables(fra.me.REG[0])!=NIT_NULL);
258 if (UNTAG_Bool(REGB0)) {
259 } else {
260 nit_abort("Uninitialized attribute %s", "_closurevariables", LOCATE_icode_generation, 70);
261 }
262 fra.me.REG[0] = ATTR_icode_generation___A2IContext____closurevariables(fra.me.REG[0]);
263 stack_frame_head = fra.me.prev;
264 return fra.me.REG[0];
265 }
266 val_t icode_generation___A2IContext___visitor(val_t p0){
267 struct {struct stack_frame_t me;} fra;
268 val_t REGB0;
269 val_t tmp;
270 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
271 fra.me.file = LOCATE_icode_generation;
272 fra.me.line = 73;
273 fra.me.meth = LOCATE_icode_generation___A2IContext___visitor;
274 fra.me.has_broke = 0;
275 fra.me.REG_size = 1;
276 fra.me.REG[0] = NIT_NULL;
277 fra.me.REG[0] = p0;
278 /* ./syntax//icode_generation.nit:73 */
279 REGB0 = TAG_Bool(ATTR_icode_generation___A2IContext____visitor(fra.me.REG[0])!=NIT_NULL);
280 if (UNTAG_Bool(REGB0)) {
281 } else {
282 nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_icode_generation, 73);
283 }
284 fra.me.REG[0] = ATTR_icode_generation___A2IContext____visitor(fra.me.REG[0]);
285 stack_frame_head = fra.me.prev;
286 return fra.me.REG[0];
287 }
288 val_t icode_generation___A2IContext___return_seq(val_t p0){
289 struct {struct stack_frame_t me;} fra;
290 val_t tmp;
291 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
292 fra.me.file = LOCATE_icode_generation;
293 fra.me.line = 76;
294 fra.me.meth = LOCATE_icode_generation___A2IContext___return_seq;
295 fra.me.has_broke = 0;
296 fra.me.REG_size = 1;
297 fra.me.REG[0] = NIT_NULL;
298 fra.me.REG[0] = p0;
299 /* ./syntax//icode_generation.nit:76 */
300 fra.me.REG[0] = ATTR_icode_generation___A2IContext____return_seq(fra.me.REG[0]);
301 stack_frame_head = fra.me.prev;
302 return fra.me.REG[0];
303 }
304 void icode_generation___A2IContext___return_seq__eq(val_t p0, val_t p1){
305 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
306 val_t tmp;
307 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
308 fra.me.file = LOCATE_icode_generation;
309 fra.me.line = 76;
310 fra.me.meth = LOCATE_icode_generation___A2IContext___return_seq__eq;
311 fra.me.has_broke = 0;
312 fra.me.REG_size = 2;
313 fra.me.REG[0] = NIT_NULL;
314 fra.me.REG[1] = NIT_NULL;
315 fra.me.REG[0] = p0;
316 fra.me.REG[1] = p1;
317 /* ./syntax//icode_generation.nit:76 */
318 ATTR_icode_generation___A2IContext____return_seq(fra.me.REG[0]) = fra.me.REG[1];
319 stack_frame_head = fra.me.prev;
320 return;
321 }
322 val_t icode_generation___A2IContext___return_value(val_t p0){
323 struct {struct stack_frame_t me;} fra;
324 val_t tmp;
325 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
326 fra.me.file = LOCATE_icode_generation;
327 fra.me.line = 79;
328 fra.me.meth = LOCATE_icode_generation___A2IContext___return_value;
329 fra.me.has_broke = 0;
330 fra.me.REG_size = 1;
331 fra.me.REG[0] = NIT_NULL;
332 fra.me.REG[0] = p0;
333 /* ./syntax//icode_generation.nit:79 */
334 fra.me.REG[0] = ATTR_icode_generation___A2IContext____return_value(fra.me.REG[0]);
335 stack_frame_head = fra.me.prev;
336 return fra.me.REG[0];
337 }
338 void icode_generation___A2IContext___return_value__eq(val_t p0, val_t p1){
339 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
340 val_t tmp;
341 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
342 fra.me.file = LOCATE_icode_generation;
343 fra.me.line = 79;
344 fra.me.meth = LOCATE_icode_generation___A2IContext___return_value__eq;
345 fra.me.has_broke = 0;
346 fra.me.REG_size = 2;
347 fra.me.REG[0] = NIT_NULL;
348 fra.me.REG[1] = NIT_NULL;
349 fra.me.REG[0] = p0;
350 fra.me.REG[1] = p1;
351 /* ./syntax//icode_generation.nit:79 */
352 ATTR_icode_generation___A2IContext____return_value(fra.me.REG[0]) = fra.me.REG[1];
353 stack_frame_head = fra.me.prev;
354 return;
355 }
356 val_t icode_generation___A2IContext___method(val_t p0){
357 struct {struct stack_frame_t me;} fra;
358 val_t tmp;
359 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
360 fra.me.file = LOCATE_icode_generation;
361 fra.me.line = 82;
362 fra.me.meth = LOCATE_icode_generation___A2IContext___method;
363 fra.me.has_broke = 0;
364 fra.me.REG_size = 1;
365 fra.me.REG[0] = NIT_NULL;
366 fra.me.REG[0] = p0;
367 /* ./syntax//icode_generation.nit:82 */
368 fra.me.REG[0] = ATTR_icode_generation___A2IContext____method(fra.me.REG[0]);
369 stack_frame_head = fra.me.prev;
370 return fra.me.REG[0];
371 }
372 void icode_generation___A2IContext___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
373 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_A2IContext].i;
374 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
375 val_t tmp;
376 if (init_table[itpos0]) return;
377 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
378 fra.me.file = LOCATE_icode_generation;
379 fra.me.line = 85;
380 fra.me.meth = LOCATE_icode_generation___A2IContext___init;
381 fra.me.has_broke = 0;
382 fra.me.REG_size = 6;
383 fra.me.REG[0] = NIT_NULL;
384 fra.me.REG[1] = NIT_NULL;
385 fra.me.REG[2] = NIT_NULL;
386 fra.me.REG[3] = NIT_NULL;
387 fra.me.REG[4] = NIT_NULL;
388 fra.me.REG[5] = NIT_NULL;
389 fra.me.REG[0] = p0;
390 fra.me.REG[1] = p1;
391 fra.me.REG[2] = p2;
392 fra.me.REG[3] = p3;
393 /* ./syntax//icode_generation.nit:85 */
394 fra.me.REG[4] = fra.me.REG[0];
395 /* ./syntax//icode_generation.nit:87 */
396 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
397 CALL_icode_builder___ICodeBuilder___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[2], init_table);
398 /* ./syntax//icode_generation.nit:88 */
399 ATTR_icode_generation___A2IContext____visitor(fra.me.REG[4]) = fra.me.REG[1];
400 /* ./syntax//icode_generation.nit:89 */
401 fra.me.REG[1] = CALL_icode_base___IRoutine___body(fra.me.REG[2])(fra.me.REG[2]);
402 ATTR_icode_generation___A2IContext____return_seq(fra.me.REG[4]) = fra.me.REG[1];
403 /* ./syntax//icode_generation.nit:90 */
404 fra.me.REG[2] = CALL_icode_base___IRoutine___result(fra.me.REG[2])(fra.me.REG[2]);
405 ATTR_icode_generation___A2IContext____return_value(fra.me.REG[4]) = fra.me.REG[2];
406 /* ./syntax//icode_generation.nit:91 */
407 ATTR_icode_generation___A2IContext____method(fra.me.REG[4]) = fra.me.REG[3];
408 stack_frame_head = fra.me.prev;
409 init_table[itpos0] = 1;
410 return;
411 }
412 void icode_generation___A2IContext___invoke_super_init_calls_after(val_t p0, val_t p1){
413 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
414 val_t REGB0;
415 val_t REGB1;
416 val_t REGB2;
417 val_t REGB3;
418 val_t REGB4;
419 val_t tmp;
420 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
421 fra.me.file = LOCATE_icode_generation;
422 fra.me.line = 94;
423 fra.me.meth = LOCATE_icode_generation___A2IContext___invoke_super_init_calls_after;
424 fra.me.has_broke = 0;
425 fra.me.REG_size = 6;
426 fra.me.REG[0] = NIT_NULL;
427 fra.me.REG[1] = NIT_NULL;
428 fra.me.REG[2] = NIT_NULL;
429 fra.me.REG[3] = NIT_NULL;
430 fra.me.REG[4] = NIT_NULL;
431 fra.me.REG[5] = NIT_NULL;
432 fra.me.REG[0] = p0;
433 fra.me.REG[1] = p1;
434 /* ./syntax//icode_generation.nit:97 */
435 fra.me.REG[2] = CALL_icode_generation___A2IContext___method(fra.me.REG[0])(fra.me.REG[0]);
436 /* ./syntax//icode_generation.nit:98 */
437 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
438 if (UNTAG_Bool(REGB0)) {
439 } else {
440 nit_abort("Assert failed", NULL, LOCATE_icode_generation, 98);
441 }
442 /* ./syntax//icode_generation.nit:99 */
443 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
444 if (UNTAG_Bool(REGB0)) {
445 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 99);
446 }
447 fra.me.REG[2] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[2])(fra.me.REG[2]);
448 /* ./syntax//icode_generation.nit:100 */
449 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_AConcreteInitPropdef, ID_AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
450 if (UNTAG_Bool(REGB0)) {
451 } else {
452 nit_abort("Assert failed", NULL, LOCATE_icode_generation, 100);
453 }
454 /* ./syntax//icode_generation.nit:102 */
455 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
456 if (UNTAG_Bool(REGB0)) {
457 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 102);
458 }
459 fra.me.REG[3] = CALL_syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
460 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
461 if (UNTAG_Bool(REGB0)) {
462 goto label1;
463 }
464 /* ./syntax//icode_generation.nit:103 */
465 REGB0 = TAG_Int(0);
466 /* ./syntax//icode_generation.nit:104 */
467 REGB1 = TAG_Int(0);
468 /* ./syntax//icode_generation.nit:105 */
469 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
470 if (UNTAG_Bool(REGB2)) {
471 } else {
472 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
473 if (UNTAG_Bool(REGB3)) {
474 REGB3 = TAG_Bool(false);
475 REGB2 = REGB3;
476 } else {
477 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
478 REGB2 = REGB3;
479 }
480 }
481 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
482 if (UNTAG_Bool(REGB2)) {
483 /* ./syntax//icode_generation.nit:106 */
484 while(1) {
485 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
486 if (UNTAG_Bool(REGB2)) {
487 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 106);
488 }
489 fra.me.REG[3] = CALL_syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
490 /* ./../lib/standard//collection//array.nit:243 */
491 REGB2 = REGB0;
492 /* ./../lib/standard//collection//array.nit:245 */
493 REGB3 = TAG_Int(0);
494 /* ./../lib/standard//kernel.nit:213 */
495 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
496 /* ./../lib/standard//collection//array.nit:245 */
497 if (UNTAG_Bool(REGB3)) {
498 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
499 if (UNTAG_Bool(REGB3)) {
500 } else {
501 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
502 }
503 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
504 /* ./../lib/standard//kernel.nit:212 */
505 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
506 } else {
507 /* ./../lib/standard//collection//array.nit:245 */
508 REGB4 = TAG_Bool(false);
509 REGB3 = REGB4;
510 }
511 if (UNTAG_Bool(REGB3)) {
512 } else {
513 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
514 }
515 /* ./../lib/standard//collection//array.nit:246 */
516 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
517 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
518 if (UNTAG_Bool(REGB3)) {
519 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
520 }
521 /* ./../lib/standard//collection//array.nit:654 */
522 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
523 /* ./../lib/standard//collection//array.nit:246 */
524 goto label2;
525 label2: while(0);
526 /* ./syntax//icode_generation.nit:106 */
527 REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
528 if (UNTAG_Bool(REGB2)) {
529 } else {
530 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
531 if (UNTAG_Bool(REGB3)) {
532 REGB3 = TAG_Bool(false);
533 REGB2 = REGB3;
534 } else {
535 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
536 REGB2 = REGB3;
537 }
538 }
539 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
540 if (UNTAG_Bool(REGB2)) {
541 /* ./syntax//icode_generation.nit:107 */
542 REGB2 = TAG_Int(1);
543 /* ./../lib/standard//kernel.nit:215 */
544 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
545 /* ./syntax//icode_generation.nit:107 */
546 REGB0 = REGB2;
547 } else {
548 /* ./syntax//icode_generation.nit:106 */
549 goto label3;
550 }
551 }
552 label3: while(0);
553 /* ./syntax//icode_generation.nit:109 */
554 REGB2 = TAG_Int(1);
555 /* ./../lib/standard//kernel.nit:215 */
556 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
557 /* ./syntax//icode_generation.nit:109 */
558 REGB0 = REGB2;
559 /* ./syntax//icode_generation.nit:111 */
560 while(1) {
561 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
562 if (UNTAG_Bool(REGB2)) {
563 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 111);
564 }
565 fra.me.REG[3] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
566 /* ./../lib/standard//collection//array.nit:243 */
567 REGB2 = REGB1;
568 /* ./../lib/standard//collection//array.nit:245 */
569 REGB3 = TAG_Int(0);
570 /* ./../lib/standard//kernel.nit:213 */
571 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
572 /* ./../lib/standard//collection//array.nit:245 */
573 if (UNTAG_Bool(REGB3)) {
574 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
575 if (UNTAG_Bool(REGB3)) {
576 } else {
577 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
578 }
579 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
580 /* ./../lib/standard//kernel.nit:212 */
581 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
582 } else {
583 /* ./../lib/standard//collection//array.nit:245 */
584 REGB4 = TAG_Bool(false);
585 REGB3 = REGB4;
586 }
587 if (UNTAG_Bool(REGB3)) {
588 } else {
589 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
590 }
591 /* ./../lib/standard//collection//array.nit:246 */
592 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
593 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
594 if (UNTAG_Bool(REGB3)) {
595 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
596 }
597 /* ./../lib/standard//collection//array.nit:654 */
598 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
599 /* ./../lib/standard//collection//array.nit:246 */
600 goto label4;
601 label4: while(0);
602 /* ./syntax//icode_generation.nit:111 */
603 REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
604 if (UNTAG_Bool(REGB2)) {
605 } else {
606 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
607 if (UNTAG_Bool(REGB3)) {
608 REGB3 = TAG_Bool(false);
609 REGB2 = REGB3;
610 } else {
611 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
612 REGB2 = REGB3;
613 }
614 }
615 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
616 if (UNTAG_Bool(REGB2)) {
617 /* ./syntax//icode_generation.nit:112 */
618 REGB2 = TAG_Int(1);
619 /* ./../lib/standard//kernel.nit:215 */
620 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
621 /* ./syntax//icode_generation.nit:112 */
622 REGB1 = REGB2;
623 } else {
624 /* ./syntax//icode_generation.nit:111 */
625 goto label5;
626 }
627 }
628 label5: while(0);
629 /* ./syntax//icode_generation.nit:114 */
630 REGB2 = TAG_Int(1);
631 /* ./../lib/standard//kernel.nit:215 */
632 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
633 /* ./syntax//icode_generation.nit:114 */
634 REGB1 = REGB2;
635 }
636 /* ./syntax//icode_generation.nit:116 */
637 fra.me.REG[1] = NIT_NULL;
638 /* ./syntax//icode_generation.nit:117 */
639 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
640 if (UNTAG_Bool(REGB2)) {
641 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 117);
642 }
643 fra.me.REG[3] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
644 /* ./../lib/standard//collection//array.nit:23 */
645 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
646 if (UNTAG_Bool(REGB2)) {
647 } else {
648 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
649 }
650 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
651 /* ./../lib/standard//kernel.nit:212 */
652 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
653 /* ./syntax//icode_generation.nit:117 */
654 if (UNTAG_Bool(REGB2)) {
655 /* ./syntax//icode_generation.nit:118 */
656 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
657 if (UNTAG_Bool(REGB2)) {
658 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 118);
659 }
660 fra.me.REG[3] = CALL_syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
661 /* ./../lib/standard//collection//array.nit:245 */
662 REGB2 = TAG_Int(0);
663 /* ./../lib/standard//kernel.nit:213 */
664 REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
665 /* ./../lib/standard//collection//array.nit:245 */
666 if (UNTAG_Bool(REGB2)) {
667 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
668 if (UNTAG_Bool(REGB2)) {
669 } else {
670 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
671 }
672 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
673 /* ./../lib/standard//kernel.nit:212 */
674 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
675 } else {
676 /* ./../lib/standard//collection//array.nit:245 */
677 REGB3 = TAG_Bool(false);
678 REGB2 = REGB3;
679 }
680 if (UNTAG_Bool(REGB2)) {
681 } else {
682 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
683 }
684 /* ./../lib/standard//collection//array.nit:246 */
685 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
686 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
687 if (UNTAG_Bool(REGB2)) {
688 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
689 }
690 /* ./../lib/standard//collection//array.nit:654 */
691 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
692 /* ./../lib/standard//collection//array.nit:246 */
693 goto label6;
694 label6: while(0);
695 /* ./syntax//icode_generation.nit:118 */
696 fra.me.REG[1] = fra.me.REG[3];
697 }
698 /* ./syntax//icode_generation.nit:120 */
699 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
700 if (UNTAG_Bool(REGB1)) {
701 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 120);
702 }
703 fra.me.REG[3] = CALL_syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
704 /* ./../lib/standard//collection//array.nit:23 */
705 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
706 if (UNTAG_Bool(REGB1)) {
707 } else {
708 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
709 }
710 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
711 /* ./syntax//icode_generation.nit:121 */
712 while(1) {
713 /* ./../lib/standard//kernel.nit:212 */
714 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
715 /* ./syntax//icode_generation.nit:121 */
716 if (UNTAG_Bool(REGB2)) {
717 /* ./syntax//icode_generation.nit:122 */
718 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
719 if (UNTAG_Bool(REGB2)) {
720 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 122);
721 }
722 fra.me.REG[3] = CALL_syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
723 /* ./../lib/standard//collection//array.nit:243 */
724 REGB2 = REGB0;
725 /* ./../lib/standard//collection//array.nit:245 */
726 REGB3 = TAG_Int(0);
727 /* ./../lib/standard//kernel.nit:213 */
728 REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
729 /* ./../lib/standard//collection//array.nit:245 */
730 if (UNTAG_Bool(REGB3)) {
731 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
732 if (UNTAG_Bool(REGB3)) {
733 } else {
734 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
735 }
736 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
737 /* ./../lib/standard//kernel.nit:212 */
738 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
739 } else {
740 /* ./../lib/standard//collection//array.nit:245 */
741 REGB4 = TAG_Bool(false);
742 REGB3 = REGB4;
743 }
744 if (UNTAG_Bool(REGB3)) {
745 } else {
746 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
747 }
748 /* ./../lib/standard//collection//array.nit:246 */
749 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
750 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
751 if (UNTAG_Bool(REGB3)) {
752 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
753 }
754 /* ./../lib/standard//collection//array.nit:654 */
755 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
756 /* ./../lib/standard//collection//array.nit:246 */
757 goto label7;
758 label7: while(0);
759 /* ./syntax//icode_generation.nit:123 */
760 REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[1]));
761 if (UNTAG_Bool(REGB2)) {
762 } else {
763 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
764 REGB2 = REGB3;
765 }
766 if (UNTAG_Bool(REGB2)) {
767 goto label8;
768 }
769 /* ./syntax//icode_generation.nit:124 */
770 fra.me.REG[4] = NEW_Array_array___Array___init();
771 /* ./syntax//icode_generation.nit:125 */
772 fra.me.REG[5] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
773 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
774 if (UNTAG_Bool(REGB2)) {
775 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 125);
776 }
777 REGB2 = CALL_static_type___MMSignature___arity(fra.me.REG[5])(fra.me.REG[5]);
778 REGB3 = TAG_Int(0);
779 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
780 if (UNTAG_Bool(REGB4)) {
781 } else {
782 /* ./../lib/standard//kernel.nit:207 */
783 REGB3 = TAG_Bool((REGB2)==(REGB3));
784 /* ./syntax//icode_generation.nit:125 */
785 REGB4 = REGB3;
786 }
787 if (UNTAG_Bool(REGB4)) {
788 /* ./syntax//icode_generation.nit:126 */
789 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
790 fra.me.REG[5] = CALL_icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
791 fra.me.REG[5] = CALL_abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
792 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
793 } else {
794 /* ./syntax//icode_generation.nit:128 */
795 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
796 fra.me.REG[5] = CALL_icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
797 CALL_abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_icode_generation___A2IContext___invoke_super_init_calls_after_9));
798 }
799 /* ./syntax//icode_generation.nit:132 */
800 fra.me.REG[4] = NEW_ICall_icode_base___ICall___init(fra.me.REG[3], fra.me.REG[4]);
801 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
802 /* ./syntax//icode_generation.nit:133 */
803 REGB4 = TAG_Int(1);
804 /* ./../lib/standard//kernel.nit:215 */
805 REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
806 /* ./syntax//icode_generation.nit:133 */
807 REGB0 = REGB4;
808 } else {
809 /* ./syntax//icode_generation.nit:121 */
810 goto label8;
811 }
812 }
813 label8: while(0);
814 label1: while(0);
815 stack_frame_head = fra.me.prev;
816 return;
817 }
818 void OC_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){
819 struct {struct stack_frame_t me;} fra;
820 fun_t CREG[1];
821 val_t tmp;
822 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
823 fra.me.file = LOCATE_icode_generation;
824 fra.me.line = 0;
825 fra.me.meth = LOCATE_icode_generation___A2IContext___invoke_super_init_calls_after;
826 fra.me.has_broke = 0;
827 fra.me.REG_size = 1;
828 fra.me.REG[0] = NIT_NULL;
829 fra.me.closure_ctx = closctx_param;
830 fra.me.closure_funs = CREG;
831 fra.me.REG[0] = p0;
832 CREG[0] = clos_fun0;
833 /* ./syntax//icode_generation.nit:129 */
834 CALL_abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
835 stack_frame_head = fra.me.prev;
836 return;
837 }
838 void icode_generation___A2IContext___generate_stmt(val_t p0, val_t p1){
839 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
840 val_t REGB0;
841 val_t REGB1;
842 val_t tmp;
843 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
844 fra.me.file = LOCATE_icode_generation;
845 fra.me.line = 140;
846 fra.me.meth = LOCATE_icode_generation___A2IContext___generate_stmt;
847 fra.me.has_broke = 0;
848 fra.me.REG_size = 3;
849 fra.me.REG[0] = NIT_NULL;
850 fra.me.REG[1] = NIT_NULL;
851 fra.me.REG[2] = NIT_NULL;
852 fra.me.REG[0] = p0;
853 fra.me.REG[1] = p1;
854 /* ./syntax//icode_generation.nit:143 */
855 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
856 if (UNTAG_Bool(REGB0)) {
857 } else {
858 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
859 if (UNTAG_Bool(REGB1)) {
860 REGB1 = TAG_Bool(false);
861 REGB0 = REGB1;
862 } else {
863 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
864 REGB0 = REGB1;
865 }
866 }
867 if (UNTAG_Bool(REGB0)) {
868 goto label1;
869 }
870 /* ./syntax//icode_generation.nit:144 */
871 fra.me.REG[2] = ATTR_icode_generation___A2IContext____current_node(fra.me.REG[0]);
872 /* ./syntax//icode_generation.nit:145 */
873 ATTR_icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[1];
874 /* ./syntax//icode_generation.nit:146 */
875 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
876 if (UNTAG_Bool(REGB0)) {
877 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 146);
878 }
879 CALL_icode_generation___AExpr___generate_icode(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
880 /* ./syntax//icode_generation.nit:147 */
881 ATTR_icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[2];
882 label1: while(0);
883 stack_frame_head = fra.me.prev;
884 return;
885 }
886 val_t icode_generation___A2IContext___generate_expr(val_t p0, val_t p1){
887 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
888 val_t REGB0;
889 val_t tmp;
890 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
891 fra.me.file = LOCATE_icode_generation;
892 fra.me.line = 150;
893 fra.me.meth = LOCATE_icode_generation___A2IContext___generate_expr;
894 fra.me.has_broke = 0;
895 fra.me.REG_size = 3;
896 fra.me.REG[0] = NIT_NULL;
897 fra.me.REG[1] = NIT_NULL;
898 fra.me.REG[2] = NIT_NULL;
899 fra.me.REG[0] = p0;
900 fra.me.REG[1] = p1;
901 /* ./syntax//icode_generation.nit:153 */
902 fra.me.REG[2] = ATTR_icode_generation___A2IContext____current_node(fra.me.REG[0]);
903 /* ./syntax//icode_generation.nit:154 */
904 ATTR_icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[1];
905 /* ./syntax//icode_generation.nit:155 */
906 fra.me.REG[1] = CALL_icode_generation___AExpr___generate_icode(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
907 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
908 if (UNTAG_Bool(REGB0)) {
909 } else {
910 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 155);
911 }
912 /* ./syntax//icode_generation.nit:156 */
913 ATTR_icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[2];
914 /* ./syntax//icode_generation.nit:157 */
915 goto label1;
916 label1: while(0);
917 stack_frame_head = fra.me.prev;
918 return fra.me.REG[1];
919 }
920 val_t icode_generation___EscapableBlock___break_seq(val_t p0){
921 struct {struct stack_frame_t me;} fra;
922 val_t tmp;
923 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
924 fra.me.file = LOCATE_icode_generation;
925 fra.me.line = 162;
926 fra.me.meth = LOCATE_icode_generation___EscapableBlock___break_seq;
927 fra.me.has_broke = 0;
928 fra.me.REG_size = 1;
929 fra.me.REG[0] = NIT_NULL;
930 fra.me.REG[0] = p0;
931 /* ./syntax//icode_generation.nit:162 */
932 fra.me.REG[0] = ATTR_icode_generation___EscapableBlock____break_seq(fra.me.REG[0]);
933 stack_frame_head = fra.me.prev;
934 return fra.me.REG[0];
935 }
936 void icode_generation___EscapableBlock___break_seq__eq(val_t p0, val_t p1){
937 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
938 val_t tmp;
939 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
940 fra.me.file = LOCATE_icode_generation;
941 fra.me.line = 162;
942 fra.me.meth = LOCATE_icode_generation___EscapableBlock___break_seq__eq;
943 fra.me.has_broke = 0;
944 fra.me.REG_size = 2;
945 fra.me.REG[0] = NIT_NULL;
946 fra.me.REG[1] = NIT_NULL;
947 fra.me.REG[0] = p0;
948 fra.me.REG[1] = p1;
949 /* ./syntax//icode_generation.nit:162 */
950 ATTR_icode_generation___EscapableBlock____break_seq(fra.me.REG[0]) = fra.me.REG[1];
951 stack_frame_head = fra.me.prev;
952 return;
953 }
954 val_t icode_generation___EscapableBlock___continue_seq(val_t p0){
955 struct {struct stack_frame_t me;} fra;
956 val_t tmp;
957 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
958 fra.me.file = LOCATE_icode_generation;
959 fra.me.line = 165;
960 fra.me.meth = LOCATE_icode_generation___EscapableBlock___continue_seq;
961 fra.me.has_broke = 0;
962 fra.me.REG_size = 1;
963 fra.me.REG[0] = NIT_NULL;
964 fra.me.REG[0] = p0;
965 /* ./syntax//icode_generation.nit:165 */
966 fra.me.REG[0] = ATTR_icode_generation___EscapableBlock____continue_seq(fra.me.REG[0]);
967 stack_frame_head = fra.me.prev;
968 return fra.me.REG[0];
969 }
970 void icode_generation___EscapableBlock___continue_seq__eq(val_t p0, val_t p1){
971 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
972 val_t tmp;
973 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
974 fra.me.file = LOCATE_icode_generation;
975 fra.me.line = 165;
976 fra.me.meth = LOCATE_icode_generation___EscapableBlock___continue_seq__eq;
977 fra.me.has_broke = 0;
978 fra.me.REG_size = 2;
979 fra.me.REG[0] = NIT_NULL;
980 fra.me.REG[1] = NIT_NULL;
981 fra.me.REG[0] = p0;
982 fra.me.REG[1] = p1;
983 /* ./syntax//icode_generation.nit:165 */
984 ATTR_icode_generation___EscapableBlock____continue_seq(fra.me.REG[0]) = fra.me.REG[1];
985 stack_frame_head = fra.me.prev;
986 return;
987 }
988 val_t icode_generation___EscapableBlock___break_value(val_t p0){
989 struct {struct stack_frame_t me;} fra;
990 val_t tmp;
991 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
992 fra.me.file = LOCATE_icode_generation;
993 fra.me.line = 168;
994 fra.me.meth = LOCATE_icode_generation___EscapableBlock___break_value;
995 fra.me.has_broke = 0;
996 fra.me.REG_size = 1;
997 fra.me.REG[0] = NIT_NULL;
998 fra.me.REG[0] = p0;
999 /* ./syntax//icode_generation.nit:168 */
1000 fra.me.REG[0] = ATTR_icode_generation___EscapableBlock____break_value(fra.me.REG[0]);
1001 stack_frame_head = fra.me.prev;
1002 return fra.me.REG[0];
1003 }
1004 void icode_generation___EscapableBlock___break_value__eq(val_t p0, val_t p1){
1005 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1006 val_t tmp;
1007 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1008 fra.me.file = LOCATE_icode_generation;
1009 fra.me.line = 168;
1010 fra.me.meth = LOCATE_icode_generation___EscapableBlock___break_value__eq;
1011 fra.me.has_broke = 0;
1012 fra.me.REG_size = 2;
1013 fra.me.REG[0] = NIT_NULL;
1014 fra.me.REG[1] = NIT_NULL;
1015 fra.me.REG[0] = p0;
1016 fra.me.REG[1] = p1;
1017 /* ./syntax//icode_generation.nit:168 */
1018 ATTR_icode_generation___EscapableBlock____break_value(fra.me.REG[0]) = fra.me.REG[1];
1019 stack_frame_head = fra.me.prev;
1020 return;
1021 }
1022 val_t icode_generation___EscapableBlock___continue_value(val_t p0){
1023 struct {struct stack_frame_t me;} fra;
1024 val_t tmp;
1025 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1026 fra.me.file = LOCATE_icode_generation;
1027 fra.me.line = 171;
1028 fra.me.meth = LOCATE_icode_generation___EscapableBlock___continue_value;
1029 fra.me.has_broke = 0;
1030 fra.me.REG_size = 1;
1031 fra.me.REG[0] = NIT_NULL;
1032 fra.me.REG[0] = p0;
1033 /* ./syntax//icode_generation.nit:171 */
1034 fra.me.REG[0] = ATTR_icode_generation___EscapableBlock____continue_value(fra.me.REG[0]);
1035 stack_frame_head = fra.me.prev;
1036 return fra.me.REG[0];
1037 }
1038 void icode_generation___EscapableBlock___continue_value__eq(val_t p0, val_t p1){
1039 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1040 val_t tmp;
1041 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1042 fra.me.file = LOCATE_icode_generation;
1043 fra.me.line = 171;
1044 fra.me.meth = LOCATE_icode_generation___EscapableBlock___continue_value__eq;
1045 fra.me.has_broke = 0;
1046 fra.me.REG_size = 2;
1047 fra.me.REG[0] = NIT_NULL;
1048 fra.me.REG[1] = NIT_NULL;
1049 fra.me.REG[0] = p0;
1050 fra.me.REG[1] = p1;
1051 /* ./syntax//icode_generation.nit:171 */
1052 ATTR_icode_generation___EscapableBlock____continue_value(fra.me.REG[0]) = fra.me.REG[1];
1053 stack_frame_head = fra.me.prev;
1054 return;
1055 }
1056 void icode_generation___MMSrcModule___generate_icode(val_t p0, val_t p1){
1057 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1058 val_t tmp;
1059 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1060 fra.me.file = LOCATE_icode_generation;
1061 fra.me.line = 176;
1062 fra.me.meth = LOCATE_icode_generation___MMSrcModule___generate_icode;
1063 fra.me.has_broke = 0;
1064 fra.me.REG_size = 2;
1065 fra.me.REG[0] = NIT_NULL;
1066 fra.me.REG[1] = NIT_NULL;
1067 fra.me.REG[0] = p0;
1068 fra.me.REG[1] = p1;
1069 /* ./syntax//icode_generation.nit:179 */
1070 fra.me.REG[1] = NEW_A2IVisitor_icode_generation___A2IVisitor___init(fra.me.REG[1], fra.me.REG[0]);
1071 /* ./syntax//icode_generation.nit:180 */
1072 fra.me.REG[0] = CALL_syntax_base___MMSrcModule___src_local_classes(fra.me.REG[0])(fra.me.REG[0]);
1073 CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_icode_generation___MMSrcModule___generate_icode_1));
1074 stack_frame_head = fra.me.prev;
1075 return;
1076 }
1077 void OC_icode_generation___MMSrcModule___generate_icode_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1078 struct {struct stack_frame_t me;} fra;
1079 fun_t CREG[1];
1080 val_t tmp;
1081 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1082 fra.me.file = LOCATE_icode_generation;
1083 fra.me.line = 0;
1084 fra.me.meth = LOCATE_icode_generation___MMSrcModule___generate_icode;
1085 fra.me.has_broke = 0;
1086 fra.me.REG_size = 1;
1087 fra.me.REG[0] = NIT_NULL;
1088 fra.me.closure_ctx = closctx_param;
1089 fra.me.closure_funs = CREG;
1090 fra.me.REG[0] = p0;
1091 CREG[0] = clos_fun0;
1092 /* ./syntax//icode_generation.nit:181 */
1093 fra.me.REG[0] = CALL_syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
1094 CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_icode_generation___MMSrcModule___generate_icode_2));
1095 stack_frame_head = fra.me.prev;
1096 return;
1097 }
1098 void OC_icode_generation___MMSrcModule___generate_icode_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1099 struct {struct stack_frame_t me;} fra;
1100 val_t REGB0;
1101 fun_t CREG[1];
1102 val_t tmp;
1103 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1104 fra.me.file = LOCATE_icode_generation;
1105 fra.me.line = 0;
1106 fra.me.meth = LOCATE_icode_generation___MMSrcModule___generate_icode;
1107 fra.me.has_broke = 0;
1108 fra.me.REG_size = 1;
1109 fra.me.REG[0] = NIT_NULL;
1110 fra.me.closure_ctx = closctx_param;
1111 fra.me.closure_funs = CREG;
1112 fra.me.REG[0] = p0;
1113 CREG[0] = clos_fun0;
1114 /* ./syntax//icode_generation.nit:182 */
1115 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
1116 if (UNTAG_Bool(REGB0)) {
1117 /* ./syntax//icode_generation.nit:183 */
1118 CALL_icode_generation___MMSrcMethod___generate_iroutine(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
1119 } else {
1120 /* ./syntax//icode_generation.nit:184 */
1121 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_MMSrcAttribute, ID_MMSrcAttribute)) /*cast MMSrcAttribute*/;
1122 if (UNTAG_Bool(REGB0)) {
1123 /* ./syntax//icode_generation.nit:185 */
1124 CALL_icode_generation___MMSrcAttribute___generate_iroutine(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
1125 }
1126 }
1127 stack_frame_head = fra.me.prev;
1128 return;
1129 }
1130 val_t icode_generation___MMSrcAttribute___iroutine(val_t p0){
1131 struct {struct stack_frame_t me;} fra;
1132 val_t tmp;
1133 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1134 fra.me.file = LOCATE_icode_generation;
1135 fra.me.line = 193;
1136 fra.me.meth = LOCATE_icode_generation___MMSrcAttribute___iroutine;
1137 fra.me.has_broke = 0;
1138 fra.me.REG_size = 1;
1139 fra.me.REG[0] = NIT_NULL;
1140 fra.me.REG[0] = p0;
1141 /* ./syntax//icode_generation.nit:193 */
1142 fra.me.REG[0] = ATTR_icode_generation___MMSrcAttribute____iroutine(fra.me.REG[0]);
1143 stack_frame_head = fra.me.prev;
1144 return fra.me.REG[0];
1145 }
1146 void icode_generation___MMSrcAttribute___iroutine__eq(val_t p0, val_t p1){
1147 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1148 val_t tmp;
1149 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1150 fra.me.file = LOCATE_icode_generation;
1151 fra.me.line = 193;
1152 fra.me.meth = LOCATE_icode_generation___MMSrcAttribute___iroutine__eq;
1153 fra.me.has_broke = 0;
1154 fra.me.REG_size = 2;
1155 fra.me.REG[0] = NIT_NULL;
1156 fra.me.REG[1] = NIT_NULL;
1157 fra.me.REG[0] = p0;
1158 fra.me.REG[1] = p1;
1159 /* ./syntax//icode_generation.nit:193 */
1160 ATTR_icode_generation___MMSrcAttribute____iroutine(fra.me.REG[0]) = fra.me.REG[1];
1161 stack_frame_head = fra.me.prev;
1162 return;
1163 }
1164 void icode_generation___MMSrcAttribute___generate_iroutine(val_t p0, val_t p1){
1165 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1166 val_t REGB0;
1167 val_t REGB1;
1168 val_t tmp;
1169 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1170 fra.me.file = LOCATE_icode_generation;
1171 fra.me.line = 195;
1172 fra.me.meth = LOCATE_icode_generation___MMSrcAttribute___generate_iroutine;
1173 fra.me.has_broke = 0;
1174 fra.me.REG_size = 4;
1175 fra.me.REG[0] = NIT_NULL;
1176 fra.me.REG[1] = NIT_NULL;
1177 fra.me.REG[2] = NIT_NULL;
1178 fra.me.REG[3] = NIT_NULL;
1179 fra.me.REG[0] = p0;
1180 fra.me.REG[1] = p1;
1181 /* ./syntax//icode_generation.nit:198 */
1182 fra.me.REG[2] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1183 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1184 if (UNTAG_Bool(REGB0)) {
1185 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 198);
1186 }
1187 fra.me.REG[2] = CALL_parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1188 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1189 if (UNTAG_Bool(REGB0)) {
1190 } else {
1191 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1192 if (UNTAG_Bool(REGB1)) {
1193 REGB1 = TAG_Bool(false);
1194 REGB0 = REGB1;
1195 } else {
1196 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1197 REGB0 = REGB1;
1198 }
1199 }
1200 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1201 if (UNTAG_Bool(REGB0)) {
1202 /* ./syntax//icode_generation.nit:199 */
1203 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1204 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1205 if (UNTAG_Bool(REGB0)) {
1206 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 199);
1207 }
1208 fra.me.REG[2] = CALL_icode_builder___MMSignature___generate_empty_iroutine(fra.me.REG[2])(fra.me.REG[2]);
1209 /* ./syntax//icode_generation.nit:200 */
1210 fra.me.REG[3] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1211 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1212 if (UNTAG_Bool(REGB0)) {
1213 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 200);
1214 }
1215 fra.me.REG[3] = CALL_parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
1216 CALL_icode_base___IRoutine___location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1217 /* ./syntax//icode_generation.nit:201 */
1218 fra.me.REG[3] = NEW_A2IContext_icode_generation___A2IContext___init(fra.me.REG[1], fra.me.REG[2], NIT_NULL);
1219 /* ./syntax//icode_generation.nit:202 */
1220 CALL_icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1221 /* ./syntax//icode_generation.nit:203 */
1222 fra.me.REG[3] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1223 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1224 /* ./syntax//icode_generation.nit:204 */
1225 CALL_icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1226 /* ./syntax//icode_generation.nit:205 */
1227 ATTR_icode_generation___MMSrcAttribute____iroutine(fra.me.REG[0]) = fra.me.REG[2];
1228 }
1229 stack_frame_head = fra.me.prev;
1230 return;
1231 }
1232 val_t icode_generation___MMSrcMethod___iroutine(val_t p0){
1233 struct {struct stack_frame_t me;} fra;
1234 val_t tmp;
1235 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1236 fra.me.file = LOCATE_icode_generation;
1237 fra.me.line = 211;
1238 fra.me.meth = LOCATE_icode_generation___MMSrcMethod___iroutine;
1239 fra.me.has_broke = 0;
1240 fra.me.REG_size = 1;
1241 fra.me.REG[0] = NIT_NULL;
1242 fra.me.REG[0] = p0;
1243 /* ./syntax//icode_generation.nit:211 */
1244 fra.me.REG[0] = ATTR_icode_generation___MMSrcMethod____iroutine(fra.me.REG[0]);
1245 stack_frame_head = fra.me.prev;
1246 return fra.me.REG[0];
1247 }
1248 void icode_generation___MMSrcMethod___iroutine__eq(val_t p0, val_t p1){
1249 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1250 val_t tmp;
1251 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1252 fra.me.file = LOCATE_icode_generation;
1253 fra.me.line = 211;
1254 fra.me.meth = LOCATE_icode_generation___MMSrcMethod___iroutine__eq;
1255 fra.me.has_broke = 0;
1256 fra.me.REG_size = 2;
1257 fra.me.REG[0] = NIT_NULL;
1258 fra.me.REG[1] = NIT_NULL;
1259 fra.me.REG[0] = p0;
1260 fra.me.REG[1] = p1;
1261 /* ./syntax//icode_generation.nit:211 */
1262 ATTR_icode_generation___MMSrcMethod____iroutine(fra.me.REG[0]) = fra.me.REG[1];
1263 stack_frame_head = fra.me.prev;
1264 return;
1265 }
1266 void icode_generation___MMSrcMethod___generate_iroutine(val_t p0, val_t p1){
1267 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1268 val_t REGB0;
1269 val_t REGB1;
1270 val_t tmp;
1271 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1272 fra.me.file = LOCATE_icode_generation;
1273 fra.me.line = 213;
1274 fra.me.meth = LOCATE_icode_generation___MMSrcMethod___generate_iroutine;
1275 fra.me.has_broke = 0;
1276 fra.me.REG_size = 4;
1277 fra.me.REG[0] = NIT_NULL;
1278 fra.me.REG[1] = NIT_NULL;
1279 fra.me.REG[2] = NIT_NULL;
1280 fra.me.REG[3] = NIT_NULL;
1281 fra.me.REG[0] = p0;
1282 fra.me.REG[1] = p1;
1283 /* ./syntax//icode_generation.nit:216 */
1284 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
1285 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1286 if (UNTAG_Bool(REGB0)) {
1287 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 216);
1288 }
1289 fra.me.REG[2] = CALL_icode_builder___MMSignature___generate_empty_iroutine(fra.me.REG[2])(fra.me.REG[2]);
1290 /* ./syntax//icode_generation.nit:217 */
1291 fra.me.REG[3] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1292 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1293 if (UNTAG_Bool(REGB0)) {
1294 } else {
1295 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1296 if (UNTAG_Bool(REGB1)) {
1297 REGB1 = TAG_Bool(false);
1298 REGB0 = REGB1;
1299 } else {
1300 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1301 REGB0 = REGB1;
1302 }
1303 }
1304 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1305 if (UNTAG_Bool(REGB0)) {
1306 /* ./syntax//icode_generation.nit:218 */
1307 fra.me.REG[3] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1308 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1309 if (UNTAG_Bool(REGB0)) {
1310 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 218);
1311 }
1312 fra.me.REG[3] = CALL_parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
1313 CALL_icode_base___IRoutine___location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1314 }
1315 /* ./syntax//icode_generation.nit:220 */
1316 fra.me.REG[3] = NEW_A2IContext_icode_generation___A2IContext___init(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
1317 /* ./syntax//icode_generation.nit:221 */
1318 CALL_icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1319 /* ./syntax//icode_generation.nit:222 */
1320 CALL_icode_generation___MMSrcMethod___inner_generate_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
1321 /* ./syntax//icode_generation.nit:223 */
1322 CALL_icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1323 /* ./syntax//icode_generation.nit:224 */
1324 ATTR_icode_generation___MMSrcMethod____iroutine(fra.me.REG[0]) = fra.me.REG[2];
1325 stack_frame_head = fra.me.prev;
1326 return;
1327 }
1328 void icode_generation___MMSrcMethod___inner_generate_iroutine(val_t p0, val_t p1){
1329 struct {struct stack_frame_t me;} fra;
1330 val_t tmp;
1331 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1332 fra.me.file = LOCATE_icode_generation;
1333 fra.me.line = 227;
1334 fra.me.meth = LOCATE_icode_generation___MMSrcMethod___inner_generate_iroutine;
1335 fra.me.has_broke = 0;
1336 fra.me.REG_size = 0;
1337 /* ./syntax//icode_generation.nit:227 */
1338 nit_abort("Deferred method called", NULL, LOCATE_icode_generation, 227);
1339 stack_frame_head = fra.me.prev;
1340 return;
1341 }
1342 void icode_generation___MMReadImplementationMethod___inner_generate_iroutine(val_t p0, val_t p1){
1343 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1344 val_t REGB0;
1345 val_t tmp;
1346 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1347 fra.me.file = LOCATE_icode_generation;
1348 fra.me.line = 232;
1349 fra.me.meth = LOCATE_icode_generation___MMReadImplementationMethod___inner_generate_iroutine;
1350 fra.me.has_broke = 0;
1351 fra.me.REG_size = 3;
1352 fra.me.REG[0] = NIT_NULL;
1353 fra.me.REG[1] = NIT_NULL;
1354 fra.me.REG[2] = NIT_NULL;
1355 fra.me.REG[0] = p0;
1356 fra.me.REG[1] = p1;
1357 /* ./syntax//icode_generation.nit:234 */
1358 fra.me.REG[0] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1359 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1360 if (UNTAG_Bool(REGB0)) {
1361 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 234);
1362 }
1363 fra.me.REG[0] = CALL_syntax_base___AAttrPropdef___prop(fra.me.REG[0])(fra.me.REG[0]);
1364 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
1365 fra.me.REG[2] = CALL_icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
1366 fra.me.REG[2] = CALL_abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
1367 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___add_attr_read(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
1368 /* ./syntax//icode_generation.nit:235 */
1369 CALL_icode_builder___ICodeBuilder___add_return_value(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1370 stack_frame_head = fra.me.prev;
1371 return;
1372 }
1373 void icode_generation___MMWriteImplementationMethod___inner_generate_iroutine(val_t p0, val_t p1){
1374 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1375 val_t REGB0;
1376 val_t tmp;
1377 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1378 fra.me.file = LOCATE_icode_generation;
1379 fra.me.line = 240;
1380 fra.me.meth = LOCATE_icode_generation___MMWriteImplementationMethod___inner_generate_iroutine;
1381 fra.me.has_broke = 0;
1382 fra.me.REG_size = 4;
1383 fra.me.REG[0] = NIT_NULL;
1384 fra.me.REG[1] = NIT_NULL;
1385 fra.me.REG[2] = NIT_NULL;
1386 fra.me.REG[3] = NIT_NULL;
1387 fra.me.REG[0] = p0;
1388 fra.me.REG[1] = p1;
1389 /* ./syntax//icode_generation.nit:242 */
1390 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
1391 fra.me.REG[2] = CALL_icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
1392 /* ./syntax//icode_generation.nit:243 */
1393 fra.me.REG[0] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1394 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1395 if (UNTAG_Bool(REGB0)) {
1396 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 243);
1397 }
1398 fra.me.REG[0] = CALL_syntax_base___AAttrPropdef___prop(fra.me.REG[0])(fra.me.REG[0]);
1399 REGB0 = TAG_Int(0);
1400 fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
1401 REGB0 = TAG_Int(1);
1402 fra.me.REG[2] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
1403 fra.me.REG[2] = NEW_IAttrWrite_icode_base___IAttrWrite___init(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
1404 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1405 stack_frame_head = fra.me.prev;
1406 return;
1407 }
1408 void icode_generation___MMMethSrcMethod___inner_generate_iroutine(val_t p0, val_t p1){
1409 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1410 val_t tmp;
1411 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1412 fra.me.file = LOCATE_icode_generation;
1413 fra.me.line = 248;
1414 fra.me.meth = LOCATE_icode_generation___MMMethSrcMethod___inner_generate_iroutine;
1415 fra.me.has_broke = 0;
1416 fra.me.REG_size = 2;
1417 fra.me.REG[0] = NIT_NULL;
1418 fra.me.REG[1] = NIT_NULL;
1419 fra.me.REG[0] = p0;
1420 fra.me.REG[1] = p1;
1421 /* ./syntax//icode_generation.nit:250 */
1422 fra.me.REG[1] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
1423 fra.me.REG[0] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
1424 CALL_parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1425 stack_frame_head = fra.me.prev;
1426 return;
1427 }
1428 void icode_generation___MMImplicitInit___inner_generate_iroutine(val_t p0, val_t p1){
1429 struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
1430 val_t REGB0;
1431 val_t REGB1;
1432 val_t REGB2;
1433 val_t REGB3;
1434 val_t REGB4;
1435 val_t REGB5;
1436 val_t REGB6;
1437 val_t tmp;
1438 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1439 fra.me.file = LOCATE_icode_generation;
1440 fra.me.line = 255;
1441 fra.me.meth = LOCATE_icode_generation___MMImplicitInit___inner_generate_iroutine;
1442 fra.me.has_broke = 0;
1443 fra.me.REG_size = 10;
1444 fra.me.REG[0] = NIT_NULL;
1445 fra.me.REG[1] = NIT_NULL;
1446 fra.me.REG[2] = NIT_NULL;
1447 fra.me.REG[3] = NIT_NULL;
1448 fra.me.REG[4] = NIT_NULL;
1449 fra.me.REG[5] = NIT_NULL;
1450 fra.me.REG[6] = NIT_NULL;
1451 fra.me.REG[7] = NIT_NULL;
1452 fra.me.REG[8] = NIT_NULL;
1453 fra.me.REG[9] = NIT_NULL;
1454 fra.me.REG[0] = p0;
1455 fra.me.REG[1] = p1;
1456 /* ./syntax//icode_generation.nit:257 */
1457 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
1458 fra.me.REG[2] = CALL_icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
1459 /* ./syntax//icode_generation.nit:258 */
1460 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
1461 fra.me.REG[3] = CALL_syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[0])(fra.me.REG[0]);
1462 /* ./../lib/standard//collection//array.nit:23 */
1463 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
1464 if (UNTAG_Bool(REGB1)) {
1465 } else {
1466 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1467 }
1468 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
1469 /* ./../lib/standard//kernel.nit:217 */
1470 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
1471 /* ./syntax//icode_generation.nit:259 */
1472 fra.me.REG[3] = CALL_abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
1473 /* ./syntax//icode_generation.nit:260 */
1474 fra.me.REG[4] = CALL_syntax_base___MMImplicitInit___super_inits(fra.me.REG[0])(fra.me.REG[0]);
1475 /* ./../lib/standard//collection//array.nit:234 */
1476 REGB0 = TAG_Int(0);
1477 /* ./../lib/standard//collection//array.nit:235 */
1478 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1479 if (UNTAG_Bool(REGB2)) {
1480 } else {
1481 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
1482 }
1483 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
1484 /* ./../lib/standard//collection//array.nit:236 */
1485 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[4]);
1486 /* ./../lib/standard//collection//array.nit:237 */
1487 while(1) {
1488 /* ./../lib/standard//collection//array.nit:23 */
1489 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
1490 if (UNTAG_Bool(REGB2)) {
1491 } else {
1492 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
1493 }
1494 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
1495 /* ./../lib/standard//kernel.nit:212 */
1496 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
1497 /* ./../lib/standard//collection//array.nit:237 */
1498 if (UNTAG_Bool(REGB2)) {
1499 /* ./../lib/standard//collection//array.nit:238 */
1500 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1501 if (UNTAG_Bool(REGB2)) {
1502 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
1503 }
1504 /* ./../lib/standard//collection//array.nit:654 */
1505 fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
1506 /* ./syntax//icode_generation.nit:261 */
1507 REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
1508 if (UNTAG_Bool(REGB2)) {
1509 } else {
1510 nit_abort("Assert failed", NULL, LOCATE_icode_generation, 261);
1511 }
1512 /* ./syntax//icode_generation.nit:262 */
1513 REGB2 = TAG_Int(1);
1514 fra.me.REG[7] = NEW_Array_array___Array___with_capacity(REGB2);
1515 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
1516 /* ./syntax//icode_generation.nit:263 */
1517 fra.me.REG[8] = CALL_syntax_base___MMImplicitInit___super_init(fra.me.REG[0])(fra.me.REG[0]);
1518 REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[8]));
1519 if (UNTAG_Bool(REGB2)) {
1520 } else {
1521 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
1522 REGB2 = REGB3;
1523 }
1524 if (UNTAG_Bool(REGB2)) {
1525 /* ./syntax//icode_generation.nit:264 */
1526 fra.me.REG[8] = NEW_Array_array___Array___with_capacity(REGB1);
1527 /* ./syntax//icode_generation.nit:265 */
1528 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
1529 /* ./syntax//icode_generation.nit:266 */
1530 REGB2 = TAG_Int(1);
1531 /* ./../lib/standard//kernel.nit:327 */
1532 REGB3 = REGB1;
1533 /* ./../lib/standard//kernel.nit:332 */
1534 while(1) {
1535 /* ./../lib/standard//kernel.nit:212 */
1536 REGB4 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
1537 /* ./../lib/standard//kernel.nit:332 */
1538 if (UNTAG_Bool(REGB4)) {
1539 /* ./syntax//icode_generation.nit:266 */
1540 REGB4 = REGB2;
1541 /* ./syntax//icode_generation.nit:267 */
1542 fra.me.REG[9] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
1543 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
1544 /* ./../lib/standard//kernel.nit:334 */
1545 REGB4 = TAG_Int(1);
1546 /* ./../lib/standard//kernel.nit:215 */
1547 REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
1548 /* ./../lib/standard//kernel.nit:334 */
1549 REGB2 = REGB4;
1550 } else {
1551 /* ./../lib/standard//kernel.nit:332 */
1552 goto label1;
1553 }
1554 }
1555 label1: while(0);
1556 /* ./syntax//icode_generation.nit:269 */
1557 fra.me.REG[8] = NEW_ICall_icode_base___ICall___init(fra.me.REG[6], fra.me.REG[8]);
1558 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
1559 } else {
1560 /* ./syntax//icode_generation.nit:271 */
1561 fra.me.REG[7] = NEW_ICall_icode_base___ICall___init(fra.me.REG[6], fra.me.REG[7]);
1562 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
1563 }
1564 /* ./../lib/standard//collection//array.nit:239 */
1565 REGB2 = TAG_Int(1);
1566 /* ./../lib/standard//kernel.nit:215 */
1567 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
1568 /* ./../lib/standard//collection//array.nit:239 */
1569 REGB0 = REGB2;
1570 } else {
1571 /* ./../lib/standard//collection//array.nit:237 */
1572 goto label2;
1573 }
1574 }
1575 label2: while(0);
1576 /* ./syntax//icode_generation.nit:274 */
1577 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
1578 /* ./../lib/standard//kernel.nit:327 */
1579 REGB2 = REGB1;
1580 /* ./../lib/standard//kernel.nit:332 */
1581 while(1) {
1582 /* ./../lib/standard//kernel.nit:212 */
1583 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
1584 /* ./../lib/standard//kernel.nit:332 */
1585 if (UNTAG_Bool(REGB3)) {
1586 /* ./syntax//icode_generation.nit:274 */
1587 REGB3 = REGB2;
1588 /* ./syntax//icode_generation.nit:275 */
1589 fra.me.REG[5] = CALL_syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[0])(fra.me.REG[0]);
1590 /* ./../lib/standard//kernel.nit:217 */
1591 REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB1));
1592 /* ./../lib/standard//collection//array.nit:245 */
1593 REGB5 = TAG_Int(0);
1594 /* ./../lib/standard//kernel.nit:213 */
1595 REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
1596 /* ./../lib/standard//collection//array.nit:245 */
1597 if (UNTAG_Bool(REGB5)) {
1598 REGB5 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
1599 if (UNTAG_Bool(REGB5)) {
1600 } else {
1601 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
1602 }
1603 REGB5 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
1604 /* ./../lib/standard//kernel.nit:212 */
1605 REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
1606 } else {
1607 /* ./../lib/standard//collection//array.nit:245 */
1608 REGB6 = TAG_Bool(false);
1609 REGB5 = REGB6;
1610 }
1611 if (UNTAG_Bool(REGB5)) {
1612 } else {
1613 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
1614 }
1615 /* ./../lib/standard//collection//array.nit:246 */
1616 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[5]);
1617 REGB5 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1618 if (UNTAG_Bool(REGB5)) {
1619 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
1620 }
1621 /* ./../lib/standard//collection//array.nit:654 */
1622 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB4)];
1623 /* ./../lib/standard//collection//array.nit:246 */
1624 goto label3;
1625 label3: while(0);
1626 /* ./syntax//icode_generation.nit:276 */
1627 fra.me.REG[4] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB3);
1628 fra.me.REG[4] = NEW_IAttrWrite_icode_base___IAttrWrite___init(fra.me.REG[5], fra.me.REG[3], fra.me.REG[4]);
1629 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1630 /* ./../lib/standard//kernel.nit:334 */
1631 REGB3 = TAG_Int(1);
1632 /* ./../lib/standard//kernel.nit:215 */
1633 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
1634 /* ./../lib/standard//kernel.nit:334 */
1635 REGB2 = REGB3;
1636 } else {
1637 /* ./../lib/standard//kernel.nit:332 */
1638 goto label4;
1639 }
1640 }
1641 label4: while(0);
1642 stack_frame_head = fra.me.prev;
1643 return;
1644 }
1645 void icode_generation___A2IVisitor___icode_ctx__eq(val_t p0, val_t p1){
1646 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1647 val_t tmp;
1648 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1649 fra.me.file = LOCATE_icode_generation;
1650 fra.me.line = 283;
1651 fra.me.meth = LOCATE_icode_generation___A2IVisitor___icode_ctx__eq;
1652 fra.me.has_broke = 0;
1653 fra.me.REG_size = 2;
1654 fra.me.REG[0] = NIT_NULL;
1655 fra.me.REG[1] = NIT_NULL;
1656 fra.me.REG[0] = p0;
1657 fra.me.REG[1] = p1;
1658 /* ./syntax//icode_generation.nit:283 */
1659 ATTR_icode_generation___A2IVisitor____icode_ctx(fra.me.REG[0]) = fra.me.REG[1];
1660 stack_frame_head = fra.me.prev;
1661 return;
1662 }
1663 val_t icode_generation___A2IVisitor___icode_ctx(val_t p0){
1664 struct {struct stack_frame_t me;} fra;
1665 val_t REGB0;
1666 val_t tmp;
1667 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1668 fra.me.file = LOCATE_icode_generation;
1669 fra.me.line = 284;
1670 fra.me.meth = LOCATE_icode_generation___A2IVisitor___icode_ctx;
1671 fra.me.has_broke = 0;
1672 fra.me.REG_size = 1;
1673 fra.me.REG[0] = NIT_NULL;
1674 fra.me.REG[0] = p0;
1675 /* ./syntax//icode_generation.nit:284 */
1676 fra.me.REG[0] = ATTR_icode_generation___A2IVisitor____icode_ctx(fra.me.REG[0]);
1677 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
1678 if (UNTAG_Bool(REGB0)) {
1679 } else {
1680 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 284);
1681 }
1682 goto label1;
1683 label1: while(0);
1684 stack_frame_head = fra.me.prev;
1685 return fra.me.REG[0];
1686 }
1687 void icode_generation___A2IVisitor___visit(val_t p0, val_t p1){
1688 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1689 val_t REGB0;
1690 val_t tmp;
1691 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1692 fra.me.file = LOCATE_icode_generation;
1693 fra.me.line = 285;
1694 fra.me.meth = LOCATE_icode_generation___A2IVisitor___visit;
1695 fra.me.has_broke = 0;
1696 fra.me.REG_size = 2;
1697 fra.me.REG[0] = NIT_NULL;
1698 fra.me.REG[1] = NIT_NULL;
1699 fra.me.REG[0] = p0;
1700 fra.me.REG[1] = p1;
1701 /* ./syntax//icode_generation.nit:285 */
1702 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1703 if (UNTAG_Bool(REGB0)) {
1704 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 285);
1705 }
1706 CALL_icode_generation___ANode___accept_icode_generation(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1707 stack_frame_head = fra.me.prev;
1708 return;
1709 }
1710 void icode_generation___A2IVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
1711 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_A2IVisitor].i;
1712 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1713 val_t tmp;
1714 if (init_table[itpos1]) return;
1715 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1716 fra.me.file = LOCATE_icode_generation;
1717 fra.me.line = 286;
1718 fra.me.meth = LOCATE_icode_generation___A2IVisitor___init;
1719 fra.me.has_broke = 0;
1720 fra.me.REG_size = 3;
1721 fra.me.REG[0] = NIT_NULL;
1722 fra.me.REG[1] = NIT_NULL;
1723 fra.me.REG[2] = NIT_NULL;
1724 fra.me.REG[0] = p0;
1725 fra.me.REG[1] = p1;
1726 fra.me.REG[2] = p2;
1727 /* ./syntax//icode_generation.nit:286 */
1728 CALL_syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
1729 stack_frame_head = fra.me.prev;
1730 init_table[itpos1] = 1;
1731 return;
1732 }
1733 void icode_generation___ANode___accept_icode_generation(val_t p0, val_t p1){
1734 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1735 val_t tmp;
1736 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1737 fra.me.file = LOCATE_icode_generation;
1738 fra.me.line = 293;
1739 fra.me.meth = LOCATE_icode_generation___ANode___accept_icode_generation;
1740 fra.me.has_broke = 0;
1741 fra.me.REG_size = 2;
1742 fra.me.REG[0] = NIT_NULL;
1743 fra.me.REG[1] = NIT_NULL;
1744 fra.me.REG[0] = p0;
1745 fra.me.REG[1] = p1;
1746 /* ./syntax//icode_generation.nit:293 */
1747 CALL_syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1748 stack_frame_head = fra.me.prev;
1749 return;
1750 }
1751 void icode_generation___AAttrPropdef___accept_icode_generation(val_t p0, val_t p1){
1752 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1753 val_t REGB0;
1754 val_t REGB1;
1755 val_t tmp;
1756 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1757 fra.me.file = LOCATE_icode_generation;
1758 fra.me.line = 297;
1759 fra.me.meth = LOCATE_icode_generation___AAttrPropdef___accept_icode_generation;
1760 fra.me.has_broke = 0;
1761 fra.me.REG_size = 6;
1762 fra.me.REG[0] = NIT_NULL;
1763 fra.me.REG[1] = NIT_NULL;
1764 fra.me.REG[2] = NIT_NULL;
1765 fra.me.REG[3] = NIT_NULL;
1766 fra.me.REG[4] = NIT_NULL;
1767 fra.me.REG[5] = NIT_NULL;
1768 fra.me.REG[0] = p0;
1769 fra.me.REG[1] = p1;
1770 /* ./syntax//icode_generation.nit:297 */
1771 fra.me.REG[2] = fra.me.REG[0];
1772 fra.me.REG[3] = fra.me.REG[1];
1773 /* ./syntax//icode_generation.nit:299 */
1774 fra.me.REG[3] = CALL_icode_generation___A2IVisitor___icode_ctx(fra.me.REG[3])(fra.me.REG[3]);
1775 /* ./syntax//icode_generation.nit:300 */
1776 fra.me.REG[4] = CALL_syntax_base___APropdef___self_var(fra.me.REG[2])(fra.me.REG[2]);
1777 fra.me.REG[4] = CALL_icode_generation___A2IContext___variable(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1778 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[3])(fra.me.REG[3]);
1779 fra.me.REG[5] = CALL_icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
1780 fra.me.REG[5] = CALL_abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
1781 fra.me.REG[5] = NEW_IMove_icode_base___IMove___init(fra.me.REG[4], fra.me.REG[5]);
1782 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
1783 /* ./syntax//icode_generation.nit:301 */
1784 CALL_SUPER_icode_generation___AAttrPropdef___accept_icode_generation(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1785 /* ./syntax//icode_generation.nit:302 */
1786 fra.me.REG[2] = CALL_parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
1787 /* ./syntax//icode_generation.nit:303 */
1788 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1789 if (UNTAG_Bool(REGB0)) {
1790 } else {
1791 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1792 if (UNTAG_Bool(REGB1)) {
1793 REGB1 = TAG_Bool(false);
1794 REGB0 = REGB1;
1795 } else {
1796 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1797 REGB0 = REGB1;
1798 }
1799 }
1800 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1801 if (UNTAG_Bool(REGB0)) {
1802 /* ./syntax//icode_generation.nit:304 */
1803 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[3])(fra.me.REG[3]);
1804 fra.me.REG[1] = CALL_icode_base___IRoutine___result(fra.me.REG[1])(fra.me.REG[1]);
1805 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_IRegister, ID_IRegister)) /*cast IRegister*/;
1806 if (UNTAG_Bool(REGB0)) {
1807 } else {
1808 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 304);
1809 }
1810 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1811 fra.me.REG[2] = NEW_IMove_icode_base___IMove___init(fra.me.REG[1], fra.me.REG[2]);
1812 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1813 }
1814 stack_frame_head = fra.me.prev;
1815 return;
1816 }
1817 void icode_generation___AMethPropdef___accept_icode_generation(val_t p0, val_t p1){
1818 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1819 val_t tmp;
1820 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1821 fra.me.file = LOCATE_icode_generation;
1822 fra.me.line = 310;
1823 fra.me.meth = LOCATE_icode_generation___AMethPropdef___accept_icode_generation;
1824 fra.me.has_broke = 0;
1825 fra.me.REG_size = 4;
1826 fra.me.REG[0] = NIT_NULL;
1827 fra.me.REG[1] = NIT_NULL;
1828 fra.me.REG[2] = NIT_NULL;
1829 fra.me.REG[3] = NIT_NULL;
1830 fra.me.REG[0] = p0;
1831 fra.me.REG[1] = p1;
1832 /* ./syntax//icode_generation.nit:310 */
1833 fra.me.REG[2] = fra.me.REG[0];
1834 fra.me.REG[3] = fra.me.REG[1];
1835 /* ./syntax//icode_generation.nit:312 */
1836 CALL_SUPER_icode_generation___AMethPropdef___accept_icode_generation(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1837 /* ./syntax//icode_generation.nit:313 */
1838 fra.me.REG[3] = CALL_icode_generation___A2IVisitor___icode_ctx(fra.me.REG[3])(fra.me.REG[3]);
1839 fra.me.REG[1] = CALL_syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
1840 CALL_icode_generation___AMethPropdef___fill_iroutine(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
1841 stack_frame_head = fra.me.prev;
1842 return;
1843 }
1844 void icode_generation___AMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
1845 struct {struct stack_frame_t me;} fra;
1846 val_t tmp;
1847 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1848 fra.me.file = LOCATE_icode_generation;
1849 fra.me.line = 316;
1850 fra.me.meth = LOCATE_icode_generation___AMethPropdef___fill_iroutine;
1851 fra.me.has_broke = 0;
1852 fra.me.REG_size = 0;
1853 /* ./syntax//icode_generation.nit:316 */
1854 nit_abort("Deferred method called", NULL, LOCATE_icode_generation, 316);
1855 stack_frame_head = fra.me.prev;
1856 return;
1857 }
1858 void icode_generation___ASignature___fill_iroutine_parameters(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
1859 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1860 val_t REGB0;
1861 val_t REGB1;
1862 val_t REGB2;
1863 val_t REGB3;
1864 val_t tmp;
1865 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1866 fra.me.file = LOCATE_icode_generation;
1867 fra.me.line = 321;
1868 fra.me.meth = LOCATE_icode_generation___ASignature___fill_iroutine_parameters;
1869 fra.me.has_broke = 0;
1870 fra.me.REG_size = 6;
1871 fra.me.REG[0] = NIT_NULL;
1872 fra.me.REG[1] = NIT_NULL;
1873 fra.me.REG[2] = NIT_NULL;
1874 fra.me.REG[3] = NIT_NULL;
1875 fra.me.REG[4] = NIT_NULL;
1876 fra.me.REG[5] = NIT_NULL;
1877 fra.me.REG[0] = p0;
1878 fra.me.REG[1] = p1;
1879 fra.me.REG[2] = p2;
1880 fra.me.REG[3] = p3;
1881 fra.me.REG[4] = p4;
1882 /* ./syntax//icode_generation.nit:323 */
1883 fra.me.REG[5] = CALL_parser_nodes___ASignature___n_params(fra.me.REG[0])(fra.me.REG[0]);
1884 CALL_abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_icode_generation___ASignature___fill_iroutine_parameters_1));
1885 /* ./syntax//icode_generation.nit:332 */
1886 REGB0 = TAG_Int(0);
1887 fra.me.REG[3] = CALL_parser_nodes___ASignature___n_closure_decls(fra.me.REG[0])(fra.me.REG[0]);
1888 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
1889 /* ./../lib/standard//kernel.nit:332 */
1890 while(1) {
1891 /* ./../lib/standard//kernel.nit:212 */
1892 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1893 /* ./../lib/standard//kernel.nit:332 */
1894 if (UNTAG_Bool(REGB2)) {
1895 /* ./syntax//icode_generation.nit:332 */
1896 REGB2 = REGB0;
1897 /* ./syntax//icode_generation.nit:333 */
1898 fra.me.REG[3] = CALL_parser_nodes___ASignature___n_closure_decls(fra.me.REG[0])(fra.me.REG[0]);
1899 fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
1900 /* ./syntax//icode_generation.nit:334 */
1901 fra.me.REG[2] = CALL_icode_generation___A2IContext___closurevariables(fra.me.REG[1])(fra.me.REG[1]);
1902 fra.me.REG[3] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[3])(fra.me.REG[3]);
1903 REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1904 if (UNTAG_Bool(REGB3)) {
1905 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 334);
1906 }
1907 fra.me.REG[5] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], REGB2);
1908 CALL_abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[5]);
1909 /* ./../lib/standard//kernel.nit:334 */
1910 REGB2 = TAG_Int(1);
1911 /* ./../lib/standard//kernel.nit:215 */
1912 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
1913 /* ./../lib/standard//kernel.nit:334 */
1914 REGB0 = REGB2;
1915 } else {
1916 /* ./../lib/standard//kernel.nit:332 */
1917 goto label2;
1918 }
1919 }
1920 label2: while(0);
1921 stack_frame_head = fra.me.prev;
1922 return;
1923 }
1924 void OC_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){
1925 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1926 val_t REGB0;
1927 fun_t CREG[1];
1928 val_t tmp;
1929 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1930 fra.me.file = LOCATE_icode_generation;
1931 fra.me.line = 0;
1932 fra.me.meth = LOCATE_icode_generation___ASignature___fill_iroutine_parameters;
1933 fra.me.has_broke = 0;
1934 fra.me.REG_size = 4;
1935 fra.me.REG[0] = NIT_NULL;
1936 fra.me.REG[1] = NIT_NULL;
1937 fra.me.REG[2] = NIT_NULL;
1938 fra.me.REG[3] = NIT_NULL;
1939 fra.me.closure_ctx = closctx_param;
1940 fra.me.closure_funs = CREG;
1941 fra.me.REG[0] = p0;
1942 CREG[0] = clos_fun0;
1943 /* ./syntax//icode_generation.nit:324 */
1944 fra.me.REG[1] = CALL_syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
1945 fra.me.REG[1] = CALL_icode_generation___A2IContext___variable(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
1946 /* ./syntax//icode_generation.nit:325 */
1947 REGB0 = CALL_syntax_base___AParam___position(fra.me.REG[0])(fra.me.REG[0]);
1948 fra.me.REG[2] = CALL_static_type___MMSignature_____bra(closctx->REG[2])(closctx->REG[2], REGB0);
1949 /* ./syntax//icode_generation.nit:326 */
1950 fra.me.REG[3] = CALL_syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
1951 fra.me.REG[3] = CALL_syntax_base___Variable___stype(fra.me.REG[3])(fra.me.REG[3]);
1952 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_MMType, ID_MMType)) /*cast MMType*/;
1953 if (UNTAG_Bool(REGB0)) {
1954 } else {
1955 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 326);
1956 }
1957 /* ./syntax//icode_generation.nit:327 */
1958 REGB0 = CALL_static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1959 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1960 if (UNTAG_Bool(REGB0)) {
1961 /* ./syntax//icode_generation.nit:328 */
1962 REGB0 = CALL_syntax_base___AParam___position(fra.me.REG[0])(fra.me.REG[0]);
1963 fra.me.REG[2] = CALL_abstract_collection___MapRead_____bra(closctx->REG[3])(closctx->REG[3], REGB0);
1964 CALL_icode_builder___ICodeBuilder___add_type_cast(closctx->REG[1])(closctx->REG[1], fra.me.REG[2], fra.me.REG[3]);
1965 }
1966 /* ./syntax//icode_generation.nit:330 */
1967 REGB0 = CALL_syntax_base___AParam___position(fra.me.REG[0])(fra.me.REG[0]);
1968 fra.me.REG[0] = CALL_abstract_collection___MapRead_____bra(closctx->REG[3])(closctx->REG[3], REGB0);
1969 fra.me.REG[0] = NEW_IMove_icode_base___IMove___init(fra.me.REG[1], fra.me.REG[0]);
1970 CALL_icode_builder___ICodeBuilder___stmt(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
1971 stack_frame_head = fra.me.prev;
1972 return;
1973 }
1974 void icode_generation___AClosureDecl___accept_icode_generation(val_t p0, val_t p1){
1975 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
1976 val_t REGB0;
1977 val_t REGB1;
1978 val_t tmp;
1979 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1980 fra.me.file = LOCATE_icode_generation;
1981 fra.me.line = 340;
1982 fra.me.meth = LOCATE_icode_generation___AClosureDecl___accept_icode_generation;
1983 fra.me.has_broke = 0;
1984 fra.me.REG_size = 7;
1985 fra.me.REG[0] = NIT_NULL;
1986 fra.me.REG[1] = NIT_NULL;
1987 fra.me.REG[2] = NIT_NULL;
1988 fra.me.REG[3] = NIT_NULL;
1989 fra.me.REG[4] = NIT_NULL;
1990 fra.me.REG[5] = NIT_NULL;
1991 fra.me.REG[6] = NIT_NULL;
1992 fra.me.REG[0] = p0;
1993 fra.me.REG[1] = p1;
1994 /* ./syntax//icode_generation.nit:342 */
1995 fra.me.REG[1] = CALL_icode_generation___A2IVisitor___icode_ctx(fra.me.REG[1])(fra.me.REG[1]);
1996 /* ./syntax//icode_generation.nit:343 */
1997 fra.me.REG[2] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
1998 fra.me.REG[2] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
1999 fra.me.REG[2] = CALL_static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
2000 fra.me.REG[2] = CALL_icode_builder___MMSignature___generate_empty_iclosuredef(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
2001 /* ./syntax//icode_generation.nit:344 */
2002 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
2003 /* ./syntax//icode_generation.nit:345 */
2004 fra.me.REG[4] = CALL_icode_base___IRoutine___body(fra.me.REG[2])(fra.me.REG[2]);
2005 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2006 /* ./syntax//icode_generation.nit:346 */
2007 fra.me.REG[4] = CALL_typing___AClosureDecl___escapable(fra.me.REG[0])(fra.me.REG[0]);
2008 fra.me.REG[5] = CALL_icode_base___IRoutine___body(fra.me.REG[2])(fra.me.REG[2]);
2009 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2010 if (UNTAG_Bool(REGB0)) {
2011 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 346);
2012 }
2013 CALL_icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2014 /* ./syntax//icode_generation.nit:347 */
2015 fra.me.REG[5] = CALL_typing___AClosureDecl___escapable(fra.me.REG[0])(fra.me.REG[0]);
2016 fra.me.REG[4] = CALL_icode_base___IRoutine___result(fra.me.REG[2])(fra.me.REG[2]);
2017 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2018 if (UNTAG_Bool(REGB0)) {
2019 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 347);
2020 }
2021 CALL_icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
2022 /* ./syntax//icode_generation.nit:348 */
2023 fra.me.REG[4] = CALL_typing___AClosureDecl___escapable(fra.me.REG[0])(fra.me.REG[0]);
2024 fra.me.REG[5] = CALL_icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
2025 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2026 if (UNTAG_Bool(REGB0)) {
2027 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 348);
2028 }
2029 CALL_icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
2030 /* ./syntax//icode_generation.nit:349 */
2031 fra.me.REG[5] = CALL_typing___AClosureDecl___escapable(fra.me.REG[0])(fra.me.REG[0]);
2032 fra.me.REG[4] = CALL_icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
2033 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2034 if (UNTAG_Bool(REGB0)) {
2035 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 349);
2036 }
2037 CALL_icode_generation___EscapableBlock___break_value__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
2038 /* ./syntax//icode_generation.nit:350 */
2039 fra.me.REG[4] = CALL_parser_nodes___AClosureDecl___n_signature(fra.me.REG[0])(fra.me.REG[0]);
2040 fra.me.REG[5] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
2041 fra.me.REG[5] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[5])(fra.me.REG[5]);
2042 fra.me.REG[5] = CALL_static_type___MMClosure___signature(fra.me.REG[5])(fra.me.REG[5]);
2043 fra.me.REG[6] = CALL_icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
2044 CALL_icode_generation___ASignature___fill_iroutine_parameters(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[5], fra.me.REG[6], NIT_NULL);
2045 /* ./syntax//icode_generation.nit:352 */
2046 fra.me.REG[6] = CALL_parser_nodes___AClosureDecl___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2047 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2048 if (UNTAG_Bool(REGB0)) {
2049 } else {
2050 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2051 if (UNTAG_Bool(REGB1)) {
2052 REGB1 = TAG_Bool(false);
2053 REGB0 = REGB1;
2054 } else {
2055 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
2056 REGB0 = REGB1;
2057 }
2058 }
2059 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2060 if (UNTAG_Bool(REGB0)) {
2061 /* ./syntax//icode_generation.nit:353 */
2062 fra.me.REG[6] = CALL_parser_nodes___AClosureDecl___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2063 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
2064 /* ./syntax//icode_generation.nit:354 */
2065 fra.me.REG[6] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
2066 fra.me.REG[6] = CALL_icode_base___IRoutine___closure_decls(fra.me.REG[6])(fra.me.REG[6]);
2067 REGB0 = CALL_syntax_base___AClosureDecl___position(fra.me.REG[0])(fra.me.REG[0]);
2068 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2069 if (UNTAG_Bool(REGB1)) {
2070 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 354);
2071 }
2072 fra.me.REG[6] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
2073 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
2074 if (UNTAG_Bool(REGB0)) {
2075 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 354);
2076 }
2077 CALL_icode_base___IClosureDecl___default__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
2078 /* ./syntax//icode_generation.nit:357 */
2079 fra.me.REG[0] = CALL_syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
2080 fra.me.REG[0] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[0])(fra.me.REG[0]);
2081 REGB0 = CALL_static_type___MMClosure___is_break(fra.me.REG[0])(fra.me.REG[0]);
2082 if (UNTAG_Bool(REGB0)) {
2083 fra.me.REG[0] = CALL_icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
2084 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2085 if (UNTAG_Bool(REGB0)) {
2086 } else {
2087 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2088 if (UNTAG_Bool(REGB1)) {
2089 REGB1 = TAG_Bool(false);
2090 REGB0 = REGB1;
2091 } else {
2092 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2093 REGB0 = REGB1;
2094 }
2095 }
2096 } else {
2097 REGB1 = TAG_Bool(false);
2098 REGB0 = REGB1;
2099 }
2100 if (UNTAG_Bool(REGB0)) {
2101 /* ./syntax//icode_generation.nit:358 */
2102 fra.me.REG[0] = CALL_icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
2103 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2104 if (UNTAG_Bool(REGB0)) {
2105 } else {
2106 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 358);
2107 }
2108 CALL_icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2109 }
2110 }
2111 /* ./syntax//icode_generation.nit:361 */
2112 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2113 stack_frame_head = fra.me.prev;
2114 return;
2115 }
2116 void icode_generation___AConcreteMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2117 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
2118 val_t REGB0;
2119 val_t REGB1;
2120 val_t REGB2;
2121 val_t tmp;
2122 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2123 fra.me.file = LOCATE_icode_generation;
2124 fra.me.line = 366;
2125 fra.me.meth = LOCATE_icode_generation___AConcreteMethPropdef___fill_iroutine;
2126 fra.me.has_broke = 0;
2127 fra.me.REG_size = 6;
2128 fra.me.REG[0] = NIT_NULL;
2129 fra.me.REG[1] = NIT_NULL;
2130 fra.me.REG[2] = NIT_NULL;
2131 fra.me.REG[3] = NIT_NULL;
2132 fra.me.REG[4] = NIT_NULL;
2133 fra.me.REG[5] = NIT_NULL;
2134 fra.me.REG[0] = p0;
2135 fra.me.REG[1] = p1;
2136 fra.me.REG[2] = p2;
2137 /* ./syntax//icode_generation.nit:368 */
2138 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
2139 fra.me.REG[3] = CALL_icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
2140 fra.me.REG[3] = CALL_array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
2141 /* ./syntax//icode_generation.nit:369 */
2142 fra.me.REG[4] = CALL_syntax_base___APropdef___self_var(fra.me.REG[0])(fra.me.REG[0]);
2143 fra.me.REG[4] = CALL_icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2144 /* ./syntax//icode_generation.nit:370 */
2145 REGB0 = TAG_Int(0);
2146 /* ./../lib/standard//collection//array.nit:243 */
2147 fra.me.REG[5] = fra.me.REG[3];
2148 /* ./../lib/standard//collection//array.nit:245 */
2149 REGB1 = TAG_Int(0);
2150 /* ./../lib/standard//kernel.nit:213 */
2151 REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
2152 /* ./../lib/standard//collection//array.nit:245 */
2153 if (UNTAG_Bool(REGB1)) {
2154 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
2155 if (UNTAG_Bool(REGB1)) {
2156 } else {
2157 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
2158 }
2159 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
2160 /* ./../lib/standard//kernel.nit:212 */
2161 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
2162 } else {
2163 /* ./../lib/standard//collection//array.nit:245 */
2164 REGB2 = TAG_Bool(false);
2165 REGB1 = REGB2;
2166 }
2167 if (UNTAG_Bool(REGB1)) {
2168 } else {
2169 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
2170 }
2171 /* ./../lib/standard//collection//array.nit:246 */
2172 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[5]);
2173 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2174 if (UNTAG_Bool(REGB1)) {
2175 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
2176 }
2177 /* ./../lib/standard//collection//array.nit:654 */
2178 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
2179 /* ./../lib/standard//collection//array.nit:246 */
2180 goto label1;
2181 label1: while(0);
2182 /* ./syntax//icode_generation.nit:370 */
2183 fra.me.REG[5] = NEW_IMove_icode_base___IMove___init(fra.me.REG[4], fra.me.REG[5]);
2184 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
2185 /* ./syntax//icode_generation.nit:371 */
2186 CALL_abstract_collection___Sequence___shift(fra.me.REG[3])(fra.me.REG[3]);
2187 /* ./syntax//icode_generation.nit:373 */
2188 fra.me.REG[5] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
2189 fra.me.REG[5] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
2190 /* ./syntax//icode_generation.nit:374 */
2191 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2192 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2193 if (UNTAG_Bool(REGB0)) {
2194 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 374);
2195 }
2196 fra.me.REG[2] = CALL_static_type___MMSignature___recv(fra.me.REG[2])(fra.me.REG[2]);
2197 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
2198 /* ./syntax//icode_generation.nit:375 */
2199 fra.me.REG[5] = CALL_parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
2200 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2201 if (UNTAG_Bool(REGB0)) {
2202 } else {
2203 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2204 if (UNTAG_Bool(REGB1)) {
2205 REGB1 = TAG_Bool(false);
2206 REGB0 = REGB1;
2207 } else {
2208 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
2209 REGB0 = REGB1;
2210 }
2211 }
2212 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2213 if (UNTAG_Bool(REGB0)) {
2214 /* ./syntax//icode_generation.nit:376 */
2215 fra.me.REG[5] = CALL_parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
2216 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
2217 fra.me.REG[4] = CALL_icode_base___IRoutine___closure_decls(fra.me.REG[4])(fra.me.REG[4]);
2218 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2219 if (UNTAG_Bool(REGB0)) {
2220 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 376);
2221 }
2222 CALL_icode_generation___ASignature___fill_iroutine_parameters(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
2223 }
2224 /* ./syntax//icode_generation.nit:379 */
2225 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_AConcreteInitPropdef, ID_AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
2226 if (UNTAG_Bool(REGB0)) {
2227 /* ./syntax//icode_generation.nit:380 */
2228 CALL_icode_generation___A2IContext___invoke_super_init_calls_after(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
2229 }
2230 /* ./syntax//icode_generation.nit:383 */
2231 fra.me.REG[4] = CALL_parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[0])(fra.me.REG[0]);
2232 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2233 if (UNTAG_Bool(REGB0)) {
2234 } else {
2235 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2236 if (UNTAG_Bool(REGB1)) {
2237 REGB1 = TAG_Bool(false);
2238 REGB0 = REGB1;
2239 } else {
2240 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2241 REGB0 = REGB1;
2242 }
2243 }
2244 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2245 if (UNTAG_Bool(REGB0)) {
2246 /* ./syntax//icode_generation.nit:384 */
2247 fra.me.REG[0] = CALL_parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[0])(fra.me.REG[0]);
2248 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2249 }
2250 stack_frame_head = fra.me.prev;
2251 return;
2252 }
2253 void icode_generation___ADeferredMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2254 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2255 val_t REGB0;
2256 val_t tmp;
2257 static val_t once_value_1; /* Once value */
2258 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2259 fra.me.file = LOCATE_icode_generation;
2260 fra.me.line = 390;
2261 fra.me.meth = LOCATE_icode_generation___ADeferredMethPropdef___fill_iroutine;
2262 fra.me.has_broke = 0;
2263 fra.me.REG_size = 3;
2264 fra.me.REG[0] = NIT_NULL;
2265 fra.me.REG[1] = NIT_NULL;
2266 fra.me.REG[2] = NIT_NULL;
2267 fra.me.REG[0] = p0;
2268 fra.me.REG[1] = p1;
2269 fra.me.REG[2] = p2;
2270 /* ./syntax//icode_generation.nit:392 */
2271 REGB0 = TAG_Int(0);
2272 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
2273 if (!once_value_1) {
2274 fra.me.REG[0] = BOX_NativeString("Deferred method called");
2275 REGB0 = TAG_Int(22);
2276 fra.me.REG[0] = NEW_String_string___String___with_native(fra.me.REG[0], REGB0);
2277 once_value_1 = fra.me.REG[0];
2278 register_static_object(&once_value_1);
2279 } else fra.me.REG[0] = once_value_1;
2280 fra.me.REG[0] = fra.me.REG[0];
2281 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
2282 CALL_icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2283 stack_frame_head = fra.me.prev;
2284 return;
2285 }
2286 void icode_generation___AExternMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2287 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2288 val_t REGB0;
2289 val_t REGB1;
2290 val_t tmp;
2291 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2292 fra.me.file = LOCATE_icode_generation;
2293 fra.me.line = 397;
2294 fra.me.meth = LOCATE_icode_generation___AExternMethPropdef___fill_iroutine;
2295 fra.me.has_broke = 0;
2296 fra.me.REG_size = 5;
2297 fra.me.REG[0] = NIT_NULL;
2298 fra.me.REG[1] = NIT_NULL;
2299 fra.me.REG[2] = NIT_NULL;
2300 fra.me.REG[3] = NIT_NULL;
2301 fra.me.REG[4] = NIT_NULL;
2302 fra.me.REG[0] = p0;
2303 fra.me.REG[1] = p1;
2304 fra.me.REG[2] = p2;
2305 /* ./syntax//icode_generation.nit:399 */
2306 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
2307 fra.me.REG[0] = CALL_icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
2308 /* ./syntax//icode_generation.nit:400 */
2309 fra.me.REG[3] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2310 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2311 if (UNTAG_Bool(REGB0)) {
2312 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 400);
2313 }
2314 fra.me.REG[3] = CALL_static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
2315 /* ./syntax//icode_generation.nit:401 */
2316 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2317 if (UNTAG_Bool(REGB0)) {
2318 } else {
2319 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2320 if (UNTAG_Bool(REGB1)) {
2321 REGB1 = TAG_Bool(false);
2322 REGB0 = REGB1;
2323 } else {
2324 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2325 REGB0 = REGB1;
2326 }
2327 }
2328 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2329 if (UNTAG_Bool(REGB0)) {
2330 /* ./syntax//icode_generation.nit:402 */
2331 fra.me.REG[4] = NEW_INative_icode_base___INative___init(fra.me.REG[2], fra.me.REG[0]);
2332 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
2333 CALL_icode_builder___ICodeBuilder___add_return_value(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2334 } else {
2335 /* ./syntax//icode_generation.nit:404 */
2336 fra.me.REG[0] = NEW_INative_icode_base___INative___init(fra.me.REG[2], fra.me.REG[0]);
2337 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2338 }
2339 stack_frame_head = fra.me.prev;
2340 return;
2341 }
2342 void icode_generation___AInternMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
2343 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2344 val_t REGB0;
2345 val_t REGB1;
2346 val_t tmp;
2347 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2348 fra.me.file = LOCATE_icode_generation;
2349 fra.me.line = 410;
2350 fra.me.meth = LOCATE_icode_generation___AInternMethPropdef___fill_iroutine;
2351 fra.me.has_broke = 0;
2352 fra.me.REG_size = 5;
2353 fra.me.REG[0] = NIT_NULL;
2354 fra.me.REG[1] = NIT_NULL;
2355 fra.me.REG[2] = NIT_NULL;
2356 fra.me.REG[3] = NIT_NULL;
2357 fra.me.REG[4] = NIT_NULL;
2358 fra.me.REG[0] = p0;
2359 fra.me.REG[1] = p1;
2360 fra.me.REG[2] = p2;
2361 /* ./syntax//icode_generation.nit:412 */
2362 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
2363 fra.me.REG[0] = CALL_icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
2364 /* ./syntax//icode_generation.nit:413 */
2365 fra.me.REG[3] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
2366 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2367 if (UNTAG_Bool(REGB0)) {
2368 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 413);
2369 }
2370 fra.me.REG[3] = CALL_static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
2371 /* ./syntax//icode_generation.nit:414 */
2372 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2373 if (UNTAG_Bool(REGB0)) {
2374 } else {
2375 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2376 if (UNTAG_Bool(REGB1)) {
2377 REGB1 = TAG_Bool(false);
2378 REGB0 = REGB1;
2379 } else {
2380 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2381 REGB0 = REGB1;
2382 }
2383 }
2384 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2385 if (UNTAG_Bool(REGB0)) {
2386 /* ./syntax//icode_generation.nit:415 */
2387 fra.me.REG[4] = NEW_INative_icode_base___INative___init(fra.me.REG[2], fra.me.REG[0]);
2388 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
2389 CALL_icode_builder___ICodeBuilder___add_return_value(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2390 } else {
2391 /* ./syntax//icode_generation.nit:417 */
2392 fra.me.REG[0] = NEW_INative_icode_base___INative___init(fra.me.REG[2], fra.me.REG[0]);
2393 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2394 }
2395 stack_frame_head = fra.me.prev;
2396 return;
2397 }
2398 void icode_generation___AExpr___accept_icode_generation(val_t p0, val_t p1){
2399 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2400 val_t tmp;
2401 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2402 fra.me.file = LOCATE_icode_generation;
2403 fra.me.line = 425;
2404 fra.me.meth = LOCATE_icode_generation___AExpr___accept_icode_generation;
2405 fra.me.has_broke = 0;
2406 fra.me.REG_size = 2;
2407 fra.me.REG[0] = NIT_NULL;
2408 fra.me.REG[1] = NIT_NULL;
2409 fra.me.REG[0] = p0;
2410 fra.me.REG[1] = p1;
2411 stack_frame_head = fra.me.prev;
2412 return;
2413 }
2414 val_t icode_generation___AExpr___generate_icode(val_t p0, val_t p1){
2415 struct {struct stack_frame_t me;} fra;
2416 val_t tmp;
2417 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2418 fra.me.file = LOCATE_icode_generation;
2419 fra.me.line = 427;
2420 fra.me.meth = LOCATE_icode_generation___AExpr___generate_icode;
2421 fra.me.has_broke = 0;
2422 fra.me.REG_size = 0;
2423 /* ./syntax//icode_generation.nit:427 */
2424 nit_abort("Deferred method called", NULL, LOCATE_icode_generation, 427);
2425 stack_frame_head = fra.me.prev;
2426 return NIT_NULL;
2427 }
2428 val_t icode_generation___AVardeclExpr___generate_icode(val_t p0, val_t p1){
2429 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2430 val_t REGB0;
2431 val_t REGB1;
2432 val_t tmp;
2433 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2434 fra.me.file = LOCATE_icode_generation;
2435 fra.me.line = 433;
2436 fra.me.meth = LOCATE_icode_generation___AVardeclExpr___generate_icode;
2437 fra.me.has_broke = 0;
2438 fra.me.REG_size = 3;
2439 fra.me.REG[0] = NIT_NULL;
2440 fra.me.REG[1] = NIT_NULL;
2441 fra.me.REG[2] = NIT_NULL;
2442 fra.me.REG[0] = p0;
2443 fra.me.REG[1] = p1;
2444 /* ./syntax//icode_generation.nit:435 */
2445 fra.me.REG[2] = CALL_syntax_base___AVardeclExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
2446 fra.me.REG[2] = CALL_icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2447 /* ./syntax//icode_generation.nit:436 */
2448 fra.me.REG[0] = CALL_parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2449 /* ./syntax//icode_generation.nit:437 */
2450 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2451 if (UNTAG_Bool(REGB0)) {
2452 } else {
2453 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2454 if (UNTAG_Bool(REGB1)) {
2455 REGB1 = TAG_Bool(false);
2456 REGB0 = REGB1;
2457 } else {
2458 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2459 REGB0 = REGB1;
2460 }
2461 }
2462 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2463 if (UNTAG_Bool(REGB0)) {
2464 /* ./syntax//icode_generation.nit:438 */
2465 fra.me.REG[0] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2466 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
2467 }
2468 /* ./syntax//icode_generation.nit:440 */
2469 fra.me.REG[0] = NIT_NULL;
2470 goto label1;
2471 label1: while(0);
2472 stack_frame_head = fra.me.prev;
2473 return fra.me.REG[0];
2474 }
2475 val_t icode_generation___ABlockExpr___generate_icode(val_t p0, val_t p1){
2476 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
2477 val_t tmp;
2478 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2479 fra.me.file = LOCATE_icode_generation;
2480 fra.me.line = 445;
2481 fra.me.meth = LOCATE_icode_generation___ABlockExpr___generate_icode;
2482 fra.me.has_broke = 0;
2483 fra.me.REG_size = 2;
2484 fra.me.REG[0] = NIT_NULL;
2485 fra.me.REG[1] = NIT_NULL;
2486 fra.me.REG[0] = p0;
2487 fra.me.REG[1] = p1;
2488 /* ./syntax//icode_generation.nit:447 */
2489 fra.me.REG[0] = CALL_parser_nodes___ABlockExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2490 CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_icode_generation___ABlockExpr___generate_icode_1));
2491 /* ./syntax//icode_generation.nit:448 */
2492 fra.me.REG[1] = NIT_NULL;
2493 goto label2;
2494 label2: while(0);
2495 stack_frame_head = fra.me.prev;
2496 return fra.me.REG[1];
2497 }
2498 void OC_icode_generation___ABlockExpr___generate_icode_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
2499 struct {struct stack_frame_t me;} fra;
2500 fun_t CREG[1];
2501 val_t tmp;
2502 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2503 fra.me.file = LOCATE_icode_generation;
2504 fra.me.line = 0;
2505 fra.me.meth = LOCATE_icode_generation___ABlockExpr___generate_icode;
2506 fra.me.has_broke = 0;
2507 fra.me.REG_size = 1;
2508 fra.me.REG[0] = NIT_NULL;
2509 fra.me.closure_ctx = closctx_param;
2510 fra.me.closure_funs = CREG;
2511 fra.me.REG[0] = p0;
2512 CREG[0] = clos_fun0;
2513 CALL_icode_generation___A2IContext___generate_stmt(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
2514 stack_frame_head = fra.me.prev;
2515 return;
2516 }
2517 val_t icode_generation___ADoExpr___generate_icode(val_t p0, val_t p1){
2518 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2519 val_t REGB0;
2520 val_t tmp;
2521 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2522 fra.me.file = LOCATE_icode_generation;
2523 fra.me.line = 453;
2524 fra.me.meth = LOCATE_icode_generation___ADoExpr___generate_icode;
2525 fra.me.has_broke = 0;
2526 fra.me.REG_size = 5;
2527 fra.me.REG[0] = NIT_NULL;
2528 fra.me.REG[1] = NIT_NULL;
2529 fra.me.REG[2] = NIT_NULL;
2530 fra.me.REG[3] = NIT_NULL;
2531 fra.me.REG[4] = NIT_NULL;
2532 fra.me.REG[0] = p0;
2533 fra.me.REG[1] = p1;
2534 /* ./syntax//icode_generation.nit:455 */
2535 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
2536 /* ./syntax//icode_generation.nit:456 */
2537 fra.me.REG[3] = NEW_ISeq_icode_base___ISeq___init();
2538 /* ./syntax//icode_generation.nit:457 */
2539 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2540 /* ./syntax//icode_generation.nit:458 */
2541 fra.me.REG[4] = CALL_typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
2542 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2543 if (UNTAG_Bool(REGB0)) {
2544 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 458);
2545 }
2546 CALL_icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
2547 /* ./syntax//icode_generation.nit:459 */
2548 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2549 /* ./syntax//icode_generation.nit:461 */
2550 fra.me.REG[0] = CALL_parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
2551 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2552 /* ./syntax//icode_generation.nit:463 */
2553 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2554 /* ./syntax//icode_generation.nit:464 */
2555 fra.me.REG[2] = NIT_NULL;
2556 goto label1;
2557 label1: while(0);
2558 stack_frame_head = fra.me.prev;
2559 return fra.me.REG[2];
2560 }
2561 val_t icode_generation___AReturnExpr___generate_icode(val_t p0, val_t p1){
2562 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2563 val_t REGB0;
2564 val_t REGB1;
2565 val_t tmp;
2566 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2567 fra.me.file = LOCATE_icode_generation;
2568 fra.me.line = 469;
2569 fra.me.meth = LOCATE_icode_generation___AReturnExpr___generate_icode;
2570 fra.me.has_broke = 0;
2571 fra.me.REG_size = 3;
2572 fra.me.REG[0] = NIT_NULL;
2573 fra.me.REG[1] = NIT_NULL;
2574 fra.me.REG[2] = NIT_NULL;
2575 fra.me.REG[0] = p0;
2576 fra.me.REG[1] = p1;
2577 /* ./syntax//icode_generation.nit:471 */
2578 fra.me.REG[0] = CALL_parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2579 /* ./syntax//icode_generation.nit:472 */
2580 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2581 if (UNTAG_Bool(REGB0)) {
2582 } else {
2583 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2584 if (UNTAG_Bool(REGB1)) {
2585 REGB1 = TAG_Bool(false);
2586 REGB0 = REGB1;
2587 } else {
2588 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
2589 REGB0 = REGB1;
2590 }
2591 }
2592 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2593 if (UNTAG_Bool(REGB0)) {
2594 /* ./syntax//icode_generation.nit:473 */
2595 fra.me.REG[2] = CALL_icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
2596 REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
2597 if (UNTAG_Bool(REGB0)) {
2598 } else {
2599 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 473);
2600 }
2601 fra.me.REG[0] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2602 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
2603 }
2604 /* ./syntax//icode_generation.nit:475 */
2605 fra.me.REG[0] = CALL_icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
2606 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2607 if (UNTAG_Bool(REGB0)) {
2608 } else {
2609 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 475);
2610 }
2611 CALL_icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2612 /* ./syntax//icode_generation.nit:476 */
2613 fra.me.REG[0] = NIT_NULL;
2614 goto label1;
2615 label1: while(0);
2616 stack_frame_head = fra.me.prev;
2617 return fra.me.REG[0];
2618 }
2619 val_t icode_generation___ABreakExpr___generate_icode(val_t p0, val_t p1){
2620 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2621 val_t REGB0;
2622 val_t REGB1;
2623 val_t tmp;
2624 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2625 fra.me.file = LOCATE_icode_generation;
2626 fra.me.line = 481;
2627 fra.me.meth = LOCATE_icode_generation___ABreakExpr___generate_icode;
2628 fra.me.has_broke = 0;
2629 fra.me.REG_size = 4;
2630 fra.me.REG[0] = NIT_NULL;
2631 fra.me.REG[1] = NIT_NULL;
2632 fra.me.REG[2] = NIT_NULL;
2633 fra.me.REG[3] = NIT_NULL;
2634 fra.me.REG[0] = p0;
2635 fra.me.REG[1] = p1;
2636 /* ./syntax//icode_generation.nit:483 */
2637 fra.me.REG[2] = CALL_parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2638 /* ./syntax//icode_generation.nit:484 */
2639 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2640 if (UNTAG_Bool(REGB0)) {
2641 } else {
2642 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2643 if (UNTAG_Bool(REGB1)) {
2644 REGB1 = TAG_Bool(false);
2645 REGB0 = REGB1;
2646 } else {
2647 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2648 REGB0 = REGB1;
2649 }
2650 }
2651 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2652 if (UNTAG_Bool(REGB0)) {
2653 /* ./syntax//icode_generation.nit:485 */
2654 fra.me.REG[3] = CALL_scope___AEscapeExpr___escapable(fra.me.REG[0])(fra.me.REG[0]);
2655 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2656 if (UNTAG_Bool(REGB0)) {
2657 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 485);
2658 }
2659 fra.me.REG[3] = CALL_icode_generation___EscapableBlock___break_value(fra.me.REG[3])(fra.me.REG[3]);
2660 REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
2661 if (UNTAG_Bool(REGB0)) {
2662 } else {
2663 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 485);
2664 }
2665 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2666 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
2667 }
2668 /* ./syntax//icode_generation.nit:487 */
2669 fra.me.REG[0] = CALL_scope___AEscapeExpr___escapable(fra.me.REG[0])(fra.me.REG[0]);
2670 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2671 if (UNTAG_Bool(REGB0)) {
2672 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 487);
2673 }
2674 fra.me.REG[0] = CALL_icode_generation___EscapableBlock___break_seq(fra.me.REG[0])(fra.me.REG[0]);
2675 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2676 if (UNTAG_Bool(REGB0)) {
2677 } else {
2678 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 487);
2679 }
2680 CALL_icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2681 /* ./syntax//icode_generation.nit:488 */
2682 fra.me.REG[0] = NIT_NULL;
2683 goto label1;
2684 label1: while(0);
2685 stack_frame_head = fra.me.prev;
2686 return fra.me.REG[0];
2687 }
2688 val_t icode_generation___AContinueExpr___generate_icode(val_t p0, val_t p1){
2689 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
2690 val_t REGB0;
2691 val_t REGB1;
2692 val_t tmp;
2693 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2694 fra.me.file = LOCATE_icode_generation;
2695 fra.me.line = 493;
2696 fra.me.meth = LOCATE_icode_generation___AContinueExpr___generate_icode;
2697 fra.me.has_broke = 0;
2698 fra.me.REG_size = 4;
2699 fra.me.REG[0] = NIT_NULL;
2700 fra.me.REG[1] = NIT_NULL;
2701 fra.me.REG[2] = NIT_NULL;
2702 fra.me.REG[3] = NIT_NULL;
2703 fra.me.REG[0] = p0;
2704 fra.me.REG[1] = p1;
2705 /* ./syntax//icode_generation.nit:495 */
2706 fra.me.REG[2] = CALL_parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2707 /* ./syntax//icode_generation.nit:496 */
2708 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2709 if (UNTAG_Bool(REGB0)) {
2710 } else {
2711 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
2712 if (UNTAG_Bool(REGB1)) {
2713 REGB1 = TAG_Bool(false);
2714 REGB0 = REGB1;
2715 } else {
2716 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
2717 REGB0 = REGB1;
2718 }
2719 }
2720 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2721 if (UNTAG_Bool(REGB0)) {
2722 /* ./syntax//icode_generation.nit:497 */
2723 fra.me.REG[3] = CALL_scope___AEscapeExpr___escapable(fra.me.REG[0])(fra.me.REG[0]);
2724 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2725 if (UNTAG_Bool(REGB0)) {
2726 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 497);
2727 }
2728 fra.me.REG[3] = CALL_icode_generation___EscapableBlock___continue_value(fra.me.REG[3])(fra.me.REG[3]);
2729 REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
2730 if (UNTAG_Bool(REGB0)) {
2731 } else {
2732 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 497);
2733 }
2734 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2735 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
2736 }
2737 /* ./syntax//icode_generation.nit:499 */
2738 fra.me.REG[0] = CALL_scope___AEscapeExpr___escapable(fra.me.REG[0])(fra.me.REG[0]);
2739 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
2740 if (UNTAG_Bool(REGB0)) {
2741 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 499);
2742 }
2743 fra.me.REG[0] = CALL_icode_generation___EscapableBlock___continue_seq(fra.me.REG[0])(fra.me.REG[0]);
2744 REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
2745 if (UNTAG_Bool(REGB0)) {
2746 } else {
2747 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 499);
2748 }
2749 CALL_icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2750 /* ./syntax//icode_generation.nit:500 */
2751 fra.me.REG[0] = NIT_NULL;
2752 goto label1;
2753 label1: while(0);
2754 stack_frame_head = fra.me.prev;
2755 return fra.me.REG[0];
2756 }
2757 val_t icode_generation___AAbortExpr___generate_icode(val_t p0, val_t p1){
2758 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
2759 val_t REGB0;
2760 val_t tmp;
2761 static val_t once_value_1; /* Once value */
2762 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2763 fra.me.file = LOCATE_icode_generation;
2764 fra.me.line = 505;
2765 fra.me.meth = LOCATE_icode_generation___AAbortExpr___generate_icode;
2766 fra.me.has_broke = 0;
2767 fra.me.REG_size = 3;
2768 fra.me.REG[0] = NIT_NULL;
2769 fra.me.REG[1] = NIT_NULL;
2770 fra.me.REG[2] = NIT_NULL;
2771 fra.me.REG[0] = p0;
2772 fra.me.REG[1] = p1;
2773 /* ./syntax//icode_generation.nit:507 */
2774 REGB0 = TAG_Int(0);
2775 fra.me.REG[0] = NEW_Array_array___Array___with_capacity(REGB0);
2776 if (!once_value_1) {
2777 fra.me.REG[2] = BOX_NativeString("Aborted");
2778 REGB0 = TAG_Int(7);
2779 fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
2780 once_value_1 = fra.me.REG[2];
2781 register_static_object(&once_value_1);
2782 } else fra.me.REG[2] = once_value_1;
2783 fra.me.REG[2] = fra.me.REG[2];
2784 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
2785 CALL_icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2786 /* ./syntax//icode_generation.nit:508 */
2787 fra.me.REG[0] = NIT_NULL;
2788 goto label2;
2789 label2: while(0);
2790 stack_frame_head = fra.me.prev;
2791 return fra.me.REG[0];
2792 }
2793 val_t icode_generation___AIfExpr___generate_icode(val_t p0, val_t p1){
2794 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2795 val_t REGB0;
2796 val_t REGB1;
2797 val_t tmp;
2798 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2799 fra.me.file = LOCATE_icode_generation;
2800 fra.me.line = 513;
2801 fra.me.meth = LOCATE_icode_generation___AIfExpr___generate_icode;
2802 fra.me.has_broke = 0;
2803 fra.me.REG_size = 5;
2804 fra.me.REG[0] = NIT_NULL;
2805 fra.me.REG[1] = NIT_NULL;
2806 fra.me.REG[2] = NIT_NULL;
2807 fra.me.REG[3] = NIT_NULL;
2808 fra.me.REG[4] = NIT_NULL;
2809 fra.me.REG[0] = p0;
2810 fra.me.REG[1] = p1;
2811 /* ./syntax//icode_generation.nit:515 */
2812 fra.me.REG[2] = CALL_parser_nodes___AIfExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2813 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2814 fra.me.REG[2] = NEW_IIf_icode_base___IIf___init(fra.me.REG[2]);
2815 /* ./syntax//icode_generation.nit:516 */
2816 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2817 /* ./syntax//icode_generation.nit:517 */
2818 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
2819 /* ./syntax//icode_generation.nit:519 */
2820 fra.me.REG[4] = CALL_parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
2821 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2822 if (UNTAG_Bool(REGB0)) {
2823 } else {
2824 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2825 if (UNTAG_Bool(REGB1)) {
2826 REGB1 = TAG_Bool(false);
2827 REGB0 = REGB1;
2828 } else {
2829 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2830 REGB0 = REGB1;
2831 }
2832 }
2833 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2834 if (UNTAG_Bool(REGB0)) {
2835 /* ./syntax//icode_generation.nit:520 */
2836 fra.me.REG[4] = CALL_icode_base___IIf___then_seq(fra.me.REG[2])(fra.me.REG[2]);
2837 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2838 /* ./syntax//icode_generation.nit:521 */
2839 fra.me.REG[4] = CALL_parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
2840 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2841 }
2842 /* ./syntax//icode_generation.nit:524 */
2843 fra.me.REG[4] = CALL_parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
2844 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2845 if (UNTAG_Bool(REGB0)) {
2846 } else {
2847 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2848 if (UNTAG_Bool(REGB1)) {
2849 REGB1 = TAG_Bool(false);
2850 REGB0 = REGB1;
2851 } else {
2852 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
2853 REGB0 = REGB1;
2854 }
2855 }
2856 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2857 if (UNTAG_Bool(REGB0)) {
2858 /* ./syntax//icode_generation.nit:525 */
2859 fra.me.REG[2] = CALL_icode_base___IIf___else_seq(fra.me.REG[2])(fra.me.REG[2]);
2860 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2861 /* ./syntax//icode_generation.nit:526 */
2862 fra.me.REG[0] = CALL_parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
2863 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2864 }
2865 /* ./syntax//icode_generation.nit:529 */
2866 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2867 /* ./syntax//icode_generation.nit:530 */
2868 fra.me.REG[3] = NIT_NULL;
2869 goto label1;
2870 label1: while(0);
2871 stack_frame_head = fra.me.prev;
2872 return fra.me.REG[3];
2873 }
2874 val_t icode_generation___AWhileExpr___generate_icode(val_t p0, val_t p1){
2875 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
2876 val_t REGB0;
2877 val_t REGB1;
2878 val_t tmp;
2879 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2880 fra.me.file = LOCATE_icode_generation;
2881 fra.me.line = 535;
2882 fra.me.meth = LOCATE_icode_generation___AWhileExpr___generate_icode;
2883 fra.me.has_broke = 0;
2884 fra.me.REG_size = 7;
2885 fra.me.REG[0] = NIT_NULL;
2886 fra.me.REG[1] = NIT_NULL;
2887 fra.me.REG[2] = NIT_NULL;
2888 fra.me.REG[3] = NIT_NULL;
2889 fra.me.REG[4] = NIT_NULL;
2890 fra.me.REG[5] = NIT_NULL;
2891 fra.me.REG[6] = NIT_NULL;
2892 fra.me.REG[0] = p0;
2893 fra.me.REG[1] = p1;
2894 /* ./syntax//icode_generation.nit:537 */
2895 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
2896 /* ./syntax//icode_generation.nit:538 */
2897 fra.me.REG[3] = NEW_ILoop_icode_base___ILoop___init();
2898 /* ./syntax//icode_generation.nit:539 */
2899 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2900 /* ./syntax//icode_generation.nit:540 */
2901 fra.me.REG[4] = CALL_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_icode_generation, 540);
2905 }
2906 CALL_icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
2907 /* ./syntax//icode_generation.nit:541 */
2908 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2909 /* ./syntax//icode_generation.nit:544 */
2910 fra.me.REG[4] = CALL_parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
2911 fra.me.REG[4] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2912 fra.me.REG[4] = NEW_IIf_icode_base___IIf___init(fra.me.REG[4]);
2913 /* ./syntax//icode_generation.nit:545 */
2914 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2915 /* ./syntax//icode_generation.nit:548 */
2916 fra.me.REG[5] = CALL_parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
2917 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2918 if (UNTAG_Bool(REGB0)) {
2919 } else {
2920 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2921 if (UNTAG_Bool(REGB1)) {
2922 REGB1 = TAG_Bool(false);
2923 REGB0 = REGB1;
2924 } else {
2925 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
2926 REGB0 = REGB1;
2927 }
2928 }
2929 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2930 if (UNTAG_Bool(REGB0)) {
2931 /* ./syntax//icode_generation.nit:549 */
2932 fra.me.REG[5] = CALL_icode_base___IIf___then_seq(fra.me.REG[4])(fra.me.REG[4]);
2933 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
2934 /* ./syntax//icode_generation.nit:550 */
2935 fra.me.REG[5] = CALL_typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
2936 fra.me.REG[6] = CALL_icode_base___IIf___then_seq(fra.me.REG[4])(fra.me.REG[4]);
2937 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
2938 if (UNTAG_Bool(REGB0)) {
2939 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 550);
2940 }
2941 CALL_icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
2942 /* ./syntax//icode_generation.nit:551 */
2943 fra.me.REG[0] = CALL_parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
2944 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
2945 }
2946 /* ./syntax//icode_generation.nit:555 */
2947 fra.me.REG[4] = CALL_icode_base___IIf___else_seq(fra.me.REG[4])(fra.me.REG[4]);
2948 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2949 /* ./syntax//icode_generation.nit:556 */
2950 CALL_icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2951 /* ./syntax//icode_generation.nit:558 */
2952 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
2953 /* ./syntax//icode_generation.nit:559 */
2954 fra.me.REG[2] = NIT_NULL;
2955 goto label1;
2956 label1: while(0);
2957 stack_frame_head = fra.me.prev;
2958 return fra.me.REG[2];
2959 }
2960 val_t icode_generation___ALoopExpr___generate_icode(val_t p0, val_t p1){
2961 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
2962 val_t REGB0;
2963 val_t REGB1;
2964 val_t tmp;
2965 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2966 fra.me.file = LOCATE_icode_generation;
2967 fra.me.line = 564;
2968 fra.me.meth = LOCATE_icode_generation___ALoopExpr___generate_icode;
2969 fra.me.has_broke = 0;
2970 fra.me.REG_size = 5;
2971 fra.me.REG[0] = NIT_NULL;
2972 fra.me.REG[1] = NIT_NULL;
2973 fra.me.REG[2] = NIT_NULL;
2974 fra.me.REG[3] = NIT_NULL;
2975 fra.me.REG[4] = NIT_NULL;
2976 fra.me.REG[0] = p0;
2977 fra.me.REG[1] = p1;
2978 /* ./syntax//icode_generation.nit:566 */
2979 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
2980 /* ./syntax//icode_generation.nit:567 */
2981 fra.me.REG[3] = NEW_ILoop_icode_base___ILoop___init();
2982 /* ./syntax//icode_generation.nit:568 */
2983 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2984 /* ./syntax//icode_generation.nit:569 */
2985 fra.me.REG[4] = CALL_typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
2986 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
2987 if (UNTAG_Bool(REGB0)) {
2988 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 569);
2989 }
2990 CALL_icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
2991 /* ./syntax//icode_generation.nit:570 */
2992 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
2993 /* ./syntax//icode_generation.nit:573 */
2994 fra.me.REG[3] = CALL_parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
2995 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2996 if (UNTAG_Bool(REGB0)) {
2997 } else {
2998 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2999 if (UNTAG_Bool(REGB1)) {
3000 REGB1 = TAG_Bool(false);
3001 REGB0 = REGB1;
3002 } else {
3003 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
3004 REGB0 = REGB1;
3005 }
3006 }
3007 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
3008 if (UNTAG_Bool(REGB0)) {
3009 /* ./syntax//icode_generation.nit:574 */
3010 fra.me.REG[3] = NEW_ISeq_icode_base___ISeq___init();
3011 /* ./syntax//icode_generation.nit:575 */
3012 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3013 /* ./syntax//icode_generation.nit:576 */
3014 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3015 /* ./syntax//icode_generation.nit:577 */
3016 fra.me.REG[4] = CALL_typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3017 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3018 if (UNTAG_Bool(REGB0)) {
3019 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 577);
3020 }
3021 CALL_icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3022 /* ./syntax//icode_generation.nit:578 */
3023 fra.me.REG[0] = CALL_parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3024 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3025 }
3026 /* ./syntax//icode_generation.nit:581 */
3027 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3028 /* ./syntax//icode_generation.nit:582 */
3029 fra.me.REG[2] = NIT_NULL;
3030 goto label1;
3031 label1: while(0);
3032 stack_frame_head = fra.me.prev;
3033 return fra.me.REG[2];
3034 }
3035 val_t icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
3036 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
3037 val_t REGB0;
3038 val_t REGB1;
3039 val_t tmp;
3040 static val_t once_value_1; /* Once value */
3041 static val_t once_value_2; /* Once value */
3042 static val_t once_value_3; /* Once value */
3043 static val_t once_value_4; /* Once value */
3044 static val_t once_value_5; /* Once value */
3045 static val_t once_value_6; /* Once value */
3046 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3047 fra.me.file = LOCATE_icode_generation;
3048 fra.me.line = 587;
3049 fra.me.meth = LOCATE_icode_generation___AForExpr___generate_icode;
3050 fra.me.has_broke = 0;
3051 fra.me.REG_size = 9;
3052 fra.me.REG[0] = NIT_NULL;
3053 fra.me.REG[1] = NIT_NULL;
3054 fra.me.REG[2] = NIT_NULL;
3055 fra.me.REG[3] = NIT_NULL;
3056 fra.me.REG[4] = NIT_NULL;
3057 fra.me.REG[5] = NIT_NULL;
3058 fra.me.REG[6] = NIT_NULL;
3059 fra.me.REG[7] = NIT_NULL;
3060 fra.me.REG[8] = NIT_NULL;
3061 fra.me.REG[0] = p0;
3062 fra.me.REG[1] = p1;
3063 /* ./syntax//icode_generation.nit:589 */
3064 fra.me.REG[2] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3065 /* ./syntax//icode_generation.nit:590 */
3066 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
3067 /* ./syntax//icode_generation.nit:591 */
3068 fra.me.REG[4] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3069 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[4])(fra.me.REG[4]);
3070 /* ./syntax//icode_generation.nit:595 */
3071 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_ARangeExpr, ID_ARangeExpr)) /*cast ARangeExpr*/;
3072 if (UNTAG_Bool(REGB0)) {
3073 fra.me.REG[5] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3074 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___type_range(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
3075 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[5]));
3076 if (UNTAG_Bool(REGB0)) {
3077 } else {
3078 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
3079 REGB0 = REGB1;
3080 }
3081 } else {
3082 REGB1 = TAG_Bool(false);
3083 REGB0 = REGB1;
3084 }
3085 if (UNTAG_Bool(REGB0)) {
3086 /* ./syntax//icode_generation.nit:600 */
3087 REGB0 = TAG_Int(2);
3088 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
3089 fra.me.REG[6] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
3090 fra.me.REG[6] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3091 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3092 fra.me.REG[6] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
3093 fra.me.REG[6] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3094 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
3095 /* ./syntax//icode_generation.nit:601 */
3096 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_ACrangeExpr, ID_ACrangeExpr)) /*cast ACrangeExpr*/;
3097 if (UNTAG_Bool(REGB0)) {
3098 /* ./syntax//icode_generation.nit:602 */
3099 fra.me.REG[6] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3100 if (!once_value_1) {
3101 if (!once_value_2) {
3102 fra.me.REG[7] = BOX_NativeString("enumerate_to");
3103 REGB0 = TAG_Int(12);
3104 fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB0);
3105 once_value_2 = fra.me.REG[7];
3106 register_static_object(&once_value_2);
3107 } else fra.me.REG[7] = once_value_2;
3108 fra.me.REG[7] = fra.me.REG[7];
3109 fra.me.REG[7] = CALL_symbol___String___to_symbol(fra.me.REG[7])(fra.me.REG[7]);
3110 once_value_1 = fra.me.REG[7];
3111 register_static_object(&once_value_1);
3112 } else fra.me.REG[7] = once_value_1;
3113 fra.me.REG[7] = fra.me.REG[7];
3114 fra.me.REG[7] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4], fra.me.REG[7]);
3115 } else {
3116 /* ./syntax//icode_generation.nit:604 */
3117 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_AOrangeExpr, ID_AOrangeExpr)) /*cast AOrangeExpr*/;
3118 if (UNTAG_Bool(REGB0)) {
3119 } else {
3120 nit_abort("Assert failed", NULL, LOCATE_icode_generation, 604);
3121 }
3122 /* ./syntax//icode_generation.nit:605 */
3123 fra.me.REG[2] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3124 if (!once_value_3) {
3125 if (!once_value_4) {
3126 fra.me.REG[6] = BOX_NativeString("enumerate_before");
3127 REGB0 = TAG_Int(16);
3128 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
3129 once_value_4 = fra.me.REG[6];
3130 register_static_object(&once_value_4);
3131 } else fra.me.REG[6] = once_value_4;
3132 fra.me.REG[6] = fra.me.REG[6];
3133 fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
3134 once_value_3 = fra.me.REG[6];
3135 register_static_object(&once_value_3);
3136 } else fra.me.REG[6] = once_value_3;
3137 fra.me.REG[6] = fra.me.REG[6];
3138 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4], fra.me.REG[6]);
3139 fra.me.REG[7] = fra.me.REG[6];
3140 }
3141 } else {
3142 /* ./syntax//icode_generation.nit:611 */
3143 fra.me.REG[6] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3144 if (!once_value_5) {
3145 if (!once_value_6) {
3146 fra.me.REG[4] = BOX_NativeString("iterate");
3147 REGB0 = TAG_Int(7);
3148 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3149 once_value_6 = fra.me.REG[4];
3150 register_static_object(&once_value_6);
3151 } else fra.me.REG[4] = once_value_6;
3152 fra.me.REG[4] = fra.me.REG[4];
3153 fra.me.REG[4] = CALL_symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
3154 once_value_5 = fra.me.REG[4];
3155 register_static_object(&once_value_5);
3156 } else fra.me.REG[4] = once_value_5;
3157 fra.me.REG[4] = fra.me.REG[4];
3158 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3], fra.me.REG[4]);
3159 fra.me.REG[7] = fra.me.REG[4];
3160 /* ./syntax//icode_generation.nit:612 */
3161 REGB0 = TAG_Int(1);
3162 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
3163 fra.me.REG[3] = CALL_parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3164 fra.me.REG[3] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3165 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
3166 fra.me.REG[5] = fra.me.REG[4];
3167 }
3168 /* ./syntax//icode_generation.nit:616 */
3169 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
3170 if (UNTAG_Bool(REGB0)) {
3171 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 616);
3172 }
3173 fra.me.REG[4] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
3174 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3175 if (UNTAG_Bool(REGB0)) {
3176 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 616);
3177 }
3178 fra.me.REG[4] = CALL_static_type___MMSignature___closures(fra.me.REG[4])(fra.me.REG[4]);
3179 fra.me.REG[4] = CALL_abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
3180 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
3181 if (UNTAG_Bool(REGB0)) {
3182 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 616);
3183 }
3184 fra.me.REG[4] = CALL_static_type___MMClosure___signature(fra.me.REG[4])(fra.me.REG[4]);
3185 fra.me.REG[4] = CALL_icode_builder___MMSignature___generate_empty_iclosuredef(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
3186 /* ./syntax//icode_generation.nit:617 */
3187 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3188 /* ./syntax//icode_generation.nit:619 */
3189 fra.me.REG[6] = NEW_ISeq_icode_base___ISeq___init();
3190 /* ./syntax//icode_generation.nit:620 */
3191 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3192 /* ./syntax//icode_generation.nit:621 */
3193 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3194 /* ./syntax//icode_generation.nit:622 */
3195 fra.me.REG[2] = CALL_typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3196 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3197 if (UNTAG_Bool(REGB0)) {
3198 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 622);
3199 }
3200 CALL_icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
3201 /* ./syntax//icode_generation.nit:623 */
3202 fra.me.REG[2] = CALL_typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3203 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3204 if (UNTAG_Bool(REGB0)) {
3205 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 623);
3206 }
3207 CALL_icode_generation___EscapableBlock___break_value__eq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
3208 /* ./syntax//icode_generation.nit:625 */
3209 fra.me.REG[2] = CALL_icode_base___IRoutine___body(fra.me.REG[4])(fra.me.REG[4]);
3210 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3211 /* ./syntax//icode_generation.nit:626 */
3212 fra.me.REG[2] = CALL_typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3213 fra.me.REG[8] = CALL_icode_base___IRoutine___body(fra.me.REG[4])(fra.me.REG[4]);
3214 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
3215 if (UNTAG_Bool(REGB0)) {
3216 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 626);
3217 }
3218 CALL_icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
3219 /* ./syntax//icode_generation.nit:627 */
3220 fra.me.REG[8] = CALL_typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
3221 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
3222 if (UNTAG_Bool(REGB0)) {
3223 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 627);
3224 }
3225 CALL_icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
3226 /* ./syntax//icode_generation.nit:628 */
3227 fra.me.REG[8] = CALL_syntax_base___AForExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3228 fra.me.REG[8] = CALL_icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
3229 fra.me.REG[2] = CALL_icode_base___IRoutine___params(fra.me.REG[4])(fra.me.REG[4]);
3230 fra.me.REG[2] = CALL_abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
3231 fra.me.REG[2] = NEW_IMove_icode_base___IMove___init(fra.me.REG[8], fra.me.REG[2]);
3232 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3233 /* ./syntax//icode_generation.nit:629 */
3234 fra.me.REG[0] = CALL_parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
3235 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3236 /* ./syntax//icode_generation.nit:632 */
3237 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3238 /* ./syntax//icode_generation.nit:633 */
3239 REGB0 = TAG_Int(1);
3240 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
3241 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
3242 CALL_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]);
3243 /* ./syntax//icode_generation.nit:635 */
3244 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3245 /* ./syntax//icode_generation.nit:636 */
3246 fra.me.REG[3] = NIT_NULL;
3247 goto label7;
3248 label7: while(0);
3249 stack_frame_head = fra.me.prev;
3250 return fra.me.REG[3];
3251 }
3252 val_t icode_generation___AAssertExpr___generate_icode(val_t p0, val_t p1){
3253 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
3254 val_t REGB0;
3255 val_t REGB1;
3256 val_t tmp;
3257 static val_t once_value_1; /* Once value */
3258 static val_t once_value_2; /* Once value */
3259 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3260 fra.me.file = LOCATE_icode_generation;
3261 fra.me.line = 641;
3262 fra.me.meth = LOCATE_icode_generation___AAssertExpr___generate_icode;
3263 fra.me.has_broke = 0;
3264 fra.me.REG_size = 5;
3265 fra.me.REG[0] = NIT_NULL;
3266 fra.me.REG[1] = NIT_NULL;
3267 fra.me.REG[2] = NIT_NULL;
3268 fra.me.REG[3] = NIT_NULL;
3269 fra.me.REG[4] = NIT_NULL;
3270 fra.me.REG[0] = p0;
3271 fra.me.REG[1] = p1;
3272 /* ./syntax//icode_generation.nit:643 */
3273 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3274 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3275 /* ./syntax//icode_generation.nit:644 */
3276 fra.me.REG[2] = NEW_IIf_icode_base___IIf___init(fra.me.REG[2]);
3277 /* ./syntax//icode_generation.nit:645 */
3278 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3279 /* ./syntax//icode_generation.nit:646 */
3280 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3281 /* ./syntax//icode_generation.nit:647 */
3282 fra.me.REG[2] = CALL_icode_base___IIf___else_seq(fra.me.REG[2])(fra.me.REG[2]);
3283 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3284 /* ./syntax//icode_generation.nit:648 */
3285 fra.me.REG[2] = CALL_parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3286 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3287 /* ./syntax//icode_generation.nit:649 */
3288 fra.me.REG[0] = CALL_parser_nodes___AAssertExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
3289 /* ./syntax//icode_generation.nit:650 */
3290 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3291 if (UNTAG_Bool(REGB0)) {
3292 } else {
3293 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3294 if (UNTAG_Bool(REGB1)) {
3295 REGB1 = TAG_Bool(false);
3296 REGB0 = REGB1;
3297 } else {
3298 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
3299 REGB0 = REGB1;
3300 }
3301 }
3302 if (UNTAG_Bool(REGB0)) {
3303 /* ./syntax//icode_generation.nit:651 */
3304 REGB0 = TAG_Int(0);
3305 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
3306 if (!once_value_1) {
3307 fra.me.REG[4] = BOX_NativeString("Assert failed");
3308 REGB0 = TAG_Int(13);
3309 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3310 once_value_1 = fra.me.REG[4];
3311 register_static_object(&once_value_1);
3312 } else fra.me.REG[4] = once_value_1;
3313 fra.me.REG[4] = fra.me.REG[4];
3314 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3315 CALL_icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3316 } else {
3317 /* ./syntax//icode_generation.nit:653 */
3318 REGB0 = TAG_Int(1);
3319 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
3320 if (!once_value_2) {
3321 fra.me.REG[4] = BOX_NativeString("Assert %s failed");
3322 REGB0 = TAG_Int(17);
3323 fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB0);
3324 once_value_2 = fra.me.REG[4];
3325 register_static_object(&once_value_2);
3326 } else fra.me.REG[4] = once_value_2;
3327 fra.me.REG[4] = fra.me.REG[4];
3328 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
3329 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3330 if (UNTAG_Bool(REGB0)) {
3331 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 653);
3332 }
3333 fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
3334 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
3335 CALL_icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3336 }
3337 /* ./syntax//icode_generation.nit:655 */
3338 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3339 /* ./syntax//icode_generation.nit:656 */
3340 fra.me.REG[3] = NIT_NULL;
3341 goto label3;
3342 label3: while(0);
3343 stack_frame_head = fra.me.prev;
3344 return fra.me.REG[3];
3345 }
3346 val_t icode_generation___AVarExpr___generate_icode(val_t p0, val_t p1){
3347 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3348 val_t tmp;
3349 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3350 fra.me.file = LOCATE_icode_generation;
3351 fra.me.line = 661;
3352 fra.me.meth = LOCATE_icode_generation___AVarExpr___generate_icode;
3353 fra.me.has_broke = 0;
3354 fra.me.REG_size = 2;
3355 fra.me.REG[0] = NIT_NULL;
3356 fra.me.REG[1] = NIT_NULL;
3357 fra.me.REG[0] = p0;
3358 fra.me.REG[1] = p1;
3359 /* ./syntax//icode_generation.nit:663 */
3360 fra.me.REG[0] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3361 fra.me.REG[0] = CALL_icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3362 goto label1;
3363 label1: while(0);
3364 stack_frame_head = fra.me.prev;
3365 return fra.me.REG[0];
3366 }
3367 val_t icode_generation___AVarAssignExpr___generate_icode(val_t p0, val_t p1){
3368 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3369 val_t tmp;
3370 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3371 fra.me.file = LOCATE_icode_generation;
3372 fra.me.line = 668;
3373 fra.me.meth = LOCATE_icode_generation___AVarAssignExpr___generate_icode;
3374 fra.me.has_broke = 0;
3375 fra.me.REG_size = 3;
3376 fra.me.REG[0] = NIT_NULL;
3377 fra.me.REG[1] = NIT_NULL;
3378 fra.me.REG[2] = NIT_NULL;
3379 fra.me.REG[0] = p0;
3380 fra.me.REG[1] = p1;
3381 /* ./syntax//icode_generation.nit:670 */
3382 fra.me.REG[2] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
3383 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3384 /* ./syntax//icode_generation.nit:671 */
3385 fra.me.REG[0] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3386 fra.me.REG[0] = CALL_icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3387 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
3388 /* ./syntax//icode_generation.nit:672 */
3389 fra.me.REG[2] = NIT_NULL;
3390 goto label1;
3391 label1: while(0);
3392 stack_frame_head = fra.me.prev;
3393 return fra.me.REG[2];
3394 }
3395 val_t icode_generation___AVarReassignExpr___generate_icode(val_t p0, val_t p1){
3396 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3397 val_t REGB0;
3398 val_t tmp;
3399 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3400 fra.me.file = LOCATE_icode_generation;
3401 fra.me.line = 677;
3402 fra.me.meth = LOCATE_icode_generation___AVarReassignExpr___generate_icode;
3403 fra.me.has_broke = 0;
3404 fra.me.REG_size = 6;
3405 fra.me.REG[0] = NIT_NULL;
3406 fra.me.REG[1] = NIT_NULL;
3407 fra.me.REG[2] = NIT_NULL;
3408 fra.me.REG[3] = NIT_NULL;
3409 fra.me.REG[4] = NIT_NULL;
3410 fra.me.REG[5] = NIT_NULL;
3411 fra.me.REG[0] = p0;
3412 fra.me.REG[1] = p1;
3413 /* ./syntax//icode_generation.nit:679 */
3414 fra.me.REG[2] = CALL_syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3415 fra.me.REG[2] = CALL_icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3416 /* ./syntax//icode_generation.nit:680 */
3417 fra.me.REG[3] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
3418 fra.me.REG[3] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3419 /* ./syntax//icode_generation.nit:681 */
3420 fra.me.REG[4] = CALL_syntax_base___AReassignFormExpr___assign_method(fra.me.REG[0])(fra.me.REG[0]);
3421 REGB0 = TAG_Int(2);
3422 fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
3423 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
3424 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
3425 fra.me.REG[5] = NEW_ICall_icode_base___ICall___init(fra.me.REG[4], fra.me.REG[5]);
3426 fra.me.REG[0] = CALL_syntax_base___AReassignFormExpr___assign_method(fra.me.REG[0])(fra.me.REG[0]);
3427 fra.me.REG[0] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
3428 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
3429 if (UNTAG_Bool(REGB0)) {
3430 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 681);
3431 }
3432 fra.me.REG[0] = CALL_static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
3433 REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_MMType, ID_MMType)) /*cast MMType*/;
3434 if (UNTAG_Bool(REGB0)) {
3435 } else {
3436 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 681);
3437 }
3438 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[0]);
3439 /* ./syntax//icode_generation.nit:682 */
3440 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
3441 /* ./syntax//icode_generation.nit:683 */
3442 fra.me.REG[0] = NIT_NULL;
3443 goto label1;
3444 label1: while(0);
3445 stack_frame_head = fra.me.prev;
3446 return fra.me.REG[0];
3447 }
3448 val_t icode_generation___ASelfExpr___generate_icode(val_t p0, val_t p1){
3449 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3450 val_t tmp;
3451 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3452 fra.me.file = LOCATE_icode_generation;
3453 fra.me.line = 688;
3454 fra.me.meth = LOCATE_icode_generation___ASelfExpr___generate_icode;
3455 fra.me.has_broke = 0;
3456 fra.me.REG_size = 2;
3457 fra.me.REG[0] = NIT_NULL;
3458 fra.me.REG[1] = NIT_NULL;
3459 fra.me.REG[0] = p0;
3460 fra.me.REG[1] = p1;
3461 /* ./syntax//icode_generation.nit:690 */
3462 fra.me.REG[0] = CALL_syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
3463 fra.me.REG[0] = CALL_icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3464 goto label1;
3465 label1: while(0);
3466 stack_frame_head = fra.me.prev;
3467 return fra.me.REG[0];
3468 }
3469 val_t icode_generation___AIfexprExpr___generate_icode(val_t p0, val_t p1){
3470 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3471 val_t tmp;
3472 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3473 fra.me.file = LOCATE_icode_generation;
3474 fra.me.line = 695;
3475 fra.me.meth = LOCATE_icode_generation___AIfexprExpr___generate_icode;
3476 fra.me.has_broke = 0;
3477 fra.me.REG_size = 6;
3478 fra.me.REG[0] = NIT_NULL;
3479 fra.me.REG[1] = NIT_NULL;
3480 fra.me.REG[2] = NIT_NULL;
3481 fra.me.REG[3] = NIT_NULL;
3482 fra.me.REG[4] = NIT_NULL;
3483 fra.me.REG[5] = NIT_NULL;
3484 fra.me.REG[0] = p0;
3485 fra.me.REG[1] = p1;
3486 /* ./syntax//icode_generation.nit:698 */
3487 fra.me.REG[2] = CALL_parser_nodes___AIfexprExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3488 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3489 fra.me.REG[2] = NEW_IIf_icode_base___IIf___init(fra.me.REG[2]);
3490 /* ./syntax//icode_generation.nit:699 */
3491 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3492 /* ./syntax//icode_generation.nit:700 */
3493 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3494 /* ./syntax//icode_generation.nit:703 */
3495 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3496 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3497 /* ./syntax//icode_generation.nit:706 */
3498 fra.me.REG[5] = CALL_icode_base___IIf___then_seq(fra.me.REG[2])(fra.me.REG[2]);
3499 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3500 /* ./syntax//icode_generation.nit:707 */
3501 fra.me.REG[5] = CALL_parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
3502 fra.me.REG[5] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3503 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
3504 /* ./syntax//icode_generation.nit:710 */
3505 fra.me.REG[2] = CALL_icode_base___IIf___else_seq(fra.me.REG[2])(fra.me.REG[2]);
3506 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3507 /* ./syntax//icode_generation.nit:711 */
3508 fra.me.REG[0] = CALL_parser_nodes___AIfexprExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
3509 fra.me.REG[0] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3510 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
3511 /* ./syntax//icode_generation.nit:713 */
3512 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3513 /* ./syntax//icode_generation.nit:714 */
3514 goto label1;
3515 label1: while(0);
3516 stack_frame_head = fra.me.prev;
3517 return fra.me.REG[4];
3518 }
3519 val_t icode_generation___AEeExpr___generate_icode(val_t p0, val_t p1){
3520 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3521 val_t tmp;
3522 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3523 fra.me.file = LOCATE_icode_generation;
3524 fra.me.line = 719;
3525 fra.me.meth = LOCATE_icode_generation___AEeExpr___generate_icode;
3526 fra.me.has_broke = 0;
3527 fra.me.REG_size = 4;
3528 fra.me.REG[0] = NIT_NULL;
3529 fra.me.REG[1] = NIT_NULL;
3530 fra.me.REG[2] = NIT_NULL;
3531 fra.me.REG[3] = NIT_NULL;
3532 fra.me.REG[0] = p0;
3533 fra.me.REG[1] = p1;
3534 /* ./syntax//icode_generation.nit:721 */
3535 fra.me.REG[2] = CALL_parser_nodes___AEeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3536 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3537 /* ./syntax//icode_generation.nit:722 */
3538 fra.me.REG[3] = CALL_parser_nodes___AEeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
3539 fra.me.REG[3] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3540 /* ./syntax//icode_generation.nit:723 */
3541 fra.me.REG[3] = NEW_IIs_icode_base___IIs___init(fra.me.REG[2], fra.me.REG[3]);
3542 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3543 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
3544 goto label1;
3545 label1: while(0);
3546 stack_frame_head = fra.me.prev;
3547 return fra.me.REG[0];
3548 }
3549 val_t icode_generation___AOrExpr___generate_icode(val_t p0, val_t p1){
3550 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3551 val_t tmp;
3552 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3553 fra.me.file = LOCATE_icode_generation;
3554 fra.me.line = 728;
3555 fra.me.meth = LOCATE_icode_generation___AOrExpr___generate_icode;
3556 fra.me.has_broke = 0;
3557 fra.me.REG_size = 6;
3558 fra.me.REG[0] = NIT_NULL;
3559 fra.me.REG[1] = NIT_NULL;
3560 fra.me.REG[2] = NIT_NULL;
3561 fra.me.REG[3] = NIT_NULL;
3562 fra.me.REG[4] = NIT_NULL;
3563 fra.me.REG[5] = NIT_NULL;
3564 fra.me.REG[0] = p0;
3565 fra.me.REG[1] = p1;
3566 /* ./syntax//icode_generation.nit:731 */
3567 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3568 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3569 /* ./syntax//icode_generation.nit:734 */
3570 fra.me.REG[3] = CALL_parser_nodes___AOrExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3571 fra.me.REG[3] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3572 fra.me.REG[3] = NEW_IIf_icode_base___IIf___init(fra.me.REG[3]);
3573 /* ./syntax//icode_generation.nit:735 */
3574 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3575 /* ./syntax//icode_generation.nit:736 */
3576 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3577 /* ./syntax//icode_generation.nit:737 */
3578 fra.me.REG[5] = CALL_icode_base___IIf___then_seq(fra.me.REG[3])(fra.me.REG[3]);
3579 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3580 /* ./syntax//icode_generation.nit:738 */
3581 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___lit_true_reg(fra.me.REG[1])(fra.me.REG[1]);
3582 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[5]);
3583 /* ./syntax//icode_generation.nit:741 */
3584 fra.me.REG[3] = CALL_icode_base___IIf___else_seq(fra.me.REG[3])(fra.me.REG[3]);
3585 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3586 /* ./syntax//icode_generation.nit:742 */
3587 fra.me.REG[0] = CALL_parser_nodes___AOrExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
3588 fra.me.REG[0] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3589 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
3590 /* ./syntax//icode_generation.nit:744 */
3591 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3592 /* ./syntax//icode_generation.nit:745 */
3593 goto label1;
3594 label1: while(0);
3595 stack_frame_head = fra.me.prev;
3596 return fra.me.REG[2];
3597 }
3598 val_t icode_generation___AAndExpr___generate_icode(val_t p0, val_t p1){
3599 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
3600 val_t tmp;
3601 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3602 fra.me.file = LOCATE_icode_generation;
3603 fra.me.line = 750;
3604 fra.me.meth = LOCATE_icode_generation___AAndExpr___generate_icode;
3605 fra.me.has_broke = 0;
3606 fra.me.REG_size = 6;
3607 fra.me.REG[0] = NIT_NULL;
3608 fra.me.REG[1] = NIT_NULL;
3609 fra.me.REG[2] = NIT_NULL;
3610 fra.me.REG[3] = NIT_NULL;
3611 fra.me.REG[4] = NIT_NULL;
3612 fra.me.REG[5] = NIT_NULL;
3613 fra.me.REG[0] = p0;
3614 fra.me.REG[1] = p1;
3615 /* ./syntax//icode_generation.nit:753 */
3616 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3617 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3618 /* ./syntax//icode_generation.nit:756 */
3619 fra.me.REG[3] = CALL_parser_nodes___AAndExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3620 fra.me.REG[3] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3621 fra.me.REG[3] = NEW_IIf_icode_base___IIf___init(fra.me.REG[3]);
3622 /* ./syntax//icode_generation.nit:757 */
3623 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3624 /* ./syntax//icode_generation.nit:758 */
3625 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3626 /* ./syntax//icode_generation.nit:759 */
3627 fra.me.REG[5] = CALL_icode_base___IIf___else_seq(fra.me.REG[3])(fra.me.REG[3]);
3628 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3629 /* ./syntax//icode_generation.nit:760 */
3630 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[1])(fra.me.REG[1]);
3631 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[5]);
3632 /* ./syntax//icode_generation.nit:763 */
3633 fra.me.REG[3] = CALL_icode_base___IIf___then_seq(fra.me.REG[3])(fra.me.REG[3]);
3634 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3635 /* ./syntax//icode_generation.nit:764 */
3636 fra.me.REG[0] = CALL_parser_nodes___AAndExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
3637 fra.me.REG[0] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3638 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
3639 /* ./syntax//icode_generation.nit:766 */
3640 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3641 /* ./syntax//icode_generation.nit:767 */
3642 goto label1;
3643 label1: while(0);
3644 stack_frame_head = fra.me.prev;
3645 return fra.me.REG[2];
3646 }
3647 val_t icode_generation___ANotExpr___generate_icode(val_t p0, val_t p1){
3648 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3649 val_t tmp;
3650 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3651 fra.me.file = LOCATE_icode_generation;
3652 fra.me.line = 772;
3653 fra.me.meth = LOCATE_icode_generation___ANotExpr___generate_icode;
3654 fra.me.has_broke = 0;
3655 fra.me.REG_size = 3;
3656 fra.me.REG[0] = NIT_NULL;
3657 fra.me.REG[1] = NIT_NULL;
3658 fra.me.REG[2] = NIT_NULL;
3659 fra.me.REG[0] = p0;
3660 fra.me.REG[1] = p1;
3661 /* ./syntax//icode_generation.nit:774 */
3662 fra.me.REG[2] = CALL_parser_nodes___ANotExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3663 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3664 /* ./syntax//icode_generation.nit:775 */
3665 fra.me.REG[2] = NEW_INot_icode_base___INot___init(fra.me.REG[2]);
3666 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3667 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
3668 goto label1;
3669 label1: while(0);
3670 stack_frame_head = fra.me.prev;
3671 return fra.me.REG[0];
3672 }
3673 val_t icode_generation___AOrElseExpr___generate_icode(val_t p0, val_t p1){
3674 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
3675 val_t tmp;
3676 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3677 fra.me.file = LOCATE_icode_generation;
3678 fra.me.line = 780;
3679 fra.me.meth = LOCATE_icode_generation___AOrElseExpr___generate_icode;
3680 fra.me.has_broke = 0;
3681 fra.me.REG_size = 7;
3682 fra.me.REG[0] = NIT_NULL;
3683 fra.me.REG[1] = NIT_NULL;
3684 fra.me.REG[2] = NIT_NULL;
3685 fra.me.REG[3] = NIT_NULL;
3686 fra.me.REG[4] = NIT_NULL;
3687 fra.me.REG[5] = NIT_NULL;
3688 fra.me.REG[6] = NIT_NULL;
3689 fra.me.REG[0] = p0;
3690 fra.me.REG[1] = p1;
3691 /* ./syntax//icode_generation.nit:783 */
3692 fra.me.REG[2] = CALL_parser_nodes___AOrElseExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3693 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3694 /* ./syntax//icode_generation.nit:786 */
3695 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3696 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3697 /* ./syntax//icode_generation.nit:789 */
3698 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[1])(fra.me.REG[1]);
3699 /* ./syntax//icode_generation.nit:790 */
3700 fra.me.REG[4] = NEW_IIs_icode_base___IIs___init(fra.me.REG[2], fra.me.REG[4]);
3701 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
3702 fra.me.REG[5] = CALL_static_type___MMModule___type_bool(fra.me.REG[5])(fra.me.REG[5]);
3703 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
3704 /* ./syntax//icode_generation.nit:791 */
3705 fra.me.REG[5] = NEW_IIf_icode_base___IIf___init(fra.me.REG[5]);
3706 /* ./syntax//icode_generation.nit:792 */
3707 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3708 /* ./syntax//icode_generation.nit:793 */
3709 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3710 /* ./syntax//icode_generation.nit:796 */
3711 fra.me.REG[6] = CALL_icode_base___IIf___then_seq(fra.me.REG[5])(fra.me.REG[5]);
3712 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
3713 /* ./syntax//icode_generation.nit:797 */
3714 fra.me.REG[0] = CALL_parser_nodes___AOrElseExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
3715 fra.me.REG[0] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
3716 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
3717 /* ./syntax//icode_generation.nit:800 */
3718 fra.me.REG[5] = CALL_icode_base___IIf___else_seq(fra.me.REG[5])(fra.me.REG[5]);
3719 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
3720 /* ./syntax//icode_generation.nit:801 */
3721 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
3722 /* ./syntax//icode_generation.nit:803 */
3723 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
3724 /* ./syntax//icode_generation.nit:805 */
3725 goto label1;
3726 label1: while(0);
3727 stack_frame_head = fra.me.prev;
3728 return fra.me.REG[3];
3729 }
3730 val_t icode_generation___AIsaExpr___generate_icode(val_t p0, val_t p1){
3731 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
3732 val_t tmp;
3733 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3734 fra.me.file = LOCATE_icode_generation;
3735 fra.me.line = 810;
3736 fra.me.meth = LOCATE_icode_generation___AIsaExpr___generate_icode;
3737 fra.me.has_broke = 0;
3738 fra.me.REG_size = 4;
3739 fra.me.REG[0] = NIT_NULL;
3740 fra.me.REG[1] = NIT_NULL;
3741 fra.me.REG[2] = NIT_NULL;
3742 fra.me.REG[3] = NIT_NULL;
3743 fra.me.REG[0] = p0;
3744 fra.me.REG[1] = p1;
3745 /* ./syntax//icode_generation.nit:812 */
3746 fra.me.REG[2] = CALL_parser_nodes___AIsaExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3747 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3748 /* ./syntax//icode_generation.nit:813 */
3749 fra.me.REG[3] = CALL_parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
3750 fra.me.REG[3] = CALL_syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
3751 fra.me.REG[3] = NEW_ITypeCheck_icode_base___ITypeCheck___init(fra.me.REG[2], fra.me.REG[3]);
3752 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3753 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
3754 goto label1;
3755 label1: while(0);
3756 stack_frame_head = fra.me.prev;
3757 return fra.me.REG[0];
3758 }
3759 val_t icode_generation___AAsCastExpr___generate_icode(val_t p0, val_t p1){
3760 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3761 val_t tmp;
3762 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3763 fra.me.file = LOCATE_icode_generation;
3764 fra.me.line = 818;
3765 fra.me.meth = LOCATE_icode_generation___AAsCastExpr___generate_icode;
3766 fra.me.has_broke = 0;
3767 fra.me.REG_size = 3;
3768 fra.me.REG[0] = NIT_NULL;
3769 fra.me.REG[1] = NIT_NULL;
3770 fra.me.REG[2] = NIT_NULL;
3771 fra.me.REG[0] = p0;
3772 fra.me.REG[1] = p1;
3773 /* ./syntax//icode_generation.nit:820 */
3774 fra.me.REG[2] = CALL_parser_nodes___AAsCastExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3775 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3776 /* ./syntax//icode_generation.nit:821 */
3777 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3778 CALL_icode_builder___ICodeBuilder___add_type_cast(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
3779 /* ./syntax//icode_generation.nit:822 */
3780 goto label1;
3781 label1: while(0);
3782 stack_frame_head = fra.me.prev;
3783 return fra.me.REG[2];
3784 }
3785 val_t icode_generation___AAsNotnullExpr___generate_icode(val_t p0, val_t p1){
3786 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3787 val_t tmp;
3788 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3789 fra.me.file = LOCATE_icode_generation;
3790 fra.me.line = 827;
3791 fra.me.meth = LOCATE_icode_generation___AAsNotnullExpr___generate_icode;
3792 fra.me.has_broke = 0;
3793 fra.me.REG_size = 3;
3794 fra.me.REG[0] = NIT_NULL;
3795 fra.me.REG[1] = NIT_NULL;
3796 fra.me.REG[2] = NIT_NULL;
3797 fra.me.REG[0] = p0;
3798 fra.me.REG[1] = p1;
3799 /* ./syntax//icode_generation.nit:829 */
3800 fra.me.REG[2] = CALL_parser_nodes___AAsNotnullExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
3801 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
3802 /* ./syntax//icode_generation.nit:830 */
3803 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3804 CALL_icode_builder___ICodeBuilder___add_type_cast(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
3805 /* ./syntax//icode_generation.nit:831 */
3806 goto label1;
3807 label1: while(0);
3808 stack_frame_head = fra.me.prev;
3809 return fra.me.REG[2];
3810 }
3811 val_t icode_generation___ATrueExpr___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_icode_generation;
3816 fra.me.line = 836;
3817 fra.me.meth = LOCATE_icode_generation___ATrueExpr___generate_icode;
3818 fra.me.has_broke = 0;
3819 fra.me.REG_size = 2;
3820 fra.me.REG[0] = NIT_NULL;
3821 fra.me.REG[1] = NIT_NULL;
3822 fra.me.REG[0] = p0;
3823 fra.me.REG[1] = p1;
3824 /* ./syntax//icode_generation.nit:838 */
3825 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___lit_true_reg(fra.me.REG[1])(fra.me.REG[1]);
3826 goto label1;
3827 label1: while(0);
3828 stack_frame_head = fra.me.prev;
3829 return fra.me.REG[1];
3830 }
3831 val_t icode_generation___AFalseExpr___generate_icode(val_t p0, val_t p1){
3832 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
3833 val_t tmp;
3834 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3835 fra.me.file = LOCATE_icode_generation;
3836 fra.me.line = 843;
3837 fra.me.meth = LOCATE_icode_generation___AFalseExpr___generate_icode;
3838 fra.me.has_broke = 0;
3839 fra.me.REG_size = 2;
3840 fra.me.REG[0] = NIT_NULL;
3841 fra.me.REG[1] = NIT_NULL;
3842 fra.me.REG[0] = p0;
3843 fra.me.REG[1] = p1;
3844 /* ./syntax//icode_generation.nit:845 */
3845 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[1])(fra.me.REG[1]);
3846 goto label1;
3847 label1: while(0);
3848 stack_frame_head = fra.me.prev;
3849 return fra.me.REG[1];
3850 }
3851 val_t icode_generation___AIntExpr___generate_icode(val_t p0, val_t p1){
3852 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3853 val_t tmp;
3854 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3855 fra.me.file = LOCATE_icode_generation;
3856 fra.me.line = 850;
3857 fra.me.meth = LOCATE_icode_generation___AIntExpr___generate_icode;
3858 fra.me.has_broke = 0;
3859 fra.me.REG_size = 3;
3860 fra.me.REG[0] = NIT_NULL;
3861 fra.me.REG[1] = NIT_NULL;
3862 fra.me.REG[2] = NIT_NULL;
3863 fra.me.REG[0] = p0;
3864 fra.me.REG[1] = p1;
3865 /* ./syntax//icode_generation.nit:852 */
3866 fra.me.REG[2] = CALL_parser_nodes___AIntExpr___n_number(fra.me.REG[0])(fra.me.REG[0]);
3867 fra.me.REG[2] = CALL_lexer___Token___text(fra.me.REG[2])(fra.me.REG[2]);
3868 fra.me.REG[2] = NEW_IIntValue_icode_base___IIntValue___init(fra.me.REG[2]);
3869 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3870 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
3871 goto label1;
3872 label1: while(0);
3873 stack_frame_head = fra.me.prev;
3874 return fra.me.REG[0];
3875 }
3876 val_t icode_generation___AFloatExpr___generate_icode(val_t p0, val_t p1){
3877 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3878 val_t tmp;
3879 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3880 fra.me.file = LOCATE_icode_generation;
3881 fra.me.line = 857;
3882 fra.me.meth = LOCATE_icode_generation___AFloatExpr___generate_icode;
3883 fra.me.has_broke = 0;
3884 fra.me.REG_size = 3;
3885 fra.me.REG[0] = NIT_NULL;
3886 fra.me.REG[1] = NIT_NULL;
3887 fra.me.REG[2] = NIT_NULL;
3888 fra.me.REG[0] = p0;
3889 fra.me.REG[1] = p1;
3890 /* ./syntax//icode_generation.nit:859 */
3891 fra.me.REG[2] = CALL_parser_nodes___AFloatExpr___n_float(fra.me.REG[0])(fra.me.REG[0]);
3892 fra.me.REG[2] = CALL_lexer___Token___text(fra.me.REG[2])(fra.me.REG[2]);
3893 fra.me.REG[2] = NEW_IFloatValue_icode_base___IFloatValue___init(fra.me.REG[2]);
3894 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3895 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
3896 goto label1;
3897 label1: while(0);
3898 stack_frame_head = fra.me.prev;
3899 return fra.me.REG[0];
3900 }
3901 val_t icode_generation___ACharExpr___generate_icode(val_t p0, val_t p1){
3902 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
3903 val_t tmp;
3904 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3905 fra.me.file = LOCATE_icode_generation;
3906 fra.me.line = 864;
3907 fra.me.meth = LOCATE_icode_generation___ACharExpr___generate_icode;
3908 fra.me.has_broke = 0;
3909 fra.me.REG_size = 3;
3910 fra.me.REG[0] = NIT_NULL;
3911 fra.me.REG[1] = NIT_NULL;
3912 fra.me.REG[2] = NIT_NULL;
3913 fra.me.REG[0] = p0;
3914 fra.me.REG[1] = p1;
3915 /* ./syntax//icode_generation.nit:866 */
3916 fra.me.REG[2] = CALL_parser_nodes___ACharExpr___n_char(fra.me.REG[0])(fra.me.REG[0]);
3917 fra.me.REG[2] = CALL_lexer___Token___text(fra.me.REG[2])(fra.me.REG[2]);
3918 fra.me.REG[2] = NEW_ICharValue_icode_base___ICharValue___init(fra.me.REG[2]);
3919 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3920 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
3921 goto label1;
3922 label1: while(0);
3923 stack_frame_head = fra.me.prev;
3924 return fra.me.REG[0];
3925 }
3926 val_t icode_generation___AStringFormExpr___generate_icode(val_t p0, val_t p1){
3927 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
3928 val_t REGB0;
3929 val_t tmp;
3930 static val_t once_value_1; /* Once value */
3931 static val_t once_value_2; /* Once value */
3932 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
3933 fra.me.file = LOCATE_icode_generation;
3934 fra.me.line = 871;
3935 fra.me.meth = LOCATE_icode_generation___AStringFormExpr___generate_icode;
3936 fra.me.has_broke = 0;
3937 fra.me.REG_size = 9;
3938 fra.me.REG[0] = NIT_NULL;
3939 fra.me.REG[1] = NIT_NULL;
3940 fra.me.REG[2] = NIT_NULL;
3941 fra.me.REG[3] = NIT_NULL;
3942 fra.me.REG[4] = NIT_NULL;
3943 fra.me.REG[5] = NIT_NULL;
3944 fra.me.REG[6] = NIT_NULL;
3945 fra.me.REG[7] = NIT_NULL;
3946 fra.me.REG[8] = NIT_NULL;
3947 fra.me.REG[0] = p0;
3948 fra.me.REG[1] = p1;
3949 /* ./syntax//icode_generation.nit:873 */
3950 CALL_icode_generation___AStringFormExpr___compute_string_infos(fra.me.REG[0])(fra.me.REG[0]);
3951 /* ./syntax//icode_generation.nit:874 */
3952 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
3953 /* ./syntax//icode_generation.nit:875 */
3954 fra.me.REG[3] = NEW_IOnce_icode_base___IOnce___init();
3955 /* ./syntax//icode_generation.nit:876 */
3956 fra.me.REG[4] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3957 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
3958 /* ./syntax//icode_generation.nit:877 */
3959 fra.me.REG[3] = CALL_icode_base___IOnce___body(fra.me.REG[3])(fra.me.REG[3]);
3960 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
3961 /* ./syntax//icode_generation.nit:878 */
3962 fra.me.REG[3] = ATTR_icode_generation___AStringFormExpr____cstring(fra.me.REG[0]);
3963 REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
3964 if (UNTAG_Bool(REGB0)) {
3965 } else {
3966 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 878);
3967 }
3968 fra.me.REG[3] = NEW_IStringValue_icode_base___IStringValue___init(fra.me.REG[3]);
3969 fra.me.REG[5] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3970 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___type_nativestring(fra.me.REG[5])(fra.me.REG[5]);
3971 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
3972 /* ./syntax//icode_generation.nit:879 */
3973 fra.me.REG[3] = ATTR_icode_generation___AStringFormExpr____cstring_length(fra.me.REG[0]);
3974 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
3975 if (UNTAG_Bool(REGB0)) {
3976 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 879);
3977 }
3978 fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
3979 fra.me.REG[3] = NEW_IIntValue_icode_base___IIntValue___init(fra.me.REG[3]);
3980 fra.me.REG[6] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3981 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[6])(fra.me.REG[6]);
3982 fra.me.REG[6] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[6]);
3983 /* ./syntax//icode_generation.nit:880 */
3984 fra.me.REG[3] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
3985 fra.me.REG[7] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
3986 if (!once_value_1) {
3987 if (!once_value_2) {
3988 fra.me.REG[8] = BOX_NativeString("with_native");
3989 REGB0 = TAG_Int(11);
3990 fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB0);
3991 once_value_2 = fra.me.REG[8];
3992 register_static_object(&once_value_2);
3993 } else fra.me.REG[8] = once_value_2;
3994 fra.me.REG[8] = fra.me.REG[8];
3995 fra.me.REG[8] = CALL_symbol___String___to_symbol(fra.me.REG[8])(fra.me.REG[8]);
3996 once_value_1 = fra.me.REG[8];
3997 register_static_object(&once_value_1);
3998 } else fra.me.REG[8] = once_value_1;
3999 fra.me.REG[8] = fra.me.REG[8];
4000 fra.me.REG[8] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7], fra.me.REG[8]);
4001 /* ./syntax//icode_generation.nit:881 */
4002 fra.me.REG[7] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4003 REGB0 = TAG_Int(2);
4004 fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
4005 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
4006 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
4007 fra.me.REG[3] = NEW_INew_icode_base___INew___init(fra.me.REG[7], fra.me.REG[8], fra.me.REG[3]);
4008 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4009 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
4010 /* ./syntax//icode_generation.nit:882 */
4011 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
4012 /* ./syntax//icode_generation.nit:883 */
4013 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4014 /* ./syntax//icode_generation.nit:884 */
4015 goto label3;
4016 label3: while(0);
4017 stack_frame_head = fra.me.prev;
4018 return fra.me.REG[4];
4019 }
4020 val_t icode_generation___AStringFormExpr___string_text(val_t p0){
4021 struct {struct stack_frame_t me;} fra;
4022 val_t tmp;
4023 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4024 fra.me.file = LOCATE_icode_generation;
4025 fra.me.line = 887;
4026 fra.me.meth = LOCATE_icode_generation___AStringFormExpr___string_text;
4027 fra.me.has_broke = 0;
4028 fra.me.REG_size = 0;
4029 /* ./syntax//icode_generation.nit:887 */
4030 nit_abort("Deferred method called", NULL, LOCATE_icode_generation, 887);
4031 stack_frame_head = fra.me.prev;
4032 return NIT_NULL;
4033 }
4034 void icode_generation___AStringFormExpr___compute_string_infos(val_t p0){
4035 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4036 val_t REGB0;
4037 val_t REGB1;
4038 val_t REGB2;
4039 val_t REGB3;
4040 val_t REGB4;
4041 val_t REGB5;
4042 val_t tmp;
4043 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4044 fra.me.file = LOCATE_icode_generation;
4045 fra.me.line = 896;
4046 fra.me.meth = LOCATE_icode_generation___AStringFormExpr___compute_string_infos;
4047 fra.me.has_broke = 0;
4048 fra.me.REG_size = 3;
4049 fra.me.REG[0] = NIT_NULL;
4050 fra.me.REG[1] = NIT_NULL;
4051 fra.me.REG[2] = NIT_NULL;
4052 fra.me.REG[0] = p0;
4053 /* ./syntax//icode_generation.nit:899 */
4054 REGB0 = TAG_Int(0);
4055 /* ./syntax//icode_generation.nit:900 */
4056 fra.me.REG[1] = CALL_icode_generation___AStringFormExpr___string_text(fra.me.REG[0])(fra.me.REG[0]);
4057 /* ./syntax//icode_generation.nit:901 */
4058 fra.me.REG[2] = NEW_Buffer_string___Buffer___init();
4059 /* ./syntax//icode_generation.nit:902 */
4060 REGB1 = TAG_Int(0);
4061 /* ./syntax//icode_generation.nit:903 */
4062 while(1) {
4063 /* ./../lib/standard//collection//array.nit:23 */
4064 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
4065 if (UNTAG_Bool(REGB2)) {
4066 } else {
4067 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
4068 }
4069 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[1]);
4070 /* ./../lib/standard//kernel.nit:212 */
4071 REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
4072 /* ./syntax//icode_generation.nit:903 */
4073 if (UNTAG_Bool(REGB2)) {
4074 /* ./syntax//icode_generation.nit:904 */
4075 REGB2 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
4076 /* ./syntax//icode_generation.nit:905 */
4077 REGB3 = TAG_Char('\\');
4078 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
4079 if (UNTAG_Bool(REGB4)) {
4080 } else {
4081 /* ./../lib/standard//kernel.nit:347 */
4082 REGB3 = TAG_Bool((REGB2)==(REGB3));
4083 /* ./syntax//icode_generation.nit:905 */
4084 REGB4 = REGB3;
4085 }
4086 if (UNTAG_Bool(REGB4)) {
4087 /* ./syntax//icode_generation.nit:906 */
4088 REGB4 = TAG_Int(1);
4089 /* ./../lib/standard//kernel.nit:215 */
4090 REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
4091 /* ./syntax//icode_generation.nit:906 */
4092 REGB1 = REGB4;
4093 /* ./syntax//icode_generation.nit:907 */
4094 REGB4 = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
4095 /* ./syntax//icode_generation.nit:908 */
4096 REGB3 = TAG_Char('{');
4097 REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
4098 if (UNTAG_Bool(REGB5)) {
4099 } else {
4100 /* ./../lib/standard//kernel.nit:347 */
4101 REGB3 = TAG_Bool((REGB4)==(REGB3));
4102 /* ./syntax//icode_generation.nit:908 */
4103 REGB5 = REGB3;
4104 }
4105 REGB5 = TAG_Bool(!UNTAG_Bool(REGB5));
4106 if (UNTAG_Bool(REGB5)) {
4107 REGB5 = TAG_Char('}');
4108 REGB3 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB5));
4109 if (UNTAG_Bool(REGB3)) {
4110 } else {
4111 /* ./../lib/standard//kernel.nit:347 */
4112 REGB5 = TAG_Bool((REGB4)==(REGB5));
4113 /* ./syntax//icode_generation.nit:908 */
4114 REGB3 = REGB5;
4115 }
4116 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
4117 } else {
4118 REGB5 = TAG_Bool(false);
4119 REGB3 = REGB5;
4120 }
4121 if (UNTAG_Bool(REGB3)) {
4122 /* ./syntax//icode_generation.nit:909 */
4123 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB2);
4124 }
4125 /* ./syntax//icode_generation.nit:911 */
4126 REGB2 = REGB4;
4127 }
4128 /* ./syntax//icode_generation.nit:913 */
4129 REGB4 = TAG_Int(1);
4130 /* ./../lib/standard//kernel.nit:215 */
4131 REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
4132 /* ./syntax//icode_generation.nit:913 */
4133 REGB0 = REGB4;
4134 /* ./syntax//icode_generation.nit:914 */
4135 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB2);
4136 /* ./syntax//icode_generation.nit:915 */
4137 REGB2 = TAG_Int(1);
4138 /* ./../lib/standard//kernel.nit:215 */
4139 REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
4140 /* ./syntax//icode_generation.nit:915 */
4141 REGB1 = REGB2;
4142 } else {
4143 /* ./syntax//icode_generation.nit:903 */
4144 goto label1;
4145 }
4146 }
4147 label1: while(0);
4148 /* ./syntax//icode_generation.nit:917 */
4149 fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
4150 ATTR_icode_generation___AStringFormExpr____cstring(fra.me.REG[0]) = fra.me.REG[2];
4151 /* ./syntax//icode_generation.nit:918 */
4152 ATTR_icode_generation___AStringFormExpr____cstring_length(fra.me.REG[0]) = REGB0;
4153 stack_frame_head = fra.me.prev;
4154 return;
4155 }
4156 val_t icode_generation___AStringExpr___string_text(val_t p0){
4157 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4158 val_t REGB0;
4159 val_t REGB1;
4160 val_t REGB2;
4161 val_t tmp;
4162 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4163 fra.me.file = LOCATE_icode_generation;
4164 fra.me.line = 923;
4165 fra.me.meth = LOCATE_icode_generation___AStringExpr___string_text;
4166 fra.me.has_broke = 0;
4167 fra.me.REG_size = 2;
4168 fra.me.REG[0] = NIT_NULL;
4169 fra.me.REG[1] = NIT_NULL;
4170 fra.me.REG[0] = p0;
4171 /* ./syntax//icode_generation.nit:923 */
4172 fra.me.REG[1] = CALL_parser_nodes___AStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4173 fra.me.REG[1] = CALL_lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
4174 REGB0 = TAG_Int(1);
4175 fra.me.REG[0] = CALL_parser_nodes___AStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4176 fra.me.REG[0] = CALL_lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
4177 /* ./../lib/standard//collection//array.nit:23 */
4178 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
4179 if (UNTAG_Bool(REGB1)) {
4180 } else {
4181 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
4182 }
4183 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
4184 /* ./syntax//icode_generation.nit:923 */
4185 REGB2 = TAG_Int(2);
4186 /* ./../lib/standard//kernel.nit:217 */
4187 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
4188 /* ./syntax//icode_generation.nit:923 */
4189 fra.me.REG[1] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
4190 goto label1;
4191 label1: while(0);
4192 stack_frame_head = fra.me.prev;
4193 return fra.me.REG[1];
4194 }
4195 val_t icode_generation___AStartStringExpr___string_text(val_t p0){
4196 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4197 val_t REGB0;
4198 val_t REGB1;
4199 val_t REGB2;
4200 val_t tmp;
4201 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4202 fra.me.file = LOCATE_icode_generation;
4203 fra.me.line = 926;
4204 fra.me.meth = LOCATE_icode_generation___AStartStringExpr___string_text;
4205 fra.me.has_broke = 0;
4206 fra.me.REG_size = 2;
4207 fra.me.REG[0] = NIT_NULL;
4208 fra.me.REG[1] = NIT_NULL;
4209 fra.me.REG[0] = p0;
4210 /* ./syntax//icode_generation.nit:926 */
4211 fra.me.REG[1] = CALL_parser_nodes___AStartStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4212 fra.me.REG[1] = CALL_lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
4213 REGB0 = TAG_Int(1);
4214 fra.me.REG[0] = CALL_parser_nodes___AStartStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4215 fra.me.REG[0] = CALL_lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
4216 /* ./../lib/standard//collection//array.nit:23 */
4217 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
4218 if (UNTAG_Bool(REGB1)) {
4219 } else {
4220 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
4221 }
4222 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
4223 /* ./syntax//icode_generation.nit:926 */
4224 REGB2 = TAG_Int(2);
4225 /* ./../lib/standard//kernel.nit:217 */
4226 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
4227 /* ./syntax//icode_generation.nit:926 */
4228 fra.me.REG[1] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
4229 goto label1;
4230 label1: while(0);
4231 stack_frame_head = fra.me.prev;
4232 return fra.me.REG[1];
4233 }
4234 val_t icode_generation___AMidStringExpr___string_text(val_t p0){
4235 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4236 val_t REGB0;
4237 val_t REGB1;
4238 val_t REGB2;
4239 val_t tmp;
4240 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4241 fra.me.file = LOCATE_icode_generation;
4242 fra.me.line = 929;
4243 fra.me.meth = LOCATE_icode_generation___AMidStringExpr___string_text;
4244 fra.me.has_broke = 0;
4245 fra.me.REG_size = 2;
4246 fra.me.REG[0] = NIT_NULL;
4247 fra.me.REG[1] = NIT_NULL;
4248 fra.me.REG[0] = p0;
4249 /* ./syntax//icode_generation.nit:929 */
4250 fra.me.REG[1] = CALL_parser_nodes___AMidStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4251 fra.me.REG[1] = CALL_lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
4252 REGB0 = TAG_Int(1);
4253 fra.me.REG[0] = CALL_parser_nodes___AMidStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4254 fra.me.REG[0] = CALL_lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
4255 /* ./../lib/standard//collection//array.nit:23 */
4256 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
4257 if (UNTAG_Bool(REGB1)) {
4258 } else {
4259 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
4260 }
4261 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
4262 /* ./syntax//icode_generation.nit:929 */
4263 REGB2 = TAG_Int(2);
4264 /* ./../lib/standard//kernel.nit:217 */
4265 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
4266 /* ./syntax//icode_generation.nit:929 */
4267 fra.me.REG[1] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
4268 goto label1;
4269 label1: while(0);
4270 stack_frame_head = fra.me.prev;
4271 return fra.me.REG[1];
4272 }
4273 val_t icode_generation___AEndStringExpr___string_text(val_t p0){
4274 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4275 val_t REGB0;
4276 val_t REGB1;
4277 val_t REGB2;
4278 val_t tmp;
4279 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4280 fra.me.file = LOCATE_icode_generation;
4281 fra.me.line = 932;
4282 fra.me.meth = LOCATE_icode_generation___AEndStringExpr___string_text;
4283 fra.me.has_broke = 0;
4284 fra.me.REG_size = 2;
4285 fra.me.REG[0] = NIT_NULL;
4286 fra.me.REG[1] = NIT_NULL;
4287 fra.me.REG[0] = p0;
4288 /* ./syntax//icode_generation.nit:932 */
4289 fra.me.REG[1] = CALL_parser_nodes___AEndStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4290 fra.me.REG[1] = CALL_lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
4291 REGB0 = TAG_Int(1);
4292 fra.me.REG[0] = CALL_parser_nodes___AEndStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
4293 fra.me.REG[0] = CALL_lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
4294 /* ./../lib/standard//collection//array.nit:23 */
4295 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
4296 if (UNTAG_Bool(REGB1)) {
4297 } else {
4298 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
4299 }
4300 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
4301 /* ./syntax//icode_generation.nit:932 */
4302 REGB2 = TAG_Int(2);
4303 /* ./../lib/standard//kernel.nit:217 */
4304 REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
4305 /* ./syntax//icode_generation.nit:932 */
4306 fra.me.REG[1] = CALL_string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
4307 goto label1;
4308 label1: while(0);
4309 stack_frame_head = fra.me.prev;
4310 return fra.me.REG[1];
4311 }
4312 val_t icode_generation___ASuperstringExpr___generate_icode(val_t p0, val_t p1){
4313 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
4314 val_t REGB0;
4315 val_t tmp;
4316 static val_t once_value_1; /* Once value */
4317 static val_t once_value_2; /* Once value */
4318 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4319 fra.me.file = LOCATE_icode_generation;
4320 fra.me.line = 936;
4321 fra.me.meth = LOCATE_icode_generation___ASuperstringExpr___generate_icode;
4322 fra.me.has_broke = 0;
4323 fra.me.REG_size = 6;
4324 fra.me.REG[0] = NIT_NULL;
4325 fra.me.REG[1] = NIT_NULL;
4326 fra.me.REG[2] = NIT_NULL;
4327 fra.me.REG[3] = NIT_NULL;
4328 fra.me.REG[4] = NIT_NULL;
4329 fra.me.REG[5] = NIT_NULL;
4330 fra.me.REG[0] = p0;
4331 fra.me.REG[1] = p1;
4332 /* ./syntax//icode_generation.nit:938 */
4333 fra.me.REG[2] = CALL_syntax_base___ASuperstringExpr___atype(fra.me.REG[0])(fra.me.REG[0]);
4334 fra.me.REG[3] = CALL_parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
4335 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
4336 fra.me.REG[2] = CALL_icode_generation___A2IContext___add_new_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], REGB0);
4337 /* ./syntax//icode_generation.nit:939 */
4338 fra.me.REG[3] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
4339 fra.me.REG[4] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
4340 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[4])(fra.me.REG[4]);
4341 if (!once_value_1) {
4342 if (!once_value_2) {
4343 fra.me.REG[5] = BOX_NativeString("to_s");
4344 REGB0 = TAG_Int(4);
4345 fra.me.REG[5] = NEW_String_string___String___with_native(fra.me.REG[5], REGB0);
4346 once_value_2 = fra.me.REG[5];
4347 register_static_object(&once_value_2);
4348 } else fra.me.REG[5] = once_value_2;
4349 fra.me.REG[5] = fra.me.REG[5];
4350 fra.me.REG[5] = CALL_symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
4351 once_value_1 = fra.me.REG[5];
4352 register_static_object(&once_value_1);
4353 } else fra.me.REG[5] = once_value_1;
4354 fra.me.REG[5] = fra.me.REG[5];
4355 fra.me.REG[5] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
4356 /* ./syntax//icode_generation.nit:940 */
4357 fra.me.REG[4] = CALL_parser_nodes___ASuperstringExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
4358 CALL_abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_icode_generation___ASuperstringExpr___generate_icode_3));
4359 /* ./syntax//icode_generation.nit:947 */
4360 REGB0 = TAG_Int(1);
4361 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
4362 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4363 fra.me.REG[4] = NEW_ICall_icode_base___ICall___init(fra.me.REG[5], fra.me.REG[4]);
4364 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4365 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
4366 goto label4;
4367 label4: while(0);
4368 stack_frame_head = fra.me.prev;
4369 return fra.me.REG[0];
4370 }
4371 void OC_icode_generation___ASuperstringExpr___generate_icode_3(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
4372 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
4373 val_t REGB0;
4374 val_t REGB1;
4375 fun_t CREG[1];
4376 val_t tmp;
4377 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4378 fra.me.file = LOCATE_icode_generation;
4379 fra.me.line = 0;
4380 fra.me.meth = LOCATE_icode_generation___ASuperstringExpr___generate_icode;
4381 fra.me.has_broke = 0;
4382 fra.me.REG_size = 3;
4383 fra.me.REG[0] = NIT_NULL;
4384 fra.me.REG[1] = NIT_NULL;
4385 fra.me.REG[2] = NIT_NULL;
4386 fra.me.closure_ctx = closctx_param;
4387 fra.me.closure_funs = CREG;
4388 fra.me.REG[0] = p0;
4389 CREG[0] = clos_fun0;
4390 /* ./syntax//icode_generation.nit:941 */
4391 fra.me.REG[1] = CALL_icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
4392 /* ./syntax//icode_generation.nit:942 */
4393 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4394 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(closctx->REG[0])(closctx->REG[0]);
4395 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[2]));
4396 if (UNTAG_Bool(REGB0)) {
4397 } else {
4398 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
4399 REGB0 = REGB1;
4400 }
4401 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4402 if (UNTAG_Bool(REGB0)) {
4403 /* ./syntax//icode_generation.nit:943 */
4404 REGB0 = TAG_Int(1);
4405 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
4406 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
4407 fra.me.REG[2] = NEW_ICall_icode_base___ICall___init(closctx->REG[5], fra.me.REG[2]);
4408 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(closctx->REG[0])(closctx->REG[0]);
4409 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[2], fra.me.REG[0]);
4410 fra.me.REG[1] = fra.me.REG[0];
4411 }
4412 /* ./syntax//icode_generation.nit:945 */
4413 CALL_icode_generation___A2IContext___add_call_array_add(closctx->REG[1])(closctx->REG[1], closctx->REG[2], fra.me.REG[1]);
4414 stack_frame_head = fra.me.prev;
4415 return;
4416 }
4417 val_t icode_generation___ANullExpr___generate_icode(val_t p0, val_t p1){
4418 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
4419 val_t tmp;
4420 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4421 fra.me.file = LOCATE_icode_generation;
4422 fra.me.line = 952;
4423 fra.me.meth = LOCATE_icode_generation___ANullExpr___generate_icode;
4424 fra.me.has_broke = 0;
4425 fra.me.REG_size = 2;
4426 fra.me.REG[0] = NIT_NULL;
4427 fra.me.REG[1] = NIT_NULL;
4428 fra.me.REG[0] = p0;
4429 fra.me.REG[1] = p1;
4430 /* ./syntax//icode_generation.nit:954 */
4431 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[1])(fra.me.REG[1]);
4432 goto label1;
4433 label1: while(0);
4434 stack_frame_head = fra.me.prev;
4435 return fra.me.REG[1];
4436 }
4437 val_t icode_generation___AArrayExpr___generate_icode(val_t p0, val_t p1){
4438 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4439 val_t REGB0;
4440 val_t tmp;
4441 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4442 fra.me.file = LOCATE_icode_generation;
4443 fra.me.line = 959;
4444 fra.me.meth = LOCATE_icode_generation___AArrayExpr___generate_icode;
4445 fra.me.has_broke = 0;
4446 fra.me.REG_size = 4;
4447 fra.me.REG[0] = NIT_NULL;
4448 fra.me.REG[1] = NIT_NULL;
4449 fra.me.REG[2] = NIT_NULL;
4450 fra.me.REG[3] = NIT_NULL;
4451 fra.me.REG[0] = p0;
4452 fra.me.REG[1] = p1;
4453 /* ./syntax//icode_generation.nit:961 */
4454 fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4455 fra.me.REG[3] = CALL_parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
4456 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
4457 fra.me.REG[2] = CALL_icode_generation___A2IContext___add_new_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], REGB0);
4458 /* ./syntax//icode_generation.nit:962 */
4459 fra.me.REG[0] = CALL_parser_nodes___AArrayExpr___n_exprs(fra.me.REG[0])(fra.me.REG[0]);
4460 CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_icode_generation___AArrayExpr___generate_icode_1));
4461 /* ./syntax//icode_generation.nit:966 */
4462 goto label2;
4463 label2: while(0);
4464 stack_frame_head = fra.me.prev;
4465 return fra.me.REG[2];
4466 }
4467 void OC_icode_generation___AArrayExpr___generate_icode_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
4468 struct {struct stack_frame_t me;} fra;
4469 fun_t CREG[1];
4470 val_t tmp;
4471 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4472 fra.me.file = LOCATE_icode_generation;
4473 fra.me.line = 0;
4474 fra.me.meth = LOCATE_icode_generation___AArrayExpr___generate_icode;
4475 fra.me.has_broke = 0;
4476 fra.me.REG_size = 1;
4477 fra.me.REG[0] = NIT_NULL;
4478 fra.me.closure_ctx = closctx_param;
4479 fra.me.closure_funs = CREG;
4480 fra.me.REG[0] = p0;
4481 CREG[0] = clos_fun0;
4482 /* ./syntax//icode_generation.nit:963 */
4483 fra.me.REG[0] = CALL_icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
4484 /* ./syntax//icode_generation.nit:964 */
4485 CALL_icode_generation___A2IContext___add_call_array_add(closctx->REG[1])(closctx->REG[1], closctx->REG[2], fra.me.REG[0]);
4486 stack_frame_head = fra.me.prev;
4487 return;
4488 }
4489 val_t icode_generation___ACrangeExpr___generate_icode(val_t p0, val_t p1){
4490 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
4491 val_t REGB0;
4492 val_t tmp;
4493 static val_t once_value_1; /* Once value */
4494 static val_t once_value_2; /* Once value */
4495 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4496 fra.me.file = LOCATE_icode_generation;
4497 fra.me.line = 971;
4498 fra.me.meth = LOCATE_icode_generation___ACrangeExpr___generate_icode;
4499 fra.me.has_broke = 0;
4500 fra.me.REG_size = 7;
4501 fra.me.REG[0] = NIT_NULL;
4502 fra.me.REG[1] = NIT_NULL;
4503 fra.me.REG[2] = NIT_NULL;
4504 fra.me.REG[3] = NIT_NULL;
4505 fra.me.REG[4] = NIT_NULL;
4506 fra.me.REG[5] = NIT_NULL;
4507 fra.me.REG[6] = NIT_NULL;
4508 fra.me.REG[0] = p0;
4509 fra.me.REG[1] = p1;
4510 /* ./syntax//icode_generation.nit:973 */
4511 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4512 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4513 /* ./syntax//icode_generation.nit:974 */
4514 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4515 fra.me.REG[3] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4516 /* ./syntax//icode_generation.nit:975 */
4517 fra.me.REG[4] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
4518 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4519 if (!once_value_1) {
4520 if (!once_value_2) {
4521 fra.me.REG[6] = BOX_NativeString("init");
4522 REGB0 = TAG_Int(4);
4523 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4524 once_value_2 = fra.me.REG[6];
4525 register_static_object(&once_value_2);
4526 } else fra.me.REG[6] = once_value_2;
4527 fra.me.REG[6] = fra.me.REG[6];
4528 fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
4529 once_value_1 = fra.me.REG[6];
4530 register_static_object(&once_value_1);
4531 } else fra.me.REG[6] = once_value_1;
4532 fra.me.REG[6] = fra.me.REG[6];
4533 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
4534 /* ./syntax//icode_generation.nit:976 */
4535 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4536 REGB0 = TAG_Int(2);
4537 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
4538 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4539 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4540 fra.me.REG[4] = NEW_INew_icode_base___INew___init(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4]);
4541 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4542 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
4543 goto label3;
4544 label3: while(0);
4545 stack_frame_head = fra.me.prev;
4546 return fra.me.REG[0];
4547 }
4548 val_t icode_generation___AOrangeExpr___generate_icode(val_t p0, val_t p1){
4549 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
4550 val_t REGB0;
4551 val_t tmp;
4552 static val_t once_value_1; /* Once value */
4553 static val_t once_value_2; /* Once value */
4554 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4555 fra.me.file = LOCATE_icode_generation;
4556 fra.me.line = 981;
4557 fra.me.meth = LOCATE_icode_generation___AOrangeExpr___generate_icode;
4558 fra.me.has_broke = 0;
4559 fra.me.REG_size = 7;
4560 fra.me.REG[0] = NIT_NULL;
4561 fra.me.REG[1] = NIT_NULL;
4562 fra.me.REG[2] = NIT_NULL;
4563 fra.me.REG[3] = NIT_NULL;
4564 fra.me.REG[4] = NIT_NULL;
4565 fra.me.REG[5] = NIT_NULL;
4566 fra.me.REG[6] = NIT_NULL;
4567 fra.me.REG[0] = p0;
4568 fra.me.REG[1] = p1;
4569 /* ./syntax//icode_generation.nit:983 */
4570 fra.me.REG[2] = CALL_parser_nodes___ARangeExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4571 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4572 /* ./syntax//icode_generation.nit:984 */
4573 fra.me.REG[3] = CALL_parser_nodes___ARangeExpr___n_expr2(fra.me.REG[0])(fra.me.REG[0]);
4574 fra.me.REG[3] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4575 /* ./syntax//icode_generation.nit:985 */
4576 fra.me.REG[4] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
4577 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4578 if (!once_value_1) {
4579 if (!once_value_2) {
4580 fra.me.REG[6] = BOX_NativeString("without_last");
4581 REGB0 = TAG_Int(12);
4582 fra.me.REG[6] = NEW_String_string___String___with_native(fra.me.REG[6], REGB0);
4583 once_value_2 = fra.me.REG[6];
4584 register_static_object(&once_value_2);
4585 } else fra.me.REG[6] = once_value_2;
4586 fra.me.REG[6] = fra.me.REG[6];
4587 fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
4588 once_value_1 = fra.me.REG[6];
4589 register_static_object(&once_value_1);
4590 } else fra.me.REG[6] = once_value_1;
4591 fra.me.REG[6] = fra.me.REG[6];
4592 fra.me.REG[6] = CALL_syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
4593 /* ./syntax//icode_generation.nit:986 */
4594 fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4595 REGB0 = TAG_Int(2);
4596 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
4597 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
4598 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
4599 fra.me.REG[4] = NEW_INew_icode_base___INew___init(fra.me.REG[5], fra.me.REG[6], fra.me.REG[4]);
4600 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
4601 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
4602 goto label3;
4603 label3: while(0);
4604 stack_frame_head = fra.me.prev;
4605 return fra.me.REG[0];
4606 }
4607 val_t icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1){
4608 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
4609 val_t REGB0;
4610 val_t REGB1;
4611 val_t REGB2;
4612 val_t REGB3;
4613 val_t tmp;
4614 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4615 fra.me.file = LOCATE_icode_generation;
4616 fra.me.line = 991;
4617 fra.me.meth = LOCATE_icode_generation___ASuperExpr___generate_icode;
4618 fra.me.has_broke = 0;
4619 fra.me.REG_size = 6;
4620 fra.me.REG[0] = NIT_NULL;
4621 fra.me.REG[1] = NIT_NULL;
4622 fra.me.REG[2] = NIT_NULL;
4623 fra.me.REG[3] = NIT_NULL;
4624 fra.me.REG[4] = NIT_NULL;
4625 fra.me.REG[5] = NIT_NULL;
4626 fra.me.REG[0] = p0;
4627 fra.me.REG[1] = p1;
4628 /* ./syntax//icode_generation.nit:993 */
4629 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
4630 fra.me.REG[2] = CALL_icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
4631 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
4632 REGB1 = TAG_Int(1);
4633 /* ./../lib/standard//kernel.nit:217 */
4634 REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
4635 /* ./syntax//icode_generation.nit:994 */
4636 fra.me.REG[2] = CALL_syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
4637 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4638 if (UNTAG_Bool(REGB0)) {
4639 } else {
4640 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4641 if (UNTAG_Bool(REGB2)) {
4642 REGB2 = TAG_Bool(false);
4643 REGB0 = REGB2;
4644 } else {
4645 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
4646 REGB0 = REGB2;
4647 }
4648 }
4649 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
4650 if (UNTAG_Bool(REGB0)) {
4651 /* ./syntax//icode_generation.nit:995 */
4652 fra.me.REG[2] = CALL_syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
4653 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4654 if (UNTAG_Bool(REGB0)) {
4655 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 995);
4656 }
4657 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
4658 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
4659 if (UNTAG_Bool(REGB0)) {
4660 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 995);
4661 }
4662 REGB0 = CALL_static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
4663 REGB1 = REGB0;
4664 }
4665 /* ./syntax//icode_generation.nit:997 */
4666 REGB0 = TAG_Int(1);
4667 /* ./../lib/standard//kernel.nit:215 */
4668 REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
4669 /* ./syntax//icode_generation.nit:997 */
4670 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
4671 /* ./syntax//icode_generation.nit:998 */
4672 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
4673 fra.me.REG[3] = CALL_icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
4674 REGB0 = TAG_Int(0);
4675 fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
4676 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4677 /* ./syntax//icode_generation.nit:999 */
4678 fra.me.REG[3] = CALL_parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
4679 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
4680 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
4681 if (UNTAG_Bool(REGB2)) {
4682 } else {
4683 /* ./../lib/standard//kernel.nit:207 */
4684 REGB0 = TAG_Bool((REGB0)==(REGB1));
4685 /* ./syntax//icode_generation.nit:999 */
4686 REGB2 = REGB0;
4687 }
4688 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4689 if (UNTAG_Bool(REGB2)) {
4690 /* ./syntax//icode_generation.nit:1000 */
4691 REGB2 = TAG_Int(0);
4692 /* ./../lib/standard//kernel.nit:332 */
4693 while(1) {
4694 /* ./../lib/standard//kernel.nit:212 */
4695 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
4696 /* ./../lib/standard//kernel.nit:332 */
4697 if (UNTAG_Bool(REGB0)) {
4698 /* ./syntax//icode_generation.nit:1000 */
4699 REGB0 = REGB2;
4700 /* ./syntax//icode_generation.nit:1001 */
4701 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
4702 fra.me.REG[3] = CALL_icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
4703 REGB3 = TAG_Int(1);
4704 /* ./../lib/standard//kernel.nit:215 */
4705 REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
4706 /* ./syntax//icode_generation.nit:1001 */
4707 fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB3);
4708 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
4709 /* ./../lib/standard//kernel.nit:334 */
4710 REGB3 = TAG_Int(1);
4711 /* ./../lib/standard//kernel.nit:215 */
4712 REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
4713 /* ./../lib/standard//kernel.nit:334 */
4714 REGB2 = REGB3;
4715 } else {
4716 /* ./../lib/standard//kernel.nit:332 */
4717 goto label1;
4718 }
4719 }
4720 label1: while(0);
4721 } else {
4722 /* ./syntax//icode_generation.nit:1004 */
4723 fra.me.REG[3] = CALL_parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
4724 CALL_abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_icode_generation___ASuperExpr___generate_icode_2));
4725 }
4726 /* ./syntax//icode_generation.nit:1008 */
4727 fra.me.REG[3] = CALL_syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
4728 /* ./syntax//icode_generation.nit:1009 */
4729 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4730 if (UNTAG_Bool(REGB2)) {
4731 } else {
4732 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4733 if (UNTAG_Bool(REGB1)) {
4734 REGB1 = TAG_Bool(false);
4735 REGB2 = REGB1;
4736 } else {
4737 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
4738 REGB2 = REGB1;
4739 }
4740 }
4741 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4742 if (UNTAG_Bool(REGB2)) {
4743 /* ./syntax//icode_generation.nit:1010 */
4744 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4745 if (UNTAG_Bool(REGB2)) {
4746 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1010);
4747 }
4748 fra.me.REG[4] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
4749 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4750 if (UNTAG_Bool(REGB2)) {
4751 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1010);
4752 }
4753 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
4754 /* ./syntax//icode_generation.nit:1011 */
4755 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4756 if (UNTAG_Bool(REGB2)) {
4757 } else {
4758 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
4759 if (UNTAG_Bool(REGB1)) {
4760 REGB1 = TAG_Bool(false);
4761 REGB2 = REGB1;
4762 } else {
4763 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
4764 REGB2 = REGB1;
4765 }
4766 }
4767 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
4768 if (UNTAG_Bool(REGB2)) {
4769 /* ./syntax//icode_generation.nit:1012 */
4770 fra.me.REG[5] = NEW_ICall_icode_base___ICall___init(fra.me.REG[3], fra.me.REG[2]);
4771 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[4]);
4772 goto label3;
4773 } else {
4774 /* ./syntax//icode_generation.nit:1014 */
4775 fra.me.REG[5] = NEW_ICall_icode_base___ICall___init(fra.me.REG[3], fra.me.REG[2]);
4776 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
4777 /* ./syntax//icode_generation.nit:1015 */
4778 fra.me.REG[4] = NIT_NULL;
4779 goto label3;
4780 }
4781 } else {
4782 /* ./syntax//icode_generation.nit:1018 */
4783 fra.me.REG[0] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
4784 fra.me.REG[3] = fra.me.REG[0];
4785 /* ./syntax//icode_generation.nit:1019 */
4786 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
4787 if (UNTAG_Bool(REGB2)) {
4788 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1019);
4789 }
4790 fra.me.REG[0] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
4791 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
4792 if (UNTAG_Bool(REGB2)) {
4793 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1019);
4794 }
4795 fra.me.REG[0] = CALL_static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
4796 /* ./syntax//icode_generation.nit:1020 */
4797 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
4798 if (UNTAG_Bool(REGB2)) {
4799 } else {
4800 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
4801 if (UNTAG_Bool(REGB1)) {
4802 REGB1 = TAG_Bool(false);
4803 REGB2 = REGB1;
4804 } else {
4805 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
4806 REGB2 = REGB1;
4807 }
4808 }
4809 if (UNTAG_Bool(REGB2)) {
4810 /* ./syntax//icode_generation.nit:1021 */
4811 fra.me.REG[5] = NEW_ISuper_icode_base___ISuper___init(fra.me.REG[3], fra.me.REG[2]);
4812 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
4813 /* ./syntax//icode_generation.nit:1022 */
4814 fra.me.REG[4] = NIT_NULL;
4815 goto label3;
4816 } else {
4817 /* ./syntax//icode_generation.nit:1024 */
4818 fra.me.REG[2] = NEW_ISuper_icode_base___ISuper___init(fra.me.REG[3], fra.me.REG[2]);
4819 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
4820 fra.me.REG[4] = fra.me.REG[0];
4821 goto label3;
4822 }
4823 }
4824 label3: while(0);
4825 stack_frame_head = fra.me.prev;
4826 return fra.me.REG[4];
4827 }
4828 void OC_icode_generation___ASuperExpr___generate_icode_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
4829 struct {struct stack_frame_t me;} fra;
4830 fun_t CREG[1];
4831 val_t tmp;
4832 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4833 fra.me.file = LOCATE_icode_generation;
4834 fra.me.line = 0;
4835 fra.me.meth = LOCATE_icode_generation___ASuperExpr___generate_icode;
4836 fra.me.has_broke = 0;
4837 fra.me.REG_size = 1;
4838 fra.me.REG[0] = NIT_NULL;
4839 fra.me.closure_ctx = closctx_param;
4840 fra.me.closure_funs = CREG;
4841 fra.me.REG[0] = p0;
4842 CREG[0] = clos_fun0;
4843 /* ./syntax//icode_generation.nit:1005 */
4844 fra.me.REG[0] = CALL_icode_generation___A2IContext___generate_expr(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
4845 CALL_abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
4846 stack_frame_head = fra.me.prev;
4847 return;
4848 }
4849 val_t icode_generation___AAttrExpr___generate_icode(val_t p0, val_t p1){
4850 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4851 val_t REGB0;
4852 val_t tmp;
4853 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4854 fra.me.file = LOCATE_icode_generation;
4855 fra.me.line = 1031;
4856 fra.me.meth = LOCATE_icode_generation___AAttrExpr___generate_icode;
4857 fra.me.has_broke = 0;
4858 fra.me.REG_size = 4;
4859 fra.me.REG[0] = NIT_NULL;
4860 fra.me.REG[1] = NIT_NULL;
4861 fra.me.REG[2] = NIT_NULL;
4862 fra.me.REG[3] = NIT_NULL;
4863 fra.me.REG[0] = p0;
4864 fra.me.REG[1] = p1;
4865 /* ./syntax//icode_generation.nit:1033 */
4866 fra.me.REG[2] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4867 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4868 /* ./syntax//icode_generation.nit:1034 */
4869 fra.me.REG[3] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4870 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4871 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
4872 if (UNTAG_Bool(REGB0)) {
4873 CALL_icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4874 }
4875 /* ./syntax//icode_generation.nit:1035 */
4876 fra.me.REG[0] = CALL_syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
4877 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___add_attr_read(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
4878 goto label1;
4879 label1: while(0);
4880 stack_frame_head = fra.me.prev;
4881 return fra.me.REG[2];
4882 }
4883 val_t icode_generation___AAttrAssignExpr___generate_icode(val_t p0, val_t p1){
4884 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4885 val_t REGB0;
4886 val_t tmp;
4887 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4888 fra.me.file = LOCATE_icode_generation;
4889 fra.me.line = 1040;
4890 fra.me.meth = LOCATE_icode_generation___AAttrAssignExpr___generate_icode;
4891 fra.me.has_broke = 0;
4892 fra.me.REG_size = 4;
4893 fra.me.REG[0] = NIT_NULL;
4894 fra.me.REG[1] = NIT_NULL;
4895 fra.me.REG[2] = NIT_NULL;
4896 fra.me.REG[3] = NIT_NULL;
4897 fra.me.REG[0] = p0;
4898 fra.me.REG[1] = p1;
4899 /* ./syntax//icode_generation.nit:1042 */
4900 fra.me.REG[2] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4901 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4902 /* ./syntax//icode_generation.nit:1043 */
4903 fra.me.REG[3] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4904 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4905 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
4906 if (UNTAG_Bool(REGB0)) {
4907 CALL_icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4908 }
4909 /* ./syntax//icode_generation.nit:1044 */
4910 fra.me.REG[3] = CALL_parser_nodes___AAssignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4911 fra.me.REG[3] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4912 /* ./syntax//icode_generation.nit:1045 */
4913 fra.me.REG[0] = CALL_syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
4914 fra.me.REG[3] = NEW_IAttrWrite_icode_base___IAttrWrite___init(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
4915 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4916 /* ./syntax//icode_generation.nit:1046 */
4917 fra.me.REG[3] = NIT_NULL;
4918 goto label1;
4919 label1: while(0);
4920 stack_frame_head = fra.me.prev;
4921 return fra.me.REG[3];
4922 }
4923 val_t icode_generation___AAttrReassignExpr___generate_icode(val_t p0, val_t p1){
4924 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
4925 val_t REGB0;
4926 val_t tmp;
4927 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4928 fra.me.file = LOCATE_icode_generation;
4929 fra.me.line = 1050;
4930 fra.me.meth = LOCATE_icode_generation___AAttrReassignExpr___generate_icode;
4931 fra.me.has_broke = 0;
4932 fra.me.REG_size = 7;
4933 fra.me.REG[0] = NIT_NULL;
4934 fra.me.REG[1] = NIT_NULL;
4935 fra.me.REG[2] = NIT_NULL;
4936 fra.me.REG[3] = NIT_NULL;
4937 fra.me.REG[4] = NIT_NULL;
4938 fra.me.REG[5] = NIT_NULL;
4939 fra.me.REG[6] = NIT_NULL;
4940 fra.me.REG[0] = p0;
4941 fra.me.REG[1] = p1;
4942 /* ./syntax//icode_generation.nit:1052 */
4943 fra.me.REG[2] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4944 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4945 /* ./syntax//icode_generation.nit:1053 */
4946 fra.me.REG[3] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4947 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
4948 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
4949 if (UNTAG_Bool(REGB0)) {
4950 CALL_icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4951 }
4952 /* ./syntax//icode_generation.nit:1054 */
4953 fra.me.REG[3] = CALL_syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
4954 fra.me.REG[3] = NEW_IAttrRead_icode_base___IAttrRead___init(fra.me.REG[3], fra.me.REG[2]);
4955 fra.me.REG[4] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
4956 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
4957 /* ./syntax//icode_generation.nit:1055 */
4958 fra.me.REG[3] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
4959 fra.me.REG[3] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
4960 /* ./syntax//icode_generation.nit:1056 */
4961 fra.me.REG[5] = CALL_syntax_base___AReassignFormExpr___assign_method(fra.me.REG[0])(fra.me.REG[0]);
4962 REGB0 = TAG_Int(2);
4963 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
4964 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
4965 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
4966 fra.me.REG[6] = NEW_ICall_icode_base___ICall___init(fra.me.REG[5], fra.me.REG[6]);
4967 fra.me.REG[5] = CALL_syntax_base___AAttrFormExpr___attr_type(fra.me.REG[0])(fra.me.REG[0]);
4968 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[5]);
4969 /* ./syntax//icode_generation.nit:1057 */
4970 fra.me.REG[0] = CALL_syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
4971 fra.me.REG[5] = NEW_IAttrWrite_icode_base___IAttrWrite___init(fra.me.REG[0], fra.me.REG[2], fra.me.REG[5]);
4972 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
4973 /* ./syntax//icode_generation.nit:1058 */
4974 fra.me.REG[5] = NIT_NULL;
4975 goto label1;
4976 label1: while(0);
4977 stack_frame_head = fra.me.prev;
4978 return fra.me.REG[5];
4979 }
4980 val_t icode_generation___AIssetAttrExpr___generate_icode(val_t p0, val_t p1){
4981 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
4982 val_t REGB0;
4983 val_t tmp;
4984 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
4985 fra.me.file = LOCATE_icode_generation;
4986 fra.me.line = 1063;
4987 fra.me.meth = LOCATE_icode_generation___AIssetAttrExpr___generate_icode;
4988 fra.me.has_broke = 0;
4989 fra.me.REG_size = 4;
4990 fra.me.REG[0] = NIT_NULL;
4991 fra.me.REG[1] = NIT_NULL;
4992 fra.me.REG[2] = NIT_NULL;
4993 fra.me.REG[3] = NIT_NULL;
4994 fra.me.REG[0] = p0;
4995 fra.me.REG[1] = p1;
4996 /* ./syntax//icode_generation.nit:1065 */
4997 fra.me.REG[2] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
4998 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
4999 /* ./syntax//icode_generation.nit:1066 */
5000 fra.me.REG[3] = CALL_parser_nodes___AAttrFormExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5001 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5002 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5003 if (UNTAG_Bool(REGB0)) {
5004 CALL_icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5005 }
5006 /* ./syntax//icode_generation.nit:1067 */
5007 fra.me.REG[3] = CALL_syntax_base___AAttrFormExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5008 fra.me.REG[2] = NEW_IAttrIsset_icode_base___IAttrIsset___init(fra.me.REG[3], fra.me.REG[2]);
5009 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5010 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
5011 goto label1;
5012 label1: while(0);
5013 stack_frame_head = fra.me.prev;
5014 return fra.me.REG[0];
5015 }
5016 void icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(val_t p0, val_t p1, val_t p2, val_t p3){
5017 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5018 val_t REGB0;
5019 val_t REGB1;
5020 val_t REGB2;
5021 val_t REGB3;
5022 val_t REGB4;
5023 val_t REGB5;
5024 val_t REGB6;
5025 val_t REGB7;
5026 val_t REGB8;
5027 val_t REGB9;
5028 val_t REGB10;
5029 val_t tmp;
5030 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5031 fra.me.file = LOCATE_icode_generation;
5032 fra.me.line = 1072;
5033 fra.me.meth = LOCATE_icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in;
5034 fra.me.has_broke = 0;
5035 fra.me.REG_size = 7;
5036 fra.me.REG[0] = NIT_NULL;
5037 fra.me.REG[1] = NIT_NULL;
5038 fra.me.REG[2] = NIT_NULL;
5039 fra.me.REG[3] = NIT_NULL;
5040 fra.me.REG[4] = NIT_NULL;
5041 fra.me.REG[5] = NIT_NULL;
5042 fra.me.REG[6] = NIT_NULL;
5043 fra.me.REG[0] = p0;
5044 fra.me.REG[1] = p1;
5045 fra.me.REG[2] = p2;
5046 fra.me.REG[3] = p3;
5047 /* ./syntax//icode_generation.nit:1075 */
5048 REGB0 = CALL_static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
5049 /* ./syntax//icode_generation.nit:1076 */
5050 REGB1 = CALL_vararg___MMSignature___vararg_rank(fra.me.REG[3])(fra.me.REG[3]);
5051 /* ./syntax//icode_generation.nit:1077 */
5052 fra.me.REG[0] = CALL_syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
5053 /* ./../lib/standard//collection//array.nit:23 */
5054 REGB2 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
5055 if (UNTAG_Bool(REGB2)) {
5056 } else {
5057 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5058 }
5059 REGB2 = ATTR_array___AbstractArrayRead____length(fra.me.REG[0]);
5060 /* ./syntax//icode_generation.nit:1079 */
5061 REGB3 = TAG_Int(0);
5062 /* ./syntax//icode_generation.nit:1080 */
5063 REGB4 = TAG_Int(0);
5064 /* ./../lib/standard//kernel.nit:327 */
5065 REGB5 = REGB0;
5066 /* ./../lib/standard//kernel.nit:332 */
5067 while(1) {
5068 /* ./../lib/standard//kernel.nit:212 */
5069 REGB6 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
5070 /* ./../lib/standard//kernel.nit:332 */
5071 if (UNTAG_Bool(REGB6)) {
5072 /* ./syntax//icode_generation.nit:1080 */
5073 REGB6 = REGB4;
5074 /* ./syntax//icode_generation.nit:1082 */
5075 fra.me.REG[4] = CALL_static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB6);
5076 /* ./syntax//icode_generation.nit:1083 */
5077 REGB7 = TAG_Bool(IS_EQUAL_OO(REGB6,REGB1));
5078 if (UNTAG_Bool(REGB7)) {
5079 } else {
5080 /* ./../lib/standard//kernel.nit:207 */
5081 REGB6 = TAG_Bool((REGB6)==(REGB1));
5082 /* ./syntax//icode_generation.nit:1083 */
5083 REGB7 = REGB6;
5084 }
5085 if (UNTAG_Bool(REGB7)) {
5086 /* ./syntax//icode_generation.nit:1084 */
5087 fra.me.REG[5] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
5088 fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
5089 /* ./../lib/standard//kernel.nit:217 */
5090 REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
5091 /* ./syntax//icode_generation.nit:1084 */
5092 fra.me.REG[4] = CALL_icode_generation___A2IContext___add_new_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], REGB7);
5093 /* ./syntax//icode_generation.nit:1085 */
5094 REGB7 = TAG_Int(0);
5095 /* ./../lib/standard//kernel.nit:217 */
5096 REGB6 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
5097 /* ./../lib/standard//kernel.nit:321 */
5098 while(1) {
5099 /* ./../lib/standard//kernel.nit:211 */
5100 REGB8 = TAG_Bool(UNTAG_Int(REGB7)<=UNTAG_Int(REGB6));
5101 /* ./../lib/standard//kernel.nit:321 */
5102 if (UNTAG_Bool(REGB8)) {
5103 /* ./../lib/standard//collection//array.nit:243 */
5104 fra.me.REG[5] = fra.me.REG[0];
5105 REGB8 = REGB3;
5106 /* ./../lib/standard//collection//array.nit:245 */
5107 REGB9 = TAG_Int(0);
5108 /* ./../lib/standard//kernel.nit:213 */
5109 REGB9 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB9));
5110 /* ./../lib/standard//collection//array.nit:245 */
5111 if (UNTAG_Bool(REGB9)) {
5112 REGB9 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
5113 if (UNTAG_Bool(REGB9)) {
5114 } else {
5115 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
5116 }
5117 REGB9 = ATTR_array___AbstractArrayRead____length(fra.me.REG[5]);
5118 /* ./../lib/standard//kernel.nit:212 */
5119 REGB9 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB9));
5120 } else {
5121 /* ./../lib/standard//collection//array.nit:245 */
5122 REGB10 = TAG_Bool(false);
5123 REGB9 = REGB10;
5124 }
5125 if (UNTAG_Bool(REGB9)) {
5126 } else {
5127 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
5128 }
5129 /* ./../lib/standard//collection//array.nit:246 */
5130 fra.me.REG[5] = ATTR_array___Array____items(fra.me.REG[5]);
5131 REGB9 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5132 if (UNTAG_Bool(REGB9)) {
5133 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
5134 }
5135 /* ./../lib/standard//collection//array.nit:654 */
5136 fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB8)];
5137 /* ./../lib/standard//collection//array.nit:246 */
5138 goto label1;
5139 label1: while(0);
5140 /* ./syntax//icode_generation.nit:1087 */
5141 fra.me.REG[6] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
5142 CALL_icode_generation___A2IContext___add_call_array_add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
5143 /* ./syntax//icode_generation.nit:1088 */
5144 REGB8 = TAG_Int(1);
5145 /* ./../lib/standard//kernel.nit:215 */
5146 REGB8 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB8));
5147 /* ./syntax//icode_generation.nit:1088 */
5148 REGB3 = REGB8;
5149 /* ./../lib/standard//kernel.nit:323 */
5150 REGB8 = TAG_Int(1);
5151 /* ./../lib/standard//kernel.nit:215 */
5152 REGB8 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB8));
5153 /* ./../lib/standard//kernel.nit:323 */
5154 REGB7 = REGB8;
5155 } else {
5156 /* ./../lib/standard//kernel.nit:321 */
5157 goto label2;
5158 }
5159 }
5160 label2: while(0);
5161 /* ./syntax//icode_generation.nit:1090 */
5162 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5163 } else {
5164 /* ./../lib/standard//collection//array.nit:243 */
5165 fra.me.REG[4] = fra.me.REG[0];
5166 REGB7 = REGB3;
5167 /* ./../lib/standard//collection//array.nit:245 */
5168 REGB6 = TAG_Int(0);
5169 /* ./../lib/standard//kernel.nit:213 */
5170 REGB6 = TAG_Bool(UNTAG_Int(REGB7)>=UNTAG_Int(REGB6));
5171 /* ./../lib/standard//collection//array.nit:245 */
5172 if (UNTAG_Bool(REGB6)) {
5173 REGB6 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
5174 if (UNTAG_Bool(REGB6)) {
5175 } else {
5176 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
5177 }
5178 REGB6 = ATTR_array___AbstractArrayRead____length(fra.me.REG[4]);
5179 /* ./../lib/standard//kernel.nit:212 */
5180 REGB6 = TAG_Bool(UNTAG_Int(REGB7)<UNTAG_Int(REGB6));
5181 } else {
5182 /* ./../lib/standard//collection//array.nit:245 */
5183 REGB8 = TAG_Bool(false);
5184 REGB6 = REGB8;
5185 }
5186 if (UNTAG_Bool(REGB6)) {
5187 } else {
5188 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
5189 }
5190 /* ./../lib/standard//collection//array.nit:246 */
5191 fra.me.REG[4] = ATTR_array___Array____items(fra.me.REG[4]);
5192 REGB6 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5193 if (UNTAG_Bool(REGB6)) {
5194 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
5195 }
5196 /* ./../lib/standard//collection//array.nit:654 */
5197 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB7)];
5198 /* ./../lib/standard//collection//array.nit:246 */
5199 goto label3;
5200 label3: while(0);
5201 /* ./syntax//icode_generation.nit:1092 */
5202 fra.me.REG[5] = fra.me.REG[4];
5203 /* ./syntax//icode_generation.nit:1093 */
5204 fra.me.REG[5] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
5205 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
5206 /* ./syntax//icode_generation.nit:1094 */
5207 REGB7 = TAG_Int(1);
5208 /* ./../lib/standard//kernel.nit:215 */
5209 REGB7 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB7));
5210 /* ./syntax//icode_generation.nit:1094 */
5211 REGB3 = REGB7;
5212 }
5213 /* ./../lib/standard//kernel.nit:334 */
5214 REGB7 = TAG_Int(1);
5215 /* ./../lib/standard//kernel.nit:215 */
5216 REGB7 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB7));
5217 /* ./../lib/standard//kernel.nit:334 */
5218 REGB4 = REGB7;
5219 } else {
5220 /* ./../lib/standard//kernel.nit:332 */
5221 goto label4;
5222 }
5223 }
5224 label4: while(0);
5225 stack_frame_head = fra.me.prev;
5226 return;
5227 }
5228 val_t icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1){
5229 struct {struct stack_frame_t me; val_t MORE_REG[15];} fra;
5230 val_t REGB0;
5231 val_t REGB1;
5232 val_t REGB2;
5233 val_t REGB3;
5234 val_t REGB4;
5235 val_t tmp;
5236 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5237 fra.me.file = LOCATE_icode_generation;
5238 fra.me.line = 1101;
5239 fra.me.meth = LOCATE_icode_generation___ASendExpr___generate_icode;
5240 fra.me.has_broke = 0;
5241 fra.me.REG_size = 16;
5242 fra.me.REG[0] = NIT_NULL;
5243 fra.me.REG[1] = NIT_NULL;
5244 fra.me.REG[2] = NIT_NULL;
5245 fra.me.REG[3] = NIT_NULL;
5246 fra.me.REG[4] = NIT_NULL;
5247 fra.me.REG[5] = NIT_NULL;
5248 fra.me.REG[6] = NIT_NULL;
5249 fra.me.REG[7] = NIT_NULL;
5250 fra.me.REG[8] = NIT_NULL;
5251 fra.me.REG[9] = NIT_NULL;
5252 fra.me.REG[10] = NIT_NULL;
5253 fra.me.REG[11] = NIT_NULL;
5254 fra.me.REG[12] = NIT_NULL;
5255 fra.me.REG[13] = NIT_NULL;
5256 fra.me.REG[14] = NIT_NULL;
5257 fra.me.REG[15] = NIT_NULL;
5258 fra.me.REG[0] = p0;
5259 fra.me.REG[1] = p1;
5260 /* ./syntax//icode_generation.nit:1103 */
5261 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5262 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5263 /* ./syntax//icode_generation.nit:1104 */
5264 fra.me.REG[3] = NEW_Array_array___Array___init();
5265 /* ./syntax//icode_generation.nit:1105 */
5266 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5267 /* ./syntax//icode_generation.nit:1106 */
5268 fra.me.REG[2] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5269 /* ./syntax//icode_generation.nit:1107 */
5270 fra.me.REG[4] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
5271 REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_MMSignature, ID_MMSignature)) /*cast MMSignature*/;
5272 if (UNTAG_Bool(REGB0)) {
5273 } else {
5274 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 1107);
5275 }
5276 CALL_icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3], fra.me.REG[4]);
5277 /* ./syntax//icode_generation.nit:1108 */
5278 fra.me.REG[4] = NIT_NULL;
5279 /* ./syntax//icode_generation.nit:1112 */
5280 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
5281 /* ./syntax//icode_generation.nit:1113 */
5282 fra.me.REG[6] = NIT_NULL;
5283 /* ./syntax//icode_generation.nit:1114 */
5284 fra.me.REG[7] = CALL_syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[0])(fra.me.REG[0]);
5285 fra.me.REG[7] = CALL_static_type___MMSignature___closures(fra.me.REG[7])(fra.me.REG[7]);
5286 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
5287 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5288 if (UNTAG_Bool(REGB0)) {
5289 /* ./syntax//icode_generation.nit:1115 */
5290 fra.me.REG[7] = CALL_syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[0])(fra.me.REG[0]);
5291 fra.me.REG[7] = CALL_static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
5292 /* ./syntax//icode_generation.nit:1116 */
5293 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
5294 if (UNTAG_Bool(REGB0)) {
5295 } else {
5296 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
5297 if (UNTAG_Bool(REGB1)) {
5298 REGB1 = TAG_Bool(false);
5299 REGB0 = REGB1;
5300 } else {
5301 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
5302 REGB0 = REGB1;
5303 }
5304 }
5305 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5306 if (UNTAG_Bool(REGB0)) {
5307 /* ./syntax//icode_generation.nit:1117 */
5308 fra.me.REG[7] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
5309 fra.me.REG[4] = fra.me.REG[7];
5310 }
5311 /* ./syntax//icode_generation.nit:1119 */
5312 fra.me.REG[7] = NEW_ISeq_icode_base___ISeq___init();
5313 /* ./syntax//icode_generation.nit:1120 */
5314 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
5315 /* ./syntax//icode_generation.nit:1121 */
5316 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
5317 /* ./syntax//icode_generation.nit:1122 */
5318 fra.me.REG[8] = NEW_Array_array___Array___init();
5319 fra.me.REG[6] = fra.me.REG[8];
5320 /* ./syntax//icode_generation.nit:1123 */
5321 REGB0 = TAG_Int(0);
5322 /* ./syntax//icode_generation.nit:1124 */
5323 fra.me.REG[8] = CALL_syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
5324 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5325 if (UNTAG_Bool(REGB0)) {
5326 } else {
5327 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5328 if (UNTAG_Bool(REGB1)) {
5329 REGB1 = TAG_Bool(false);
5330 REGB0 = REGB1;
5331 } else {
5332 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
5333 REGB0 = REGB1;
5334 }
5335 }
5336 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5337 if (UNTAG_Bool(REGB0)) {
5338 fra.me.REG[8] = CALL_syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
5339 REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5340 if (UNTAG_Bool(REGB0)) {
5341 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1124);
5342 }
5343 /* ./../lib/standard//collection//array.nit:23 */
5344 REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
5345 if (UNTAG_Bool(REGB0)) {
5346 } else {
5347 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5348 }
5349 REGB0 = ATTR_array___AbstractArrayRead____length(fra.me.REG[8]);
5350 }
5351 /* ./syntax//icode_generation.nit:1125 */
5352 fra.me.REG[8] = CALL_syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
5353 /* ./syntax//icode_generation.nit:1126 */
5354 fra.me.REG[9] = CALL_syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[0])(fra.me.REG[0]);
5355 fra.me.REG[9] = CALL_static_type___MMSignature___closures(fra.me.REG[9])(fra.me.REG[9]);
5356 /* ./../lib/standard//collection//array.nit:234 */
5357 REGB0 = TAG_Int(0);
5358 /* ./../lib/standard//collection//array.nit:235 */
5359 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
5360 if (UNTAG_Bool(REGB1)) {
5361 } else {
5362 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
5363 }
5364 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[9]);
5365 /* ./../lib/standard//collection//array.nit:236 */
5366 fra.me.REG[10] = ATTR_array___Array____items(fra.me.REG[9]);
5367 /* ./../lib/standard//collection//array.nit:237 */
5368 while(1) {
5369 /* ./../lib/standard//collection//array.nit:23 */
5370 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[9])!=NIT_NULL);
5371 if (UNTAG_Bool(REGB1)) {
5372 } else {
5373 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5374 }
5375 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[9]);
5376 /* ./../lib/standard//kernel.nit:212 */
5377 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5378 /* ./../lib/standard//collection//array.nit:237 */
5379 if (UNTAG_Bool(REGB1)) {
5380 /* ./../lib/standard//collection//array.nit:238 */
5381 REGB1 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
5382 if (UNTAG_Bool(REGB1)) {
5383 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
5384 }
5385 /* ./../lib/standard//collection//array.nit:654 */
5386 fra.me.REG[11] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
5387 /* ./syntax//icode_generation.nit:1127 */
5388 REGB1 = TAG_Bool(false);
5389 /* ./syntax//icode_generation.nit:1128 */
5390 fra.me.REG[11] = CALL_static_type___MMClosure___name(fra.me.REG[11])(fra.me.REG[11]);
5391 /* ./syntax//icode_generation.nit:1129 */
5392 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5393 if (UNTAG_Bool(REGB2)) {
5394 } else {
5395 REGB3 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5396 if (UNTAG_Bool(REGB3)) {
5397 REGB3 = TAG_Bool(false);
5398 REGB2 = REGB3;
5399 } else {
5400 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
5401 REGB2 = REGB3;
5402 }
5403 }
5404 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
5405 if (UNTAG_Bool(REGB2)) {
5406 /* ./syntax//icode_generation.nit:1130 */
5407 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
5408 if (UNTAG_Bool(REGB2)) {
5409 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1130);
5410 }
5411 /* ./../lib/standard//collection//array.nit:231 */
5412 fra.me.REG[12] = fra.me.REG[8];
5413 /* ./../lib/standard//collection//array.nit:234 */
5414 REGB2 = TAG_Int(0);
5415 /* ./../lib/standard//collection//array.nit:235 */
5416 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[12])!=NIT_NULL);
5417 if (UNTAG_Bool(REGB3)) {
5418 } else {
5419 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 235);
5420 }
5421 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[12]);
5422 /* ./../lib/standard//collection//array.nit:236 */
5423 fra.me.REG[13] = ATTR_array___Array____items(fra.me.REG[12]);
5424 /* ./../lib/standard//collection//array.nit:237 */
5425 while(1) {
5426 /* ./../lib/standard//collection//array.nit:23 */
5427 REGB3 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[12])!=NIT_NULL);
5428 if (UNTAG_Bool(REGB3)) {
5429 } else {
5430 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5431 }
5432 REGB3 = ATTR_array___AbstractArrayRead____length(fra.me.REG[12]);
5433 /* ./../lib/standard//kernel.nit:212 */
5434 REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
5435 /* ./../lib/standard//collection//array.nit:237 */
5436 if (UNTAG_Bool(REGB3)) {
5437 /* ./../lib/standard//collection//array.nit:238 */
5438 REGB3 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
5439 if (UNTAG_Bool(REGB3)) {
5440 nit_abort("Reciever is null", NULL, LOCATE_array, 238);
5441 }
5442 /* ./../lib/standard//collection//array.nit:654 */
5443 fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB2)];
5444 /* ./syntax//icode_generation.nit:1131 */
5445 fra.me.REG[15] = CALL_parser_nodes___AClosureDef___n_id(fra.me.REG[14])(fra.me.REG[14]);
5446 fra.me.REG[15] = CALL_typing___AClosureId___to_symbol(fra.me.REG[15])(fra.me.REG[15]);
5447 REGB3 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[15],fra.me.REG[11]));
5448 if (UNTAG_Bool(REGB3)) {
5449 } else {
5450 REGB4 = CALL_kernel___Object_____eqeq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[11]);
5451 REGB3 = REGB4;
5452 }
5453 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
5454 if (UNTAG_Bool(REGB3)) {
5455 goto label1;
5456 }
5457 /* ./syntax//icode_generation.nit:1132 */
5458 REGB3 = TAG_Bool(false);
5459 REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
5460 if (UNTAG_Bool(REGB4)) {
5461 } else {
5462 /* ./../lib/standard//kernel.nit:175 */
5463 REGB3 = TAG_Bool((REGB1)==(REGB3));
5464 /* ./syntax//icode_generation.nit:1132 */
5465 REGB4 = REGB3;
5466 }
5467 if (UNTAG_Bool(REGB4)) {
5468 } else {
5469 nit_abort("Assert failed", NULL, LOCATE_icode_generation, 1132);
5470 }
5471 /* ./syntax//icode_generation.nit:1133 */
5472 REGB4 = TAG_Bool(true);
5473 REGB1 = REGB4;
5474 /* ./syntax//icode_generation.nit:1134 */
5475 fra.me.REG[15] = CALL_typing___AClosureDef___escapable(fra.me.REG[14])(fra.me.REG[14]);
5476 REGB4 = TAG_Bool(fra.me.REG[15]==NIT_NULL);
5477 if (UNTAG_Bool(REGB4)) {
5478 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1134);
5479 }
5480 CALL_icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[7]);
5481 /* ./syntax//icode_generation.nit:1135 */
5482 fra.me.REG[15] = CALL_typing___AClosureDef___escapable(fra.me.REG[14])(fra.me.REG[14]);
5483 REGB4 = TAG_Bool(fra.me.REG[15]==NIT_NULL);
5484 if (UNTAG_Bool(REGB4)) {
5485 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1135);
5486 }
5487 CALL_icode_generation___EscapableBlock___break_value__eq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[4]);
5488 /* ./syntax//icode_generation.nit:1136 */
5489 fra.me.REG[14] = CALL_icode_generation___AClosureDef___generate_iclosuredef(fra.me.REG[14])(fra.me.REG[14], fra.me.REG[1]);
5490 /* ./syntax//icode_generation.nit:1137 */
5491 REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
5492 if (UNTAG_Bool(REGB4)) {
5493 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1137);
5494 }
5495 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[14]);
5496 label1: while(0);
5497 /* ./../lib/standard//collection//array.nit:239 */
5498 REGB4 = TAG_Int(1);
5499 /* ./../lib/standard//kernel.nit:215 */
5500 REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
5501 /* ./../lib/standard//collection//array.nit:239 */
5502 REGB2 = REGB4;
5503 } else {
5504 /* ./../lib/standard//collection//array.nit:237 */
5505 goto label2;
5506 }
5507 }
5508 label2: while(0);
5509 }
5510 /* ./syntax//icode_generation.nit:1140 */
5511 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
5512 if (UNTAG_Bool(REGB1)) {
5513 /* ./syntax//icode_generation.nit:1141 */
5514 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
5515 if (UNTAG_Bool(REGB1)) {
5516 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1141);
5517 }
5518 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
5519 }
5520 /* ./../lib/standard//collection//array.nit:239 */
5521 REGB1 = TAG_Int(1);
5522 /* ./../lib/standard//kernel.nit:215 */
5523 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
5524 /* ./../lib/standard//collection//array.nit:239 */
5525 REGB0 = REGB1;
5526 } else {
5527 /* ./../lib/standard//collection//array.nit:237 */
5528 goto label3;
5529 }
5530 }
5531 label3: while(0);
5532 }
5533 /* ./syntax//icode_generation.nit:1146 */
5534 fra.me.REG[6] = CALL_icode_builder___ICodeBuilder___add_call(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[6]);
5535 /* ./syntax//icode_generation.nit:1149 */
5536 fra.me.REG[0] = CALL_syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[0])(fra.me.REG[0]);
5537 fra.me.REG[0] = CALL_static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
5538 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
5539 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5540 if (UNTAG_Bool(REGB0)) {
5541 /* ./syntax//icode_generation.nit:1150 */
5542 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5543 if (UNTAG_Bool(REGB0)) {
5544 } else {
5545 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5546 if (UNTAG_Bool(REGB1)) {
5547 REGB1 = TAG_Bool(false);
5548 REGB0 = REGB1;
5549 } else {
5550 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
5551 REGB0 = REGB1;
5552 }
5553 }
5554 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5555 if (UNTAG_Bool(REGB0)) {
5556 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
5557 if (UNTAG_Bool(REGB0)) {
5558 } else {
5559 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
5560 if (UNTAG_Bool(REGB1)) {
5561 REGB1 = TAG_Bool(false);
5562 REGB0 = REGB1;
5563 } else {
5564 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
5565 REGB0 = REGB1;
5566 }
5567 }
5568 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5569 } else {
5570 REGB1 = TAG_Bool(false);
5571 REGB0 = REGB1;
5572 }
5573 if (UNTAG_Bool(REGB0)) {
5574 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
5575 }
5576 /* ./syntax//icode_generation.nit:1151 */
5577 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
5578 } else {
5579 /* ./syntax//icode_generation.nit:1153 */
5580 fra.me.REG[4] = fra.me.REG[6];
5581 }
5582 /* ./syntax//icode_generation.nit:1156 */
5583 fra.me.REG[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
5584 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[6])(fra.me.REG[6]);
5585 if (UNTAG_Bool(REGB0)) {
5586 /* ./syntax//icode_generation.nit:1157 */
5587 CALL_icode_generation___A2IContext___invoke_super_init_calls_after(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5588 }
5589 /* ./syntax//icode_generation.nit:1159 */
5590 goto label4;
5591 label4: while(0);
5592 stack_frame_head = fra.me.prev;
5593 return fra.me.REG[4];
5594 }
5595 val_t icode_generation___ASendReassignExpr___generate_icode(val_t p0, val_t p1){
5596 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
5597 val_t REGB0;
5598 val_t tmp;
5599 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5600 fra.me.file = LOCATE_icode_generation;
5601 fra.me.line = 1164;
5602 fra.me.meth = LOCATE_icode_generation___ASendReassignExpr___generate_icode;
5603 fra.me.has_broke = 0;
5604 fra.me.REG_size = 7;
5605 fra.me.REG[0] = NIT_NULL;
5606 fra.me.REG[1] = NIT_NULL;
5607 fra.me.REG[2] = NIT_NULL;
5608 fra.me.REG[3] = NIT_NULL;
5609 fra.me.REG[4] = NIT_NULL;
5610 fra.me.REG[5] = NIT_NULL;
5611 fra.me.REG[6] = NIT_NULL;
5612 fra.me.REG[0] = p0;
5613 fra.me.REG[1] = p1;
5614 /* ./syntax//icode_generation.nit:1166 */
5615 fra.me.REG[2] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5616 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5617 /* ./syntax//icode_generation.nit:1167 */
5618 fra.me.REG[3] = CALL_parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5619 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
5620 REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
5621 if (UNTAG_Bool(REGB0)) {
5622 CALL_icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5623 }
5624 /* ./syntax//icode_generation.nit:1168 */
5625 fra.me.REG[3] = NEW_Array_array___Array___init();
5626 /* ./syntax//icode_generation.nit:1169 */
5627 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
5628 /* ./syntax//icode_generation.nit:1170 */
5629 fra.me.REG[2] = CALL_syntax_base___ASendReassignExpr___read_prop(fra.me.REG[0])(fra.me.REG[0]);
5630 fra.me.REG[2] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
5631 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_MMSignature, ID_MMSignature)) /*cast MMSignature*/;
5632 if (UNTAG_Bool(REGB0)) {
5633 } else {
5634 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 1170);
5635 }
5636 CALL_icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
5637 /* ./syntax//icode_generation.nit:1172 */
5638 fra.me.REG[2] = CALL_syntax_base___ASendReassignExpr___read_prop(fra.me.REG[0])(fra.me.REG[0]);
5639 fra.me.REG[2] = NEW_ICall_icode_base___ICall___init(fra.me.REG[2], fra.me.REG[3]);
5640 fra.me.REG[4] = CALL_syntax_base___ASendReassignExpr___read_prop(fra.me.REG[0])(fra.me.REG[0]);
5641 fra.me.REG[4] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
5642 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
5643 if (UNTAG_Bool(REGB0)) {
5644 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1172);
5645 }
5646 fra.me.REG[4] = CALL_static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
5647 REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5648 if (UNTAG_Bool(REGB0)) {
5649 } else {
5650 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 1172);
5651 }
5652 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
5653 /* ./syntax//icode_generation.nit:1173 */
5654 fra.me.REG[2] = CALL_parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
5655 fra.me.REG[2] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5656 /* ./syntax//icode_generation.nit:1174 */
5657 fra.me.REG[5] = CALL_syntax_base___AReassignFormExpr___assign_method(fra.me.REG[0])(fra.me.REG[0]);
5658 REGB0 = TAG_Int(2);
5659 fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
5660 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
5661 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
5662 fra.me.REG[6] = NEW_ICall_icode_base___ICall___init(fra.me.REG[5], fra.me.REG[6]);
5663 fra.me.REG[5] = CALL_syntax_base___AReassignFormExpr___assign_method(fra.me.REG[0])(fra.me.REG[0]);
5664 fra.me.REG[5] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[5])(fra.me.REG[5]);
5665 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5666 if (UNTAG_Bool(REGB0)) {
5667 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1174);
5668 }
5669 fra.me.REG[5] = CALL_static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
5670 REGB0 = TAG_Bool((fra.me.REG[5]!=NIT_NULL) && VAL_ISA(fra.me.REG[5], COLOR_MMType, ID_MMType)) /*cast MMType*/;
5671 if (UNTAG_Bool(REGB0)) {
5672 } else {
5673 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 1174);
5674 }
5675 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[5]);
5676 /* ./syntax//icode_generation.nit:1175 */
5677 fra.me.REG[3] = CALL_array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
5678 /* ./syntax//icode_generation.nit:1176 */
5679 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
5680 /* ./syntax//icode_generation.nit:1177 */
5681 fra.me.REG[0] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5682 fra.me.REG[3] = NEW_ICall_icode_base___ICall___init(fra.me.REG[0], fra.me.REG[3]);
5683 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5684 /* ./syntax//icode_generation.nit:1178 */
5685 fra.me.REG[3] = NIT_NULL;
5686 goto label1;
5687 label1: while(0);
5688 stack_frame_head = fra.me.prev;
5689 return fra.me.REG[3];
5690 }
5691 val_t icode_generation___ANewExpr___generate_icode(val_t p0, val_t p1){
5692 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5693 val_t REGB0;
5694 val_t tmp;
5695 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5696 fra.me.file = LOCATE_icode_generation;
5697 fra.me.line = 1183;
5698 fra.me.meth = LOCATE_icode_generation___ANewExpr___generate_icode;
5699 fra.me.has_broke = 0;
5700 fra.me.REG_size = 5;
5701 fra.me.REG[0] = NIT_NULL;
5702 fra.me.REG[1] = NIT_NULL;
5703 fra.me.REG[2] = NIT_NULL;
5704 fra.me.REG[3] = NIT_NULL;
5705 fra.me.REG[4] = NIT_NULL;
5706 fra.me.REG[0] = p0;
5707 fra.me.REG[1] = p1;
5708 /* ./syntax//icode_generation.nit:1185 */
5709 fra.me.REG[2] = NEW_Array_array___Array___init();
5710 /* ./syntax//icode_generation.nit:1186 */
5711 fra.me.REG[3] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5712 fra.me.REG[3] = CALL_static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
5713 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_MMSignature, ID_MMSignature)) /*cast MMSignature*/;
5714 if (UNTAG_Bool(REGB0)) {
5715 } else {
5716 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 1186);
5717 }
5718 CALL_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]);
5719 /* ./syntax//icode_generation.nit:1187 */
5720 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5721 fra.me.REG[4] = CALL_syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
5722 fra.me.REG[2] = NEW_INew_icode_base___INew___init(fra.me.REG[3], fra.me.REG[4], fra.me.REG[2]);
5723 fra.me.REG[0] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5724 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
5725 goto label1;
5726 label1: while(0);
5727 stack_frame_head = fra.me.prev;
5728 return fra.me.REG[0];
5729 }
5730 val_t icode_generation___AProxyExpr___generate_icode(val_t p0, val_t p1){
5731 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
5732 val_t tmp;
5733 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5734 fra.me.file = LOCATE_icode_generation;
5735 fra.me.line = 1192;
5736 fra.me.meth = LOCATE_icode_generation___AProxyExpr___generate_icode;
5737 fra.me.has_broke = 0;
5738 fra.me.REG_size = 2;
5739 fra.me.REG[0] = NIT_NULL;
5740 fra.me.REG[1] = NIT_NULL;
5741 fra.me.REG[0] = p0;
5742 fra.me.REG[1] = p1;
5743 /* ./syntax//icode_generation.nit:1194 */
5744 fra.me.REG[0] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5745 fra.me.REG[0] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
5746 goto label1;
5747 label1: while(0);
5748 stack_frame_head = fra.me.prev;
5749 return fra.me.REG[0];
5750 }
5751 val_t icode_generation___AOnceExpr___generate_icode(val_t p0, val_t p1){
5752 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
5753 val_t tmp;
5754 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5755 fra.me.file = LOCATE_icode_generation;
5756 fra.me.line = 1199;
5757 fra.me.meth = LOCATE_icode_generation___AOnceExpr___generate_icode;
5758 fra.me.has_broke = 0;
5759 fra.me.REG_size = 5;
5760 fra.me.REG[0] = NIT_NULL;
5761 fra.me.REG[1] = NIT_NULL;
5762 fra.me.REG[2] = NIT_NULL;
5763 fra.me.REG[3] = NIT_NULL;
5764 fra.me.REG[4] = NIT_NULL;
5765 fra.me.REG[0] = p0;
5766 fra.me.REG[1] = p1;
5767 /* ./syntax//icode_generation.nit:1201 */
5768 fra.me.REG[2] = NEW_IOnce_icode_base___IOnce___init();
5769 /* ./syntax//icode_generation.nit:1202 */
5770 fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
5771 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
5772 /* ./syntax//icode_generation.nit:1203 */
5773 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
5774 /* ./syntax//icode_generation.nit:1204 */
5775 fra.me.REG[2] = CALL_icode_base___IOnce___body(fra.me.REG[2])(fra.me.REG[2]);
5776 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
5777 /* ./syntax//icode_generation.nit:1206 */
5778 fra.me.REG[0] = CALL_parser_nodes___AProxyExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5779 fra.me.REG[0] = CALL_icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
5780 /* ./syntax//icode_generation.nit:1207 */
5781 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
5782 /* ./syntax//icode_generation.nit:1209 */
5783 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5784 /* ./syntax//icode_generation.nit:1210 */
5785 goto label1;
5786 label1: while(0);
5787 stack_frame_head = fra.me.prev;
5788 return fra.me.REG[3];
5789 }
5790 val_t icode_generation___AClosureDef___generate_iclosuredef(val_t p0, val_t p1){
5791 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
5792 val_t REGB0;
5793 val_t REGB1;
5794 val_t REGB2;
5795 val_t REGB3;
5796 val_t REGB4;
5797 val_t REGB5;
5798 val_t tmp;
5799 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
5800 fra.me.file = LOCATE_icode_generation;
5801 fra.me.line = 1218;
5802 fra.me.meth = LOCATE_icode_generation___AClosureDef___generate_iclosuredef;
5803 fra.me.has_broke = 0;
5804 fra.me.REG_size = 6;
5805 fra.me.REG[0] = NIT_NULL;
5806 fra.me.REG[1] = NIT_NULL;
5807 fra.me.REG[2] = NIT_NULL;
5808 fra.me.REG[3] = NIT_NULL;
5809 fra.me.REG[4] = NIT_NULL;
5810 fra.me.REG[5] = NIT_NULL;
5811 fra.me.REG[0] = p0;
5812 fra.me.REG[1] = p1;
5813 /* ./syntax//icode_generation.nit:1221 */
5814 fra.me.REG[2] = NEW_Array_array___Array___init();
5815 /* ./syntax//icode_generation.nit:1222 */
5816 fra.me.REG[3] = CALL_syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
5817 fra.me.REG[3] = CALL_static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
5818 /* ./syntax//icode_generation.nit:1223 */
5819 REGB0 = TAG_Int(0);
5820 REGB1 = CALL_static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
5821 /* ./../lib/standard//kernel.nit:332 */
5822 while(1) {
5823 /* ./../lib/standard//kernel.nit:212 */
5824 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5825 /* ./../lib/standard//kernel.nit:332 */
5826 if (UNTAG_Bool(REGB2)) {
5827 /* ./syntax//icode_generation.nit:1223 */
5828 REGB2 = REGB0;
5829 /* ./syntax//icode_generation.nit:1224 */
5830 fra.me.REG[4] = CALL_static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
5831 fra.me.REG[4] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
5832 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
5833 /* ./../lib/standard//kernel.nit:334 */
5834 REGB2 = TAG_Int(1);
5835 /* ./../lib/standard//kernel.nit:215 */
5836 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
5837 /* ./../lib/standard//kernel.nit:334 */
5838 REGB0 = REGB2;
5839 } else {
5840 /* ./../lib/standard//kernel.nit:332 */
5841 goto label1;
5842 }
5843 }
5844 label1: while(0);
5845 /* ./syntax//icode_generation.nit:1226 */
5846 fra.me.REG[4] = NIT_NULL;
5847 /* ./syntax//icode_generation.nit:1227 */
5848 fra.me.REG[3] = CALL_static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
5849 /* ./syntax//icode_generation.nit:1228 */
5850 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5851 if (UNTAG_Bool(REGB0)) {
5852 } else {
5853 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5854 if (UNTAG_Bool(REGB1)) {
5855 REGB1 = TAG_Bool(false);
5856 REGB0 = REGB1;
5857 } else {
5858 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
5859 REGB0 = REGB1;
5860 }
5861 }
5862 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
5863 if (UNTAG_Bool(REGB0)) {
5864 /* ./syntax//icode_generation.nit:1229 */
5865 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5866 fra.me.REG[4] = fra.me.REG[3];
5867 }
5868 /* ./syntax//icode_generation.nit:1232 */
5869 fra.me.REG[4] = NEW_IClosureDef_icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[4]);
5870 /* ./syntax//icode_generation.nit:1233 */
5871 fra.me.REG[2] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
5872 CALL_icode_base___IRoutine___location__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
5873 /* ./syntax//icode_generation.nit:1236 */
5874 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
5875 /* ./syntax//icode_generation.nit:1237 */
5876 fra.me.REG[3] = CALL_icode_base___IRoutine___body(fra.me.REG[4])(fra.me.REG[4]);
5877 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5878 /* ./syntax//icode_generation.nit:1238 */
5879 fra.me.REG[3] = CALL_typing___AClosureDef___escapable(fra.me.REG[0])(fra.me.REG[0]);
5880 fra.me.REG[5] = CALL_icode_base___IRoutine___body(fra.me.REG[4])(fra.me.REG[4]);
5881 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5882 if (UNTAG_Bool(REGB0)) {
5883 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1238);
5884 }
5885 CALL_icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
5886 /* ./syntax//icode_generation.nit:1239 */
5887 fra.me.REG[5] = CALL_typing___AClosureDef___escapable(fra.me.REG[0])(fra.me.REG[0]);
5888 fra.me.REG[3] = CALL_icode_base___IRoutine___result(fra.me.REG[4])(fra.me.REG[4]);
5889 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5890 if (UNTAG_Bool(REGB0)) {
5891 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1239);
5892 }
5893 CALL_icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
5894 /* ./syntax//icode_generation.nit:1242 */
5895 REGB0 = TAG_Int(0);
5896 fra.me.REG[3] = CALL_syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
5897 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5898 if (UNTAG_Bool(REGB1)) {
5899 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1242);
5900 }
5901 /* ./../lib/standard//collection//array.nit:23 */
5902 REGB1 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
5903 if (UNTAG_Bool(REGB1)) {
5904 } else {
5905 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 23);
5906 }
5907 REGB1 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
5908 /* ./../lib/standard//kernel.nit:332 */
5909 while(1) {
5910 /* ./../lib/standard//kernel.nit:212 */
5911 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
5912 /* ./../lib/standard//kernel.nit:332 */
5913 if (UNTAG_Bool(REGB2)) {
5914 /* ./syntax//icode_generation.nit:1242 */
5915 REGB2 = REGB0;
5916 /* ./syntax//icode_generation.nit:1243 */
5917 fra.me.REG[3] = CALL_syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
5918 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5919 if (UNTAG_Bool(REGB3)) {
5920 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1243);
5921 }
5922 /* ./../lib/standard//collection//array.nit:243 */
5923 REGB3 = REGB2;
5924 /* ./../lib/standard//collection//array.nit:245 */
5925 REGB4 = TAG_Int(0);
5926 /* ./../lib/standard//kernel.nit:213 */
5927 REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
5928 /* ./../lib/standard//collection//array.nit:245 */
5929 if (UNTAG_Bool(REGB4)) {
5930 REGB4 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
5931 if (UNTAG_Bool(REGB4)) {
5932 } else {
5933 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array, 245);
5934 }
5935 REGB4 = ATTR_array___AbstractArrayRead____length(fra.me.REG[3]);
5936 /* ./../lib/standard//kernel.nit:212 */
5937 REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
5938 } else {
5939 /* ./../lib/standard//collection//array.nit:245 */
5940 REGB5 = TAG_Bool(false);
5941 REGB4 = REGB5;
5942 }
5943 if (UNTAG_Bool(REGB4)) {
5944 } else {
5945 nit_abort("Assert %s failed", "'index'", LOCATE_array, 245);
5946 }
5947 /* ./../lib/standard//collection//array.nit:246 */
5948 fra.me.REG[3] = ATTR_array___Array____items(fra.me.REG[3]);
5949 REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
5950 if (UNTAG_Bool(REGB4)) {
5951 nit_abort("Reciever is null", NULL, LOCATE_array, 246);
5952 }
5953 /* ./../lib/standard//collection//array.nit:654 */
5954 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
5955 /* ./../lib/standard//collection//array.nit:246 */
5956 goto label2;
5957 label2: while(0);
5958 /* ./syntax//icode_generation.nit:1243 */
5959 fra.me.REG[3] = CALL_icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
5960 /* ./syntax//icode_generation.nit:1244 */
5961 fra.me.REG[5] = CALL_icode_base___IRoutine___params(fra.me.REG[4])(fra.me.REG[4]);
5962 fra.me.REG[5] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB2);
5963 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
5964 /* ./../lib/standard//kernel.nit:334 */
5965 REGB2 = TAG_Int(1);
5966 /* ./../lib/standard//kernel.nit:215 */
5967 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
5968 /* ./../lib/standard//kernel.nit:334 */
5969 REGB0 = REGB2;
5970 } else {
5971 /* ./../lib/standard//kernel.nit:332 */
5972 goto label3;
5973 }
5974 }
5975 label3: while(0);
5976 /* ./syntax//icode_generation.nit:1247 */
5977 fra.me.REG[5] = CALL_parser_nodes___AClosureDef___n_expr(fra.me.REG[0])(fra.me.REG[0]);
5978 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
5979 /* ./syntax//icode_generation.nit:1250 */
5980 fra.me.REG[5] = CALL_syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
5981 REGB0 = CALL_static_type___MMClosure___is_break(fra.me.REG[5])(fra.me.REG[5]);
5982 if (UNTAG_Bool(REGB0)) {
5983 fra.me.REG[5] = CALL_typing___AClosureDef___escapable(fra.me.REG[0])(fra.me.REG[0]);
5984 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5985 if (UNTAG_Bool(REGB0)) {
5986 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1250);
5987 }
5988 fra.me.REG[5] = CALL_icode_generation___EscapableBlock___break_value(fra.me.REG[5])(fra.me.REG[5]);
5989 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5990 if (UNTAG_Bool(REGB0)) {
5991 } else {
5992 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
5993 if (UNTAG_Bool(REGB1)) {
5994 REGB1 = TAG_Bool(false);
5995 REGB0 = REGB1;
5996 } else {
5997 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
5998 REGB0 = REGB1;
5999 }
6000 }
6001 } else {
6002 REGB1 = TAG_Bool(false);
6003 REGB0 = REGB1;
6004 }
6005 if (UNTAG_Bool(REGB0)) {
6006 /* ./syntax//icode_generation.nit:1251 */
6007 fra.me.REG[5] = CALL_typing___AClosureDef___escapable(fra.me.REG[0])(fra.me.REG[0]);
6008 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
6009 if (UNTAG_Bool(REGB0)) {
6010 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1251);
6011 }
6012 fra.me.REG[5] = CALL_icode_generation___EscapableBlock___break_seq(fra.me.REG[5])(fra.me.REG[5]);
6013 REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
6014 if (UNTAG_Bool(REGB0)) {
6015 } else {
6016 nit_abort("Cast failed", NULL, LOCATE_icode_generation, 1251);
6017 }
6018 CALL_icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
6019 }
6020 /* ./syntax//icode_generation.nit:1254 */
6021 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
6022 /* ./syntax//icode_generation.nit:1255 */
6023 ATTR_icode_generation___AClosureDef____iclosure_def(fra.me.REG[0]) = fra.me.REG[4];
6024 /* ./syntax//icode_generation.nit:1256 */
6025 goto label4;
6026 label4: while(0);
6027 stack_frame_head = fra.me.prev;
6028 return fra.me.REG[4];
6029 }
6030 val_t icode_generation___AClosureCallExpr___generate_icode(val_t p0, val_t p1){
6031 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
6032 val_t REGB0;
6033 val_t REGB1;
6034 val_t REGB2;
6035 val_t tmp;
6036 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
6037 fra.me.file = LOCATE_icode_generation;
6038 fra.me.line = 1261;
6039 fra.me.meth = LOCATE_icode_generation___AClosureCallExpr___generate_icode;
6040 fra.me.has_broke = 0;
6041 fra.me.REG_size = 9;
6042 fra.me.REG[0] = NIT_NULL;
6043 fra.me.REG[1] = NIT_NULL;
6044 fra.me.REG[2] = NIT_NULL;
6045 fra.me.REG[3] = NIT_NULL;
6046 fra.me.REG[4] = NIT_NULL;
6047 fra.me.REG[5] = NIT_NULL;
6048 fra.me.REG[6] = NIT_NULL;
6049 fra.me.REG[7] = NIT_NULL;
6050 fra.me.REG[8] = NIT_NULL;
6051 fra.me.REG[0] = p0;
6052 fra.me.REG[1] = p1;
6053 /* ./syntax//icode_generation.nit:1264 */
6054 fra.me.REG[2] = NEW_Array_array___Array___init();
6055 /* ./syntax//icode_generation.nit:1265 */
6056 fra.me.REG[3] = CALL_syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
6057 fra.me.REG[3] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[3])(fra.me.REG[3]);
6058 fra.me.REG[3] = CALL_static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
6059 CALL_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]);
6060 /* ./syntax//icode_generation.nit:1268 */
6061 fra.me.REG[3] = CALL_icode_generation___A2IContext___closurevariables(fra.me.REG[1])(fra.me.REG[1]);
6062 fra.me.REG[4] = CALL_syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
6063 fra.me.REG[4] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
6064 /* ./syntax//icode_generation.nit:1269 */
6065 fra.me.REG[3] = NEW_IClosCall_icode_base___IClosCall___init(fra.me.REG[4], fra.me.REG[2]);
6066 /* ./syntax//icode_generation.nit:1270 */
6067 fra.me.REG[5] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
6068 /* ./syntax//icode_generation.nit:1273 */
6069 fra.me.REG[6] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
6070 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
6071 REGB1 = TAG_Int(1);
6072 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
6073 if (UNTAG_Bool(REGB2)) {
6074 } else {
6075 /* ./../lib/standard//kernel.nit:207 */
6076 REGB1 = TAG_Bool((REGB0)==(REGB1));
6077 /* ./syntax//icode_generation.nit:1273 */
6078 REGB2 = REGB1;
6079 }
6080 if (UNTAG_Bool(REGB2)) {
6081 /* ./syntax//icode_generation.nit:1274 */
6082 fra.me.REG[6] = NEW_ISeq_icode_base___ISeq___init();
6083 /* ./syntax//icode_generation.nit:1275 */
6084 CALL_icode_base___IClosCall___break_seq__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
6085 /* ./syntax//icode_generation.nit:1276 */
6086 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6087 /* ./syntax//icode_generation.nit:1277 */
6088 fra.me.REG[6] = CALL_parser_nodes___AClosureCallExpr___n_closure_defs(fra.me.REG[0])(fra.me.REG[0]);
6089 fra.me.REG[6] = CALL_abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
6090 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6091 if (UNTAG_Bool(REGB2)) {
6092 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1277);
6093 }
6094 fra.me.REG[6] = CALL_parser_nodes___AClosureDef___n_expr(fra.me.REG[6])(fra.me.REG[6]);
6095 CALL_icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6096 /* ./syntax//icode_generation.nit:1278 */
6097 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
6098 }
6099 /* ./syntax//icode_generation.nit:1282 */
6100 fra.me.REG[6] = NIT_NULL;
6101 /* ./syntax//icode_generation.nit:1283 */
6102 fra.me.REG[7] = CALL_icode_base___IClosureDecl___default(fra.me.REG[4])(fra.me.REG[4]);
6103 /* ./syntax//icode_generation.nit:1284 */
6104 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6105 if (UNTAG_Bool(REGB2)) {
6106 } else {
6107 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6108 if (UNTAG_Bool(REGB1)) {
6109 REGB1 = TAG_Bool(false);
6110 REGB2 = REGB1;
6111 } else {
6112 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
6113 REGB2 = REGB1;
6114 }
6115 }
6116 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6117 if (UNTAG_Bool(REGB2)) {
6118 /* ./syntax//icode_generation.nit:1285 */
6119 fra.me.REG[4] = NEW_IHasClos_icode_base___IHasClos___init(fra.me.REG[4]);
6120 fra.me.REG[8] = CALL_icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
6121 fra.me.REG[8] = CALL_syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[8])(fra.me.REG[8]);
6122 fra.me.REG[8] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[8]);
6123 fra.me.REG[8] = NEW_IIf_icode_base___IIf___init(fra.me.REG[8]);
6124 fra.me.REG[6] = fra.me.REG[8];
6125 /* ./syntax//icode_generation.nit:1286 */
6126 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6127 /* ./syntax//icode_generation.nit:1287 */
6128 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6129 if (UNTAG_Bool(REGB2)) {
6130 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1287);
6131 }
6132 fra.me.REG[8] = CALL_icode_base___IIf___then_seq(fra.me.REG[6])(fra.me.REG[6]);
6133 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
6134 }
6135 /* ./syntax//icode_generation.nit:1291 */
6136 fra.me.REG[8] = NIT_NULL;
6137 /* ./syntax//icode_generation.nit:1292 */
6138 fra.me.REG[0] = CALL_syntax_base___AClosureCallExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
6139 fra.me.REG[0] = CALL_syntax_base___ClosureVariable___closure(fra.me.REG[0])(fra.me.REG[0]);
6140 fra.me.REG[0] = CALL_static_type___MMClosure___signature(fra.me.REG[0])(fra.me.REG[0]);
6141 fra.me.REG[0] = CALL_static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
6142 /* ./syntax//icode_generation.nit:1293 */
6143 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
6144 if (UNTAG_Bool(REGB2)) {
6145 } else {
6146 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
6147 if (UNTAG_Bool(REGB1)) {
6148 REGB1 = TAG_Bool(false);
6149 REGB2 = REGB1;
6150 } else {
6151 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
6152 REGB2 = REGB1;
6153 }
6154 }
6155 if (UNTAG_Bool(REGB2)) {
6156 /* ./syntax//icode_generation.nit:1294 */
6157 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
6158 } else {
6159 /* ./syntax//icode_generation.nit:1296 */
6160 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[0]);
6161 fra.me.REG[8] = fra.me.REG[3];
6162 }
6163 /* ./syntax//icode_generation.nit:1300 */
6164 fra.me.REG[3] = NIT_NULL;
6165 /* ./syntax//icode_generation.nit:1301 */
6166 REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6167 if (UNTAG_Bool(REGB2)) {
6168 } else {
6169 REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
6170 if (UNTAG_Bool(REGB1)) {
6171 REGB1 = TAG_Bool(false);
6172 REGB2 = REGB1;
6173 } else {
6174 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
6175 REGB2 = REGB1;
6176 }
6177 }
6178 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6179 if (UNTAG_Bool(REGB2)) {
6180 /* ./syntax//icode_generation.nit:1302 */
6181 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6182 if (UNTAG_Bool(REGB2)) {
6183 } else {
6184 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6185 if (UNTAG_Bool(REGB1)) {
6186 REGB1 = TAG_Bool(false);
6187 REGB2 = REGB1;
6188 } else {
6189 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
6190 REGB2 = REGB1;
6191 }
6192 }
6193 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6194 if (UNTAG_Bool(REGB2)) {
6195 } else {
6196 nit_abort("Assert failed", NULL, LOCATE_icode_generation, 1302);
6197 }
6198 /* ./syntax//icode_generation.nit:1303 */
6199 REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6200 if (UNTAG_Bool(REGB2)) {
6201 } else {
6202 REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
6203 if (UNTAG_Bool(REGB1)) {
6204 REGB1 = TAG_Bool(false);
6205 REGB2 = REGB1;
6206 } else {
6207 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
6208 REGB2 = REGB1;
6209 }
6210 }
6211 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6212 if (UNTAG_Bool(REGB2)) {
6213 /* ./syntax//icode_generation.nit:1304 */
6214 REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
6215 if (UNTAG_Bool(REGB2)) {
6216 } else {
6217 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
6218 if (UNTAG_Bool(REGB1)) {
6219 REGB1 = TAG_Bool(false);
6220 REGB2 = REGB1;
6221 } else {
6222 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
6223 REGB2 = REGB1;
6224 }
6225 }
6226 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6227 if (UNTAG_Bool(REGB2)) {
6228 } else {
6229 nit_abort("Assert failed", NULL, LOCATE_icode_generation, 1304);
6230 }
6231 /* ./syntax//icode_generation.nit:1305 */
6232 fra.me.REG[0] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
6233 fra.me.REG[3] = fra.me.REG[0];
6234 /* ./syntax//icode_generation.nit:1306 */
6235 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[8]);
6236 }
6237 /* ./syntax//icode_generation.nit:1308 */
6238 REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
6239 if (UNTAG_Bool(REGB2)) {
6240 nit_abort("Reciever is null", NULL, LOCATE_icode_generation, 1308);
6241 }
6242 fra.me.REG[6] = CALL_icode_base___IIf___else_seq(fra.me.REG[6])(fra.me.REG[6]);
6243 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
6244 /* ./syntax//icode_generation.nit:1309 */
6245 fra.me.REG[2] = CALL_icode_tools___ICodeBuilder___inline_routine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[2], NIT_NULL);
6246 /* ./syntax//icode_generation.nit:1310 */
6247 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6248 if (UNTAG_Bool(REGB2)) {
6249 } else {
6250 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
6251 if (UNTAG_Bool(REGB1)) {
6252 REGB1 = TAG_Bool(false);
6253 REGB2 = REGB1;
6254 } else {
6255 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
6256 REGB2 = REGB1;
6257 }
6258 }
6259 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6260 if (UNTAG_Bool(REGB2)) {
6261 /* ./syntax//icode_generation.nit:1311 */
6262 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6263 if (UNTAG_Bool(REGB2)) {
6264 } else {
6265 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
6266 if (UNTAG_Bool(REGB1)) {
6267 REGB1 = TAG_Bool(false);
6268 REGB2 = REGB1;
6269 } else {
6270 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
6271 REGB2 = REGB1;
6272 }
6273 }
6274 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
6275 if (UNTAG_Bool(REGB2)) {
6276 } else {
6277 nit_abort("Assert failed", NULL, LOCATE_icode_generation, 1311);
6278 }
6279 /* ./syntax//icode_generation.nit:1312 */
6280 CALL_icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
6281 }
6282 /* ./syntax//icode_generation.nit:1314 */
6283 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
6284 } else {
6285 /* ./syntax//icode_generation.nit:1316 */
6286 fra.me.REG[3] = fra.me.REG[8];
6287 }
6288 /* ./syntax//icode_generation.nit:1318 */
6289 goto label1;
6290 label1: while(0);
6291 stack_frame_head = fra.me.prev;
6292 return fra.me.REG[3];
6293 }