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