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