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