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