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