8e869169e3f66931f0dac75edf036bea592e68fe
[nit.git] / c_src / icode___icode_tools._sep.c
1 /* This C file is generated by NIT to compile module icode___icode_tools. */
2 #include "icode___icode_tools._sep.h"
3 void icode___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___icode_tools;
8 fra.me.line = 23;
9 fra.me.meth = LOCATE_icode___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___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___icode_tools;
26 fra.me.line = 26;
27 fra.me.meth = LOCATE_icode___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___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___icode_tools;
44 fra.me.line = 29;
45 fra.me.meth = LOCATE_icode___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:29 */
51 fra.me.REG[0] = ATTR_icode___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___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___icode_tools;
62 fra.me.line = 33;
63 fra.me.meth = LOCATE_icode___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:37 */
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_standard___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:38 */
90 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___ISeq, ID_icode___icode_base___ISeq)) /*cast ISeq*/;
91 if (UNTAG_Bool(REGB0)) {
92 /* ./icode//icode_tools.nit:39 */
93 fra.me.REG[2] = ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]);
94 /* ./icode//icode_tools.nit:40 */
95 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
96 if (UNTAG_Bool(REGB0)) {
97 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 40);
98 }
99 fra.me.REG[3] = CALL_icode___icode_base___ISeq___icodes(fra.me.REG[1])(fra.me.REG[1]);
100 fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[3])(fra.me.REG[3]);
101 /* ./icode//icode_tools.nit:41 */
102 while(1) {
103 REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[3])(fra.me.REG[3]);
104 if (UNTAG_Bool(REGB0)) {
105 /* ./icode//icode_tools.nit:42 */
106 ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[3];
107 /* ./icode//icode_tools.nit:43 */
108 fra.me.REG[4] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
109 /* ./icode//icode_tools.nit:44 */
110 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
111 /* ./icode//icode_tools.nit:45 */
112 CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[3])(fra.me.REG[3]);
113 } else {
114 /* ./icode//icode_tools.nit:41 */
115 goto label2;
116 }
117 }
118 label2: while(0);
119 /* ./icode//icode_tools.nit:47 */
120 ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[2];
121 } else {
122 /* ./icode//icode_tools.nit:48 */
123 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___IIf, ID_icode___icode_base___IIf)) /*cast IIf*/;
124 if (UNTAG_Bool(REGB0)) {
125 /* ./icode//icode_tools.nit:49 */
126 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
127 if (UNTAG_Bool(REGB0)) {
128 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 49);
129 }
130 fra.me.REG[2] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[1])(fra.me.REG[1]);
131 CALL_icode___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:50 */
133 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
134 if (UNTAG_Bool(REGB0)) {
135 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 50);
136 }
137 fra.me.REG[2] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[1])(fra.me.REG[1]);
138 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
139 /* ./icode//icode_tools.nit:51 */
140 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
141 if (UNTAG_Bool(REGB0)) {
142 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 51);
143 }
144 fra.me.REG[2] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[1])(fra.me.REG[1]);
145 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
146 } else {
147 /* ./icode//icode_tools.nit:52 */
148 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___IOnce, ID_icode___icode_base___IOnce)) /*cast IOnce*/;
149 if (UNTAG_Bool(REGB0)) {
150 /* ./icode//icode_tools.nit:53 */
151 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
152 if (UNTAG_Bool(REGB0)) {
153 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 53);
154 }
155 fra.me.REG[2] = CALL_icode___icode_base___IOnce___body(fra.me.REG[1])(fra.me.REG[1]);
156 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
157 } else {
158 /* ./icode//icode_tools.nit:54 */
159 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___ICode1, ID_icode___icode_base___ICode1)) /*cast ICode1*/;
160 if (UNTAG_Bool(REGB0)) {
161 /* ./icode//icode_tools.nit:55 */
162 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
163 if (UNTAG_Bool(REGB0)) {
164 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 55);
165 }
166 fra.me.REG[2] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[1])(fra.me.REG[1]);
167 CALL_icode___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:56 */
170 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___ICode2, ID_icode___icode_base___ICode2)) /*cast ICode2*/;
171 if (UNTAG_Bool(REGB0)) {
172 /* ./icode//icode_tools.nit:57 */
173 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
174 if (UNTAG_Bool(REGB0)) {
175 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 57);
176 }
177 fra.me.REG[2] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[1])(fra.me.REG[1]);
178 CALL_icode___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:58 */
180 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
181 if (UNTAG_Bool(REGB0)) {
182 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 58);
183 }
184 fra.me.REG[2] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[1])(fra.me.REG[1]);
185 CALL_icode___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:59 */
188 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___ICodeN, ID_icode___icode_base___ICodeN)) /*cast ICodeN*/;
189 if (UNTAG_Bool(REGB0)) {
190 /* ./icode//icode_tools.nit:60 */
191 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
192 if (UNTAG_Bool(REGB0)) {
193 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 60);
194 }
195 fra.me.REG[2] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[1])(fra.me.REG[1]);
196 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICodeVisitor___visit_icode_3));
197 /* ./icode//icode_tools.nit:63 */
198 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
199 if (UNTAG_Bool(REGB0)) {
200 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 63);
201 }
202 fra.me.REG[2] = CALL_icode___icode_base___ICodeN___closure_defs(fra.me.REG[1])(fra.me.REG[1]);
203 /* ./icode//icode_tools.nit:64 */
204 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___IClosCall, ID_icode___icode_base___IClosCall)) /*cast IClosCall*/;
205 if (UNTAG_Bool(REGB0)) {
206 /* ./icode//icode_tools.nit:65 */
207 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
208 if (UNTAG_Bool(REGB0)) {
209 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 65);
210 }
211 fra.me.REG[3] = CALL_icode___icode_base___IClosCall___break_seq(fra.me.REG[1])(fra.me.REG[1]);
212 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
213 }
214 /* ./icode//icode_tools.nit:67 */
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_standard___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:68 */
230 CALL_icode___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:71 */
239 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
240 if (UNTAG_Bool(REGB0)) {
241 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 71);
242 }
243 fra.me.REG[2] = CALL_icode___icode_base___ICode___result(fra.me.REG[1])(fra.me.REG[1]);
244 /* ./icode//icode_tools.nit:72 */
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_standard___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___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___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___icode_tools;
271 fra.me.line = 0;
272 fra.me.meth = LOCATE_icode___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:61 */
281 CALL_icode___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___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___icode_tools;
290 fra.me.line = 75;
291 fra.me.meth = LOCATE_icode___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_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICodeVisitor___visit_closure_defs_1));
299 stack_frame_head = fra.me.prev;
300 return;
301 }
302 void OC_icode___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:79 */
309 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
310 fra.me.file = LOCATE_icode___icode_tools;
311 fra.me.line = 0;
312 fra.me.meth = LOCATE_icode___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:80 */
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_standard___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:81 */
336 CALL_icode___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___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___icode_tools;
346 fra.me.line = 86;
347 fra.me.meth = LOCATE_icode___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:91 */
355 fra.me.REG[1] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[1])(fra.me.REG[1]);
356 CALL_icode___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___icode_tools___ICodeVisitor___init(val_t p0, int* init_table){
361 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_tools___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___icode_tools;
367 fra.me.line = 0;
368 fra.me.meth = LOCATE_icode___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___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___icode_tools;
386 fra.me.line = 96;
387 fra.me.meth = LOCATE_icode___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:100 */
405 fra.me.REG[4] = CALL_icode___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_standard___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___icode_tools, 100);
416 }
417 /* ./icode//icode_tools.nit:101 */
418 fra.me.REG[4] = NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init(fra.me.REG[0]);
419 /* ./icode//icode_tools.nit:102 */
420 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
421 fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[1])(fra.me.REG[1]);
422 REGB1 = CALL_standard___collection___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:227 */
427 REGB1 = TAG_Bool((REGB0)==(REGB1));
428 /* ./icode//icode_tools.nit:102 */
429 REGB2 = REGB1;
430 }
431 if (UNTAG_Bool(REGB2)) {
432 } else {
433 nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 102);
434 }
435 /* ./icode//icode_tools.nit:103 */
436 fra.me.REG[5] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[1])(fra.me.REG[1]);
437 /* ./icode//icode_tools.nit:104 */
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_standard___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___icode_tools, 104);
455 }
456 REGB2 = CALL_standard___collection___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:105 */
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_standard___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___icode_tools, 105);
479 }
480 REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
481 } else {
482 REGB0 = TAG_Int(0);
483 REGB1 = REGB0;
484 }
485 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
486 if (UNTAG_Bool(REGB0)) {
487 } else {
488 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
489 }
490 /* ./../lib/standard//kernel.nit:231 */
491 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
492 /* ./icode//icode_tools.nit:106 */
493 if (UNTAG_Bool(REGB0)) {
494 } else {
495 nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 106);
496 }
497 /* ./icode//icode_tools.nit:109 */
498 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[4])!=NIT_NULL);
499 if (UNTAG_Bool(REGB0)) {
500 } else {
501 nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode___icode_tools, 109);
502 }
503 fra.me.REG[6] = ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[4]);
504 /* ./icode//icode_tools.nit:110 */
505 fra.me.REG[7] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[1])(fra.me.REG[1]);
506 /* ./icode//icode_tools.nit:111 */
507 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
508 if (UNTAG_Bool(REGB0)) {
509 } else {
510 REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
511 if (UNTAG_Bool(REGB3)) {
512 REGB3 = TAG_Bool(false);
513 REGB0 = REGB3;
514 } else {
515 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
516 REGB0 = REGB3;
517 }
518 }
519 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
520 if (UNTAG_Bool(REGB0)) {
521 /* ./icode//icode_tools.nit:112 */
522 REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
523 if (UNTAG_Bool(REGB0)) {
524 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 112);
525 }
526 fra.me.REG[8] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[7])(fra.me.REG[7]);
527 fra.me.REG[8] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
528 /* ./icode//icode_tools.nit:113 */
529 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
530 /* ./icode//icode_tools.nit:114 */
531 fra.me.REG[7] = fra.me.REG[8];
532 }
533 /* ./icode//icode_tools.nit:116 */
534 fra.me.REG[8] = CALL_icode___icode_base___IRoutine___registers(fra.me.REG[1])(fra.me.REG[1]);
535 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[8])(fra.me.REG[8], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICodeBuilder___inline_routine_1));
536 /* ./icode//icode_tools.nit:120 */
537 REGB0 = TAG_Int(0);
538 REGB3 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
539 /* ./../lib/standard//kernel.nit:352 */
540 while(1) {
541 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
542 if (UNTAG_Bool(REGB4)) {
543 } else {
544 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
545 }
546 /* ./../lib/standard//kernel.nit:232 */
547 REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
548 /* ./../lib/standard//kernel.nit:352 */
549 if (UNTAG_Bool(REGB4)) {
550 /* ./icode//icode_tools.nit:120 */
551 REGB4 = REGB0;
552 /* ./icode//icode_tools.nit:123 */
553 fra.me.REG[8] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[1])(fra.me.REG[1]);
554 fra.me.REG[8] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB4);
555 fra.me.REG[9] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
556 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8], fra.me.REG[9]);
557 /* ./../lib/standard//kernel.nit:354 */
558 REGB4 = TAG_Int(1);
559 /* ./../lib/standard//kernel.nit:235 */
560 REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
561 /* ./../lib/standard//kernel.nit:354 */
562 REGB0 = REGB4;
563 } else {
564 /* ./../lib/standard//kernel.nit:352 */
565 goto label2;
566 }
567 }
568 label2: while(0);
569 /* ./icode//icode_tools.nit:128 */
570 fra.me.REG[6] = CALL_icode___icode_base___IRoutine___escape_marks(fra.me.REG[1])(fra.me.REG[1]);
571 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[6])(fra.me.REG[6], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICodeBuilder___inline_routine_3));
572 /* ./icode//icode_tools.nit:135 */
573 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
574 if (UNTAG_Bool(REGB0)) {
575 } else {
576 REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
577 if (UNTAG_Bool(REGB3)) {
578 REGB3 = TAG_Bool(false);
579 REGB0 = REGB3;
580 } else {
581 REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
582 REGB0 = REGB3;
583 }
584 }
585 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
586 if (UNTAG_Bool(REGB0)) {
587 /* ./icode//icode_tools.nit:136 */
588 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[4])!=NIT_NULL);
589 if (UNTAG_Bool(REGB0)) {
590 } else {
591 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 136);
592 }
593 fra.me.REG[0] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[4]);
594 /* ./icode//icode_tools.nit:137 */
595 REGB0 = TAG_Int(0);
596 /* ./../lib/standard//kernel.nit:347 */
597 REGB3 = REGB2;
598 /* ./../lib/standard//kernel.nit:352 */
599 while(1) {
600 REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
601 if (UNTAG_Bool(REGB4)) {
602 } else {
603 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
604 }
605 /* ./../lib/standard//kernel.nit:232 */
606 REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
607 /* ./../lib/standard//kernel.nit:352 */
608 if (UNTAG_Bool(REGB4)) {
609 /* ./icode//icode_tools.nit:137 */
610 REGB4 = REGB0;
611 /* ./icode//icode_tools.nit:138 */
612 REGB5 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
613 if (UNTAG_Bool(REGB5)) {
614 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 138);
615 }
616 fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB4);
617 REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
618 if (UNTAG_Bool(REGB5)) {
619 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 138);
620 }
621 fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB4);
622 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6], fra.me.REG[2]);
623 /* ./../lib/standard//kernel.nit:354 */
624 REGB4 = TAG_Int(1);
625 /* ./../lib/standard//kernel.nit:235 */
626 REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
627 /* ./../lib/standard//kernel.nit:354 */
628 REGB0 = REGB4;
629 } else {
630 /* ./../lib/standard//kernel.nit:352 */
631 goto label4;
632 }
633 }
634 label4: while(0);
635 /* ./../lib/standard//kernel.nit:352 */
636 while(1) {
637 REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
638 if (UNTAG_Bool(REGB0)) {
639 } else {
640 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
641 }
642 /* ./../lib/standard//kernel.nit:232 */
643 REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
644 /* ./../lib/standard//kernel.nit:352 */
645 if (UNTAG_Bool(REGB0)) {
646 /* ./icode//icode_tools.nit:140 */
647 REGB0 = REGB2;
648 /* ./icode//icode_tools.nit:141 */
649 REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
650 if (UNTAG_Bool(REGB3)) {
651 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 141);
652 }
653 fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB0);
654 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], NIT_NULL);
655 /* ./../lib/standard//kernel.nit:354 */
656 REGB0 = TAG_Int(1);
657 /* ./../lib/standard//kernel.nit:235 */
658 REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
659 /* ./../lib/standard//kernel.nit:354 */
660 REGB2 = REGB0;
661 } else {
662 /* ./../lib/standard//kernel.nit:352 */
663 goto label5;
664 }
665 }
666 label5: while(0);
667 }
668 /* ./icode//icode_tools.nit:146 */
669 fra.me.REG[1] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[1])(fra.me.REG[1]);
670 CALL_icode___icode_tools___ICode___dup_with(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
671 /* ./icode//icode_tools.nit:147 */
672 goto label6;
673 label6: while(0);
674 stack_frame_head = fra.me.prev;
675 return fra.me.REG[7];
676 }
677 void OC_icode___icode_tools___ICodeBuilder___inline_routine_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
678 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
679 val_t REGB0;
680 fun_t CREG[1];
681 val_t tmp;
682 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
683 fra.me.file = LOCATE_icode___icode_tools;
684 fra.me.line = 0;
685 fra.me.meth = LOCATE_icode___icode_tools___ICodeBuilder___inline_routine;
686 fra.me.has_broke = 0;
687 fra.me.REG_size = 2;
688 fra.me.REG[0] = NIT_NULL;
689 fra.me.REG[1] = NIT_NULL;
690 fra.me.closure_ctx = closctx_param;
691 fra.me.closure_funs = CREG;
692 fra.me.REG[0] = p0;
693 CREG[0] = clos_fun0;
694 /* ./icode//icode_tools.nit:117 */
695 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
696 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
697 if (UNTAG_Bool(REGB0)) {
698 } else {
699 nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 117);
700 }
701 /* ./icode//icode_tools.nit:118 */
702 fra.me.REG[1] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[0])(fra.me.REG[0]);
703 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___new_register(closctx->REG[0])(closctx->REG[0], fra.me.REG[1]);
704 CALL_standard___collection___abstract_collection___Map_____braeq(closctx->REG[6])(closctx->REG[6], fra.me.REG[0], fra.me.REG[1]);
705 stack_frame_head = fra.me.prev;
706 return;
707 }
708 void OC_icode___icode_tools___ICodeBuilder___inline_routine_3(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
709 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
710 val_t REGB0;
711 fun_t CREG[1];
712 val_t tmp;
713 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
714 fra.me.file = LOCATE_icode___icode_tools;
715 fra.me.line = 0;
716 fra.me.meth = LOCATE_icode___icode_tools___ICodeBuilder___inline_routine;
717 fra.me.has_broke = 0;
718 fra.me.REG_size = 3;
719 fra.me.REG[0] = NIT_NULL;
720 fra.me.REG[1] = NIT_NULL;
721 fra.me.REG[2] = NIT_NULL;
722 fra.me.closure_ctx = closctx_param;
723 fra.me.closure_funs = CREG;
724 fra.me.REG[0] = p0;
725 CREG[0] = clos_fun0;
726 /* ./icode//icode_tools.nit:129 */
727 fra.me.REG[1] = NEW_IEscapeMark_icode___icode_base___IEscapeMark___init();
728 /* ./icode//icode_tools.nit:130 */
729 fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___iroutine(closctx->REG[0])(closctx->REG[0]);
730 fra.me.REG[2] = CALL_icode___icode_base___IRoutine___escape_marks(fra.me.REG[2])(fra.me.REG[2]);
731 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
732 /* ./icode//icode_tools.nit:131 */
733 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____marks(closctx->REG[4])!=NIT_NULL);
734 if (UNTAG_Bool(REGB0)) {
735 } else {
736 nit_abort("Uninitialized attribute %s", "_marks", LOCATE_icode___icode_tools, 131);
737 }
738 fra.me.REG[2] = ATTR_icode___icode_tools___ICodeDupContext____marks(closctx->REG[4]);
739 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1]);
740 stack_frame_head = fra.me.prev;
741 return;
742 }
743 val_t icode___icode_tools___ICodeDupContext___dup_ireg(val_t p0, val_t p1){
744 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
745 val_t REGB0;
746 val_t tmp;
747 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
748 fra.me.file = LOCATE_icode___icode_tools;
749 fra.me.line = 153;
750 fra.me.meth = LOCATE_icode___icode_tools___ICodeDupContext___dup_ireg;
751 fra.me.has_broke = 0;
752 fra.me.REG_size = 2;
753 fra.me.REG[0] = NIT_NULL;
754 fra.me.REG[1] = NIT_NULL;
755 fra.me.REG[0] = p0;
756 fra.me.REG[1] = p1;
757 /* ./icode//icode_tools.nit:158 */
758 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[0])!=NIT_NULL);
759 if (UNTAG_Bool(REGB0)) {
760 } else {
761 nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode___icode_tools, 158);
762 }
763 fra.me.REG[0] = ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[0]);
764 /* ./icode//icode_tools.nit:159 */
765 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
766 if (UNTAG_Bool(REGB0)) {
767 /* ./icode//icode_tools.nit:160 */
768 fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
769 goto label1;
770 } else {
771 /* ./icode//icode_tools.nit:162 */
772 fra.me.REG[0] = fra.me.REG[1];
773 goto label1;
774 }
775 label1: while(0);
776 stack_frame_head = fra.me.prev;
777 return fra.me.REG[0];
778 }
779 val_t icode___icode_tools___ICodeDupContext___dup_iregs(val_t p0, val_t p1){
780 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
781 val_t REGB0;
782 val_t tmp;
783 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
784 fra.me.file = LOCATE_icode___icode_tools;
785 fra.me.line = 166;
786 fra.me.meth = LOCATE_icode___icode_tools___ICodeDupContext___dup_iregs;
787 fra.me.has_broke = 0;
788 fra.me.REG_size = 3;
789 fra.me.REG[0] = NIT_NULL;
790 fra.me.REG[1] = NIT_NULL;
791 fra.me.REG[2] = NIT_NULL;
792 fra.me.REG[0] = p0;
793 fra.me.REG[1] = p1;
794 /* ./icode//icode_tools.nit:169 */
795 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
796 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
797 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICodeDupContext___dup_iregs_1));
798 /* ./icode//icode_tools.nit:173 */
799 goto label2;
800 label2: while(0);
801 stack_frame_head = fra.me.prev;
802 return fra.me.REG[2];
803 }
804 void OC_icode___icode_tools___ICodeDupContext___dup_iregs_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
805 struct {struct stack_frame_t me;} fra;
806 fun_t CREG[1];
807 val_t tmp;
808 /* ./icode//icode_tools.nit:170 */
809 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
810 fra.me.file = LOCATE_icode___icode_tools;
811 fra.me.line = 0;
812 fra.me.meth = LOCATE_icode___icode_tools___ICodeDupContext___dup_iregs;
813 fra.me.has_broke = 0;
814 fra.me.REG_size = 1;
815 fra.me.REG[0] = NIT_NULL;
816 fra.me.closure_ctx = closctx_param;
817 fra.me.closure_funs = CREG;
818 fra.me.REG[0] = p0;
819 CREG[0] = clos_fun0;
820 /* ./icode//icode_tools.nit:171 */
821 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
822 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
823 stack_frame_head = fra.me.prev;
824 return;
825 }
826 val_t icode___icode_tools___ICodeDupContext___dup_mark(val_t p0, val_t p1){
827 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
828 val_t REGB0;
829 val_t tmp;
830 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
831 fra.me.file = LOCATE_icode___icode_tools;
832 fra.me.line = 180;
833 fra.me.meth = LOCATE_icode___icode_tools___ICodeDupContext___dup_mark;
834 fra.me.has_broke = 0;
835 fra.me.REG_size = 2;
836 fra.me.REG[0] = NIT_NULL;
837 fra.me.REG[1] = NIT_NULL;
838 fra.me.REG[0] = p0;
839 fra.me.REG[1] = p1;
840 /* ./icode//icode_tools.nit:185 */
841 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____marks(fra.me.REG[0])!=NIT_NULL);
842 if (UNTAG_Bool(REGB0)) {
843 } else {
844 nit_abort("Uninitialized attribute %s", "_marks", LOCATE_icode___icode_tools, 185);
845 }
846 fra.me.REG[0] = ATTR_icode___icode_tools___ICodeDupContext____marks(fra.me.REG[0]);
847 /* ./icode//icode_tools.nit:186 */
848 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
849 if (UNTAG_Bool(REGB0)) {
850 /* ./icode//icode_tools.nit:187 */
851 fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
852 goto label1;
853 } else {
854 /* ./icode//icode_tools.nit:189 */
855 fra.me.REG[0] = fra.me.REG[1];
856 goto label1;
857 }
858 label1: while(0);
859 stack_frame_head = fra.me.prev;
860 return fra.me.REG[0];
861 }
862 void icode___icode_tools___ICodeDupContext___init(val_t p0, val_t p1, int* init_table){
863 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_tools___ICodeDupContext].i;
864 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
865 val_t tmp;
866 if (init_table[itpos1]) return;
867 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
868 fra.me.file = LOCATE_icode___icode_tools;
869 fra.me.line = 203;
870 fra.me.meth = LOCATE_icode___icode_tools___ICodeDupContext___init;
871 fra.me.has_broke = 0;
872 fra.me.REG_size = 2;
873 fra.me.REG[0] = NIT_NULL;
874 fra.me.REG[1] = NIT_NULL;
875 fra.me.REG[0] = p0;
876 fra.me.REG[1] = p1;
877 /* ./icode//icode_tools.nit:205 */
878 ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[0]) = fra.me.REG[1];
879 stack_frame_head = fra.me.prev;
880 init_table[itpos1] = 1;
881 return;
882 }
883 void icode___icode_tools___ICode___dup_with(val_t p0, val_t p1){
884 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
885 val_t REGB0;
886 val_t REGB1;
887 val_t tmp;
888 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
889 fra.me.file = LOCATE_icode___icode_tools;
890 fra.me.line = 210;
891 fra.me.meth = LOCATE_icode___icode_tools___ICode___dup_with;
892 fra.me.has_broke = 0;
893 fra.me.REG_size = 5;
894 fra.me.REG[0] = NIT_NULL;
895 fra.me.REG[1] = NIT_NULL;
896 fra.me.REG[2] = NIT_NULL;
897 fra.me.REG[3] = NIT_NULL;
898 fra.me.REG[4] = NIT_NULL;
899 fra.me.REG[0] = p0;
900 fra.me.REG[1] = p1;
901 /* ./icode//icode_tools.nit:213 */
902 fra.me.REG[2] = CALL_icode___icode_tools___ICode___inner_dup_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
903 /* ./icode//icode_tools.nit:214 */
904 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_icode___icode_base___ICodeN, ID_icode___icode_base___ICodeN)) /*cast ICodeN*/;
905 if (UNTAG_Bool(REGB0)) {
906 /* ./icode//icode_tools.nit:215 */
907 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_icode___icode_base___ICodeN, ID_icode___icode_base___ICodeN)) /*cast ICodeN*/;
908 if (UNTAG_Bool(REGB0)) {
909 } else {
910 nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 215);
911 }
912 /* ./icode//icode_tools.nit:216 */
913 fra.me.REG[3] = CALL_icode___icode_base___ICodeN___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
914 /* ./icode//icode_tools.nit:217 */
915 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
916 if (UNTAG_Bool(REGB0)) {
917 } else {
918 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
919 if (UNTAG_Bool(REGB1)) {
920 REGB1 = TAG_Bool(false);
921 REGB0 = REGB1;
922 } else {
923 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
924 REGB0 = REGB1;
925 }
926 }
927 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
928 if (UNTAG_Bool(REGB0)) {
929 /* ./icode//icode_tools.nit:219 */
930 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
931 if (UNTAG_Bool(REGB0)) {
932 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 219);
933 }
934 REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
935 fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
936 /* ./icode//icode_tools.nit:220 */
937 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
938 if (UNTAG_Bool(REGB0)) {
939 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 220);
940 }
941 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICode___dup_with_1));
942 /* ./icode//icode_tools.nit:231 */
943 CALL_icode___icode_base___ICodeN___closure_defs__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
944 }
945 }
946 /* ./icode//icode_tools.nit:234 */
947 fra.me.REG[4] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
948 /* ./icode//icode_tools.nit:235 */
949 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
950 if (UNTAG_Bool(REGB0)) {
951 } else {
952 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
953 if (UNTAG_Bool(REGB1)) {
954 REGB1 = TAG_Bool(false);
955 REGB0 = REGB1;
956 } else {
957 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
958 REGB0 = REGB1;
959 }
960 }
961 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
962 if (UNTAG_Bool(REGB0)) {
963 fra.me.REG[4] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
964 CALL_icode___icode_base___ICode___result__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
965 }
966 /* ./icode//icode_tools.nit:236 */
967 fra.me.REG[0] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
968 CALL_icode___icode_base___ICode___location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
969 /* ./icode//icode_tools.nit:237 */
970 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
971 if (UNTAG_Bool(REGB0)) {
972 } else {
973 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 237);
974 }
975 fra.me.REG[1] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
976 fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
977 fra.me.REG[1] = CALL_icode___icode_base___ISeq___icodes(fra.me.REG[1])(fra.me.REG[1]);
978 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
979 stack_frame_head = fra.me.prev;
980 return;
981 }
982 void OC_icode___icode_tools___ICode___dup_with_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
983 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
984 val_t REGB0;
985 val_t REGB1;
986 fun_t CREG[1];
987 val_t tmp;
988 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
989 fra.me.file = LOCATE_icode___icode_tools;
990 fra.me.line = 0;
991 fra.me.meth = LOCATE_icode___icode_tools___ICode___dup_with;
992 fra.me.has_broke = 0;
993 fra.me.REG_size = 3;
994 fra.me.REG[0] = NIT_NULL;
995 fra.me.REG[1] = NIT_NULL;
996 fra.me.REG[2] = NIT_NULL;
997 fra.me.closure_ctx = closctx_param;
998 fra.me.closure_funs = CREG;
999 fra.me.REG[0] = p0;
1000 CREG[0] = clos_fun0;
1001 /* ./icode//icode_tools.nit:221 */
1002 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1003 if (UNTAG_Bool(REGB0)) {
1004 } else {
1005 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1006 if (UNTAG_Bool(REGB1)) {
1007 REGB1 = TAG_Bool(false);
1008 REGB0 = REGB1;
1009 } else {
1010 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1011 REGB0 = REGB1;
1012 }
1013 }
1014 if (UNTAG_Bool(REGB0)) {
1015 /* ./icode//icode_tools.nit:222 */
1016 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], NIT_NULL);
1017 } else {
1018 /* ./icode//icode_tools.nit:224 */
1019 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1020 if (UNTAG_Bool(REGB0)) {
1021 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 224);
1022 }
1023 fra.me.REG[1] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[0])(fra.me.REG[0]);
1024 /* ./icode//icode_tools.nit:225 */
1025 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1026 if (UNTAG_Bool(REGB0)) {
1027 } else {
1028 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1029 if (UNTAG_Bool(REGB1)) {
1030 REGB1 = TAG_Bool(false);
1031 REGB0 = REGB1;
1032 } else {
1033 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
1034 REGB0 = REGB1;
1035 }
1036 }
1037 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1038 if (UNTAG_Bool(REGB0)) {
1039 fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
1040 fra.me.REG[1] = fra.me.REG[2];
1041 }
1042 /* ./icode//icode_tools.nit:226 */
1043 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1044 if (UNTAG_Bool(REGB0)) {
1045 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 226);
1046 }
1047 fra.me.REG[2] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
1048 fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(closctx->REG[1])(closctx->REG[1], fra.me.REG[2]);
1049 fra.me.REG[1] = NEW_IClosureDef_icode___icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[1]);
1050 /* ./icode//icode_tools.nit:227 */
1051 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[1]);
1052 /* ./icode//icode_tools.nit:228 */
1053 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1054 if (UNTAG_Bool(REGB0)) {
1055 nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 228);
1056 }
1057 fra.me.REG[0] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[0])(fra.me.REG[0]);
1058 fra.me.REG[1] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[1])(fra.me.REG[1]);
1059 CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1], fra.me.REG[1]);
1060 }
1061 stack_frame_head = fra.me.prev;
1062 return;
1063 }
1064 val_t icode___icode_tools___ICode___inner_dup_with(val_t p0, val_t p1){
1065 struct {struct stack_frame_t me;} fra;
1066 val_t tmp;
1067 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1068 fra.me.file = LOCATE_icode___icode_tools;
1069 fra.me.line = 240;
1070 fra.me.meth = LOCATE_icode___icode_tools___ICode___inner_dup_with;
1071 fra.me.has_broke = 0;
1072 fra.me.REG_size = 0;
1073 /* ./icode//icode_tools.nit:240 */
1074 nit_abort("Deferred method called", NULL, LOCATE_icode___icode_tools, 240);
1075 stack_frame_head = fra.me.prev;
1076 return NIT_NULL;
1077 }
1078 val_t icode___icode_tools___ISeq___inner_dup_with(val_t p0, val_t p1){
1079 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1080 val_t tmp;
1081 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1082 fra.me.file = LOCATE_icode___icode_tools;
1083 fra.me.line = 245;
1084 fra.me.meth = LOCATE_icode___icode_tools___ISeq___inner_dup_with;
1085 fra.me.has_broke = 0;
1086 fra.me.REG_size = 3;
1087 fra.me.REG[0] = NIT_NULL;
1088 fra.me.REG[1] = NIT_NULL;
1089 fra.me.REG[2] = NIT_NULL;
1090 fra.me.REG[0] = p0;
1091 fra.me.REG[1] = p1;
1092 /* ./icode//icode_tools.nit:247 */
1093 fra.me.REG[2] = NEW_ISeq_icode___icode_base___ISeq___init();
1094 /* ./icode//icode_tools.nit:248 */
1095 CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
1096 /* ./icode//icode_tools.nit:249 */
1097 goto label1;
1098 label1: while(0);
1099 stack_frame_head = fra.me.prev;
1100 return fra.me.REG[2];
1101 }
1102 void icode___icode_tools___ISeq___dup_seq_to(val_t p0, val_t p1, val_t p2){
1103 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1104 val_t REGB0;
1105 val_t REGB1;
1106 val_t tmp;
1107 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1108 fra.me.file = LOCATE_icode___icode_tools;
1109 fra.me.line = 252;
1110 fra.me.meth = LOCATE_icode___icode_tools___ISeq___dup_seq_to;
1111 fra.me.has_broke = 0;
1112 fra.me.REG_size = 5;
1113 fra.me.REG[0] = NIT_NULL;
1114 fra.me.REG[1] = NIT_NULL;
1115 fra.me.REG[2] = NIT_NULL;
1116 fra.me.REG[3] = NIT_NULL;
1117 fra.me.REG[4] = NIT_NULL;
1118 fra.me.REG[0] = p0;
1119 fra.me.REG[1] = p1;
1120 fra.me.REG[2] = p2;
1121 /* ./icode//icode_tools.nit:256 */
1122 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1123 if (UNTAG_Bool(REGB0)) {
1124 } else {
1125 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 256);
1126 }
1127 fra.me.REG[3] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1128 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[3])(fra.me.REG[3]);
1129 /* ./icode//icode_tools.nit:257 */
1130 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1131 if (UNTAG_Bool(REGB0)) {
1132 } else {
1133 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 257);
1134 }
1135 fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1136 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
1137 /* ./icode//icode_tools.nit:258 */
1138 fra.me.REG[4] = CALL_icode___icode_base___ISeq___icodes(fra.me.REG[0])(fra.me.REG[0]);
1139 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ISeq___dup_seq_to_1));
1140 /* ./icode//icode_tools.nit:261 */
1141 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
1142 if (UNTAG_Bool(REGB0)) {
1143 } else {
1144 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 261);
1145 }
1146 fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
1147 CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1148 /* ./icode//icode_tools.nit:262 */
1149 fra.me.REG[3] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[2])(fra.me.REG[2]);
1150 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1151 if (UNTAG_Bool(REGB0)) {
1152 } else {
1153 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1154 if (UNTAG_Bool(REGB1)) {
1155 REGB1 = TAG_Bool(false);
1156 REGB0 = REGB1;
1157 } else {
1158 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
1159 REGB0 = REGB1;
1160 }
1161 }
1162 if (UNTAG_Bool(REGB0)) {
1163 } else {
1164 nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 262);
1165 }
1166 /* ./icode//icode_tools.nit:263 */
1167 fra.me.REG[0] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
1168 /* ./icode//icode_tools.nit:264 */
1169 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1170 if (UNTAG_Bool(REGB0)) {
1171 } else {
1172 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
1173 if (UNTAG_Bool(REGB1)) {
1174 REGB1 = TAG_Bool(false);
1175 REGB0 = REGB1;
1176 } else {
1177 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
1178 REGB0 = REGB1;
1179 }
1180 }
1181 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1182 if (UNTAG_Bool(REGB0)) {
1183 /* ./icode//icode_tools.nit:265 */
1184 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_mark(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1185 CALL_icode___icode_base___ISeq___iescape_mark__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
1186 }
1187 stack_frame_head = fra.me.prev;
1188 return;
1189 }
1190 void OC_icode___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){
1191 struct {struct stack_frame_t me;} fra;
1192 fun_t CREG[1];
1193 val_t tmp;
1194 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1195 fra.me.file = LOCATE_icode___icode_tools;
1196 fra.me.line = 0;
1197 fra.me.meth = LOCATE_icode___icode_tools___ISeq___dup_seq_to;
1198 fra.me.has_broke = 0;
1199 fra.me.REG_size = 1;
1200 fra.me.REG[0] = NIT_NULL;
1201 fra.me.closure_ctx = closctx_param;
1202 fra.me.closure_funs = CREG;
1203 fra.me.REG[0] = p0;
1204 CREG[0] = clos_fun0;
1205 /* ./icode//icode_tools.nit:259 */
1206 CALL_icode___icode_tools___ICode___dup_with(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
1207 stack_frame_head = fra.me.prev;
1208 return;
1209 }
1210 val_t icode___icode_tools___ILoop___inner_dup_with(val_t p0, val_t p1){
1211 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1212 val_t tmp;
1213 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1214 fra.me.file = LOCATE_icode___icode_tools;
1215 fra.me.line = 271;
1216 fra.me.meth = LOCATE_icode___icode_tools___ILoop___inner_dup_with;
1217 fra.me.has_broke = 0;
1218 fra.me.REG_size = 3;
1219 fra.me.REG[0] = NIT_NULL;
1220 fra.me.REG[1] = NIT_NULL;
1221 fra.me.REG[2] = NIT_NULL;
1222 fra.me.REG[0] = p0;
1223 fra.me.REG[1] = p1;
1224 /* ./icode//icode_tools.nit:273 */
1225 fra.me.REG[2] = NEW_ILoop_icode___icode_base___ILoop___init();
1226 /* ./icode//icode_tools.nit:274 */
1227 CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
1228 /* ./icode//icode_tools.nit:275 */
1229 goto label1;
1230 label1: while(0);
1231 stack_frame_head = fra.me.prev;
1232 return fra.me.REG[2];
1233 }
1234 val_t icode___icode_tools___IIf___inner_dup_with(val_t p0, val_t p1){
1235 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1236 val_t tmp;
1237 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1238 fra.me.file = LOCATE_icode___icode_tools;
1239 fra.me.line = 280;
1240 fra.me.meth = LOCATE_icode___icode_tools___IIf___inner_dup_with;
1241 fra.me.has_broke = 0;
1242 fra.me.REG_size = 5;
1243 fra.me.REG[0] = NIT_NULL;
1244 fra.me.REG[1] = NIT_NULL;
1245 fra.me.REG[2] = NIT_NULL;
1246 fra.me.REG[3] = NIT_NULL;
1247 fra.me.REG[4] = NIT_NULL;
1248 fra.me.REG[0] = p0;
1249 fra.me.REG[1] = p1;
1250 /* ./icode//icode_tools.nit:282 */
1251 fra.me.REG[2] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1252 fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1253 fra.me.REG[2] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[2]);
1254 /* ./icode//icode_tools.nit:283 */
1255 fra.me.REG[3] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[0])(fra.me.REG[0]);
1256 fra.me.REG[4] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[2])(fra.me.REG[2]);
1257 CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[4]);
1258 /* ./icode//icode_tools.nit:284 */
1259 fra.me.REG[0] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[0])(fra.me.REG[0]);
1260 fra.me.REG[4] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[2])(fra.me.REG[2]);
1261 CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
1262 /* ./icode//icode_tools.nit:285 */
1263 goto label1;
1264 label1: while(0);
1265 stack_frame_head = fra.me.prev;
1266 return fra.me.REG[2];
1267 }
1268 val_t icode___icode_tools___IEscape___inner_dup_with(val_t p0, val_t p1){
1269 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1270 val_t tmp;
1271 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1272 fra.me.file = LOCATE_icode___icode_tools;
1273 fra.me.line = 290;
1274 fra.me.meth = LOCATE_icode___icode_tools___IEscape___inner_dup_with;
1275 fra.me.has_broke = 0;
1276 fra.me.REG_size = 2;
1277 fra.me.REG[0] = NIT_NULL;
1278 fra.me.REG[1] = NIT_NULL;
1279 fra.me.REG[0] = p0;
1280 fra.me.REG[1] = p1;
1281 /* ./icode//icode_tools.nit:293 */
1282 fra.me.REG[0] = CALL_icode___icode_base___IEscape___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
1283 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_mark(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1284 /* ./icode//icode_tools.nit:295 */
1285 fra.me.REG[0] = NEW_IEscape_icode___icode_base___IEscape___init(fra.me.REG[0]);
1286 goto label1;
1287 label1: while(0);
1288 stack_frame_head = fra.me.prev;
1289 return fra.me.REG[0];
1290 }
1291 val_t icode___icode_tools___IAbort___inner_dup_with(val_t p0, val_t p1){
1292 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1293 val_t tmp;
1294 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1295 fra.me.file = LOCATE_icode___icode_tools;
1296 fra.me.line = 300;
1297 fra.me.meth = LOCATE_icode___icode_tools___IAbort___inner_dup_with;
1298 fra.me.has_broke = 0;
1299 fra.me.REG_size = 2;
1300 fra.me.REG[0] = NIT_NULL;
1301 fra.me.REG[1] = NIT_NULL;
1302 fra.me.REG[0] = p0;
1303 fra.me.REG[1] = p1;
1304 /* ./icode//icode_tools.nit:302 */
1305 fra.me.REG[1] = CALL_icode___icode_base___IAbort___texts(fra.me.REG[0])(fra.me.REG[0]);
1306 fra.me.REG[0] = CALL_icode___icode_base___IAbort___module_location(fra.me.REG[0])(fra.me.REG[0]);
1307 fra.me.REG[0] = NEW_IAbort_icode___icode_base___IAbort___init(fra.me.REG[1], fra.me.REG[0]);
1308 goto label1;
1309 label1: while(0);
1310 stack_frame_head = fra.me.prev;
1311 return fra.me.REG[0];
1312 }
1313 val_t icode___icode_tools___ICall___inner_dup_with(val_t p0, val_t p1){
1314 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1315 val_t tmp;
1316 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1317 fra.me.file = LOCATE_icode___icode_tools;
1318 fra.me.line = 307;
1319 fra.me.meth = LOCATE_icode___icode_tools___ICall___inner_dup_with;
1320 fra.me.has_broke = 0;
1321 fra.me.REG_size = 3;
1322 fra.me.REG[0] = NIT_NULL;
1323 fra.me.REG[1] = NIT_NULL;
1324 fra.me.REG[2] = NIT_NULL;
1325 fra.me.REG[0] = p0;
1326 fra.me.REG[1] = p1;
1327 /* ./icode//icode_tools.nit:309 */
1328 fra.me.REG[2] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
1329 fra.me.REG[0] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1330 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1331 fra.me.REG[0] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[2], fra.me.REG[0]);
1332 goto label1;
1333 label1: while(0);
1334 stack_frame_head = fra.me.prev;
1335 return fra.me.REG[0];
1336 }
1337 val_t icode___icode_tools___ISuper___inner_dup_with(val_t p0, val_t p1){
1338 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1339 val_t tmp;
1340 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1341 fra.me.file = LOCATE_icode___icode_tools;
1342 fra.me.line = 314;
1343 fra.me.meth = LOCATE_icode___icode_tools___ISuper___inner_dup_with;
1344 fra.me.has_broke = 0;
1345 fra.me.REG_size = 3;
1346 fra.me.REG[0] = NIT_NULL;
1347 fra.me.REG[1] = NIT_NULL;
1348 fra.me.REG[2] = NIT_NULL;
1349 fra.me.REG[0] = p0;
1350 fra.me.REG[1] = p1;
1351 /* ./icode//icode_tools.nit:316 */
1352 fra.me.REG[2] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
1353 fra.me.REG[0] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1354 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1355 fra.me.REG[0] = NEW_ISuper_icode___icode_base___ISuper___init(fra.me.REG[2], fra.me.REG[0]);
1356 goto label1;
1357 label1: while(0);
1358 stack_frame_head = fra.me.prev;
1359 return fra.me.REG[0];
1360 }
1361 val_t icode___icode_tools___INew___inner_dup_with(val_t p0, val_t p1){
1362 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1363 val_t tmp;
1364 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1365 fra.me.file = LOCATE_icode___icode_tools;
1366 fra.me.line = 321;
1367 fra.me.meth = LOCATE_icode___icode_tools___INew___inner_dup_with;
1368 fra.me.has_broke = 0;
1369 fra.me.REG_size = 4;
1370 fra.me.REG[0] = NIT_NULL;
1371 fra.me.REG[1] = NIT_NULL;
1372 fra.me.REG[2] = NIT_NULL;
1373 fra.me.REG[3] = NIT_NULL;
1374 fra.me.REG[0] = p0;
1375 fra.me.REG[1] = p1;
1376 /* ./icode//icode_tools.nit:323 */
1377 fra.me.REG[2] = CALL_icode___icode_base___INew___stype(fra.me.REG[0])(fra.me.REG[0]);
1378 fra.me.REG[3] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
1379 fra.me.REG[0] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1380 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1381 fra.me.REG[0] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
1382 goto label1;
1383 label1: while(0);
1384 stack_frame_head = fra.me.prev;
1385 return fra.me.REG[0];
1386 }
1387 val_t icode___icode_tools___IAllocateInstance___inner_dup_with(val_t p0, val_t p1){
1388 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1389 val_t tmp;
1390 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1391 fra.me.file = LOCATE_icode___icode_tools;
1392 fra.me.line = 328;
1393 fra.me.meth = LOCATE_icode___icode_tools___IAllocateInstance___inner_dup_with;
1394 fra.me.has_broke = 0;
1395 fra.me.REG_size = 2;
1396 fra.me.REG[0] = NIT_NULL;
1397 fra.me.REG[1] = NIT_NULL;
1398 fra.me.REG[0] = p0;
1399 fra.me.REG[1] = p1;
1400 /* ./icode//icode_tools.nit:330 */
1401 fra.me.REG[0] = CALL_icode___icode_base___IAllocateInstance___stype(fra.me.REG[0])(fra.me.REG[0]);
1402 fra.me.REG[0] = NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(fra.me.REG[0]);
1403 goto label1;
1404 label1: while(0);
1405 stack_frame_head = fra.me.prev;
1406 return fra.me.REG[0];
1407 }
1408 val_t icode___icode_tools___IStaticCall___inner_dup_with(val_t p0, val_t p1){
1409 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1410 val_t tmp;
1411 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1412 fra.me.file = LOCATE_icode___icode_tools;
1413 fra.me.line = 335;
1414 fra.me.meth = LOCATE_icode___icode_tools___IStaticCall___inner_dup_with;
1415 fra.me.has_broke = 0;
1416 fra.me.REG_size = 3;
1417 fra.me.REG[0] = NIT_NULL;
1418 fra.me.REG[1] = NIT_NULL;
1419 fra.me.REG[2] = NIT_NULL;
1420 fra.me.REG[0] = p0;
1421 fra.me.REG[1] = p1;
1422 /* ./icode//icode_tools.nit:337 */
1423 fra.me.REG[2] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
1424 fra.me.REG[0] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1425 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1426 fra.me.REG[0] = NEW_IStaticCall_icode___icode_base___IStaticCall___init(fra.me.REG[2], fra.me.REG[0]);
1427 goto label1;
1428 label1: while(0);
1429 stack_frame_head = fra.me.prev;
1430 return fra.me.REG[0];
1431 }
1432 val_t icode___icode_tools___ICheckInstance___inner_dup_with(val_t p0, val_t p1){
1433 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1434 val_t tmp;
1435 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1436 fra.me.file = LOCATE_icode___icode_tools;
1437 fra.me.line = 342;
1438 fra.me.meth = LOCATE_icode___icode_tools___ICheckInstance___inner_dup_with;
1439 fra.me.has_broke = 0;
1440 fra.me.REG_size = 3;
1441 fra.me.REG[0] = NIT_NULL;
1442 fra.me.REG[1] = NIT_NULL;
1443 fra.me.REG[2] = NIT_NULL;
1444 fra.me.REG[0] = p0;
1445 fra.me.REG[1] = p1;
1446 /* ./icode//icode_tools.nit:344 */
1447 fra.me.REG[2] = CALL_icode___icode_base___ICheckInstance___stype(fra.me.REG[0])(fra.me.REG[0]);
1448 fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1449 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1450 fra.me.REG[0] = NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(fra.me.REG[2], fra.me.REG[0]);
1451 goto label1;
1452 label1: while(0);
1453 stack_frame_head = fra.me.prev;
1454 return fra.me.REG[0];
1455 }
1456 val_t icode___icode_tools___IInitAttributes___inner_dup_with(val_t p0, val_t p1){
1457 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1458 val_t tmp;
1459 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1460 fra.me.file = LOCATE_icode___icode_tools;
1461 fra.me.line = 349;
1462 fra.me.meth = LOCATE_icode___icode_tools___IInitAttributes___inner_dup_with;
1463 fra.me.has_broke = 0;
1464 fra.me.REG_size = 3;
1465 fra.me.REG[0] = NIT_NULL;
1466 fra.me.REG[1] = NIT_NULL;
1467 fra.me.REG[2] = NIT_NULL;
1468 fra.me.REG[0] = p0;
1469 fra.me.REG[1] = p1;
1470 /* ./icode//icode_tools.nit:351 */
1471 fra.me.REG[2] = CALL_icode___icode_base___IInitAttributes___stype(fra.me.REG[0])(fra.me.REG[0]);
1472 fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1473 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1474 fra.me.REG[0] = NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(fra.me.REG[2], fra.me.REG[0]);
1475 goto label1;
1476 label1: while(0);
1477 stack_frame_head = fra.me.prev;
1478 return fra.me.REG[0];
1479 }
1480 void icode___icode_tools___IClosCall___dup_with(val_t p0, val_t p1){
1481 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
1482 val_t REGB0;
1483 val_t REGB1;
1484 val_t tmp;
1485 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1486 fra.me.file = LOCATE_icode___icode_tools;
1487 fra.me.line = 356;
1488 fra.me.meth = LOCATE_icode___icode_tools___IClosCall___dup_with;
1489 fra.me.has_broke = 0;
1490 fra.me.REG_size = 7;
1491 fra.me.REG[0] = NIT_NULL;
1492 fra.me.REG[1] = NIT_NULL;
1493 fra.me.REG[2] = NIT_NULL;
1494 fra.me.REG[3] = NIT_NULL;
1495 fra.me.REG[4] = NIT_NULL;
1496 fra.me.REG[5] = NIT_NULL;
1497 fra.me.REG[6] = NIT_NULL;
1498 fra.me.REG[0] = p0;
1499 fra.me.REG[1] = p1;
1500 /* ./icode//icode_tools.nit:356 */
1501 fra.me.REG[2] = fra.me.REG[0];
1502 fra.me.REG[3] = fra.me.REG[1];
1503 /* ./icode//icode_tools.nit:358 */
1504 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[3])!=NIT_NULL);
1505 if (UNTAG_Bool(REGB0)) {
1506 } else {
1507 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 358);
1508 }
1509 fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[3]);
1510 fra.me.REG[5] = CALL_icode___icode_base___IClosCall___closure_decl(fra.me.REG[2])(fra.me.REG[2]);
1511 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1512 if (UNTAG_Bool(REGB0)) {
1513 /* ./icode//icode_tools.nit:360 */
1514 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[3])!=NIT_NULL);
1515 if (UNTAG_Bool(REGB0)) {
1516 } else {
1517 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 360);
1518 }
1519 fra.me.REG[5] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[3]);
1520 fra.me.REG[4] = CALL_icode___icode_base___IClosCall___closure_decl(fra.me.REG[2])(fra.me.REG[2]);
1521 fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1522 /* ./icode//icode_tools.nit:361 */
1523 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1524 if (UNTAG_Bool(REGB0)) {
1525 } else {
1526 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1527 if (UNTAG_Bool(REGB1)) {
1528 REGB1 = TAG_Bool(false);
1529 REGB0 = REGB1;
1530 } else {
1531 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1532 REGB0 = REGB1;
1533 }
1534 }
1535 if (UNTAG_Bool(REGB0)) {
1536 /* ./icode//icode_tools.nit:363 */
1537 goto label1;
1538 }
1539 /* ./icode//icode_tools.nit:366 */
1540 fra.me.REG[5] = CALL_icode___icode_base___IClosCall___break_seq(fra.me.REG[2])(fra.me.REG[2]);
1541 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1542 if (UNTAG_Bool(REGB0)) {
1543 } else {
1544 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
1545 if (UNTAG_Bool(REGB1)) {
1546 REGB1 = TAG_Bool(false);
1547 REGB0 = REGB1;
1548 } else {
1549 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
1550 REGB0 = REGB1;
1551 }
1552 }
1553 if (UNTAG_Bool(REGB0)) {
1554 } else {
1555 nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 366);
1556 }
1557 /* ./icode//icode_tools.nit:368 */
1558 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[3])!=NIT_NULL);
1559 if (UNTAG_Bool(REGB0)) {
1560 } else {
1561 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 368);
1562 }
1563 fra.me.REG[5] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[3]);
1564 fra.me.REG[6] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[2])(fra.me.REG[2]);
1565 fra.me.REG[6] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
1566 fra.me.REG[6] = CALL_icode___icode_tools___ICodeBuilder___inline_routine(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], NIT_NULL);
1567 /* ./icode//icode_tools.nit:369 */
1568 fra.me.REG[4] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
1569 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1570 if (UNTAG_Bool(REGB0)) {
1571 } else {
1572 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
1573 if (UNTAG_Bool(REGB1)) {
1574 REGB1 = TAG_Bool(false);
1575 REGB0 = REGB1;
1576 } else {
1577 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
1578 REGB0 = REGB1;
1579 }
1580 }
1581 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1582 if (UNTAG_Bool(REGB0)) {
1583 /* ./icode//icode_tools.nit:370 */
1584 REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1585 if (UNTAG_Bool(REGB0)) {
1586 } else {
1587 REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
1588 if (UNTAG_Bool(REGB1)) {
1589 REGB1 = TAG_Bool(false);
1590 REGB0 = REGB1;
1591 } else {
1592 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
1593 REGB0 = REGB1;
1594 }
1595 }
1596 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1597 if (UNTAG_Bool(REGB0)) {
1598 } else {
1599 nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 370);
1600 }
1601 /* ./icode//icode_tools.nit:371 */
1602 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[3])!=NIT_NULL);
1603 if (UNTAG_Bool(REGB0)) {
1604 } else {
1605 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 371);
1606 }
1607 fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[3]);
1608 fra.me.REG[2] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
1609 REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
1610 if (UNTAG_Bool(REGB0)) {
1611 } else {
1612 nit_abort("Cast failed", NULL, LOCATE_icode___icode_tools, 371);
1613 }
1614 fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
1615 fra.me.REG[6] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[2], fra.me.REG[6]);
1616 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
1617 }
1618 } else {
1619 /* ./icode//icode_tools.nit:375 */
1620 CALL_SUPER_icode___icode_tools___IClosCall___dup_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1621 }
1622 label1: while(0);
1623 stack_frame_head = fra.me.prev;
1624 return;
1625 }
1626 val_t icode___icode_tools___IClosCall___inner_dup_with(val_t p0, val_t p1){
1627 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1628 val_t tmp;
1629 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1630 fra.me.file = LOCATE_icode___icode_tools;
1631 fra.me.line = 379;
1632 fra.me.meth = LOCATE_icode___icode_tools___IClosCall___inner_dup_with;
1633 fra.me.has_broke = 0;
1634 fra.me.REG_size = 2;
1635 fra.me.REG[0] = NIT_NULL;
1636 fra.me.REG[1] = NIT_NULL;
1637 fra.me.REG[0] = p0;
1638 fra.me.REG[1] = p1;
1639 /* ./icode//icode_tools.nit:381 */
1640 fra.me.REG[1] = CALL_icode___icode_base___IClosCall___closure_decl(fra.me.REG[0])(fra.me.REG[0]);
1641 fra.me.REG[0] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1642 fra.me.REG[0] = NEW_IClosCall_icode___icode_base___IClosCall___init(fra.me.REG[1], fra.me.REG[0]);
1643 goto label1;
1644 label1: while(0);
1645 stack_frame_head = fra.me.prev;
1646 return fra.me.REG[0];
1647 }
1648 val_t icode___icode_tools___INative___inner_dup_with(val_t p0, val_t p1){
1649 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1650 val_t REGB0;
1651 val_t tmp;
1652 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1653 fra.me.file = LOCATE_icode___icode_tools;
1654 fra.me.line = 386;
1655 fra.me.meth = LOCATE_icode___icode_tools___INative___inner_dup_with;
1656 fra.me.has_broke = 0;
1657 fra.me.REG_size = 4;
1658 fra.me.REG[0] = NIT_NULL;
1659 fra.me.REG[1] = NIT_NULL;
1660 fra.me.REG[2] = NIT_NULL;
1661 fra.me.REG[3] = NIT_NULL;
1662 fra.me.REG[0] = p0;
1663 fra.me.REG[1] = p1;
1664 /* ./icode//icode_tools.nit:388 */
1665 fra.me.REG[2] = CALL_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
1666 fra.me.REG[3] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
1667 fra.me.REG[3] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1668 fra.me.REG[3] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[2], fra.me.REG[3]);
1669 /* ./icode//icode_tools.nit:389 */
1670 REGB0 = CALL_icode___icode_base___ICode___is_pure(fra.me.REG[0])(fra.me.REG[0]);
1671 CALL_icode___icode_base___INative___is_pure__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
1672 /* ./icode//icode_tools.nit:390 */
1673 goto label1;
1674 label1: while(0);
1675 stack_frame_head = fra.me.prev;
1676 return fra.me.REG[3];
1677 }
1678 val_t icode___icode_tools___IIntValue___inner_dup_with(val_t p0, val_t p1){
1679 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1680 val_t tmp;
1681 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1682 fra.me.file = LOCATE_icode___icode_tools;
1683 fra.me.line = 395;
1684 fra.me.meth = LOCATE_icode___icode_tools___IIntValue___inner_dup_with;
1685 fra.me.has_broke = 0;
1686 fra.me.REG_size = 2;
1687 fra.me.REG[0] = NIT_NULL;
1688 fra.me.REG[1] = NIT_NULL;
1689 fra.me.REG[0] = p0;
1690 fra.me.REG[1] = p1;
1691 /* ./icode//icode_tools.nit:397 */
1692 fra.me.REG[0] = CALL_icode___icode_base___IIntValue___value(fra.me.REG[0])(fra.me.REG[0]);
1693 fra.me.REG[0] = NEW_IIntValue_icode___icode_base___IIntValue___init(fra.me.REG[0]);
1694 goto label1;
1695 label1: while(0);
1696 stack_frame_head = fra.me.prev;
1697 return fra.me.REG[0];
1698 }
1699 val_t icode___icode_tools___IBoolValue___inner_dup_with(val_t p0, val_t p1){
1700 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1701 val_t REGB0;
1702 val_t tmp;
1703 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1704 fra.me.file = LOCATE_icode___icode_tools;
1705 fra.me.line = 402;
1706 fra.me.meth = LOCATE_icode___icode_tools___IBoolValue___inner_dup_with;
1707 fra.me.has_broke = 0;
1708 fra.me.REG_size = 2;
1709 fra.me.REG[0] = NIT_NULL;
1710 fra.me.REG[1] = NIT_NULL;
1711 fra.me.REG[0] = p0;
1712 fra.me.REG[1] = p1;
1713 /* ./icode//icode_tools.nit:404 */
1714 REGB0 = CALL_icode___icode_base___IBoolValue___value(fra.me.REG[0])(fra.me.REG[0]);
1715 fra.me.REG[0] = NEW_IBoolValue_icode___icode_base___IBoolValue___init(REGB0);
1716 goto label1;
1717 label1: while(0);
1718 stack_frame_head = fra.me.prev;
1719 return fra.me.REG[0];
1720 }
1721 val_t icode___icode_tools___IStringValue___inner_dup_with(val_t p0, val_t p1){
1722 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1723 val_t tmp;
1724 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1725 fra.me.file = LOCATE_icode___icode_tools;
1726 fra.me.line = 409;
1727 fra.me.meth = LOCATE_icode___icode_tools___IStringValue___inner_dup_with;
1728 fra.me.has_broke = 0;
1729 fra.me.REG_size = 2;
1730 fra.me.REG[0] = NIT_NULL;
1731 fra.me.REG[1] = NIT_NULL;
1732 fra.me.REG[0] = p0;
1733 fra.me.REG[1] = p1;
1734 /* ./icode//icode_tools.nit:411 */
1735 fra.me.REG[0] = CALL_icode___icode_base___IStringValue___value(fra.me.REG[0])(fra.me.REG[0]);
1736 fra.me.REG[0] = NEW_IStringValue_icode___icode_base___IStringValue___init(fra.me.REG[0]);
1737 goto label1;
1738 label1: while(0);
1739 stack_frame_head = fra.me.prev;
1740 return fra.me.REG[0];
1741 }
1742 val_t icode___icode_tools___IFloatValue___inner_dup_with(val_t p0, val_t p1){
1743 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1744 val_t tmp;
1745 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1746 fra.me.file = LOCATE_icode___icode_tools;
1747 fra.me.line = 416;
1748 fra.me.meth = LOCATE_icode___icode_tools___IFloatValue___inner_dup_with;
1749 fra.me.has_broke = 0;
1750 fra.me.REG_size = 2;
1751 fra.me.REG[0] = NIT_NULL;
1752 fra.me.REG[1] = NIT_NULL;
1753 fra.me.REG[0] = p0;
1754 fra.me.REG[1] = p1;
1755 /* ./icode//icode_tools.nit:418 */
1756 fra.me.REG[0] = CALL_icode___icode_base___IFloatValue___value(fra.me.REG[0])(fra.me.REG[0]);
1757 fra.me.REG[0] = NEW_IFloatValue_icode___icode_base___IFloatValue___init(fra.me.REG[0]);
1758 goto label1;
1759 label1: while(0);
1760 stack_frame_head = fra.me.prev;
1761 return fra.me.REG[0];
1762 }
1763 val_t icode___icode_tools___ICharValue___inner_dup_with(val_t p0, val_t p1){
1764 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1765 val_t tmp;
1766 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1767 fra.me.file = LOCATE_icode___icode_tools;
1768 fra.me.line = 423;
1769 fra.me.meth = LOCATE_icode___icode_tools___ICharValue___inner_dup_with;
1770 fra.me.has_broke = 0;
1771 fra.me.REG_size = 2;
1772 fra.me.REG[0] = NIT_NULL;
1773 fra.me.REG[1] = NIT_NULL;
1774 fra.me.REG[0] = p0;
1775 fra.me.REG[1] = p1;
1776 /* ./icode//icode_tools.nit:425 */
1777 fra.me.REG[0] = CALL_icode___icode_base___ICharValue___value(fra.me.REG[0])(fra.me.REG[0]);
1778 fra.me.REG[0] = NEW_ICharValue_icode___icode_base___ICharValue___init(fra.me.REG[0]);
1779 goto label1;
1780 label1: while(0);
1781 stack_frame_head = fra.me.prev;
1782 return fra.me.REG[0];
1783 }
1784 val_t icode___icode_tools___IMove___inner_dup_with(val_t p0, val_t p1){
1785 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1786 val_t REGB0;
1787 val_t tmp;
1788 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1789 fra.me.file = LOCATE_icode___icode_tools;
1790 fra.me.line = 430;
1791 fra.me.meth = LOCATE_icode___icode_tools___IMove___inner_dup_with;
1792 fra.me.has_broke = 0;
1793 fra.me.REG_size = 4;
1794 fra.me.REG[0] = NIT_NULL;
1795 fra.me.REG[1] = NIT_NULL;
1796 fra.me.REG[2] = NIT_NULL;
1797 fra.me.REG[3] = NIT_NULL;
1798 fra.me.REG[0] = p0;
1799 fra.me.REG[1] = p1;
1800 /* ./icode//icode_tools.nit:430 */
1801 fra.me.REG[2] = fra.me.REG[0];
1802 /* ./icode//icode_tools.nit:432 */
1803 fra.me.REG[3] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
1804 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
1805 if (UNTAG_Bool(REGB0)) {
1806 } else {
1807 nit_abort("Cast failed", NULL, LOCATE_icode___icode_tools, 432);
1808 }
1809 fra.me.REG[3] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1810 fra.me.REG[2] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[2])(fra.me.REG[2]);
1811 fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1812 fra.me.REG[2] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[3], fra.me.REG[2]);
1813 goto label1;
1814 label1: while(0);
1815 stack_frame_head = fra.me.prev;
1816 return fra.me.REG[2];
1817 }
1818 val_t icode___icode_tools___IAttrRead___inner_dup_with(val_t p0, val_t p1){
1819 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1820 val_t tmp;
1821 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1822 fra.me.file = LOCATE_icode___icode_tools;
1823 fra.me.line = 437;
1824 fra.me.meth = LOCATE_icode___icode_tools___IAttrRead___inner_dup_with;
1825 fra.me.has_broke = 0;
1826 fra.me.REG_size = 3;
1827 fra.me.REG[0] = NIT_NULL;
1828 fra.me.REG[1] = NIT_NULL;
1829 fra.me.REG[2] = NIT_NULL;
1830 fra.me.REG[0] = p0;
1831 fra.me.REG[1] = p1;
1832 /* ./icode//icode_tools.nit:439 */
1833 fra.me.REG[2] = CALL_icode___icode_base___IAttrRead___property(fra.me.REG[0])(fra.me.REG[0]);
1834 fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1835 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1836 fra.me.REG[0] = NEW_IAttrRead_icode___icode_base___IAttrRead___init(fra.me.REG[2], fra.me.REG[0]);
1837 goto label1;
1838 label1: while(0);
1839 stack_frame_head = fra.me.prev;
1840 return fra.me.REG[0];
1841 }
1842 val_t icode___icode_tools___IAttrWrite___inner_dup_with(val_t p0, val_t p1){
1843 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1844 val_t tmp;
1845 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1846 fra.me.file = LOCATE_icode___icode_tools;
1847 fra.me.line = 444;
1848 fra.me.meth = LOCATE_icode___icode_tools___IAttrWrite___inner_dup_with;
1849 fra.me.has_broke = 0;
1850 fra.me.REG_size = 4;
1851 fra.me.REG[0] = NIT_NULL;
1852 fra.me.REG[1] = NIT_NULL;
1853 fra.me.REG[2] = NIT_NULL;
1854 fra.me.REG[3] = NIT_NULL;
1855 fra.me.REG[0] = p0;
1856 fra.me.REG[1] = p1;
1857 /* ./icode//icode_tools.nit:446 */
1858 fra.me.REG[2] = CALL_icode___icode_base___IAttrWrite___property(fra.me.REG[0])(fra.me.REG[0]);
1859 fra.me.REG[3] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
1860 fra.me.REG[3] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1861 fra.me.REG[0] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
1862 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1863 fra.me.REG[0] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
1864 goto label1;
1865 label1: while(0);
1866 stack_frame_head = fra.me.prev;
1867 return fra.me.REG[0];
1868 }
1869 val_t icode___icode_tools___IAttrIsset___inner_dup_with(val_t p0, val_t p1){
1870 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1871 val_t tmp;
1872 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1873 fra.me.file = LOCATE_icode___icode_tools;
1874 fra.me.line = 451;
1875 fra.me.meth = LOCATE_icode___icode_tools___IAttrIsset___inner_dup_with;
1876 fra.me.has_broke = 0;
1877 fra.me.REG_size = 3;
1878 fra.me.REG[0] = NIT_NULL;
1879 fra.me.REG[1] = NIT_NULL;
1880 fra.me.REG[2] = NIT_NULL;
1881 fra.me.REG[0] = p0;
1882 fra.me.REG[1] = p1;
1883 /* ./icode//icode_tools.nit:453 */
1884 fra.me.REG[2] = CALL_icode___icode_base___IAttrIsset___property(fra.me.REG[0])(fra.me.REG[0]);
1885 fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1886 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1887 fra.me.REG[0] = NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(fra.me.REG[2], fra.me.REG[0]);
1888 goto label1;
1889 label1: while(0);
1890 stack_frame_head = fra.me.prev;
1891 return fra.me.REG[0];
1892 }
1893 val_t icode___icode_tools___ITypeCheck___inner_dup_with(val_t p0, val_t p1){
1894 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1895 val_t tmp;
1896 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1897 fra.me.file = LOCATE_icode___icode_tools;
1898 fra.me.line = 458;
1899 fra.me.meth = LOCATE_icode___icode_tools___ITypeCheck___inner_dup_with;
1900 fra.me.has_broke = 0;
1901 fra.me.REG_size = 4;
1902 fra.me.REG[0] = NIT_NULL;
1903 fra.me.REG[1] = NIT_NULL;
1904 fra.me.REG[2] = NIT_NULL;
1905 fra.me.REG[3] = NIT_NULL;
1906 fra.me.REG[0] = p0;
1907 fra.me.REG[1] = p1;
1908 /* ./icode//icode_tools.nit:460 */
1909 fra.me.REG[2] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
1910 fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1911 fra.me.REG[3] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
1912 fra.me.REG[3] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1913 fra.me.REG[0] = CALL_icode___icode_base___ITypeCheck___stype(fra.me.REG[0])(fra.me.REG[0]);
1914 fra.me.REG[0] = NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
1915 goto label1;
1916 label1: while(0);
1917 stack_frame_head = fra.me.prev;
1918 return fra.me.REG[0];
1919 }
1920 val_t icode___icode_tools___IIs___inner_dup_with(val_t p0, val_t p1){
1921 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1922 val_t tmp;
1923 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1924 fra.me.file = LOCATE_icode___icode_tools;
1925 fra.me.line = 465;
1926 fra.me.meth = LOCATE_icode___icode_tools___IIs___inner_dup_with;
1927 fra.me.has_broke = 0;
1928 fra.me.REG_size = 3;
1929 fra.me.REG[0] = NIT_NULL;
1930 fra.me.REG[1] = NIT_NULL;
1931 fra.me.REG[2] = NIT_NULL;
1932 fra.me.REG[0] = p0;
1933 fra.me.REG[1] = p1;
1934 /* ./icode//icode_tools.nit:467 */
1935 fra.me.REG[2] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
1936 fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
1937 fra.me.REG[0] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
1938 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1939 fra.me.REG[0] = NEW_IIs_icode___icode_base___IIs___init(fra.me.REG[2], fra.me.REG[0]);
1940 goto label1;
1941 label1: while(0);
1942 stack_frame_head = fra.me.prev;
1943 return fra.me.REG[0];
1944 }
1945 val_t icode___icode_tools___INot___inner_dup_with(val_t p0, val_t p1){
1946 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1947 val_t tmp;
1948 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1949 fra.me.file = LOCATE_icode___icode_tools;
1950 fra.me.line = 472;
1951 fra.me.meth = LOCATE_icode___icode_tools___INot___inner_dup_with;
1952 fra.me.has_broke = 0;
1953 fra.me.REG_size = 2;
1954 fra.me.REG[0] = NIT_NULL;
1955 fra.me.REG[1] = NIT_NULL;
1956 fra.me.REG[0] = p0;
1957 fra.me.REG[1] = p1;
1958 /* ./icode//icode_tools.nit:474 */
1959 fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
1960 fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1961 fra.me.REG[0] = NEW_INot_icode___icode_base___INot___init(fra.me.REG[0]);
1962 goto label1;
1963 label1: while(0);
1964 stack_frame_head = fra.me.prev;
1965 return fra.me.REG[0];
1966 }
1967 val_t icode___icode_tools___IOnce___inner_dup_with(val_t p0, val_t p1){
1968 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
1969 val_t tmp;
1970 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1971 fra.me.file = LOCATE_icode___icode_tools;
1972 fra.me.line = 479;
1973 fra.me.meth = LOCATE_icode___icode_tools___IOnce___inner_dup_with;
1974 fra.me.has_broke = 0;
1975 fra.me.REG_size = 4;
1976 fra.me.REG[0] = NIT_NULL;
1977 fra.me.REG[1] = NIT_NULL;
1978 fra.me.REG[2] = NIT_NULL;
1979 fra.me.REG[3] = NIT_NULL;
1980 fra.me.REG[0] = p0;
1981 fra.me.REG[1] = p1;
1982 /* ./icode//icode_tools.nit:481 */
1983 fra.me.REG[2] = NEW_IOnce_icode___icode_base___IOnce___init();
1984 /* ./icode//icode_tools.nit:482 */
1985 fra.me.REG[0] = CALL_icode___icode_base___IOnce___body(fra.me.REG[0])(fra.me.REG[0]);
1986 fra.me.REG[3] = CALL_icode___icode_base___IOnce___body(fra.me.REG[2])(fra.me.REG[2]);
1987 CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
1988 /* ./icode//icode_tools.nit:483 */
1989 goto label1;
1990 label1: while(0);
1991 stack_frame_head = fra.me.prev;
1992 return fra.me.REG[2];
1993 }
1994 val_t icode___icode_tools___IHasClos___inner_dup_with(val_t p0, val_t p1){
1995 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
1996 val_t REGB0;
1997 val_t REGB1;
1998 val_t tmp;
1999 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
2000 fra.me.file = LOCATE_icode___icode_tools;
2001 fra.me.line = 488;
2002 fra.me.meth = LOCATE_icode___icode_tools___IHasClos___inner_dup_with;
2003 fra.me.has_broke = 0;
2004 fra.me.REG_size = 5;
2005 fra.me.REG[0] = NIT_NULL;
2006 fra.me.REG[1] = NIT_NULL;
2007 fra.me.REG[2] = NIT_NULL;
2008 fra.me.REG[3] = NIT_NULL;
2009 fra.me.REG[4] = NIT_NULL;
2010 fra.me.REG[0] = p0;
2011 fra.me.REG[1] = p1;
2012 /* ./icode//icode_tools.nit:488 */
2013 fra.me.REG[2] = fra.me.REG[0];
2014 /* ./icode//icode_tools.nit:490 */
2015 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[1])!=NIT_NULL);
2016 if (UNTAG_Bool(REGB0)) {
2017 } else {
2018 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 490);
2019 }
2020 fra.me.REG[3] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[1]);
2021 fra.me.REG[4] = CALL_icode___icode_base___IHasClos___closure_decl(fra.me.REG[2])(fra.me.REG[2]);
2022 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
2023 if (UNTAG_Bool(REGB0)) {
2024 /* ./icode//icode_tools.nit:492 */
2025 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[1])!=NIT_NULL);
2026 if (UNTAG_Bool(REGB0)) {
2027 } else {
2028 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 492);
2029 }
2030 fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[1]);
2031 fra.me.REG[3] = CALL_icode___icode_base___IHasClos___closure_decl(fra.me.REG[2])(fra.me.REG[2]);
2032 fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
2033 /* ./icode//icode_tools.nit:494 */
2034 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2035 if (UNTAG_Bool(REGB0)) {
2036 } else {
2037 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
2038 if (UNTAG_Bool(REGB1)) {
2039 REGB1 = TAG_Bool(false);
2040 REGB0 = REGB1;
2041 } else {
2042 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
2043 REGB0 = REGB1;
2044 }
2045 }
2046 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
2047 if (UNTAG_Bool(REGB0)) {
2048 /* ./icode//icode_tools.nit:495 */
2049 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
2050 if (UNTAG_Bool(REGB0)) {
2051 } else {
2052 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 495);
2053 }
2054 fra.me.REG[3] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
2055 fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___lit_true_reg(fra.me.REG[3])(fra.me.REG[3]);
2056 } else {
2057 /* ./icode//icode_tools.nit:497 */
2058 REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
2059 if (UNTAG_Bool(REGB0)) {
2060 } else {
2061 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 497);
2062 }
2063 fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
2064 fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[4])(fra.me.REG[4]);
2065 fra.me.REG[3] = fra.me.REG[4];
2066 }
2067 /* ./icode//icode_tools.nit:499 */
2068 fra.me.REG[4] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
2069 REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
2070 if (UNTAG_Bool(REGB0)) {
2071 } else {
2072 nit_abort("Cast failed", NULL, LOCATE_icode___icode_tools, 499);
2073 }
2074 fra.me.REG[4] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
2075 fra.me.REG[3] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[4], fra.me.REG[3]);
2076 goto label1;
2077 } else {
2078 /* ./icode//icode_tools.nit:501 */
2079 fra.me.REG[2] = CALL_icode___icode_base___IHasClos___closure_decl(fra.me.REG[2])(fra.me.REG[2]);
2080 fra.me.REG[2] = NEW_IHasClos_icode___icode_base___IHasClos___init(fra.me.REG[2]);
2081 fra.me.REG[3] = fra.me.REG[2];
2082 goto label1;
2083 }
2084 label1: while(0);
2085 stack_frame_head = fra.me.prev;
2086 return fra.me.REG[3];
2087 }