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