gc: show default GC on warnings
[nit.git] / c_src / icode_tools._sep.c
1 /* This C file is generated by NIT to compile module icode_tools. */
2 #include "icode_tools._sep.h"
3 void icode_tools___ICodeVisitor___visit_iregister_read(val_t p0, val_t p1, val_t p2){
4 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
5 val_t tmp;
6 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7 fra.me.file = LOCATE_icode_tools;
8 fra.me.line = 22;
9 fra.me.meth = LOCATE_icode_tools___ICodeVisitor___visit_iregister_read;
10 fra.me.has_broke = 0;
11 fra.me.REG_size = 3;
12 fra.me.REG[0] = NIT_NULL;
13 fra.me.REG[1] = NIT_NULL;
14 fra.me.REG[2] = NIT_NULL;
15 fra.me.REG[0] = p0;
16 fra.me.REG[1] = p1;
17 fra.me.REG[2] = p2;
18 /* ./icode//icode_tools.nit:22 */
19 stack_frame_head = fra.me.prev;
20 return;
21 }
22 void icode_tools___ICodeVisitor___visit_iregister_write(val_t p0, val_t p1, val_t p2){
23 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
24 val_t tmp;
25 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
26 fra.me.file = LOCATE_icode_tools;
27 fra.me.line = 25;
28 fra.me.meth = LOCATE_icode_tools___ICodeVisitor___visit_iregister_write;
29 fra.me.has_broke = 0;
30 fra.me.REG_size = 3;
31 fra.me.REG[0] = NIT_NULL;
32 fra.me.REG[1] = NIT_NULL;
33 fra.me.REG[2] = NIT_NULL;
34 fra.me.REG[0] = p0;
35 fra.me.REG[1] = p1;
36 fra.me.REG[2] = p2;
37 /* ./icode//icode_tools.nit:25 */
38 stack_frame_head = fra.me.prev;
39 return;
40 }
41 val_t icode_tools___ICodeVisitor___current_icode(val_t p0){
42 struct {struct stack_frame_t me;} fra;
43 val_t tmp;
44 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
45 fra.me.file = LOCATE_icode_tools;
46 fra.me.line = 28;
47 fra.me.meth = LOCATE_icode_tools___ICodeVisitor___current_icode;
48 fra.me.has_broke = 0;
49 fra.me.REG_size = 1;
50 fra.me.REG[0] = NIT_NULL;
51 fra.me.REG[0] = p0;
52 fra.me.REG[0] = ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]);
53 /* ./icode//icode_tools.nit:28 */
54 stack_frame_head = fra.me.prev;
55 return fra.me.REG[0];
56 }
57 void icode_tools___ICodeVisitor___visit_icode(val_t p0, val_t p1){
58 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
59 val_t REGB0;
60 val_t REGB1;
61 val_t tmp;
62 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
63 fra.me.file = LOCATE_icode_tools;
64 fra.me.line = 32;
65 fra.me.meth = LOCATE_icode_tools___ICodeVisitor___visit_icode;
66 fra.me.has_broke = 0;
67 fra.me.REG_size = 5;
68 fra.me.REG[0] = NIT_NULL;
69 fra.me.REG[1] = NIT_NULL;
70 fra.me.REG[2] = NIT_NULL;
71 fra.me.REG[3] = NIT_NULL;
72 fra.me.REG[4] = NIT_NULL;
73 fra.me.REG[0] = p0;
74 fra.me.REG[1] = p1;
75 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
76 /* ./icode//icode_tools.nit:36 */
77 if (UNTAG_Bool(REGB0)) {
78 } else {
79 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
80 if (UNTAG_Bool(REGB1)) {
81 REGB1 = TAG_Bool(false);
82 REGB0 = REGB1;
83 } else {
84 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
85 REGB0 = REGB1;
86 }
87 }
88 if (UNTAG_Bool(REGB0)) {
89 goto label1;
90 }
91 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_ISeq, ID_ISeq)) /*cast ISeq*/;
92 /* ./icode//icode_tools.nit:37 */
93 if (UNTAG_Bool(REGB0)) {
94 fra.me.REG[2] = ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]);
95 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
96 /* ./icode//icode_tools.nit:39 */
97 if (UNTAG_Bool(REGB0)) {
98 fprintf(stderr, "Reciever is null");
99 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 39);
100 nit_exit(1);
101 }
102 fra.me.REG[3] = CALL_icode_base___ISeq___icodes(fra.me.REG[1])(fra.me.REG[1]);
103 fra.me.REG[3] = CALL_abstract_collection___Collection___iterator(fra.me.REG[3])(fra.me.REG[3]);
104 /* ./icode//icode_tools.nit:40 */
105 while(1) {
106 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[3])(fra.me.REG[3]);
107 if (UNTAG_Bool(REGB0)) {
108 /* ./icode//icode_tools.nit:41 */
109 ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[3];
110 fra.me.REG[4] = CALL_abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
111 /* ./icode//icode_tools.nit:43 */
112 CALL_icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
113 /* ./icode//icode_tools.nit:44 */
114 CALL_abstract_collection___Iterator___next(fra.me.REG[3])(fra.me.REG[3]);
115 } else {
116 /* ./icode//icode_tools.nit:40 */
117 goto label2;
118 }
119 }
120 label2: while(0);
121 /* ./icode//icode_tools.nit:46 */
122 ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[2];
123 } else {
124 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_IIf, ID_IIf)) /*cast IIf*/;
125 /* ./icode//icode_tools.nit:47 */
126 if (UNTAG_Bool(REGB0)) {
127 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
128 /* ./icode//icode_tools.nit:48 */
129 if (UNTAG_Bool(REGB0)) {
130 fprintf(stderr, "Reciever is null");
131 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 48);
132 nit_exit(1);
133 }
134 fra.me.REG[2] = CALL_icode_base___ICode1___expr(fra.me.REG[1])(fra.me.REG[1]);
135 CALL_icode_tools___ICodeVisitor___visit_iregister_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
136 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
137 /* ./icode//icode_tools.nit:49 */
138 if (UNTAG_Bool(REGB0)) {
139 fprintf(stderr, "Reciever is null");
140 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 49);
141 nit_exit(1);
142 }
143 fra.me.REG[2] = CALL_icode_base___IIf___then_seq(fra.me.REG[1])(fra.me.REG[1]);
144 CALL_icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
145 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
146 /* ./icode//icode_tools.nit:50 */
147 if (UNTAG_Bool(REGB0)) {
148 fprintf(stderr, "Reciever is null");
149 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 50);
150 nit_exit(1);
151 }
152 fra.me.REG[2] = CALL_icode_base___IIf___else_seq(fra.me.REG[1])(fra.me.REG[1]);
153 CALL_icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
154 } else {
155 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_IOnce, ID_IOnce)) /*cast IOnce*/;
156 /* ./icode//icode_tools.nit:51 */
157 if (UNTAG_Bool(REGB0)) {
158 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
159 /* ./icode//icode_tools.nit:52 */
160 if (UNTAG_Bool(REGB0)) {
161 fprintf(stderr, "Reciever is null");
162 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 52);
163 nit_exit(1);
164 }
165 fra.me.REG[2] = CALL_icode_base___IOnce___body(fra.me.REG[1])(fra.me.REG[1]);
166 CALL_icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
167 } else {
168 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_ICode1, ID_ICode1)) /*cast ICode1*/;
169 /* ./icode//icode_tools.nit:53 */
170 if (UNTAG_Bool(REGB0)) {
171 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
172 /* ./icode//icode_tools.nit:54 */
173 if (UNTAG_Bool(REGB0)) {
174 fprintf(stderr, "Reciever is null");
175 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 54);
176 nit_exit(1);
177 }
178 fra.me.REG[2] = CALL_icode_base___ICode1___expr(fra.me.REG[1])(fra.me.REG[1]);
179 CALL_icode_tools___ICodeVisitor___visit_iregister_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
180 } else {
181 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_ICode2, ID_ICode2)) /*cast ICode2*/;
182 /* ./icode//icode_tools.nit:55 */
183 if (UNTAG_Bool(REGB0)) {
184 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
185 /* ./icode//icode_tools.nit:56 */
186 if (UNTAG_Bool(REGB0)) {
187 fprintf(stderr, "Reciever is null");
188 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 56);
189 nit_exit(1);
190 }
191 fra.me.REG[2] = CALL_icode_base___ICode2___expr1(fra.me.REG[1])(fra.me.REG[1]);
192 CALL_icode_tools___ICodeVisitor___visit_iregister_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
193 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
194 /* ./icode//icode_tools.nit:57 */
195 if (UNTAG_Bool(REGB0)) {
196 fprintf(stderr, "Reciever is null");
197 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 57);
198 nit_exit(1);
199 }
200 fra.me.REG[2] = CALL_icode_base___ICode2___expr2(fra.me.REG[1])(fra.me.REG[1]);
201 CALL_icode_tools___ICodeVisitor___visit_iregister_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
202 } else {
203 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_ICodeN, ID_ICodeN)) /*cast ICodeN*/;
204 /* ./icode//icode_tools.nit:58 */
205 if (UNTAG_Bool(REGB0)) {
206 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
207 /* ./icode//icode_tools.nit:59 */
208 if (UNTAG_Bool(REGB0)) {
209 fprintf(stderr, "Reciever is null");
210 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 59);
211 nit_exit(1);
212 }
213 fra.me.REG[2] = CALL_icode_base___ICodeN___exprs(fra.me.REG[1])(fra.me.REG[1]);
214 fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
215 while(1) {
216 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
217 if (UNTAG_Bool(REGB0)) {
218 fra.me.REG[3] = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
219 /* ./icode//icode_tools.nit:60 */
220 CALL_icode_tools___ICodeVisitor___visit_iregister_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
221 } else {
222 /* ./icode//icode_tools.nit:59 */
223 goto label3;
224 }
225 CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
226 }
227 label3: while(0);
228 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
229 /* ./icode//icode_tools.nit:62 */
230 if (UNTAG_Bool(REGB0)) {
231 fprintf(stderr, "Reciever is null");
232 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 62);
233 nit_exit(1);
234 }
235 fra.me.REG[2] = CALL_icode_base___ICodeN___closure_defs(fra.me.REG[1])(fra.me.REG[1]);
236 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_IClosCall, ID_IClosCall)) /*cast IClosCall*/;
237 /* ./icode//icode_tools.nit:63 */
238 if (UNTAG_Bool(REGB0)) {
239 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
240 /* ./icode//icode_tools.nit:64 */
241 if (UNTAG_Bool(REGB0)) {
242 fprintf(stderr, "Reciever is null");
243 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 64);
244 nit_exit(1);
245 }
246 fra.me.REG[3] = CALL_icode_base___IClosCall___break_seq(fra.me.REG[1])(fra.me.REG[1]);
247 CALL_icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
248 }
249 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
250 /* ./icode//icode_tools.nit:66 */
251 if (UNTAG_Bool(REGB0)) {
252 } else {
253 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
254 if (UNTAG_Bool(REGB1)) {
255 REGB1 = TAG_Bool(false);
256 REGB0 = REGB1;
257 } else {
258 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
259 REGB0 = REGB1;
260 }
261 }
262 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
263 if (UNTAG_Bool(REGB0)) {
264 /* ./icode//icode_tools.nit:67 */
265 CALL_icode_tools___ICodeVisitor___visit_closure_defs(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
266 }
267 }
268 }
269 }
270 }
271 }
272 }
273 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
274 /* ./icode//icode_tools.nit:70 */
275 if (UNTAG_Bool(REGB0)) {
276 fprintf(stderr, "Reciever is null");
277 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 70);
278 nit_exit(1);
279 }
280 fra.me.REG[2] = CALL_icode_base___ICode___result(fra.me.REG[1])(fra.me.REG[1]);
281 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
282 /* ./icode//icode_tools.nit:71 */
283 if (UNTAG_Bool(REGB0)) {
284 } else {
285 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
286 if (UNTAG_Bool(REGB1)) {
287 REGB1 = TAG_Bool(false);
288 REGB0 = REGB1;
289 } else {
290 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
291 REGB0 = REGB1;
292 }
293 }
294 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
295 if (UNTAG_Bool(REGB0)) {
296 CALL_icode_tools___ICodeVisitor___visit_iregister_write(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
297 }
298 label1: while(0);
299 stack_frame_head = fra.me.prev;
300 return;
301 }
302 void icode_tools___ICodeVisitor___visit_closure_defs(val_t p0, val_t p1){
303 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
304 val_t REGB0;
305 val_t REGB1;
306 val_t tmp;
307 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
308 fra.me.file = LOCATE_icode_tools;
309 fra.me.line = 74;
310 fra.me.meth = LOCATE_icode_tools___ICodeVisitor___visit_closure_defs;
311 fra.me.has_broke = 0;
312 fra.me.REG_size = 3;
313 fra.me.REG[0] = NIT_NULL;
314 fra.me.REG[1] = NIT_NULL;
315 fra.me.REG[2] = NIT_NULL;
316 fra.me.REG[0] = p0;
317 fra.me.REG[1] = p1;
318 fra.me.REG[1] = CALL_abstract_collection___Collection___iterator(fra.me.REG[1])(fra.me.REG[1]);
319 /* ./icode//icode_tools.nit:78 */
320 while(1) {
321 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[1])(fra.me.REG[1]);
322 if (UNTAG_Bool(REGB0)) {
323 fra.me.REG[2] = CALL_abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
324 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
325 /* ./icode//icode_tools.nit:79 */
326 if (UNTAG_Bool(REGB0)) {
327 } else {
328 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
329 if (UNTAG_Bool(REGB1)) {
330 REGB1 = TAG_Bool(false);
331 REGB0 = REGB1;
332 } else {
333 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
334 REGB0 = REGB1;
335 }
336 }
337 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
338 if (UNTAG_Bool(REGB0)) {
339 /* ./icode//icode_tools.nit:80 */
340 CALL_icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
341 }
342 } else {
343 /* ./icode//icode_tools.nit:78 */
344 goto label1;
345 }
346 CALL_abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
347 }
348 label1: while(0);
349 stack_frame_head = fra.me.prev;
350 return;
351 }
352 void icode_tools___ICodeVisitor___visit_iroutine(val_t p0, val_t p1){
353 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
354 val_t tmp;
355 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
356 fra.me.file = LOCATE_icode_tools;
357 fra.me.line = 85;
358 fra.me.meth = LOCATE_icode_tools___ICodeVisitor___visit_iroutine;
359 fra.me.has_broke = 0;
360 fra.me.REG_size = 2;
361 fra.me.REG[0] = NIT_NULL;
362 fra.me.REG[1] = NIT_NULL;
363 fra.me.REG[0] = p0;
364 fra.me.REG[1] = p1;
365 fra.me.REG[1] = CALL_icode_base___IRoutine___body(fra.me.REG[1])(fra.me.REG[1]);
366 /* ./icode//icode_tools.nit:90 */
367 CALL_icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
368 stack_frame_head = fra.me.prev;
369 return;
370 }
371 void icode_tools___ICodeVisitor___init(val_t p0, int* init_table){
372 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ICodeVisitor].i;
373 struct {struct stack_frame_t me;} fra;
374 val_t tmp;
375 if (init_table[itpos0]) return;
376 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
377 fra.me.file = LOCATE_icode_tools;
378 fra.me.line = 0;
379 fra.me.meth = LOCATE_icode_tools___ICodeVisitor___init;
380 fra.me.has_broke = 0;
381 fra.me.REG_size = 0;
382 stack_frame_head = fra.me.prev;
383 init_table[itpos0] = 1;
384 return;
385 }
386 val_t icode_tools___ICodeBuilder___is_currently_inlining_routine(val_t p0, val_t p1){
387 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
388 val_t REGB0;
389 val_t REGB1;
390 val_t tmp;
391 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
392 fra.me.file = LOCATE_icode_tools;
393 fra.me.line = 99;
394 fra.me.meth = LOCATE_icode_tools___ICodeBuilder___is_currently_inlining_routine;
395 fra.me.has_broke = 0;
396 fra.me.REG_size = 3;
397 fra.me.REG[0] = NIT_NULL;
398 fra.me.REG[1] = NIT_NULL;
399 fra.me.REG[2] = NIT_NULL;
400 fra.me.REG[0] = p0;
401 fra.me.REG[1] = p1;
402 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
403 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
404 /* ./icode//icode_tools.nit:102 */
405 if (UNTAG_Bool(REGB0)) {
406 } else {
407 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
408 REGB0 = REGB1;
409 }
410 if (UNTAG_Bool(REGB0)) {
411 REGB0 = TAG_Bool(true);
412 } else {
413 REGB1 = TAG_Bool(ATTR_icode_tools___ICodeBuilder____current_inlining(fra.me.REG[0])!=NIT_NULL);
414 if (UNTAG_Bool(REGB1)) {
415 } else {
416 fprintf(stderr, "Uninitialized attribute %s", "_current_inlining");
417 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 102);
418 nit_exit(1);
419 }
420 fra.me.REG[0] = ATTR_icode_tools___ICodeBuilder____current_inlining(fra.me.REG[0]);
421 REGB1 = CALL_abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
422 REGB0 = REGB1;
423 }
424 goto label1;
425 label1: while(0);
426 stack_frame_head = fra.me.prev;
427 return REGB0;
428 }
429 val_t icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, val_t p2, val_t p3){
430 struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
431 val_t REGB0;
432 val_t REGB1;
433 val_t REGB2;
434 val_t REGB3;
435 val_t tmp;
436 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
437 fra.me.file = LOCATE_icode_tools;
438 fra.me.line = 105;
439 fra.me.meth = LOCATE_icode_tools___ICodeBuilder___inline_routine;
440 fra.me.has_broke = 0;
441 fra.me.REG_size = 11;
442 fra.me.REG[0] = NIT_NULL;
443 fra.me.REG[1] = NIT_NULL;
444 fra.me.REG[2] = NIT_NULL;
445 fra.me.REG[3] = NIT_NULL;
446 fra.me.REG[4] = NIT_NULL;
447 fra.me.REG[5] = NIT_NULL;
448 fra.me.REG[6] = NIT_NULL;
449 fra.me.REG[7] = NIT_NULL;
450 fra.me.REG[8] = NIT_NULL;
451 fra.me.REG[9] = NIT_NULL;
452 fra.me.REG[10] = NIT_NULL;
453 fra.me.REG[0] = p0;
454 fra.me.REG[1] = p1;
455 fra.me.REG[2] = p2;
456 fra.me.REG[3] = p3;
457 REGB0 = CALL_icode_tools___ICodeBuilder___is_currently_inlining_routine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
458 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
459 /* ./icode//icode_tools.nit:109 */
460 if (UNTAG_Bool(REGB0)) {
461 } else {
462 fprintf(stderr, "Assert failed");
463 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 109);
464 nit_exit(1);
465 }
466 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeBuilder____current_inlining(fra.me.REG[0])!=NIT_NULL);
467 /* ./icode//icode_tools.nit:110 */
468 if (UNTAG_Bool(REGB0)) {
469 } else {
470 fprintf(stderr, "Uninitialized attribute %s", "_current_inlining");
471 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 110);
472 nit_exit(1);
473 }
474 fra.me.REG[4] = ATTR_icode_tools___ICodeBuilder____current_inlining(fra.me.REG[0]);
475 array___Array___add(fra.me.REG[4], fra.me.REG[1]);
476 fra.me.REG[4] = NEW_ICodeDupContext_icode_tools___ICodeDupContext___init(fra.me.REG[0]);
477 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
478 fra.me.REG[5] = CALL_icode_base___IRoutine___params(fra.me.REG[1])(fra.me.REG[1]);
479 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
480 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
481 /* ./icode//icode_tools.nit:112 */
482 if (UNTAG_Bool(REGB2)) {
483 } else {
484 REGB1 = TAG_Bool((REGB0)==(REGB1));
485 REGB2 = REGB1;
486 /* ./icode//icode_tools.nit:112 */
487 }
488 if (UNTAG_Bool(REGB2)) {
489 } else {
490 fprintf(stderr, "Assert failed");
491 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 112);
492 nit_exit(1);
493 }
494 fra.me.REG[5] = CALL_icode_base___IRoutine___closure_decls(fra.me.REG[1])(fra.me.REG[1]);
495 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
496 /* ./icode//icode_tools.nit:114 */
497 if (UNTAG_Bool(REGB2)) {
498 } else {
499 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
500 if (UNTAG_Bool(REGB1)) {
501 REGB1 = TAG_Bool(false);
502 REGB2 = REGB1;
503 } else {
504 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
505 REGB2 = REGB1;
506 }
507 }
508 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
509 if (UNTAG_Bool(REGB2)) {
510 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
511 if (UNTAG_Bool(REGB2)) {
512 fprintf(stderr, "Reciever is null");
513 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 114);
514 nit_exit(1);
515 }
516 REGB2 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
517 } else {
518 REGB1 = TAG_Int(0);
519 REGB2 = REGB1;
520 }
521 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
522 /* ./icode//icode_tools.nit:115 */
523 if (UNTAG_Bool(REGB1)) {
524 } else {
525 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
526 if (UNTAG_Bool(REGB0)) {
527 REGB0 = TAG_Bool(false);
528 REGB1 = REGB0;
529 } else {
530 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
531 REGB1 = REGB0;
532 }
533 }
534 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
535 if (UNTAG_Bool(REGB1)) {
536 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
537 if (UNTAG_Bool(REGB1)) {
538 fprintf(stderr, "Reciever is null");
539 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 115);
540 nit_exit(1);
541 }
542 REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
543 } else {
544 REGB0 = TAG_Int(0);
545 REGB1 = REGB0;
546 }
547 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
548 /* ./icode//icode_tools.nit:116 */
549 if (UNTAG_Bool(REGB0)) {
550 } else {
551 fprintf(stderr, "Assert failed");
552 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 116);
553 nit_exit(1);
554 }
555 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____registers(fra.me.REG[4])!=NIT_NULL);
556 /* ./icode//icode_tools.nit:119 */
557 if (UNTAG_Bool(REGB0)) {
558 } else {
559 fprintf(stderr, "Uninitialized attribute %s", "_registers");
560 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 119);
561 nit_exit(1);
562 }
563 fra.me.REG[6] = ATTR_icode_tools___ICodeDupContext____registers(fra.me.REG[4]);
564 fra.me.REG[7] = CALL_icode_base___IRoutine___result(fra.me.REG[1])(fra.me.REG[1]);
565 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
566 /* ./icode//icode_tools.nit:121 */
567 if (UNTAG_Bool(REGB0)) {
568 } else {
569 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
570 if (UNTAG_Bool(REGB3)) {
571 REGB3 = TAG_Bool(false);
572 REGB0 = REGB3;
573 } else {
574 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
575 REGB0 = REGB3;
576 }
577 }
578 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
579 if (UNTAG_Bool(REGB0)) {
580 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
581 /* ./icode//icode_tools.nit:122 */
582 if (UNTAG_Bool(REGB0)) {
583 fprintf(stderr, "Reciever is null");
584 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 122);
585 nit_exit(1);
586 }
587 fra.me.REG[8] = CALL_icode_base___IRegister___stype(fra.me.REG[7])(fra.me.REG[7]);
588 fra.me.REG[8] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
589 /* ./icode//icode_tools.nit:123 */
590 CALL_abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
591 fra.me.REG[7] = fra.me.REG[8];
592 /* ./icode//icode_tools.nit:124 */
593 }
594 fra.me.REG[8] = CALL_icode_base___IRoutine___registers(fra.me.REG[1])(fra.me.REG[1]);
595 fra.me.REG[8] = CALL_abstract_collection___Collection___iterator(fra.me.REG[8])(fra.me.REG[8]);
596 /* ./icode//icode_tools.nit:126 */
597 while(1) {
598 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[8])(fra.me.REG[8]);
599 if (UNTAG_Bool(REGB0)) {
600 fra.me.REG[9] = CALL_abstract_collection___Iterator___item(fra.me.REG[8])(fra.me.REG[8]);
601 REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
602 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
603 /* ./icode//icode_tools.nit:127 */
604 if (UNTAG_Bool(REGB0)) {
605 } else {
606 fprintf(stderr, "Assert failed");
607 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 127);
608 nit_exit(1);
609 }
610 fra.me.REG[10] = CALL_icode_base___IRegister___stype(fra.me.REG[9])(fra.me.REG[9]);
611 fra.me.REG[10] = CALL_icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10]);
612 /* ./icode//icode_tools.nit:128 */
613 CALL_abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9], fra.me.REG[10]);
614 } else {
615 /* ./icode//icode_tools.nit:126 */
616 goto label1;
617 }
618 CALL_abstract_collection___Iterator___next(fra.me.REG[8])(fra.me.REG[8]);
619 }
620 label1: while(0);
621 REGB0 = TAG_Int(0);
622 REGB3 = CALL_abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
623 fra.me.REG[8] = NEW_Range_range___Range___without_last(REGB0, REGB3);
624 fra.me.REG[8] = CALL_abstract_collection___Collection___iterator(fra.me.REG[8])(fra.me.REG[8]);
625 /* ./icode//icode_tools.nit:130 */
626 while(1) {
627 REGB3 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[8])(fra.me.REG[8]);
628 if (UNTAG_Bool(REGB3)) {
629 REGB3 = CALL_abstract_collection___Iterator___item(fra.me.REG[8])(fra.me.REG[8]);
630 fra.me.REG[10] = CALL_icode_base___IRoutine___params(fra.me.REG[1])(fra.me.REG[1]);
631 fra.me.REG[10] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[10])(fra.me.REG[10], REGB3);
632 fra.me.REG[9] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB3);
633 /* ./icode//icode_tools.nit:133 */
634 CALL_abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[10], fra.me.REG[9]);
635 } else {
636 /* ./icode//icode_tools.nit:130 */
637 goto label2;
638 }
639 CALL_abstract_collection___Iterator___next(fra.me.REG[8])(fra.me.REG[8]);
640 }
641 label2: while(0);
642 fra.me.REG[8] = CALL_icode_base___IRoutine___escape_marks(fra.me.REG[1])(fra.me.REG[1]);
643 fra.me.REG[8] = CALL_abstract_collection___Collection___iterator(fra.me.REG[8])(fra.me.REG[8]);
644 /* ./icode//icode_tools.nit:138 */
645 while(1) {
646 REGB3 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[8])(fra.me.REG[8]);
647 if (UNTAG_Bool(REGB3)) {
648 fra.me.REG[6] = CALL_abstract_collection___Iterator___item(fra.me.REG[8])(fra.me.REG[8]);
649 fra.me.REG[2] = NEW_IEscapeMark_icode_base___IEscapeMark___init();
650 fra.me.REG[9] = CALL_icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
651 fra.me.REG[9] = CALL_icode_base___IRoutine___escape_marks(fra.me.REG[9])(fra.me.REG[9]);
652 /* ./icode//icode_tools.nit:140 */
653 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[2]);
654 REGB3 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____marks(fra.me.REG[4])!=NIT_NULL);
655 /* ./icode//icode_tools.nit:141 */
656 if (UNTAG_Bool(REGB3)) {
657 } else {
658 fprintf(stderr, "Uninitialized attribute %s", "_marks");
659 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 141);
660 nit_exit(1);
661 }
662 fra.me.REG[9] = ATTR_icode_tools___ICodeDupContext____marks(fra.me.REG[4]);
663 CALL_abstract_collection___Map_____braeq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6], fra.me.REG[2]);
664 } else {
665 /* ./icode//icode_tools.nit:138 */
666 goto label3;
667 }
668 CALL_abstract_collection___Iterator___next(fra.me.REG[8])(fra.me.REG[8]);
669 }
670 label3: while(0);
671 REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
672 /* ./icode//icode_tools.nit:145 */
673 if (UNTAG_Bool(REGB3)) {
674 } else {
675 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
676 if (UNTAG_Bool(REGB0)) {
677 REGB0 = TAG_Bool(false);
678 REGB3 = REGB0;
679 } else {
680 REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
681 REGB3 = REGB0;
682 }
683 }
684 REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
685 if (UNTAG_Bool(REGB3)) {
686 REGB3 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____closures(fra.me.REG[4])!=NIT_NULL);
687 /* ./icode//icode_tools.nit:146 */
688 if (UNTAG_Bool(REGB3)) {
689 } else {
690 fprintf(stderr, "Uninitialized attribute %s", "_closures");
691 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 146);
692 nit_exit(1);
693 }
694 fra.me.REG[8] = ATTR_icode_tools___ICodeDupContext____closures(fra.me.REG[4]);
695 REGB3 = TAG_Int(0);
696 fra.me.REG[2] = NEW_Range_range___Range___without_last(REGB3, REGB2);
697 fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
698 /* ./icode//icode_tools.nit:147 */
699 while(1) {
700 REGB3 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
701 if (UNTAG_Bool(REGB3)) {
702 REGB3 = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
703 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
704 /* ./icode//icode_tools.nit:148 */
705 if (UNTAG_Bool(REGB0)) {
706 fprintf(stderr, "Reciever is null");
707 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 148);
708 nit_exit(1);
709 }
710 fra.me.REG[6] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB3);
711 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
712 if (UNTAG_Bool(REGB0)) {
713 fprintf(stderr, "Reciever is null");
714 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 148);
715 nit_exit(1);
716 }
717 fra.me.REG[9] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB3);
718 CALL_abstract_collection___Map_____braeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6], fra.me.REG[9]);
719 } else {
720 /* ./icode//icode_tools.nit:147 */
721 goto label4;
722 }
723 CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
724 }
725 label4: while(0);
726 fra.me.REG[2] = NEW_Range_range___Range___without_last(REGB2, REGB1);
727 fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
728 /* ./icode//icode_tools.nit:150 */
729 while(1) {
730 REGB1 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
731 if (UNTAG_Bool(REGB1)) {
732 REGB1 = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
733 REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
734 /* ./icode//icode_tools.nit:151 */
735 if (UNTAG_Bool(REGB2)) {
736 fprintf(stderr, "Reciever is null");
737 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 151);
738 nit_exit(1);
739 }
740 fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB1);
741 CALL_abstract_collection___Map_____braeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3], NIT_NULL);
742 } else {
743 /* ./icode//icode_tools.nit:150 */
744 goto label5;
745 }
746 CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
747 }
748 label5: while(0);
749 }
750 fra.me.REG[1] = CALL_icode_base___IRoutine___body(fra.me.REG[1])(fra.me.REG[1]);
751 /* ./icode//icode_tools.nit:156 */
752 CALL_icode_tools___ICode___dup_with(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
753 REGB1 = TAG_Bool(ATTR_icode_tools___ICodeBuilder____current_inlining(fra.me.REG[0])!=NIT_NULL);
754 /* ./icode//icode_tools.nit:157 */
755 if (UNTAG_Bool(REGB1)) {
756 } else {
757 fprintf(stderr, "Uninitialized attribute %s", "_current_inlining");
758 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 157);
759 nit_exit(1);
760 }
761 fra.me.REG[0] = ATTR_icode_tools___ICodeBuilder____current_inlining(fra.me.REG[0]);
762 CALL_abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
763 /* ./icode//icode_tools.nit:158 */
764 goto label6;
765 label6: while(0);
766 stack_frame_head = fra.me.prev;
767 return fra.me.REG[7];
768 }
769 val_t icode_tools___ICodeDupContext___dup_ireg(val_t p0, val_t p1){
770 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
771 val_t REGB0;
772 val_t tmp;
773 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
774 fra.me.file = LOCATE_icode_tools;
775 fra.me.line = 164;
776 fra.me.meth = LOCATE_icode_tools___ICodeDupContext___dup_ireg;
777 fra.me.has_broke = 0;
778 fra.me.REG_size = 2;
779 fra.me.REG[0] = NIT_NULL;
780 fra.me.REG[1] = NIT_NULL;
781 fra.me.REG[0] = p0;
782 fra.me.REG[1] = p1;
783 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____registers(fra.me.REG[0])!=NIT_NULL);
784 /* ./icode//icode_tools.nit:169 */
785 if (UNTAG_Bool(REGB0)) {
786 } else {
787 fprintf(stderr, "Uninitialized attribute %s", "_registers");
788 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 169);
789 nit_exit(1);
790 }
791 fra.me.REG[0] = ATTR_icode_tools___ICodeDupContext____registers(fra.me.REG[0]);
792 REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
793 /* ./icode//icode_tools.nit:170 */
794 if (UNTAG_Bool(REGB0)) {
795 fra.me.REG[0] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
796 /* ./icode//icode_tools.nit:171 */
797 goto label1;
798 } else {
799 fra.me.REG[0] = fra.me.REG[1];
800 /* ./icode//icode_tools.nit:173 */
801 goto label1;
802 }
803 label1: while(0);
804 stack_frame_head = fra.me.prev;
805 return fra.me.REG[0];
806 }
807 val_t icode_tools___ICodeDupContext___dup_iregs(val_t p0, val_t p1){
808 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
809 val_t REGB0;
810 val_t tmp;
811 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
812 fra.me.file = LOCATE_icode_tools;
813 fra.me.line = 177;
814 fra.me.meth = LOCATE_icode_tools___ICodeDupContext___dup_iregs;
815 fra.me.has_broke = 0;
816 fra.me.REG_size = 4;
817 fra.me.REG[0] = NIT_NULL;
818 fra.me.REG[1] = NIT_NULL;
819 fra.me.REG[2] = NIT_NULL;
820 fra.me.REG[3] = NIT_NULL;
821 fra.me.REG[0] = p0;
822 fra.me.REG[1] = p1;
823 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
824 fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
825 fra.me.REG[1] = CALL_abstract_collection___Collection___iterator(fra.me.REG[1])(fra.me.REG[1]);
826 /* ./icode//icode_tools.nit:181 */
827 while(1) {
828 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[1])(fra.me.REG[1]);
829 if (UNTAG_Bool(REGB0)) {
830 fra.me.REG[3] = CALL_abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
831 fra.me.REG[3] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
832 /* ./icode//icode_tools.nit:182 */
833 array___Array___add(fra.me.REG[2], fra.me.REG[3]);
834 } else {
835 /* ./icode//icode_tools.nit:181 */
836 goto label1;
837 }
838 CALL_abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
839 }
840 label1: while(0);
841 /* ./icode//icode_tools.nit:184 */
842 goto label2;
843 label2: while(0);
844 stack_frame_head = fra.me.prev;
845 return fra.me.REG[2];
846 }
847 val_t icode_tools___ICodeDupContext___dup_mark(val_t p0, val_t p1){
848 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
849 val_t REGB0;
850 val_t tmp;
851 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
852 fra.me.file = LOCATE_icode_tools;
853 fra.me.line = 191;
854 fra.me.meth = LOCATE_icode_tools___ICodeDupContext___dup_mark;
855 fra.me.has_broke = 0;
856 fra.me.REG_size = 2;
857 fra.me.REG[0] = NIT_NULL;
858 fra.me.REG[1] = NIT_NULL;
859 fra.me.REG[0] = p0;
860 fra.me.REG[1] = p1;
861 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____marks(fra.me.REG[0])!=NIT_NULL);
862 /* ./icode//icode_tools.nit:196 */
863 if (UNTAG_Bool(REGB0)) {
864 } else {
865 fprintf(stderr, "Uninitialized attribute %s", "_marks");
866 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 196);
867 nit_exit(1);
868 }
869 fra.me.REG[0] = ATTR_icode_tools___ICodeDupContext____marks(fra.me.REG[0]);
870 REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
871 /* ./icode//icode_tools.nit:197 */
872 if (UNTAG_Bool(REGB0)) {
873 fra.me.REG[0] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
874 /* ./icode//icode_tools.nit:198 */
875 goto label1;
876 } else {
877 fra.me.REG[0] = fra.me.REG[1];
878 /* ./icode//icode_tools.nit:200 */
879 goto label1;
880 }
881 label1: while(0);
882 stack_frame_head = fra.me.prev;
883 return fra.me.REG[0];
884 }
885 void icode_tools___ICodeDupContext___init(val_t p0, val_t p1, int* init_table){
886 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_ICodeDupContext].i;
887 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
888 val_t tmp;
889 if (init_table[itpos1]) return;
890 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
891 fra.me.file = LOCATE_icode_tools;
892 fra.me.line = 214;
893 fra.me.meth = LOCATE_icode_tools___ICodeDupContext___init;
894 fra.me.has_broke = 0;
895 fra.me.REG_size = 2;
896 fra.me.REG[0] = NIT_NULL;
897 fra.me.REG[1] = NIT_NULL;
898 fra.me.REG[0] = p0;
899 fra.me.REG[1] = p1;
900 /* ./icode//icode_tools.nit:216 */
901 ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[0]) = fra.me.REG[1];
902 stack_frame_head = fra.me.prev;
903 init_table[itpos1] = 1;
904 return;
905 }
906 void icode_tools___ICode___dup_with(val_t p0, val_t p1){
907 struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
908 val_t REGB0;
909 val_t REGB1;
910 val_t tmp;
911 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
912 fra.me.file = LOCATE_icode_tools;
913 fra.me.line = 221;
914 fra.me.meth = LOCATE_icode_tools___ICode___dup_with;
915 fra.me.has_broke = 0;
916 fra.me.REG_size = 8;
917 fra.me.REG[0] = NIT_NULL;
918 fra.me.REG[1] = NIT_NULL;
919 fra.me.REG[2] = NIT_NULL;
920 fra.me.REG[3] = NIT_NULL;
921 fra.me.REG[4] = NIT_NULL;
922 fra.me.REG[5] = NIT_NULL;
923 fra.me.REG[6] = NIT_NULL;
924 fra.me.REG[7] = NIT_NULL;
925 fra.me.REG[0] = p0;
926 fra.me.REG[1] = p1;
927 fra.me.REG[2] = CALL_icode_tools___ICode___inner_dup_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
928 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_ICodeN, ID_ICodeN)) /*cast ICodeN*/;
929 /* ./icode//icode_tools.nit:225 */
930 if (UNTAG_Bool(REGB0)) {
931 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_ICodeN, ID_ICodeN)) /*cast ICodeN*/;
932 /* ./icode//icode_tools.nit:226 */
933 if (UNTAG_Bool(REGB0)) {
934 } else {
935 fprintf(stderr, "Assert failed");
936 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 226);
937 nit_exit(1);
938 }
939 fra.me.REG[3] = CALL_icode_base___ICodeN___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
940 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
941 /* ./icode//icode_tools.nit:228 */
942 if (UNTAG_Bool(REGB0)) {
943 } else {
944 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
945 if (UNTAG_Bool(REGB1)) {
946 REGB1 = TAG_Bool(false);
947 REGB0 = REGB1;
948 } else {
949 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
950 REGB0 = REGB1;
951 }
952 }
953 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
954 if (UNTAG_Bool(REGB0)) {
955 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
956 /* ./icode//icode_tools.nit:230 */
957 if (UNTAG_Bool(REGB0)) {
958 fprintf(stderr, "Reciever is null");
959 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 230);
960 nit_exit(1);
961 }
962 REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
963 fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
964 fra.me.REG[3] = CALL_abstract_collection___Collection___iterator(fra.me.REG[3])(fra.me.REG[3]);
965 /* ./icode//icode_tools.nit:231 */
966 while(1) {
967 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[3])(fra.me.REG[3]);
968 if (UNTAG_Bool(REGB0)) {
969 fra.me.REG[5] = CALL_abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
970 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
971 /* ./icode//icode_tools.nit:232 */
972 if (UNTAG_Bool(REGB0)) {
973 } else {
974 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
975 if (UNTAG_Bool(REGB1)) {
976 REGB1 = TAG_Bool(false);
977 REGB0 = REGB1;
978 } else {
979 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
980 REGB0 = REGB1;
981 }
982 }
983 if (UNTAG_Bool(REGB0)) {
984 /* ./icode//icode_tools.nit:233 */
985 array___Array___add(fra.me.REG[4], NIT_NULL);
986 } else {
987 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
988 /* ./icode//icode_tools.nit:235 */
989 if (UNTAG_Bool(REGB0)) {
990 fprintf(stderr, "Reciever is null");
991 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 235);
992 nit_exit(1);
993 }
994 fra.me.REG[6] = CALL_icode_base___IRoutine___result(fra.me.REG[5])(fra.me.REG[5]);
995 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
996 /* ./icode//icode_tools.nit:236 */
997 if (UNTAG_Bool(REGB0)) {
998 } else {
999 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1000 if (UNTAG_Bool(REGB1)) {
1001 REGB1 = TAG_Bool(false);
1002 REGB0 = REGB1;
1003 } else {
1004 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
1005 REGB0 = REGB1;
1006 }
1007 }
1008 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1009 if (UNTAG_Bool(REGB0)) {
1010 fra.me.REG[7] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
1011 fra.me.REG[6] = fra.me.REG[7];
1012 }
1013 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1014 /* ./icode//icode_tools.nit:237 */
1015 if (UNTAG_Bool(REGB0)) {
1016 fprintf(stderr, "Reciever is null");
1017 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 237);
1018 nit_exit(1);
1019 }
1020 fra.me.REG[7] = CALL_icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
1021 fra.me.REG[7] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
1022 fra.me.REG[6] = NEW_IClosureDef_icode_base___IClosureDef___init(fra.me.REG[7], fra.me.REG[6]);
1023 /* ./icode//icode_tools.nit:238 */
1024 array___Array___add(fra.me.REG[4], fra.me.REG[6]);
1025 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1026 /* ./icode//icode_tools.nit:239 */
1027 if (UNTAG_Bool(REGB0)) {
1028 fprintf(stderr, "Reciever is null");
1029 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 239);
1030 nit_exit(1);
1031 }
1032 fra.me.REG[5] = CALL_icode_base___IRoutine___body(fra.me.REG[5])(fra.me.REG[5]);
1033 fra.me.REG[6] = CALL_icode_base___IRoutine___body(fra.me.REG[6])(fra.me.REG[6]);
1034 CALL_icode_tools___ISeq___dup_seq_to(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[6]);
1035 }
1036 } else {
1037 /* ./icode//icode_tools.nit:231 */
1038 goto label1;
1039 }
1040 CALL_abstract_collection___Iterator___next(fra.me.REG[3])(fra.me.REG[3]);
1041 }
1042 label1: while(0);
1043 /* ./icode//icode_tools.nit:242 */
1044 CALL_icode_base___ICodeN___closure_defs__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1045 }
1046 }
1047 fra.me.REG[4] = CALL_icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
1048 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1049 /* ./icode//icode_tools.nit:246 */
1050 if (UNTAG_Bool(REGB0)) {
1051 } else {
1052 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1053 if (UNTAG_Bool(REGB1)) {
1054 REGB1 = TAG_Bool(false);
1055 REGB0 = REGB1;
1056 } else {
1057 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1058 REGB0 = REGB1;
1059 }
1060 }
1061 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1062 if (UNTAG_Bool(REGB0)) {
1063 fra.me.REG[4] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1064 CALL_icode_base___ICode___result__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
1065 }
1066 fra.me.REG[0] = CALL_icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
1067 /* ./icode//icode_tools.nit:247 */
1068 CALL_icode_base___ICode___location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1069 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1070 /* ./icode//icode_tools.nit:248 */
1071 if (UNTAG_Bool(REGB0)) {
1072 } else {
1073 fprintf(stderr, "Uninitialized attribute %s", "_icb");
1074 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 248);
1075 nit_exit(1);
1076 }
1077 fra.me.REG[1] = ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1078 fra.me.REG[1] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
1079 fra.me.REG[1] = CALL_icode_base___ISeq___icodes(fra.me.REG[1])(fra.me.REG[1]);
1080 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1081 stack_frame_head = fra.me.prev;
1082 return;
1083 }
1084 val_t icode_tools___ICode___inner_dup_with(val_t p0, val_t p1){
1085 struct {struct stack_frame_t me;} fra;
1086 val_t tmp;
1087 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1088 fra.me.file = LOCATE_icode_tools;
1089 fra.me.line = 251;
1090 fra.me.meth = LOCATE_icode_tools___ICode___inner_dup_with;
1091 fra.me.has_broke = 0;
1092 fra.me.REG_size = 0;
1093 /* ./icode//icode_tools.nit:251 */
1094 fprintf(stderr, "Deferred method called");
1095 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 251);
1096 nit_exit(1);
1097 stack_frame_head = fra.me.prev;
1098 return NIT_NULL;
1099 }
1100 val_t icode_tools___ISeq___inner_dup_with(val_t p0, val_t p1){
1101 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1102 val_t tmp;
1103 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1104 fra.me.file = LOCATE_icode_tools;
1105 fra.me.line = 256;
1106 fra.me.meth = LOCATE_icode_tools___ISeq___inner_dup_with;
1107 fra.me.has_broke = 0;
1108 fra.me.REG_size = 3;
1109 fra.me.REG[0] = NIT_NULL;
1110 fra.me.REG[1] = NIT_NULL;
1111 fra.me.REG[2] = NIT_NULL;
1112 fra.me.REG[0] = p0;
1113 fra.me.REG[1] = p1;
1114 fra.me.REG[2] = NEW_ISeq_icode_base___ISeq___init();
1115 /* ./icode//icode_tools.nit:259 */
1116 CALL_icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
1117 /* ./icode//icode_tools.nit:260 */
1118 goto label1;
1119 label1: while(0);
1120 stack_frame_head = fra.me.prev;
1121 return fra.me.REG[2];
1122 }
1123 void icode_tools___ISeq___dup_seq_to(val_t p0, val_t p1, val_t p2){
1124 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
1125 val_t REGB0;
1126 val_t REGB1;
1127 val_t tmp;
1128 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1129 fra.me.file = LOCATE_icode_tools;
1130 fra.me.line = 263;
1131 fra.me.meth = LOCATE_icode_tools___ISeq___dup_seq_to;
1132 fra.me.has_broke = 0;
1133 fra.me.REG_size = 6;
1134 fra.me.REG[0] = NIT_NULL;
1135 fra.me.REG[1] = NIT_NULL;
1136 fra.me.REG[2] = NIT_NULL;
1137 fra.me.REG[3] = NIT_NULL;
1138 fra.me.REG[4] = NIT_NULL;
1139 fra.me.REG[5] = NIT_NULL;
1140 fra.me.REG[0] = p0;
1141 fra.me.REG[1] = p1;
1142 fra.me.REG[2] = p2;
1143 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1144 /* ./icode//icode_tools.nit:267 */
1145 if (UNTAG_Bool(REGB0)) {
1146 } else {
1147 fprintf(stderr, "Uninitialized attribute %s", "_icb");
1148 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 267);
1149 nit_exit(1);
1150 }
1151 fra.me.REG[3] = ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1152 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___seq(fra.me.REG[3])(fra.me.REG[3]);
1153 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1154 /* ./icode//icode_tools.nit:268 */
1155 if (UNTAG_Bool(REGB0)) {
1156 } else {
1157 fprintf(stderr, "Uninitialized attribute %s", "_icb");
1158 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 268);
1159 nit_exit(1);
1160 }
1161 fra.me.REG[4] = ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1162 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1163 fra.me.REG[4] = CALL_icode_base___ISeq___icodes(fra.me.REG[0])(fra.me.REG[0]);
1164 fra.me.REG[4] = CALL_abstract_collection___Collection___iterator(fra.me.REG[4])(fra.me.REG[4]);
1165 /* ./icode//icode_tools.nit:269 */
1166 while(1) {
1167 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[4])(fra.me.REG[4]);
1168 if (UNTAG_Bool(REGB0)) {
1169 fra.me.REG[5] = CALL_abstract_collection___Iterator___item(fra.me.REG[4])(fra.me.REG[4]);
1170 /* ./icode//icode_tools.nit:270 */
1171 CALL_icode_tools___ICode___dup_with(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
1172 } else {
1173 /* ./icode//icode_tools.nit:269 */
1174 goto label1;
1175 }
1176 CALL_abstract_collection___Iterator___next(fra.me.REG[4])(fra.me.REG[4]);
1177 }
1178 label1: while(0);
1179 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1180 /* ./icode//icode_tools.nit:272 */
1181 if (UNTAG_Bool(REGB0)) {
1182 } else {
1183 fprintf(stderr, "Uninitialized attribute %s", "_icb");
1184 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 272);
1185 nit_exit(1);
1186 }
1187 fra.me.REG[4] = ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1188 CALL_icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1189 fra.me.REG[3] = CALL_icode_base___ISeq___iescape_mark(fra.me.REG[2])(fra.me.REG[2]);
1190 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1191 /* ./icode//icode_tools.nit:273 */
1192 if (UNTAG_Bool(REGB0)) {
1193 } else {
1194 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1195 if (UNTAG_Bool(REGB1)) {
1196 REGB1 = TAG_Bool(false);
1197 REGB0 = REGB1;
1198 } else {
1199 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1200 REGB0 = REGB1;
1201 }
1202 }
1203 if (UNTAG_Bool(REGB0)) {
1204 } else {
1205 fprintf(stderr, "Assert failed");
1206 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 273);
1207 nit_exit(1);
1208 }
1209 fra.me.REG[0] = CALL_icode_base___ISeq___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
1210 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1211 /* ./icode//icode_tools.nit:275 */
1212 if (UNTAG_Bool(REGB0)) {
1213 } else {
1214 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1215 if (UNTAG_Bool(REGB1)) {
1216 REGB1 = TAG_Bool(false);
1217 REGB0 = REGB1;
1218 } else {
1219 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1220 REGB0 = REGB1;
1221 }
1222 }
1223 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1224 if (UNTAG_Bool(REGB0)) {
1225 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_mark(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1226 /* ./icode//icode_tools.nit:276 */
1227 CALL_icode_base___ISeq___iescape_mark__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1228 }
1229 stack_frame_head = fra.me.prev;
1230 return;
1231 }
1232 val_t icode_tools___ILoop___inner_dup_with(val_t p0, val_t p1){
1233 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1234 val_t tmp;
1235 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1236 fra.me.file = LOCATE_icode_tools;
1237 fra.me.line = 282;
1238 fra.me.meth = LOCATE_icode_tools___ILoop___inner_dup_with;
1239 fra.me.has_broke = 0;
1240 fra.me.REG_size = 3;
1241 fra.me.REG[0] = NIT_NULL;
1242 fra.me.REG[1] = NIT_NULL;
1243 fra.me.REG[2] = NIT_NULL;
1244 fra.me.REG[0] = p0;
1245 fra.me.REG[1] = p1;
1246 fra.me.REG[2] = NEW_ILoop_icode_base___ILoop___init();
1247 /* ./icode//icode_tools.nit:285 */
1248 CALL_icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
1249 /* ./icode//icode_tools.nit:286 */
1250 goto label1;
1251 label1: while(0);
1252 stack_frame_head = fra.me.prev;
1253 return fra.me.REG[2];
1254 }
1255 val_t icode_tools___IIf___inner_dup_with(val_t p0, val_t p1){
1256 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1257 val_t tmp;
1258 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1259 fra.me.file = LOCATE_icode_tools;
1260 fra.me.line = 291;
1261 fra.me.meth = LOCATE_icode_tools___IIf___inner_dup_with;
1262 fra.me.has_broke = 0;
1263 fra.me.REG_size = 5;
1264 fra.me.REG[0] = NIT_NULL;
1265 fra.me.REG[1] = NIT_NULL;
1266 fra.me.REG[2] = NIT_NULL;
1267 fra.me.REG[3] = NIT_NULL;
1268 fra.me.REG[4] = NIT_NULL;
1269 fra.me.REG[0] = p0;
1270 fra.me.REG[1] = p1;
1271 fra.me.REG[2] = CALL_icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1272 fra.me.REG[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1273 fra.me.REG[2] = NEW_IIf_icode_base___IIf___init(fra.me.REG[2]);
1274 fra.me.REG[3] = CALL_icode_base___IIf___then_seq(fra.me.REG[0])(fra.me.REG[0]);
1275 fra.me.REG[4] = CALL_icode_base___IIf___then_seq(fra.me.REG[2])(fra.me.REG[2]);
1276 /* ./icode//icode_tools.nit:294 */
1277 CALL_icode_tools___ISeq___dup_seq_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[4]);
1278 fra.me.REG[0] = CALL_icode_base___IIf___else_seq(fra.me.REG[0])(fra.me.REG[0]);
1279 fra.me.REG[4] = CALL_icode_base___IIf___else_seq(fra.me.REG[2])(fra.me.REG[2]);
1280 /* ./icode//icode_tools.nit:295 */
1281 CALL_icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
1282 /* ./icode//icode_tools.nit:296 */
1283 goto label1;
1284 label1: while(0);
1285 stack_frame_head = fra.me.prev;
1286 return fra.me.REG[2];
1287 }
1288 val_t icode_tools___IEscape___inner_dup_with(val_t p0, val_t p1){
1289 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1290 val_t tmp;
1291 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1292 fra.me.file = LOCATE_icode_tools;
1293 fra.me.line = 301;
1294 fra.me.meth = LOCATE_icode_tools___IEscape___inner_dup_with;
1295 fra.me.has_broke = 0;
1296 fra.me.REG_size = 2;
1297 fra.me.REG[0] = NIT_NULL;
1298 fra.me.REG[1] = NIT_NULL;
1299 fra.me.REG[0] = p0;
1300 fra.me.REG[1] = p1;
1301 fra.me.REG[0] = CALL_icode_base___IEscape___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
1302 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_mark(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1303 fra.me.REG[0] = NEW_IEscape_icode_base___IEscape___init(fra.me.REG[0]);
1304 /* ./icode//icode_tools.nit:306 */
1305 goto label1;
1306 label1: while(0);
1307 stack_frame_head = fra.me.prev;
1308 return fra.me.REG[0];
1309 }
1310 val_t icode_tools___IAbort___inner_dup_with(val_t p0, val_t p1){
1311 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1312 val_t tmp;
1313 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1314 fra.me.file = LOCATE_icode_tools;
1315 fra.me.line = 311;
1316 fra.me.meth = LOCATE_icode_tools___IAbort___inner_dup_with;
1317 fra.me.has_broke = 0;
1318 fra.me.REG_size = 2;
1319 fra.me.REG[0] = NIT_NULL;
1320 fra.me.REG[1] = NIT_NULL;
1321 fra.me.REG[0] = p0;
1322 fra.me.REG[1] = p1;
1323 fra.me.REG[1] = CALL_icode_base___IAbort___texts(fra.me.REG[0])(fra.me.REG[0]);
1324 fra.me.REG[0] = CALL_icode_base___IAbort___module_location(fra.me.REG[0])(fra.me.REG[0]);
1325 fra.me.REG[0] = NEW_IAbort_icode_base___IAbort___init(fra.me.REG[1], fra.me.REG[0]);
1326 /* ./icode//icode_tools.nit:313 */
1327 goto label1;
1328 label1: while(0);
1329 stack_frame_head = fra.me.prev;
1330 return fra.me.REG[0];
1331 }
1332 val_t icode_tools___ICall___inner_dup_with(val_t p0, val_t p1){
1333 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1334 val_t tmp;
1335 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1336 fra.me.file = LOCATE_icode_tools;
1337 fra.me.line = 318;
1338 fra.me.meth = LOCATE_icode_tools___ICall___inner_dup_with;
1339 fra.me.has_broke = 0;
1340 fra.me.REG_size = 3;
1341 fra.me.REG[0] = NIT_NULL;
1342 fra.me.REG[1] = NIT_NULL;
1343 fra.me.REG[2] = NIT_NULL;
1344 fra.me.REG[0] = p0;
1345 fra.me.REG[1] = p1;
1346 fra.me.REG[2] = CALL_icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
1347 fra.me.REG[0] = CALL_icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1348 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1349 fra.me.REG[0] = NEW_ICall_icode_base___ICall___init(fra.me.REG[2], fra.me.REG[0]);
1350 /* ./icode//icode_tools.nit:320 */
1351 goto label1;
1352 label1: while(0);
1353 stack_frame_head = fra.me.prev;
1354 return fra.me.REG[0];
1355 }
1356 val_t icode_tools___ISuper___inner_dup_with(val_t p0, val_t p1){
1357 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1358 val_t tmp;
1359 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1360 fra.me.file = LOCATE_icode_tools;
1361 fra.me.line = 325;
1362 fra.me.meth = LOCATE_icode_tools___ISuper___inner_dup_with;
1363 fra.me.has_broke = 0;
1364 fra.me.REG_size = 3;
1365 fra.me.REG[0] = NIT_NULL;
1366 fra.me.REG[1] = NIT_NULL;
1367 fra.me.REG[2] = NIT_NULL;
1368 fra.me.REG[0] = p0;
1369 fra.me.REG[1] = p1;
1370 fra.me.REG[2] = CALL_icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
1371 fra.me.REG[0] = CALL_icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1372 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1373 fra.me.REG[0] = NEW_ISuper_icode_base___ISuper___init(fra.me.REG[2], fra.me.REG[0]);
1374 /* ./icode//icode_tools.nit:327 */
1375 goto label1;
1376 label1: while(0);
1377 stack_frame_head = fra.me.prev;
1378 return fra.me.REG[0];
1379 }
1380 val_t icode_tools___INew___inner_dup_with(val_t p0, val_t p1){
1381 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1382 val_t tmp;
1383 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1384 fra.me.file = LOCATE_icode_tools;
1385 fra.me.line = 332;
1386 fra.me.meth = LOCATE_icode_tools___INew___inner_dup_with;
1387 fra.me.has_broke = 0;
1388 fra.me.REG_size = 4;
1389 fra.me.REG[0] = NIT_NULL;
1390 fra.me.REG[1] = NIT_NULL;
1391 fra.me.REG[2] = NIT_NULL;
1392 fra.me.REG[3] = NIT_NULL;
1393 fra.me.REG[0] = p0;
1394 fra.me.REG[1] = p1;
1395 fra.me.REG[2] = CALL_icode_base___INew___stype(fra.me.REG[0])(fra.me.REG[0]);
1396 fra.me.REG[3] = CALL_icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
1397 fra.me.REG[0] = CALL_icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1398 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1399 fra.me.REG[0] = NEW_INew_icode_base___INew___init(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
1400 /* ./icode//icode_tools.nit:334 */
1401 goto label1;
1402 label1: while(0);
1403 stack_frame_head = fra.me.prev;
1404 return fra.me.REG[0];
1405 }
1406 val_t icode_tools___IAllocateInstance___inner_dup_with(val_t p0, val_t p1){
1407 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1408 val_t tmp;
1409 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1410 fra.me.file = LOCATE_icode_tools;
1411 fra.me.line = 339;
1412 fra.me.meth = LOCATE_icode_tools___IAllocateInstance___inner_dup_with;
1413 fra.me.has_broke = 0;
1414 fra.me.REG_size = 2;
1415 fra.me.REG[0] = NIT_NULL;
1416 fra.me.REG[1] = NIT_NULL;
1417 fra.me.REG[0] = p0;
1418 fra.me.REG[1] = p1;
1419 fra.me.REG[0] = CALL_icode_base___IAllocateInstance___stype(fra.me.REG[0])(fra.me.REG[0]);
1420 fra.me.REG[0] = NEW_IAllocateInstance_icode_base___IAllocateInstance___init(fra.me.REG[0]);
1421 /* ./icode//icode_tools.nit:341 */
1422 goto label1;
1423 label1: while(0);
1424 stack_frame_head = fra.me.prev;
1425 return fra.me.REG[0];
1426 }
1427 val_t icode_tools___IStaticCall___inner_dup_with(val_t p0, val_t p1){
1428 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1429 val_t tmp;
1430 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1431 fra.me.file = LOCATE_icode_tools;
1432 fra.me.line = 346;
1433 fra.me.meth = LOCATE_icode_tools___IStaticCall___inner_dup_with;
1434 fra.me.has_broke = 0;
1435 fra.me.REG_size = 3;
1436 fra.me.REG[0] = NIT_NULL;
1437 fra.me.REG[1] = NIT_NULL;
1438 fra.me.REG[2] = NIT_NULL;
1439 fra.me.REG[0] = p0;
1440 fra.me.REG[1] = p1;
1441 fra.me.REG[2] = CALL_icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
1442 fra.me.REG[0] = CALL_icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1443 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1444 fra.me.REG[0] = NEW_IStaticCall_icode_base___IStaticCall___init(fra.me.REG[2], fra.me.REG[0]);
1445 /* ./icode//icode_tools.nit:348 */
1446 goto label1;
1447 label1: while(0);
1448 stack_frame_head = fra.me.prev;
1449 return fra.me.REG[0];
1450 }
1451 val_t icode_tools___ICheckInstance___inner_dup_with(val_t p0, val_t p1){
1452 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1453 val_t tmp;
1454 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1455 fra.me.file = LOCATE_icode_tools;
1456 fra.me.line = 353;
1457 fra.me.meth = LOCATE_icode_tools___ICheckInstance___inner_dup_with;
1458 fra.me.has_broke = 0;
1459 fra.me.REG_size = 3;
1460 fra.me.REG[0] = NIT_NULL;
1461 fra.me.REG[1] = NIT_NULL;
1462 fra.me.REG[2] = NIT_NULL;
1463 fra.me.REG[0] = p0;
1464 fra.me.REG[1] = p1;
1465 fra.me.REG[2] = CALL_icode_base___ICheckInstance___stype(fra.me.REG[0])(fra.me.REG[0]);
1466 fra.me.REG[0] = CALL_icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1467 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1468 fra.me.REG[0] = NEW_ICheckInstance_icode_base___ICheckInstance___init(fra.me.REG[2], fra.me.REG[0]);
1469 /* ./icode//icode_tools.nit:355 */
1470 goto label1;
1471 label1: while(0);
1472 stack_frame_head = fra.me.prev;
1473 return fra.me.REG[0];
1474 }
1475 val_t icode_tools___IInitAttributes___inner_dup_with(val_t p0, val_t p1){
1476 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1477 val_t tmp;
1478 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1479 fra.me.file = LOCATE_icode_tools;
1480 fra.me.line = 360;
1481 fra.me.meth = LOCATE_icode_tools___IInitAttributes___inner_dup_with;
1482 fra.me.has_broke = 0;
1483 fra.me.REG_size = 3;
1484 fra.me.REG[0] = NIT_NULL;
1485 fra.me.REG[1] = NIT_NULL;
1486 fra.me.REG[2] = NIT_NULL;
1487 fra.me.REG[0] = p0;
1488 fra.me.REG[1] = p1;
1489 fra.me.REG[2] = CALL_icode_base___IInitAttributes___stype(fra.me.REG[0])(fra.me.REG[0]);
1490 fra.me.REG[0] = CALL_icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1491 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1492 fra.me.REG[0] = NEW_IInitAttributes_icode_base___IInitAttributes___init(fra.me.REG[2], fra.me.REG[0]);
1493 /* ./icode//icode_tools.nit:362 */
1494 goto label1;
1495 label1: while(0);
1496 stack_frame_head = fra.me.prev;
1497 return fra.me.REG[0];
1498 }
1499 void icode_tools___IClosCall___dup_with(val_t p0, val_t p1){
1500 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1501 val_t REGB0;
1502 val_t REGB1;
1503 val_t tmp;
1504 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1505 fra.me.file = LOCATE_icode_tools;
1506 fra.me.line = 367;
1507 fra.me.meth = LOCATE_icode_tools___IClosCall___dup_with;
1508 fra.me.has_broke = 0;
1509 fra.me.REG_size = 5;
1510 fra.me.REG[0] = NIT_NULL;
1511 fra.me.REG[1] = NIT_NULL;
1512 fra.me.REG[2] = NIT_NULL;
1513 fra.me.REG[3] = NIT_NULL;
1514 fra.me.REG[4] = NIT_NULL;
1515 fra.me.REG[0] = p0;
1516 fra.me.REG[1] = p1;
1517 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____closures(fra.me.REG[1])!=NIT_NULL);
1518 /* ./icode//icode_tools.nit:369 */
1519 if (UNTAG_Bool(REGB0)) {
1520 } else {
1521 fprintf(stderr, "Uninitialized attribute %s", "_closures");
1522 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 369);
1523 nit_exit(1);
1524 }
1525 fra.me.REG[2] = ATTR_icode_tools___ICodeDupContext____closures(fra.me.REG[1]);
1526 fra.me.REG[3] = CALL_icode_base___IClosCall___closure_decl(fra.me.REG[0])(fra.me.REG[0]);
1527 fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1528 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1529 /* ./icode//icode_tools.nit:370 */
1530 if (UNTAG_Bool(REGB0)) {
1531 } else {
1532 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1533 if (UNTAG_Bool(REGB1)) {
1534 REGB1 = TAG_Bool(false);
1535 REGB0 = REGB1;
1536 } else {
1537 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1538 REGB0 = REGB1;
1539 }
1540 }
1541 if (UNTAG_Bool(REGB0)) {
1542 /* ./icode//icode_tools.nit:372 */
1543 goto label1;
1544 }
1545 fra.me.REG[2] = CALL_icode_base___IClosCall___break_seq(fra.me.REG[0])(fra.me.REG[0]);
1546 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1547 /* ./icode//icode_tools.nit:375 */
1548 if (UNTAG_Bool(REGB0)) {
1549 } else {
1550 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1551 if (UNTAG_Bool(REGB1)) {
1552 REGB1 = TAG_Bool(false);
1553 REGB0 = REGB1;
1554 } else {
1555 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1556 REGB0 = REGB1;
1557 }
1558 }
1559 if (UNTAG_Bool(REGB0)) {
1560 } else {
1561 fprintf(stderr, "Assert failed");
1562 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 375);
1563 nit_exit(1);
1564 }
1565 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1566 /* ./icode//icode_tools.nit:376 */
1567 if (UNTAG_Bool(REGB0)) {
1568 } else {
1569 fprintf(stderr, "Uninitialized attribute %s", "_icb");
1570 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 376);
1571 nit_exit(1);
1572 }
1573 fra.me.REG[2] = ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1574 fra.me.REG[4] = CALL_icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1575 fra.me.REG[4] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1576 fra.me.REG[4] = CALL_icode_tools___ICodeBuilder___inline_routine(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], NIT_NULL);
1577 fra.me.REG[3] = CALL_icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
1578 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1579 /* ./icode//icode_tools.nit:377 */
1580 if (UNTAG_Bool(REGB0)) {
1581 } else {
1582 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1583 if (UNTAG_Bool(REGB1)) {
1584 REGB1 = TAG_Bool(false);
1585 REGB0 = REGB1;
1586 } else {
1587 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1588 REGB0 = REGB1;
1589 }
1590 }
1591 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1592 if (UNTAG_Bool(REGB0)) {
1593 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1594 /* ./icode//icode_tools.nit:378 */
1595 if (UNTAG_Bool(REGB0)) {
1596 } else {
1597 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1598 if (UNTAG_Bool(REGB1)) {
1599 REGB1 = TAG_Bool(false);
1600 REGB0 = REGB1;
1601 } else {
1602 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1603 REGB0 = REGB1;
1604 }
1605 }
1606 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1607 if (UNTAG_Bool(REGB0)) {
1608 } else {
1609 fprintf(stderr, "Assert failed");
1610 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 378);
1611 nit_exit(1);
1612 }
1613 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1614 /* ./icode//icode_tools.nit:379 */
1615 if (UNTAG_Bool(REGB0)) {
1616 } else {
1617 fprintf(stderr, "Uninitialized attribute %s", "_icb");
1618 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 379);
1619 nit_exit(1);
1620 }
1621 fra.me.REG[3] = ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1622 fra.me.REG[0] = CALL_icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
1623 REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_IRegister, ID_IRegister)) /*cast IRegister*/;
1624 if (UNTAG_Bool(REGB0)) {
1625 } else {
1626 fprintf(stderr, "Cast failed");
1627 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 379);
1628 nit_exit(1);
1629 }
1630 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1631 fra.me.REG[4] = NEW_IMove_icode_base___IMove___init(fra.me.REG[0], fra.me.REG[4]);
1632 CALL_icode_builder___ICodeBuilder___stmt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
1633 }
1634 label1: while(0);
1635 stack_frame_head = fra.me.prev;
1636 return;
1637 }
1638 val_t icode_tools___INative___inner_dup_with(val_t p0, val_t p1){
1639 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1640 val_t REGB0;
1641 val_t tmp;
1642 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1643 fra.me.file = LOCATE_icode_tools;
1644 fra.me.line = 385;
1645 fra.me.meth = LOCATE_icode_tools___INative___inner_dup_with;
1646 fra.me.has_broke = 0;
1647 fra.me.REG_size = 4;
1648 fra.me.REG[0] = NIT_NULL;
1649 fra.me.REG[1] = NIT_NULL;
1650 fra.me.REG[2] = NIT_NULL;
1651 fra.me.REG[3] = NIT_NULL;
1652 fra.me.REG[0] = p0;
1653 fra.me.REG[1] = p1;
1654 fra.me.REG[2] = CALL_icode_base___INative___code(fra.me.REG[0])(fra.me.REG[0]);
1655 fra.me.REG[3] = CALL_icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1656 fra.me.REG[3] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1657 fra.me.REG[3] = NEW_INative_icode_base___INative___init(fra.me.REG[2], fra.me.REG[3]);
1658 REGB0 = CALL_icode_base___ICode___is_pure(fra.me.REG[0])(fra.me.REG[0]);
1659 /* ./icode//icode_tools.nit:388 */
1660 CALL_icode_base___INative___is_pure__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1661 /* ./icode//icode_tools.nit:389 */
1662 goto label1;
1663 label1: while(0);
1664 stack_frame_head = fra.me.prev;
1665 return fra.me.REG[3];
1666 }
1667 val_t icode_tools___IMove___inner_dup_with(val_t p0, val_t p1){
1668 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1669 val_t REGB0;
1670 val_t tmp;
1671 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1672 fra.me.file = LOCATE_icode_tools;
1673 fra.me.line = 394;
1674 fra.me.meth = LOCATE_icode_tools___IMove___inner_dup_with;
1675 fra.me.has_broke = 0;
1676 fra.me.REG_size = 3;
1677 fra.me.REG[0] = NIT_NULL;
1678 fra.me.REG[1] = NIT_NULL;
1679 fra.me.REG[2] = NIT_NULL;
1680 fra.me.REG[0] = p0;
1681 fra.me.REG[1] = p1;
1682 fra.me.REG[2] = CALL_icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
1683 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_IRegister, ID_IRegister)) /*cast IRegister*/;
1684 /* ./icode//icode_tools.nit:396 */
1685 if (UNTAG_Bool(REGB0)) {
1686 } else {
1687 fprintf(stderr, "Cast failed");
1688 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 396);
1689 nit_exit(1);
1690 }
1691 fra.me.REG[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1692 fra.me.REG[0] = CALL_icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1693 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1694 fra.me.REG[0] = NEW_IMove_icode_base___IMove___init(fra.me.REG[2], fra.me.REG[0]);
1695 goto label1;
1696 label1: while(0);
1697 stack_frame_head = fra.me.prev;
1698 return fra.me.REG[0];
1699 }
1700 val_t icode_tools___IAttrRead___inner_dup_with(val_t p0, val_t p1){
1701 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1702 val_t tmp;
1703 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1704 fra.me.file = LOCATE_icode_tools;
1705 fra.me.line = 401;
1706 fra.me.meth = LOCATE_icode_tools___IAttrRead___inner_dup_with;
1707 fra.me.has_broke = 0;
1708 fra.me.REG_size = 3;
1709 fra.me.REG[0] = NIT_NULL;
1710 fra.me.REG[1] = NIT_NULL;
1711 fra.me.REG[2] = NIT_NULL;
1712 fra.me.REG[0] = p0;
1713 fra.me.REG[1] = p1;
1714 fra.me.REG[2] = CALL_icode_base___IAttrRead___property(fra.me.REG[0])(fra.me.REG[0]);
1715 fra.me.REG[0] = CALL_icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1716 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1717 fra.me.REG[0] = NEW_IAttrRead_icode_base___IAttrRead___init(fra.me.REG[2], fra.me.REG[0]);
1718 /* ./icode//icode_tools.nit:403 */
1719 goto label1;
1720 label1: while(0);
1721 stack_frame_head = fra.me.prev;
1722 return fra.me.REG[0];
1723 }
1724 val_t icode_tools___IAttrWrite___inner_dup_with(val_t p0, val_t p1){
1725 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1726 val_t tmp;
1727 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1728 fra.me.file = LOCATE_icode_tools;
1729 fra.me.line = 408;
1730 fra.me.meth = LOCATE_icode_tools___IAttrWrite___inner_dup_with;
1731 fra.me.has_broke = 0;
1732 fra.me.REG_size = 4;
1733 fra.me.REG[0] = NIT_NULL;
1734 fra.me.REG[1] = NIT_NULL;
1735 fra.me.REG[2] = NIT_NULL;
1736 fra.me.REG[3] = NIT_NULL;
1737 fra.me.REG[0] = p0;
1738 fra.me.REG[1] = p1;
1739 fra.me.REG[2] = CALL_icode_base___IAttrWrite___property(fra.me.REG[0])(fra.me.REG[0]);
1740 fra.me.REG[3] = CALL_icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
1741 fra.me.REG[3] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1742 fra.me.REG[0] = CALL_icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
1743 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1744 fra.me.REG[0] = NEW_IAttrWrite_icode_base___IAttrWrite___init(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
1745 /* ./icode//icode_tools.nit:410 */
1746 goto label1;
1747 label1: while(0);
1748 stack_frame_head = fra.me.prev;
1749 return fra.me.REG[0];
1750 }
1751 val_t icode_tools___IAttrIsset___inner_dup_with(val_t p0, val_t p1){
1752 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1753 val_t tmp;
1754 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1755 fra.me.file = LOCATE_icode_tools;
1756 fra.me.line = 415;
1757 fra.me.meth = LOCATE_icode_tools___IAttrIsset___inner_dup_with;
1758 fra.me.has_broke = 0;
1759 fra.me.REG_size = 3;
1760 fra.me.REG[0] = NIT_NULL;
1761 fra.me.REG[1] = NIT_NULL;
1762 fra.me.REG[2] = NIT_NULL;
1763 fra.me.REG[0] = p0;
1764 fra.me.REG[1] = p1;
1765 fra.me.REG[2] = CALL_icode_base___IAttrIsset___property(fra.me.REG[0])(fra.me.REG[0]);
1766 fra.me.REG[0] = CALL_icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1767 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1768 fra.me.REG[0] = NEW_IAttrIsset_icode_base___IAttrIsset___init(fra.me.REG[2], fra.me.REG[0]);
1769 /* ./icode//icode_tools.nit:417 */
1770 goto label1;
1771 label1: while(0);
1772 stack_frame_head = fra.me.prev;
1773 return fra.me.REG[0];
1774 }
1775 val_t icode_tools___ITypeCheck___inner_dup_with(val_t p0, val_t p1){
1776 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1777 val_t tmp;
1778 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1779 fra.me.file = LOCATE_icode_tools;
1780 fra.me.line = 422;
1781 fra.me.meth = LOCATE_icode_tools___ITypeCheck___inner_dup_with;
1782 fra.me.has_broke = 0;
1783 fra.me.REG_size = 3;
1784 fra.me.REG[0] = NIT_NULL;
1785 fra.me.REG[1] = NIT_NULL;
1786 fra.me.REG[2] = NIT_NULL;
1787 fra.me.REG[0] = p0;
1788 fra.me.REG[1] = p1;
1789 fra.me.REG[2] = CALL_icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1790 fra.me.REG[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1791 fra.me.REG[0] = CALL_icode_base___ITypeCheck___stype(fra.me.REG[0])(fra.me.REG[0]);
1792 fra.me.REG[0] = NEW_ITypeCheck_icode_base___ITypeCheck___init(fra.me.REG[2], fra.me.REG[0]);
1793 /* ./icode//icode_tools.nit:424 */
1794 goto label1;
1795 label1: while(0);
1796 stack_frame_head = fra.me.prev;
1797 return fra.me.REG[0];
1798 }
1799 val_t icode_tools___IIs___inner_dup_with(val_t p0, val_t p1){
1800 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1801 val_t tmp;
1802 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1803 fra.me.file = LOCATE_icode_tools;
1804 fra.me.line = 429;
1805 fra.me.meth = LOCATE_icode_tools___IIs___inner_dup_with;
1806 fra.me.has_broke = 0;
1807 fra.me.REG_size = 3;
1808 fra.me.REG[0] = NIT_NULL;
1809 fra.me.REG[1] = NIT_NULL;
1810 fra.me.REG[2] = NIT_NULL;
1811 fra.me.REG[0] = p0;
1812 fra.me.REG[1] = p1;
1813 fra.me.REG[2] = CALL_icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
1814 fra.me.REG[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1815 fra.me.REG[0] = CALL_icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
1816 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1817 fra.me.REG[0] = NEW_IIs_icode_base___IIs___init(fra.me.REG[2], fra.me.REG[0]);
1818 /* ./icode//icode_tools.nit:431 */
1819 goto label1;
1820 label1: while(0);
1821 stack_frame_head = fra.me.prev;
1822 return fra.me.REG[0];
1823 }
1824 val_t icode_tools___INot___inner_dup_with(val_t p0, val_t p1){
1825 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1826 val_t tmp;
1827 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1828 fra.me.file = LOCATE_icode_tools;
1829 fra.me.line = 436;
1830 fra.me.meth = LOCATE_icode_tools___INot___inner_dup_with;
1831 fra.me.has_broke = 0;
1832 fra.me.REG_size = 2;
1833 fra.me.REG[0] = NIT_NULL;
1834 fra.me.REG[1] = NIT_NULL;
1835 fra.me.REG[0] = p0;
1836 fra.me.REG[1] = p1;
1837 fra.me.REG[0] = CALL_icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1838 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1839 fra.me.REG[0] = NEW_INot_icode_base___INot___init(fra.me.REG[0]);
1840 /* ./icode//icode_tools.nit:438 */
1841 goto label1;
1842 label1: while(0);
1843 stack_frame_head = fra.me.prev;
1844 return fra.me.REG[0];
1845 }
1846 val_t icode_tools___IOnce___inner_dup_with(val_t p0, val_t p1){
1847 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1848 val_t tmp;
1849 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1850 fra.me.file = LOCATE_icode_tools;
1851 fra.me.line = 443;
1852 fra.me.meth = LOCATE_icode_tools___IOnce___inner_dup_with;
1853 fra.me.has_broke = 0;
1854 fra.me.REG_size = 4;
1855 fra.me.REG[0] = NIT_NULL;
1856 fra.me.REG[1] = NIT_NULL;
1857 fra.me.REG[2] = NIT_NULL;
1858 fra.me.REG[3] = NIT_NULL;
1859 fra.me.REG[0] = p0;
1860 fra.me.REG[1] = p1;
1861 fra.me.REG[2] = NEW_IOnce_icode_base___IOnce___init();
1862 fra.me.REG[0] = CALL_icode_base___IOnce___body(fra.me.REG[0])(fra.me.REG[0]);
1863 fra.me.REG[3] = CALL_icode_base___IOnce___body(fra.me.REG[2])(fra.me.REG[2]);
1864 /* ./icode//icode_tools.nit:446 */
1865 CALL_icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
1866 /* ./icode//icode_tools.nit:447 */
1867 goto label1;
1868 label1: while(0);
1869 stack_frame_head = fra.me.prev;
1870 return fra.me.REG[2];
1871 }
1872 val_t icode_tools___IHasClos___inner_dup_with(val_t p0, val_t p1){
1873 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1874 val_t REGB0;
1875 val_t REGB1;
1876 val_t tmp;
1877 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1878 fra.me.file = LOCATE_icode_tools;
1879 fra.me.line = 452;
1880 fra.me.meth = LOCATE_icode_tools___IHasClos___inner_dup_with;
1881 fra.me.has_broke = 0;
1882 fra.me.REG_size = 4;
1883 fra.me.REG[0] = NIT_NULL;
1884 fra.me.REG[1] = NIT_NULL;
1885 fra.me.REG[2] = NIT_NULL;
1886 fra.me.REG[3] = NIT_NULL;
1887 fra.me.REG[0] = p0;
1888 fra.me.REG[1] = p1;
1889 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____closures(fra.me.REG[1])!=NIT_NULL);
1890 /* ./icode//icode_tools.nit:454 */
1891 if (UNTAG_Bool(REGB0)) {
1892 } else {
1893 fprintf(stderr, "Uninitialized attribute %s", "_closures");
1894 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 454);
1895 nit_exit(1);
1896 }
1897 fra.me.REG[2] = ATTR_icode_tools___ICodeDupContext____closures(fra.me.REG[1]);
1898 fra.me.REG[3] = CALL_icode_base___IHasClos___closure_decl(fra.me.REG[0])(fra.me.REG[0]);
1899 fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1900 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1901 /* ./icode//icode_tools.nit:456 */
1902 if (UNTAG_Bool(REGB0)) {
1903 } else {
1904 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1905 if (UNTAG_Bool(REGB1)) {
1906 REGB1 = TAG_Bool(false);
1907 REGB0 = REGB1;
1908 } else {
1909 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1910 REGB0 = REGB1;
1911 }
1912 }
1913 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1914 if (UNTAG_Bool(REGB0)) {
1915 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1916 /* ./icode//icode_tools.nit:457 */
1917 if (UNTAG_Bool(REGB0)) {
1918 } else {
1919 fprintf(stderr, "Uninitialized attribute %s", "_icb");
1920 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 457);
1921 nit_exit(1);
1922 }
1923 fra.me.REG[3] = ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1924 fra.me.REG[3] = CALL_icode_builder___ICodeBuilder___lit_true_reg(fra.me.REG[3])(fra.me.REG[3]);
1925 } else {
1926 REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1927 /* ./icode//icode_tools.nit:459 */
1928 if (UNTAG_Bool(REGB0)) {
1929 } else {
1930 fprintf(stderr, "Uninitialized attribute %s", "_icb");
1931 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 459);
1932 nit_exit(1);
1933 }
1934 fra.me.REG[2] = ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1935 fra.me.REG[2] = CALL_icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[2])(fra.me.REG[2]);
1936 fra.me.REG[3] = fra.me.REG[2];
1937 }
1938 fra.me.REG[0] = CALL_icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
1939 REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_IRegister, ID_IRegister)) /*cast IRegister*/;
1940 /* ./icode//icode_tools.nit:461 */
1941 if (UNTAG_Bool(REGB0)) {
1942 } else {
1943 fprintf(stderr, "Cast failed");
1944 fprintf(stderr, " (%s:%d)\n", LOCATE_icode_tools, 461);
1945 nit_exit(1);
1946 }
1947 fra.me.REG[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1948 fra.me.REG[3] = NEW_IMove_icode_base___IMove___init(fra.me.REG[0], fra.me.REG[3]);
1949 goto label1;
1950 label1: while(0);
1951 stack_frame_head = fra.me.prev;
1952 return fra.me.REG[3];
1953 }