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