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