1 /* This C file is generated by NIT to compile module icode_tools. */
2 #include "icode_tools._sep.h"
3 void icode_tools___ICodeVisitor___visit_iregister_read(val_t p0
, val_t p1
, val_t p2
){
4 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
6 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
7 fra
.me
.file
= LOCATE_icode_tools
;
9 fra
.me
.meth
= LOCATE_icode_tools___ICodeVisitor___visit_iregister_read
;
12 fra
.me
.REG
[0] = NIT_NULL
;
13 fra
.me
.REG
[1] = NIT_NULL
;
14 fra
.me
.REG
[2] = NIT_NULL
;
18 stack_frame_head
= fra
.me
.prev
;
21 void icode_tools___ICodeVisitor___visit_iregister_write(val_t p0
, val_t p1
, val_t p2
){
22 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
24 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
25 fra
.me
.file
= LOCATE_icode_tools
;
27 fra
.me
.meth
= LOCATE_icode_tools___ICodeVisitor___visit_iregister_write
;
30 fra
.me
.REG
[0] = NIT_NULL
;
31 fra
.me
.REG
[1] = NIT_NULL
;
32 fra
.me
.REG
[2] = NIT_NULL
;
36 stack_frame_head
= fra
.me
.prev
;
39 val_t
icode_tools___ICodeVisitor___current_icode(val_t p0
){
40 struct {struct stack_frame_t me
;} fra
;
42 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
43 fra
.me
.file
= LOCATE_icode_tools
;
45 fra
.me
.meth
= LOCATE_icode_tools___ICodeVisitor___current_icode
;
48 fra
.me
.REG
[0] = NIT_NULL
;
50 /* ./icode//icode_tools.nit:28 */
51 fra
.me
.REG
[0] = ATTR_icode_tools___ICodeVisitor____current_icode(fra
.me
.REG
[0]);
52 stack_frame_head
= fra
.me
.prev
;
55 void icode_tools___ICodeVisitor___visit_icode(val_t p0
, val_t p1
){
56 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
60 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
61 fra
.me
.file
= LOCATE_icode_tools
;
63 fra
.me
.meth
= LOCATE_icode_tools___ICodeVisitor___visit_icode
;
66 fra
.me
.REG
[0] = NIT_NULL
;
67 fra
.me
.REG
[1] = NIT_NULL
;
68 fra
.me
.REG
[2] = NIT_NULL
;
69 fra
.me
.REG
[3] = NIT_NULL
;
70 fra
.me
.REG
[4] = NIT_NULL
;
73 /* ./icode//icode_tools.nit:36 */
74 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
75 if (UNTAG_Bool(REGB0
)) {
77 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
78 if (UNTAG_Bool(REGB1
)) {
79 REGB1
= TAG_Bool(false);
82 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
86 if (UNTAG_Bool(REGB0
)) {
89 /* ./icode//icode_tools.nit:37 */
90 REGB0
= TAG_Bool((fra
.me
.REG
[1]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[1], COLOR_ISeq
, ID_ISeq
)) /*cast ISeq*/;
91 if (UNTAG_Bool(REGB0
)) {
92 /* ./icode//icode_tools.nit:38 */
93 fra
.me
.REG
[2] = ATTR_icode_tools___ICodeVisitor____current_icode(fra
.me
.REG
[0]);
94 /* ./icode//icode_tools.nit:39 */
95 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
96 if (UNTAG_Bool(REGB0
)) {
97 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 39);
99 fra
.me
.REG
[3] = CALL_icode_base___ISeq___icodes(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
100 fra
.me
.REG
[3] = CALL_abstract_collection___Collection___iterator(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
101 /* ./icode//icode_tools.nit:40 */
103 REGB0
= CALL_abstract_collection___Iterator___is_ok(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
104 if (UNTAG_Bool(REGB0
)) {
105 /* ./icode//icode_tools.nit:41 */
106 ATTR_icode_tools___ICodeVisitor____current_icode(fra
.me
.REG
[0]) = fra
.me
.REG
[3];
107 /* ./icode//icode_tools.nit:42 */
108 fra
.me
.REG
[4] = CALL_abstract_collection___Iterator___item(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
109 /* ./icode//icode_tools.nit:43 */
110 CALL_icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[4]);
111 /* ./icode//icode_tools.nit:44 */
112 CALL_abstract_collection___Iterator___next(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
114 /* ./icode//icode_tools.nit:40 */
119 /* ./icode//icode_tools.nit:46 */
120 ATTR_icode_tools___ICodeVisitor____current_icode(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
122 /* ./icode//icode_tools.nit:47 */
123 REGB0
= TAG_Bool((fra
.me
.REG
[1]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[1], COLOR_IIf
, ID_IIf
)) /*cast IIf*/;
124 if (UNTAG_Bool(REGB0
)) {
125 /* ./icode//icode_tools.nit:48 */
126 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
127 if (UNTAG_Bool(REGB0
)) {
128 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 48);
130 fra
.me
.REG
[2] = CALL_icode_base___ICode1___expr(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
131 CALL_icode_tools___ICodeVisitor___visit_iregister_read(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2]);
132 /* ./icode//icode_tools.nit:49 */
133 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
134 if (UNTAG_Bool(REGB0
)) {
135 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 49);
137 fra
.me
.REG
[2] = CALL_icode_base___IIf___then_seq(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
138 CALL_icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
139 /* ./icode//icode_tools.nit:50 */
140 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
141 if (UNTAG_Bool(REGB0
)) {
142 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 50);
144 fra
.me
.REG
[2] = CALL_icode_base___IIf___else_seq(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
145 CALL_icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
147 /* ./icode//icode_tools.nit:51 */
148 REGB0
= TAG_Bool((fra
.me
.REG
[1]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[1], COLOR_IOnce
, ID_IOnce
)) /*cast IOnce*/;
149 if (UNTAG_Bool(REGB0
)) {
150 /* ./icode//icode_tools.nit:52 */
151 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
152 if (UNTAG_Bool(REGB0
)) {
153 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 52);
155 fra
.me
.REG
[2] = CALL_icode_base___IOnce___body(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
156 CALL_icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
158 /* ./icode//icode_tools.nit:53 */
159 REGB0
= TAG_Bool((fra
.me
.REG
[1]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[1], COLOR_ICode1
, ID_ICode1
)) /*cast ICode1*/;
160 if (UNTAG_Bool(REGB0
)) {
161 /* ./icode//icode_tools.nit:54 */
162 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
163 if (UNTAG_Bool(REGB0
)) {
164 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 54);
166 fra
.me
.REG
[2] = CALL_icode_base___ICode1___expr(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
167 CALL_icode_tools___ICodeVisitor___visit_iregister_read(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2]);
169 /* ./icode//icode_tools.nit:55 */
170 REGB0
= TAG_Bool((fra
.me
.REG
[1]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[1], COLOR_ICode2
, ID_ICode2
)) /*cast ICode2*/;
171 if (UNTAG_Bool(REGB0
)) {
172 /* ./icode//icode_tools.nit:56 */
173 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
174 if (UNTAG_Bool(REGB0
)) {
175 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 56);
177 fra
.me
.REG
[2] = CALL_icode_base___ICode2___expr1(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
178 CALL_icode_tools___ICodeVisitor___visit_iregister_read(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2]);
179 /* ./icode//icode_tools.nit:57 */
180 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
181 if (UNTAG_Bool(REGB0
)) {
182 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 57);
184 fra
.me
.REG
[2] = CALL_icode_base___ICode2___expr2(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
185 CALL_icode_tools___ICodeVisitor___visit_iregister_read(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2]);
187 /* ./icode//icode_tools.nit:58 */
188 REGB0
= TAG_Bool((fra
.me
.REG
[1]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[1], COLOR_ICodeN
, ID_ICodeN
)) /*cast ICodeN*/;
189 if (UNTAG_Bool(REGB0
)) {
190 /* ./icode//icode_tools.nit:59 */
191 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
192 if (UNTAG_Bool(REGB0
)) {
193 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 59);
195 fra
.me
.REG
[2] = CALL_icode_base___ICodeN___exprs(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
196 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_icode_tools___ICodeVisitor___visit_icode_3
));
197 /* ./icode//icode_tools.nit:62 */
198 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
199 if (UNTAG_Bool(REGB0
)) {
200 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 62);
202 fra
.me
.REG
[2] = CALL_icode_base___ICodeN___closure_defs(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
203 /* ./icode//icode_tools.nit:63 */
204 REGB0
= TAG_Bool((fra
.me
.REG
[1]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[1], COLOR_IClosCall
, ID_IClosCall
)) /*cast IClosCall*/;
205 if (UNTAG_Bool(REGB0
)) {
206 /* ./icode//icode_tools.nit:64 */
207 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
208 if (UNTAG_Bool(REGB0
)) {
209 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 64);
211 fra
.me
.REG
[3] = CALL_icode_base___IClosCall___break_seq(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
212 CALL_icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
214 /* ./icode//icode_tools.nit:66 */
215 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
216 if (UNTAG_Bool(REGB0
)) {
218 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
219 if (UNTAG_Bool(REGB1
)) {
220 REGB1
= TAG_Bool(false);
223 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
227 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
228 if (UNTAG_Bool(REGB0
)) {
229 /* ./icode//icode_tools.nit:67 */
230 CALL_icode_tools___ICodeVisitor___visit_closure_defs(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
238 /* ./icode//icode_tools.nit:70 */
239 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
240 if (UNTAG_Bool(REGB0
)) {
241 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 70);
243 fra
.me
.REG
[2] = CALL_icode_base___ICode___result(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
244 /* ./icode//icode_tools.nit:71 */
245 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
246 if (UNTAG_Bool(REGB0
)) {
248 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
249 if (UNTAG_Bool(REGB1
)) {
250 REGB1
= TAG_Bool(false);
253 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
257 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
258 if (UNTAG_Bool(REGB0
)) {
259 CALL_icode_tools___ICodeVisitor___visit_iregister_write(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2]);
262 stack_frame_head
= fra
.me
.prev
;
265 void OC_icode_tools___ICodeVisitor___visit_icode_3(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
266 struct {struct stack_frame_t me
;} fra
;
269 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
270 fra
.me
.file
= LOCATE_icode_tools
;
272 fra
.me
.meth
= LOCATE_icode_tools___ICodeVisitor___visit_icode
;
273 fra
.me
.has_broke
= 0;
275 fra
.me
.REG
[0] = NIT_NULL
;
276 fra
.me
.closure_ctx
= closctx_param
;
277 fra
.me
.closure_funs
= CREG
;
280 /* ./icode//icode_tools.nit:60 */
281 CALL_icode_tools___ICodeVisitor___visit_iregister_read(closctx
->REG
[0])(closctx
->REG
[0], closctx
->REG
[1], fra
.me
.REG
[0]);
282 stack_frame_head
= fra
.me
.prev
;
285 void icode_tools___ICodeVisitor___visit_closure_defs(val_t p0
, val_t p1
){
286 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
288 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
289 fra
.me
.file
= LOCATE_icode_tools
;
291 fra
.me
.meth
= LOCATE_icode_tools___ICodeVisitor___visit_closure_defs
;
292 fra
.me
.has_broke
= 0;
294 fra
.me
.REG
[0] = NIT_NULL
;
295 fra
.me
.REG
[1] = NIT_NULL
;
298 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], (&(fra
.me
)), ((fun_t
)OC_icode_tools___ICodeVisitor___visit_closure_defs_1
));
299 stack_frame_head
= fra
.me
.prev
;
302 void OC_icode_tools___ICodeVisitor___visit_closure_defs_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
303 struct {struct stack_frame_t me
;} fra
;
308 /* ./icode//icode_tools.nit:78 */
309 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
310 fra
.me
.file
= LOCATE_icode_tools
;
312 fra
.me
.meth
= LOCATE_icode_tools___ICodeVisitor___visit_closure_defs
;
313 fra
.me
.has_broke
= 0;
315 fra
.me
.REG
[0] = NIT_NULL
;
316 fra
.me
.closure_ctx
= closctx_param
;
317 fra
.me
.closure_funs
= CREG
;
320 /* ./icode//icode_tools.nit:79 */
321 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
322 if (UNTAG_Bool(REGB0
)) {
324 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
325 if (UNTAG_Bool(REGB1
)) {
326 REGB1
= TAG_Bool(false);
329 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
333 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
334 if (UNTAG_Bool(REGB0
)) {
335 /* ./icode//icode_tools.nit:80 */
336 CALL_icode_tools___ICodeVisitor___visit_iroutine(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
338 stack_frame_head
= fra
.me
.prev
;
341 void icode_tools___ICodeVisitor___visit_iroutine(val_t p0
, val_t p1
){
342 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
344 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
345 fra
.me
.file
= LOCATE_icode_tools
;
347 fra
.me
.meth
= LOCATE_icode_tools___ICodeVisitor___visit_iroutine
;
348 fra
.me
.has_broke
= 0;
350 fra
.me
.REG
[0] = NIT_NULL
;
351 fra
.me
.REG
[1] = NIT_NULL
;
354 /* ./icode//icode_tools.nit:90 */
355 fra
.me
.REG
[1] = CALL_icode_base___IRoutine___body(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
356 CALL_icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
357 stack_frame_head
= fra
.me
.prev
;
360 void icode_tools___ICodeVisitor___init(val_t p0
, int* init_table
){
361 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_ICodeVisitor
].i
;
362 struct {struct stack_frame_t me
;} fra
;
364 if (init_table
[itpos0
]) return;
365 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
366 fra
.me
.file
= LOCATE_icode_tools
;
368 fra
.me
.meth
= LOCATE_icode_tools___ICodeVisitor___init
;
369 fra
.me
.has_broke
= 0;
371 stack_frame_head
= fra
.me
.prev
;
372 init_table
[itpos0
] = 1;
375 val_t
icode_tools___ICodeBuilder___inline_routine(val_t p0
, val_t p1
, val_t p2
, val_t p3
){
376 struct {struct stack_frame_t me
; val_t MORE_REG
[9];} fra
;
384 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
385 fra
.me
.file
= LOCATE_icode_tools
;
387 fra
.me
.meth
= LOCATE_icode_tools___ICodeBuilder___inline_routine
;
388 fra
.me
.has_broke
= 0;
389 fra
.me
.REG_size
= 10;
390 fra
.me
.REG
[0] = NIT_NULL
;
391 fra
.me
.REG
[1] = NIT_NULL
;
392 fra
.me
.REG
[2] = NIT_NULL
;
393 fra
.me
.REG
[3] = NIT_NULL
;
394 fra
.me
.REG
[4] = NIT_NULL
;
395 fra
.me
.REG
[5] = NIT_NULL
;
396 fra
.me
.REG
[6] = NIT_NULL
;
397 fra
.me
.REG
[7] = NIT_NULL
;
398 fra
.me
.REG
[8] = NIT_NULL
;
399 fra
.me
.REG
[9] = NIT_NULL
;
404 /* ./icode//icode_tools.nit:99 */
405 fra
.me
.REG
[4] = CALL_icode_builder___ICodeBuilder___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
406 REGB0
= TAG_Bool(IS_EQUAL_OO(fra
.me
.REG
[1],fra
.me
.REG
[4]));
407 if (UNTAG_Bool(REGB0
)) {
409 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[4]);
412 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
413 if (UNTAG_Bool(REGB0
)) {
415 nit_abort("Assert failed", NULL
, LOCATE_icode_tools
, 99);
417 /* ./icode//icode_tools.nit:100 */
418 fra
.me
.REG
[4] = NEW_ICodeDupContext_icode_tools___ICodeDupContext___init(fra
.me
.REG
[0]);
419 /* ./icode//icode_tools.nit:101 */
420 REGB0
= CALL_abstract_collection___Collection___length(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
421 fra
.me
.REG
[5] = CALL_icode_base___IRoutine___params(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
422 REGB1
= CALL_abstract_collection___Collection___length(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
423 REGB2
= TAG_Bool(IS_EQUAL_OO(REGB0
,REGB1
));
424 if (UNTAG_Bool(REGB2
)) {
426 /* ./../lib/standard//kernel.nit:207 */
427 REGB1
= TAG_Bool((REGB0
)==(REGB1
));
428 /* ./icode//icode_tools.nit:101 */
431 if (UNTAG_Bool(REGB2
)) {
433 nit_abort("Assert failed", NULL
, LOCATE_icode_tools
, 101);
435 /* ./icode//icode_tools.nit:102 */
436 fra
.me
.REG
[5] = CALL_icode_base___IRoutine___closure_decls(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
437 /* ./icode//icode_tools.nit:103 */
438 REGB2
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
439 if (UNTAG_Bool(REGB2
)) {
441 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
442 if (UNTAG_Bool(REGB1
)) {
443 REGB1
= TAG_Bool(false);
446 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
450 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
451 if (UNTAG_Bool(REGB2
)) {
452 REGB2
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
453 if (UNTAG_Bool(REGB2
)) {
454 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 103);
456 REGB2
= CALL_abstract_collection___Collection___length(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
461 /* ./icode//icode_tools.nit:104 */
462 REGB1
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
463 if (UNTAG_Bool(REGB1
)) {
465 REGB0
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
466 if (UNTAG_Bool(REGB0
)) {
467 REGB0
= TAG_Bool(false);
470 REGB0
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[5])(fra
.me
.REG
[5], NIT_NULL
);
474 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
475 if (UNTAG_Bool(REGB1
)) {
476 REGB1
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
477 if (UNTAG_Bool(REGB1
)) {
478 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 104);
480 REGB1
= CALL_abstract_collection___Collection___length(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
485 /* ./../lib/standard//kernel.nit:211 */
486 REGB0
= TAG_Bool(UNTAG_Int(REGB2
)<=UNTAG_Int(REGB1
));
487 /* ./icode//icode_tools.nit:105 */
488 if (UNTAG_Bool(REGB0
)) {
490 nit_abort("Assert failed", NULL
, LOCATE_icode_tools
, 105);
492 /* ./icode//icode_tools.nit:108 */
493 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____registers(fra
.me
.REG
[4])!=NIT_NULL
);
494 if (UNTAG_Bool(REGB0
)) {
496 nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode_tools
, 108);
498 fra
.me
.REG
[6] = ATTR_icode_tools___ICodeDupContext____registers(fra
.me
.REG
[4]);
499 /* ./icode//icode_tools.nit:109 */
500 fra
.me
.REG
[7] = CALL_icode_base___IRoutine___result(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
501 /* ./icode//icode_tools.nit:110 */
502 REGB0
= TAG_Bool(fra
.me
.REG
[7]==NIT_NULL
);
503 if (UNTAG_Bool(REGB0
)) {
505 REGB3
= TAG_Bool(fra
.me
.REG
[7]==NIT_NULL
);
506 if (UNTAG_Bool(REGB3
)) {
507 REGB3
= TAG_Bool(false);
510 REGB3
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[7])(fra
.me
.REG
[7], NIT_NULL
);
514 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
515 if (UNTAG_Bool(REGB0
)) {
516 /* ./icode//icode_tools.nit:111 */
517 REGB0
= TAG_Bool(fra
.me
.REG
[7]==NIT_NULL
);
518 if (UNTAG_Bool(REGB0
)) {
519 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 111);
521 fra
.me
.REG
[8] = CALL_icode_base___IRegister___stype(fra
.me
.REG
[7])(fra
.me
.REG
[7]);
522 fra
.me
.REG
[8] = CALL_icode_builder___ICodeBuilder___new_register(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[8]);
523 /* ./icode//icode_tools.nit:112 */
524 CALL_abstract_collection___Map_____braeq(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[7], fra
.me
.REG
[8]);
525 /* ./icode//icode_tools.nit:113 */
526 fra
.me
.REG
[7] = fra
.me
.REG
[8];
528 /* ./icode//icode_tools.nit:115 */
529 fra
.me
.REG
[8] = CALL_icode_base___IRoutine___registers(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
530 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[8])(fra
.me
.REG
[8], (&(fra
.me
)), ((fun_t
)OC_icode_tools___ICodeBuilder___inline_routine_1
));
531 /* ./icode//icode_tools.nit:119 */
533 REGB3
= CALL_abstract_collection___Collection___length(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
534 /* ./../lib/standard//kernel.nit:332 */
536 /* ./../lib/standard//kernel.nit:212 */
537 REGB4
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB3
));
538 /* ./../lib/standard//kernel.nit:332 */
539 if (UNTAG_Bool(REGB4
)) {
540 /* ./icode//icode_tools.nit:119 */
542 /* ./icode//icode_tools.nit:122 */
543 fra
.me
.REG
[8] = CALL_icode_base___IRoutine___params(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
544 fra
.me
.REG
[8] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[8])(fra
.me
.REG
[8], REGB4
);
545 fra
.me
.REG
[9] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[2])(fra
.me
.REG
[2], REGB4
);
546 CALL_abstract_collection___Map_____braeq(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[8], fra
.me
.REG
[9]);
547 /* ./../lib/standard//kernel.nit:334 */
549 /* ./../lib/standard//kernel.nit:215 */
550 REGB4
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB4
));
551 /* ./../lib/standard//kernel.nit:334 */
554 /* ./../lib/standard//kernel.nit:332 */
559 /* ./icode//icode_tools.nit:127 */
560 fra
.me
.REG
[6] = CALL_icode_base___IRoutine___escape_marks(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
561 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[6])(fra
.me
.REG
[6], (&(fra
.me
)), ((fun_t
)OC_icode_tools___ICodeBuilder___inline_routine_3
));
562 /* ./icode//icode_tools.nit:134 */
563 REGB0
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
564 if (UNTAG_Bool(REGB0
)) {
566 REGB3
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
567 if (UNTAG_Bool(REGB3
)) {
568 REGB3
= TAG_Bool(false);
571 REGB3
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[5])(fra
.me
.REG
[5], NIT_NULL
);
575 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
576 if (UNTAG_Bool(REGB0
)) {
577 /* ./icode//icode_tools.nit:135 */
578 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____closures(fra
.me
.REG
[4])!=NIT_NULL
);
579 if (UNTAG_Bool(REGB0
)) {
581 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode_tools
, 135);
583 fra
.me
.REG
[0] = ATTR_icode_tools___ICodeDupContext____closures(fra
.me
.REG
[4]);
584 /* ./icode//icode_tools.nit:136 */
586 /* ./../lib/standard//kernel.nit:327 */
588 /* ./../lib/standard//kernel.nit:332 */
590 /* ./../lib/standard//kernel.nit:212 */
591 REGB4
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB3
));
592 /* ./../lib/standard//kernel.nit:332 */
593 if (UNTAG_Bool(REGB4
)) {
594 /* ./icode//icode_tools.nit:136 */
596 /* ./icode//icode_tools.nit:137 */
597 REGB5
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
598 if (UNTAG_Bool(REGB5
)) {
599 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 137);
601 fra
.me
.REG
[6] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], REGB4
);
602 REGB5
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
603 if (UNTAG_Bool(REGB5
)) {
604 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 137);
606 fra
.me
.REG
[2] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[3])(fra
.me
.REG
[3], REGB4
);
607 CALL_abstract_collection___Map_____braeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[6], fra
.me
.REG
[2]);
608 /* ./../lib/standard//kernel.nit:334 */
610 /* ./../lib/standard//kernel.nit:215 */
611 REGB4
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB4
));
612 /* ./../lib/standard//kernel.nit:334 */
615 /* ./../lib/standard//kernel.nit:332 */
620 /* ./../lib/standard//kernel.nit:332 */
622 /* ./../lib/standard//kernel.nit:212 */
623 REGB0
= TAG_Bool(UNTAG_Int(REGB2
)<UNTAG_Int(REGB1
));
624 /* ./../lib/standard//kernel.nit:332 */
625 if (UNTAG_Bool(REGB0
)) {
626 /* ./icode//icode_tools.nit:139 */
628 /* ./icode//icode_tools.nit:140 */
629 REGB3
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
630 if (UNTAG_Bool(REGB3
)) {
631 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 140);
633 fra
.me
.REG
[3] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], REGB0
);
634 CALL_abstract_collection___Map_____braeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3], NIT_NULL
);
635 /* ./../lib/standard//kernel.nit:334 */
637 /* ./../lib/standard//kernel.nit:215 */
638 REGB0
= TAG_Int(UNTAG_Int(REGB2
)+UNTAG_Int(REGB0
));
639 /* ./../lib/standard//kernel.nit:334 */
642 /* ./../lib/standard//kernel.nit:332 */
648 /* ./icode//icode_tools.nit:145 */
649 fra
.me
.REG
[1] = CALL_icode_base___IRoutine___body(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
650 CALL_icode_tools___ICode___dup_with(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[4]);
651 /* ./icode//icode_tools.nit:146 */
654 stack_frame_head
= fra
.me
.prev
;
655 return fra
.me
.REG
[7];
657 void OC_icode_tools___ICodeBuilder___inline_routine_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
658 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
662 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
663 fra
.me
.file
= LOCATE_icode_tools
;
665 fra
.me
.meth
= LOCATE_icode_tools___ICodeBuilder___inline_routine
;
666 fra
.me
.has_broke
= 0;
668 fra
.me
.REG
[0] = NIT_NULL
;
669 fra
.me
.REG
[1] = NIT_NULL
;
670 fra
.me
.closure_ctx
= closctx_param
;
671 fra
.me
.closure_funs
= CREG
;
674 /* ./icode//icode_tools.nit:116 */
675 REGB0
= CALL_abstract_collection___MapRead___has_key(closctx
->REG
[6])(closctx
->REG
[6], fra
.me
.REG
[0]);
676 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
677 if (UNTAG_Bool(REGB0
)) {
679 nit_abort("Assert failed", NULL
, LOCATE_icode_tools
, 116);
681 /* ./icode//icode_tools.nit:117 */
682 fra
.me
.REG
[1] = CALL_icode_base___IRegister___stype(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
683 fra
.me
.REG
[1] = CALL_icode_builder___ICodeBuilder___new_register(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[1]);
684 CALL_abstract_collection___Map_____braeq(closctx
->REG
[6])(closctx
->REG
[6], fra
.me
.REG
[0], fra
.me
.REG
[1]);
685 stack_frame_head
= fra
.me
.prev
;
688 void OC_icode_tools___ICodeBuilder___inline_routine_3(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
689 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
693 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
694 fra
.me
.file
= LOCATE_icode_tools
;
696 fra
.me
.meth
= LOCATE_icode_tools___ICodeBuilder___inline_routine
;
697 fra
.me
.has_broke
= 0;
699 fra
.me
.REG
[0] = NIT_NULL
;
700 fra
.me
.REG
[1] = NIT_NULL
;
701 fra
.me
.REG
[2] = NIT_NULL
;
702 fra
.me
.closure_ctx
= closctx_param
;
703 fra
.me
.closure_funs
= CREG
;
706 /* ./icode//icode_tools.nit:128 */
707 fra
.me
.REG
[1] = NEW_IEscapeMark_icode_base___IEscapeMark___init();
708 /* ./icode//icode_tools.nit:129 */
709 fra
.me
.REG
[2] = CALL_icode_builder___ICodeBuilder___iroutine(closctx
->REG
[0])(closctx
->REG
[0]);
710 fra
.me
.REG
[2] = CALL_icode_base___IRoutine___escape_marks(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
711 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
712 /* ./icode//icode_tools.nit:130 */
713 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____marks(closctx
->REG
[4])!=NIT_NULL
);
714 if (UNTAG_Bool(REGB0
)) {
716 nit_abort("Uninitialized attribute %s", "_marks", LOCATE_icode_tools
, 130);
718 fra
.me
.REG
[2] = ATTR_icode_tools___ICodeDupContext____marks(closctx
->REG
[4]);
719 CALL_abstract_collection___Map_____braeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[0], fra
.me
.REG
[1]);
720 stack_frame_head
= fra
.me
.prev
;
723 val_t
icode_tools___ICodeDupContext___dup_ireg(val_t p0
, val_t p1
){
724 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
727 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
728 fra
.me
.file
= LOCATE_icode_tools
;
730 fra
.me
.meth
= LOCATE_icode_tools___ICodeDupContext___dup_ireg
;
731 fra
.me
.has_broke
= 0;
733 fra
.me
.REG
[0] = NIT_NULL
;
734 fra
.me
.REG
[1] = NIT_NULL
;
737 /* ./icode//icode_tools.nit:157 */
738 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____registers(fra
.me
.REG
[0])!=NIT_NULL
);
739 if (UNTAG_Bool(REGB0
)) {
741 nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode_tools
, 157);
743 fra
.me
.REG
[0] = ATTR_icode_tools___ICodeDupContext____registers(fra
.me
.REG
[0]);
744 /* ./icode//icode_tools.nit:158 */
745 REGB0
= CALL_abstract_collection___MapRead___has_key(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
746 if (UNTAG_Bool(REGB0
)) {
747 /* ./icode//icode_tools.nit:159 */
748 fra
.me
.REG
[0] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
751 /* ./icode//icode_tools.nit:161 */
752 fra
.me
.REG
[0] = fra
.me
.REG
[1];
756 stack_frame_head
= fra
.me
.prev
;
757 return fra
.me
.REG
[0];
759 val_t
icode_tools___ICodeDupContext___dup_iregs(val_t p0
, val_t p1
){
760 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
763 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
764 fra
.me
.file
= LOCATE_icode_tools
;
766 fra
.me
.meth
= LOCATE_icode_tools___ICodeDupContext___dup_iregs
;
767 fra
.me
.has_broke
= 0;
769 fra
.me
.REG
[0] = NIT_NULL
;
770 fra
.me
.REG
[1] = NIT_NULL
;
771 fra
.me
.REG
[2] = NIT_NULL
;
774 /* ./icode//icode_tools.nit:168 */
775 REGB0
= CALL_abstract_collection___Collection___length(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
776 fra
.me
.REG
[2] = NEW_Array_array___Array___with_capacity(REGB0
);
777 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], (&(fra
.me
)), ((fun_t
)OC_icode_tools___ICodeDupContext___dup_iregs_1
));
778 /* ./icode//icode_tools.nit:172 */
781 stack_frame_head
= fra
.me
.prev
;
782 return fra
.me
.REG
[2];
784 void OC_icode_tools___ICodeDupContext___dup_iregs_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
785 struct {struct stack_frame_t me
;} fra
;
788 /* ./icode//icode_tools.nit:169 */
789 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
790 fra
.me
.file
= LOCATE_icode_tools
;
792 fra
.me
.meth
= LOCATE_icode_tools___ICodeDupContext___dup_iregs
;
793 fra
.me
.has_broke
= 0;
795 fra
.me
.REG
[0] = NIT_NULL
;
796 fra
.me
.closure_ctx
= closctx_param
;
797 fra
.me
.closure_funs
= CREG
;
800 /* ./icode//icode_tools.nit:170 */
801 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
802 CALL_abstract_collection___SimpleCollection___add(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
803 stack_frame_head
= fra
.me
.prev
;
806 val_t
icode_tools___ICodeDupContext___dup_mark(val_t p0
, val_t p1
){
807 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
810 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
811 fra
.me
.file
= LOCATE_icode_tools
;
813 fra
.me
.meth
= LOCATE_icode_tools___ICodeDupContext___dup_mark
;
814 fra
.me
.has_broke
= 0;
816 fra
.me
.REG
[0] = NIT_NULL
;
817 fra
.me
.REG
[1] = NIT_NULL
;
820 /* ./icode//icode_tools.nit:184 */
821 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____marks(fra
.me
.REG
[0])!=NIT_NULL
);
822 if (UNTAG_Bool(REGB0
)) {
824 nit_abort("Uninitialized attribute %s", "_marks", LOCATE_icode_tools
, 184);
826 fra
.me
.REG
[0] = ATTR_icode_tools___ICodeDupContext____marks(fra
.me
.REG
[0]);
827 /* ./icode//icode_tools.nit:185 */
828 REGB0
= CALL_abstract_collection___MapRead___has_key(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
829 if (UNTAG_Bool(REGB0
)) {
830 /* ./icode//icode_tools.nit:186 */
831 fra
.me
.REG
[0] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
834 /* ./icode//icode_tools.nit:188 */
835 fra
.me
.REG
[0] = fra
.me
.REG
[1];
839 stack_frame_head
= fra
.me
.prev
;
840 return fra
.me
.REG
[0];
842 void icode_tools___ICodeDupContext___init(val_t p0
, val_t p1
, int* init_table
){
843 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_ICodeDupContext
].i
;
844 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
846 if (init_table
[itpos1
]) return;
847 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
848 fra
.me
.file
= LOCATE_icode_tools
;
850 fra
.me
.meth
= LOCATE_icode_tools___ICodeDupContext___init
;
851 fra
.me
.has_broke
= 0;
853 fra
.me
.REG
[0] = NIT_NULL
;
854 fra
.me
.REG
[1] = NIT_NULL
;
857 /* ./icode//icode_tools.nit:204 */
858 ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
859 stack_frame_head
= fra
.me
.prev
;
860 init_table
[itpos1
] = 1;
863 void icode_tools___ICode___dup_with(val_t p0
, val_t p1
){
864 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
868 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
869 fra
.me
.file
= LOCATE_icode_tools
;
871 fra
.me
.meth
= LOCATE_icode_tools___ICode___dup_with
;
872 fra
.me
.has_broke
= 0;
874 fra
.me
.REG
[0] = NIT_NULL
;
875 fra
.me
.REG
[1] = NIT_NULL
;
876 fra
.me
.REG
[2] = NIT_NULL
;
877 fra
.me
.REG
[3] = NIT_NULL
;
878 fra
.me
.REG
[4] = NIT_NULL
;
881 /* ./icode//icode_tools.nit:212 */
882 fra
.me
.REG
[2] = CALL_icode_tools___ICode___inner_dup_with(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
883 /* ./icode//icode_tools.nit:213 */
884 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_ICodeN
, ID_ICodeN
)) /*cast ICodeN*/;
885 if (UNTAG_Bool(REGB0
)) {
886 /* ./icode//icode_tools.nit:214 */
887 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[2], COLOR_ICodeN
, ID_ICodeN
)) /*cast ICodeN*/;
888 if (UNTAG_Bool(REGB0
)) {
890 nit_abort("Assert failed", NULL
, LOCATE_icode_tools
, 214);
892 /* ./icode//icode_tools.nit:215 */
893 fra
.me
.REG
[3] = CALL_icode_base___ICodeN___closure_defs(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
894 /* ./icode//icode_tools.nit:216 */
895 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
896 if (UNTAG_Bool(REGB0
)) {
898 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
899 if (UNTAG_Bool(REGB1
)) {
900 REGB1
= TAG_Bool(false);
903 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
907 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
908 if (UNTAG_Bool(REGB0
)) {
909 /* ./icode//icode_tools.nit:218 */
910 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
911 if (UNTAG_Bool(REGB0
)) {
912 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 218);
914 REGB0
= CALL_abstract_collection___Collection___length(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
915 fra
.me
.REG
[4] = NEW_Array_array___Array___with_capacity(REGB0
);
916 /* ./icode//icode_tools.nit:219 */
917 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
918 if (UNTAG_Bool(REGB0
)) {
919 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 219);
921 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[3])(fra
.me
.REG
[3], (&(fra
.me
)), ((fun_t
)OC_icode_tools___ICode___dup_with_1
));
922 /* ./icode//icode_tools.nit:230 */
923 CALL_icode_base___ICodeN___closure_defs__eq(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[4]);
926 /* ./icode//icode_tools.nit:233 */
927 fra
.me
.REG
[4] = CALL_icode_base___ICode___result(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
928 /* ./icode//icode_tools.nit:234 */
929 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
930 if (UNTAG_Bool(REGB0
)) {
932 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
933 if (UNTAG_Bool(REGB1
)) {
934 REGB1
= TAG_Bool(false);
937 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
941 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
942 if (UNTAG_Bool(REGB0
)) {
943 fra
.me
.REG
[4] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[4]);
944 CALL_icode_base___ICode___result__eq(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[4]);
946 /* ./icode//icode_tools.nit:235 */
947 fra
.me
.REG
[0] = CALL_icode_base___ICode___location(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
948 CALL_icode_base___ICode___location__eq(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[0]);
949 /* ./icode//icode_tools.nit:236 */
950 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1])!=NIT_NULL
);
951 if (UNTAG_Bool(REGB0
)) {
953 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode_tools
, 236);
955 fra
.me
.REG
[1] = ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1]);
956 fra
.me
.REG
[1] = CALL_icode_builder___ICodeBuilder___seq(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
957 fra
.me
.REG
[1] = CALL_icode_base___ISeq___icodes(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
958 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
959 stack_frame_head
= fra
.me
.prev
;
962 void OC_icode_tools___ICode___dup_with_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
963 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
968 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
969 fra
.me
.file
= LOCATE_icode_tools
;
971 fra
.me
.meth
= LOCATE_icode_tools___ICode___dup_with
;
972 fra
.me
.has_broke
= 0;
974 fra
.me
.REG
[0] = NIT_NULL
;
975 fra
.me
.REG
[1] = NIT_NULL
;
976 fra
.me
.REG
[2] = NIT_NULL
;
977 fra
.me
.closure_ctx
= closctx_param
;
978 fra
.me
.closure_funs
= CREG
;
981 /* ./icode//icode_tools.nit:220 */
982 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
983 if (UNTAG_Bool(REGB0
)) {
985 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
986 if (UNTAG_Bool(REGB1
)) {
987 REGB1
= TAG_Bool(false);
990 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
994 if (UNTAG_Bool(REGB0
)) {
995 /* ./icode//icode_tools.nit:221 */
996 CALL_abstract_collection___SimpleCollection___add(closctx
->REG
[4])(closctx
->REG
[4], NIT_NULL
);
998 /* ./icode//icode_tools.nit:223 */
999 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
1000 if (UNTAG_Bool(REGB0
)) {
1001 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 223);
1003 fra
.me
.REG
[1] = CALL_icode_base___IRoutine___result(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1004 /* ./icode//icode_tools.nit:224 */
1005 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
1006 if (UNTAG_Bool(REGB0
)) {
1008 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
1009 if (UNTAG_Bool(REGB1
)) {
1010 REGB1
= TAG_Bool(false);
1013 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
1017 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1018 if (UNTAG_Bool(REGB0
)) {
1019 fra
.me
.REG
[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[1]);
1020 fra
.me
.REG
[1] = fra
.me
.REG
[2];
1022 /* ./icode//icode_tools.nit:225 */
1023 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
1024 if (UNTAG_Bool(REGB0
)) {
1025 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 225);
1027 fra
.me
.REG
[2] = CALL_icode_base___IRoutine___params(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1028 fra
.me
.REG
[2] = CALL_icode_tools___ICodeDupContext___dup_iregs(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[2]);
1029 fra
.me
.REG
[1] = NEW_IClosureDef_icode_base___IClosureDef___init(fra
.me
.REG
[2], fra
.me
.REG
[1]);
1030 /* ./icode//icode_tools.nit:226 */
1031 CALL_abstract_collection___SimpleCollection___add(closctx
->REG
[4])(closctx
->REG
[4], fra
.me
.REG
[1]);
1032 /* ./icode//icode_tools.nit:227 */
1033 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
1034 if (UNTAG_Bool(REGB0
)) {
1035 nit_abort("Reciever is null", NULL
, LOCATE_icode_tools
, 227);
1037 fra
.me
.REG
[0] = CALL_icode_base___IRoutine___body(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1038 fra
.me
.REG
[1] = CALL_icode_base___IRoutine___body(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1039 CALL_icode_tools___ISeq___dup_seq_to(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[1], fra
.me
.REG
[1]);
1041 stack_frame_head
= fra
.me
.prev
;
1044 val_t
icode_tools___ICode___inner_dup_with(val_t p0
, val_t p1
){
1045 struct {struct stack_frame_t me
;} fra
;
1047 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1048 fra
.me
.file
= LOCATE_icode_tools
;
1050 fra
.me
.meth
= LOCATE_icode_tools___ICode___inner_dup_with
;
1051 fra
.me
.has_broke
= 0;
1052 fra
.me
.REG_size
= 0;
1053 /* ./icode//icode_tools.nit:239 */
1054 nit_abort("Deferred method called", NULL
, LOCATE_icode_tools
, 239);
1055 stack_frame_head
= fra
.me
.prev
;
1058 val_t
icode_tools___ISeq___inner_dup_with(val_t p0
, val_t p1
){
1059 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1061 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1062 fra
.me
.file
= LOCATE_icode_tools
;
1064 fra
.me
.meth
= LOCATE_icode_tools___ISeq___inner_dup_with
;
1065 fra
.me
.has_broke
= 0;
1066 fra
.me
.REG_size
= 3;
1067 fra
.me
.REG
[0] = NIT_NULL
;
1068 fra
.me
.REG
[1] = NIT_NULL
;
1069 fra
.me
.REG
[2] = NIT_NULL
;
1072 /* ./icode//icode_tools.nit:246 */
1073 fra
.me
.REG
[2] = NEW_ISeq_icode_base___ISeq___init();
1074 /* ./icode//icode_tools.nit:247 */
1075 CALL_icode_tools___ISeq___dup_seq_to(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2]);
1076 /* ./icode//icode_tools.nit:248 */
1079 stack_frame_head
= fra
.me
.prev
;
1080 return fra
.me
.REG
[2];
1082 void icode_tools___ISeq___dup_seq_to(val_t p0
, val_t p1
, val_t p2
){
1083 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
1087 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1088 fra
.me
.file
= LOCATE_icode_tools
;
1090 fra
.me
.meth
= LOCATE_icode_tools___ISeq___dup_seq_to
;
1091 fra
.me
.has_broke
= 0;
1092 fra
.me
.REG_size
= 5;
1093 fra
.me
.REG
[0] = NIT_NULL
;
1094 fra
.me
.REG
[1] = NIT_NULL
;
1095 fra
.me
.REG
[2] = NIT_NULL
;
1096 fra
.me
.REG
[3] = NIT_NULL
;
1097 fra
.me
.REG
[4] = NIT_NULL
;
1101 /* ./icode//icode_tools.nit:255 */
1102 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1])!=NIT_NULL
);
1103 if (UNTAG_Bool(REGB0
)) {
1105 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode_tools
, 255);
1107 fra
.me
.REG
[3] = ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1]);
1108 fra
.me
.REG
[3] = CALL_icode_builder___ICodeBuilder___seq(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1109 /* ./icode//icode_tools.nit:256 */
1110 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1])!=NIT_NULL
);
1111 if (UNTAG_Bool(REGB0
)) {
1113 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode_tools
, 256);
1115 fra
.me
.REG
[4] = ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1]);
1116 CALL_icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[2]);
1117 /* ./icode//icode_tools.nit:257 */
1118 fra
.me
.REG
[4] = CALL_icode_base___ISeq___icodes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1119 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[4])(fra
.me
.REG
[4], (&(fra
.me
)), ((fun_t
)OC_icode_tools___ISeq___dup_seq_to_1
));
1120 /* ./icode//icode_tools.nit:260 */
1121 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1])!=NIT_NULL
);
1122 if (UNTAG_Bool(REGB0
)) {
1124 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode_tools
, 260);
1126 fra
.me
.REG
[4] = ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1]);
1127 CALL_icode_builder___ICodeBuilder___seq__eq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[3]);
1128 /* ./icode//icode_tools.nit:261 */
1129 fra
.me
.REG
[3] = CALL_icode_base___ISeq___iescape_mark(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1130 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1131 if (UNTAG_Bool(REGB0
)) {
1133 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1134 if (UNTAG_Bool(REGB1
)) {
1135 REGB1
= TAG_Bool(false);
1138 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
1142 if (UNTAG_Bool(REGB0
)) {
1144 nit_abort("Assert failed", NULL
, LOCATE_icode_tools
, 261);
1146 /* ./icode//icode_tools.nit:262 */
1147 fra
.me
.REG
[0] = CALL_icode_base___ISeq___iescape_mark(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1148 /* ./icode//icode_tools.nit:263 */
1149 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
1150 if (UNTAG_Bool(REGB0
)) {
1152 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
1153 if (UNTAG_Bool(REGB1
)) {
1154 REGB1
= TAG_Bool(false);
1157 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
1161 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1162 if (UNTAG_Bool(REGB0
)) {
1163 /* ./icode//icode_tools.nit:264 */
1164 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_mark(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1165 CALL_icode_base___ISeq___iescape_mark__eq(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1167 stack_frame_head
= fra
.me
.prev
;
1170 void OC_icode_tools___ISeq___dup_seq_to_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
1171 struct {struct stack_frame_t me
;} fra
;
1174 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1175 fra
.me
.file
= LOCATE_icode_tools
;
1177 fra
.me
.meth
= LOCATE_icode_tools___ISeq___dup_seq_to
;
1178 fra
.me
.has_broke
= 0;
1179 fra
.me
.REG_size
= 1;
1180 fra
.me
.REG
[0] = NIT_NULL
;
1181 fra
.me
.closure_ctx
= closctx_param
;
1182 fra
.me
.closure_funs
= CREG
;
1184 CREG
[0] = clos_fun0
;
1185 /* ./icode//icode_tools.nit:258 */
1186 CALL_icode_tools___ICode___dup_with(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[1]);
1187 stack_frame_head
= fra
.me
.prev
;
1190 val_t
icode_tools___ILoop___inner_dup_with(val_t p0
, val_t p1
){
1191 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1193 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1194 fra
.me
.file
= LOCATE_icode_tools
;
1196 fra
.me
.meth
= LOCATE_icode_tools___ILoop___inner_dup_with
;
1197 fra
.me
.has_broke
= 0;
1198 fra
.me
.REG_size
= 3;
1199 fra
.me
.REG
[0] = NIT_NULL
;
1200 fra
.me
.REG
[1] = NIT_NULL
;
1201 fra
.me
.REG
[2] = NIT_NULL
;
1204 /* ./icode//icode_tools.nit:272 */
1205 fra
.me
.REG
[2] = NEW_ILoop_icode_base___ILoop___init();
1206 /* ./icode//icode_tools.nit:273 */
1207 CALL_icode_tools___ISeq___dup_seq_to(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2]);
1208 /* ./icode//icode_tools.nit:274 */
1211 stack_frame_head
= fra
.me
.prev
;
1212 return fra
.me
.REG
[2];
1214 val_t
icode_tools___IIf___inner_dup_with(val_t p0
, val_t p1
){
1215 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
1217 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1218 fra
.me
.file
= LOCATE_icode_tools
;
1220 fra
.me
.meth
= LOCATE_icode_tools___IIf___inner_dup_with
;
1221 fra
.me
.has_broke
= 0;
1222 fra
.me
.REG_size
= 5;
1223 fra
.me
.REG
[0] = NIT_NULL
;
1224 fra
.me
.REG
[1] = NIT_NULL
;
1225 fra
.me
.REG
[2] = NIT_NULL
;
1226 fra
.me
.REG
[3] = NIT_NULL
;
1227 fra
.me
.REG
[4] = NIT_NULL
;
1230 /* ./icode//icode_tools.nit:281 */
1231 fra
.me
.REG
[2] = CALL_icode_base___ICode1___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1232 fra
.me
.REG
[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
1233 fra
.me
.REG
[2] = NEW_IIf_icode_base___IIf___init(fra
.me
.REG
[2]);
1234 /* ./icode//icode_tools.nit:282 */
1235 fra
.me
.REG
[3] = CALL_icode_base___IIf___then_seq(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1236 fra
.me
.REG
[4] = CALL_icode_base___IIf___then_seq(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1237 CALL_icode_tools___ISeq___dup_seq_to(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1], fra
.me
.REG
[4]);
1238 /* ./icode//icode_tools.nit:283 */
1239 fra
.me
.REG
[0] = CALL_icode_base___IIf___else_seq(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1240 fra
.me
.REG
[4] = CALL_icode_base___IIf___else_seq(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1241 CALL_icode_tools___ISeq___dup_seq_to(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[4]);
1242 /* ./icode//icode_tools.nit:284 */
1245 stack_frame_head
= fra
.me
.prev
;
1246 return fra
.me
.REG
[2];
1248 val_t
icode_tools___IEscape___inner_dup_with(val_t p0
, val_t p1
){
1249 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1251 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1252 fra
.me
.file
= LOCATE_icode_tools
;
1254 fra
.me
.meth
= LOCATE_icode_tools___IEscape___inner_dup_with
;
1255 fra
.me
.has_broke
= 0;
1256 fra
.me
.REG_size
= 2;
1257 fra
.me
.REG
[0] = NIT_NULL
;
1258 fra
.me
.REG
[1] = NIT_NULL
;
1261 /* ./icode//icode_tools.nit:292 */
1262 fra
.me
.REG
[0] = CALL_icode_base___IEscape___iescape_mark(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1263 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_mark(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1264 /* ./icode//icode_tools.nit:294 */
1265 fra
.me
.REG
[0] = NEW_IEscape_icode_base___IEscape___init(fra
.me
.REG
[0]);
1268 stack_frame_head
= fra
.me
.prev
;
1269 return fra
.me
.REG
[0];
1271 val_t
icode_tools___IAbort___inner_dup_with(val_t p0
, val_t p1
){
1272 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1274 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1275 fra
.me
.file
= LOCATE_icode_tools
;
1277 fra
.me
.meth
= LOCATE_icode_tools___IAbort___inner_dup_with
;
1278 fra
.me
.has_broke
= 0;
1279 fra
.me
.REG_size
= 2;
1280 fra
.me
.REG
[0] = NIT_NULL
;
1281 fra
.me
.REG
[1] = NIT_NULL
;
1284 /* ./icode//icode_tools.nit:301 */
1285 fra
.me
.REG
[1] = CALL_icode_base___IAbort___texts(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1286 fra
.me
.REG
[0] = CALL_icode_base___IAbort___module_location(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1287 fra
.me
.REG
[0] = NEW_IAbort_icode_base___IAbort___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1290 stack_frame_head
= fra
.me
.prev
;
1291 return fra
.me
.REG
[0];
1293 val_t
icode_tools___ICall___inner_dup_with(val_t p0
, val_t p1
){
1294 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1296 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1297 fra
.me
.file
= LOCATE_icode_tools
;
1299 fra
.me
.meth
= LOCATE_icode_tools___ICall___inner_dup_with
;
1300 fra
.me
.has_broke
= 0;
1301 fra
.me
.REG_size
= 3;
1302 fra
.me
.REG
[0] = NIT_NULL
;
1303 fra
.me
.REG
[1] = NIT_NULL
;
1304 fra
.me
.REG
[2] = NIT_NULL
;
1307 /* ./icode//icode_tools.nit:308 */
1308 fra
.me
.REG
[2] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1309 fra
.me
.REG
[0] = CALL_icode_base___ICodeN___exprs(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1310 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1311 fra
.me
.REG
[0] = NEW_ICall_icode_base___ICall___init(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1314 stack_frame_head
= fra
.me
.prev
;
1315 return fra
.me
.REG
[0];
1317 val_t
icode_tools___ISuper___inner_dup_with(val_t p0
, val_t p1
){
1318 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1320 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1321 fra
.me
.file
= LOCATE_icode_tools
;
1323 fra
.me
.meth
= LOCATE_icode_tools___ISuper___inner_dup_with
;
1324 fra
.me
.has_broke
= 0;
1325 fra
.me
.REG_size
= 3;
1326 fra
.me
.REG
[0] = NIT_NULL
;
1327 fra
.me
.REG
[1] = NIT_NULL
;
1328 fra
.me
.REG
[2] = NIT_NULL
;
1331 /* ./icode//icode_tools.nit:315 */
1332 fra
.me
.REG
[2] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1333 fra
.me
.REG
[0] = CALL_icode_base___ICodeN___exprs(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1334 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1335 fra
.me
.REG
[0] = NEW_ISuper_icode_base___ISuper___init(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1338 stack_frame_head
= fra
.me
.prev
;
1339 return fra
.me
.REG
[0];
1341 val_t
icode_tools___INew___inner_dup_with(val_t p0
, val_t p1
){
1342 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
1344 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1345 fra
.me
.file
= LOCATE_icode_tools
;
1347 fra
.me
.meth
= LOCATE_icode_tools___INew___inner_dup_with
;
1348 fra
.me
.has_broke
= 0;
1349 fra
.me
.REG_size
= 4;
1350 fra
.me
.REG
[0] = NIT_NULL
;
1351 fra
.me
.REG
[1] = NIT_NULL
;
1352 fra
.me
.REG
[2] = NIT_NULL
;
1353 fra
.me
.REG
[3] = NIT_NULL
;
1356 /* ./icode//icode_tools.nit:322 */
1357 fra
.me
.REG
[2] = CALL_icode_base___INew___stype(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1358 fra
.me
.REG
[3] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1359 fra
.me
.REG
[0] = CALL_icode_base___ICodeN___exprs(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1360 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1361 fra
.me
.REG
[0] = NEW_INew_icode_base___INew___init(fra
.me
.REG
[2], fra
.me
.REG
[3], fra
.me
.REG
[0]);
1364 stack_frame_head
= fra
.me
.prev
;
1365 return fra
.me
.REG
[0];
1367 val_t
icode_tools___IAllocateInstance___inner_dup_with(val_t p0
, val_t p1
){
1368 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1370 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1371 fra
.me
.file
= LOCATE_icode_tools
;
1373 fra
.me
.meth
= LOCATE_icode_tools___IAllocateInstance___inner_dup_with
;
1374 fra
.me
.has_broke
= 0;
1375 fra
.me
.REG_size
= 2;
1376 fra
.me
.REG
[0] = NIT_NULL
;
1377 fra
.me
.REG
[1] = NIT_NULL
;
1380 /* ./icode//icode_tools.nit:329 */
1381 fra
.me
.REG
[0] = CALL_icode_base___IAllocateInstance___stype(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1382 fra
.me
.REG
[0] = NEW_IAllocateInstance_icode_base___IAllocateInstance___init(fra
.me
.REG
[0]);
1385 stack_frame_head
= fra
.me
.prev
;
1386 return fra
.me
.REG
[0];
1388 val_t
icode_tools___IStaticCall___inner_dup_with(val_t p0
, val_t p1
){
1389 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1391 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1392 fra
.me
.file
= LOCATE_icode_tools
;
1394 fra
.me
.meth
= LOCATE_icode_tools___IStaticCall___inner_dup_with
;
1395 fra
.me
.has_broke
= 0;
1396 fra
.me
.REG_size
= 3;
1397 fra
.me
.REG
[0] = NIT_NULL
;
1398 fra
.me
.REG
[1] = NIT_NULL
;
1399 fra
.me
.REG
[2] = NIT_NULL
;
1402 /* ./icode//icode_tools.nit:336 */
1403 fra
.me
.REG
[2] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1404 fra
.me
.REG
[0] = CALL_icode_base___ICodeN___exprs(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1405 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1406 fra
.me
.REG
[0] = NEW_IStaticCall_icode_base___IStaticCall___init(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1409 stack_frame_head
= fra
.me
.prev
;
1410 return fra
.me
.REG
[0];
1412 val_t
icode_tools___ICheckInstance___inner_dup_with(val_t p0
, val_t p1
){
1413 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1415 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1416 fra
.me
.file
= LOCATE_icode_tools
;
1418 fra
.me
.meth
= LOCATE_icode_tools___ICheckInstance___inner_dup_with
;
1419 fra
.me
.has_broke
= 0;
1420 fra
.me
.REG_size
= 3;
1421 fra
.me
.REG
[0] = NIT_NULL
;
1422 fra
.me
.REG
[1] = NIT_NULL
;
1423 fra
.me
.REG
[2] = NIT_NULL
;
1426 /* ./icode//icode_tools.nit:343 */
1427 fra
.me
.REG
[2] = CALL_icode_base___ICheckInstance___stype(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1428 fra
.me
.REG
[0] = CALL_icode_base___ICode1___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1429 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1430 fra
.me
.REG
[0] = NEW_ICheckInstance_icode_base___ICheckInstance___init(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1433 stack_frame_head
= fra
.me
.prev
;
1434 return fra
.me
.REG
[0];
1436 val_t
icode_tools___IInitAttributes___inner_dup_with(val_t p0
, val_t p1
){
1437 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1439 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1440 fra
.me
.file
= LOCATE_icode_tools
;
1442 fra
.me
.meth
= LOCATE_icode_tools___IInitAttributes___inner_dup_with
;
1443 fra
.me
.has_broke
= 0;
1444 fra
.me
.REG_size
= 3;
1445 fra
.me
.REG
[0] = NIT_NULL
;
1446 fra
.me
.REG
[1] = NIT_NULL
;
1447 fra
.me
.REG
[2] = NIT_NULL
;
1450 /* ./icode//icode_tools.nit:350 */
1451 fra
.me
.REG
[2] = CALL_icode_base___IInitAttributes___stype(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1452 fra
.me
.REG
[0] = CALL_icode_base___ICode1___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1453 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1454 fra
.me
.REG
[0] = NEW_IInitAttributes_icode_base___IInitAttributes___init(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1457 stack_frame_head
= fra
.me
.prev
;
1458 return fra
.me
.REG
[0];
1460 void icode_tools___IClosCall___dup_with(val_t p0
, val_t p1
){
1461 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
1465 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1466 fra
.me
.file
= LOCATE_icode_tools
;
1468 fra
.me
.meth
= LOCATE_icode_tools___IClosCall___dup_with
;
1469 fra
.me
.has_broke
= 0;
1470 fra
.me
.REG_size
= 7;
1471 fra
.me
.REG
[0] = NIT_NULL
;
1472 fra
.me
.REG
[1] = NIT_NULL
;
1473 fra
.me
.REG
[2] = NIT_NULL
;
1474 fra
.me
.REG
[3] = NIT_NULL
;
1475 fra
.me
.REG
[4] = NIT_NULL
;
1476 fra
.me
.REG
[5] = NIT_NULL
;
1477 fra
.me
.REG
[6] = NIT_NULL
;
1480 /* ./icode//icode_tools.nit:355 */
1481 fra
.me
.REG
[2] = fra
.me
.REG
[0];
1482 fra
.me
.REG
[3] = fra
.me
.REG
[1];
1483 /* ./icode//icode_tools.nit:357 */
1484 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____closures(fra
.me
.REG
[3])!=NIT_NULL
);
1485 if (UNTAG_Bool(REGB0
)) {
1487 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode_tools
, 357);
1489 fra
.me
.REG
[4] = ATTR_icode_tools___ICodeDupContext____closures(fra
.me
.REG
[3]);
1490 fra
.me
.REG
[5] = CALL_icode_base___IClosCall___closure_decl(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1491 REGB0
= CALL_abstract_collection___MapRead___has_key(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1492 if (UNTAG_Bool(REGB0
)) {
1493 /* ./icode//icode_tools.nit:359 */
1494 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____closures(fra
.me
.REG
[3])!=NIT_NULL
);
1495 if (UNTAG_Bool(REGB0
)) {
1497 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode_tools
, 359);
1499 fra
.me
.REG
[5] = ATTR_icode_tools___ICodeDupContext____closures(fra
.me
.REG
[3]);
1500 fra
.me
.REG
[4] = CALL_icode_base___IClosCall___closure_decl(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1501 fra
.me
.REG
[4] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
1502 /* ./icode//icode_tools.nit:360 */
1503 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
1504 if (UNTAG_Bool(REGB0
)) {
1506 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
1507 if (UNTAG_Bool(REGB1
)) {
1508 REGB1
= TAG_Bool(false);
1511 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
1515 if (UNTAG_Bool(REGB0
)) {
1516 /* ./icode//icode_tools.nit:362 */
1519 /* ./icode//icode_tools.nit:365 */
1520 fra
.me
.REG
[5] = CALL_icode_base___IClosCall___break_seq(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1521 REGB0
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
1522 if (UNTAG_Bool(REGB0
)) {
1524 REGB1
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
1525 if (UNTAG_Bool(REGB1
)) {
1526 REGB1
= TAG_Bool(false);
1529 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[5])(fra
.me
.REG
[5], NIT_NULL
);
1533 if (UNTAG_Bool(REGB0
)) {
1535 nit_abort("Assert failed", NULL
, LOCATE_icode_tools
, 365);
1537 /* ./icode//icode_tools.nit:367 */
1538 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[3])!=NIT_NULL
);
1539 if (UNTAG_Bool(REGB0
)) {
1541 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode_tools
, 367);
1543 fra
.me
.REG
[5] = ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[3]);
1544 fra
.me
.REG
[6] = CALL_icode_base___ICodeN___exprs(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1545 fra
.me
.REG
[6] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[6]);
1546 fra
.me
.REG
[6] = CALL_icode_tools___ICodeBuilder___inline_routine(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4], fra
.me
.REG
[6], NIT_NULL
);
1547 /* ./icode//icode_tools.nit:368 */
1548 fra
.me
.REG
[4] = CALL_icode_base___ICode___result(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1549 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
1550 if (UNTAG_Bool(REGB0
)) {
1552 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
1553 if (UNTAG_Bool(REGB1
)) {
1554 REGB1
= TAG_Bool(false);
1557 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
1561 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1562 if (UNTAG_Bool(REGB0
)) {
1563 /* ./icode//icode_tools.nit:369 */
1564 REGB0
= TAG_Bool(fra
.me
.REG
[6]==NIT_NULL
);
1565 if (UNTAG_Bool(REGB0
)) {
1567 REGB1
= TAG_Bool(fra
.me
.REG
[6]==NIT_NULL
);
1568 if (UNTAG_Bool(REGB1
)) {
1569 REGB1
= TAG_Bool(false);
1572 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[6])(fra
.me
.REG
[6], NIT_NULL
);
1576 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1577 if (UNTAG_Bool(REGB0
)) {
1579 nit_abort("Assert failed", NULL
, LOCATE_icode_tools
, 369);
1581 /* ./icode//icode_tools.nit:370 */
1582 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[3])!=NIT_NULL
);
1583 if (UNTAG_Bool(REGB0
)) {
1585 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode_tools
, 370);
1587 fra
.me
.REG
[4] = ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[3]);
1588 fra
.me
.REG
[2] = CALL_icode_base___ICode___result(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1589 REGB0
= TAG_Bool((fra
.me
.REG
[2]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[2], COLOR_IRegister
, ID_IRegister
)) /*cast IRegister*/;
1590 if (UNTAG_Bool(REGB0
)) {
1592 nit_abort("Cast failed", NULL
, LOCATE_icode_tools
, 370);
1594 fra
.me
.REG
[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
1595 fra
.me
.REG
[6] = NEW_IMove_icode_base___IMove___init(fra
.me
.REG
[2], fra
.me
.REG
[6]);
1596 CALL_icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[6]);
1599 /* ./icode//icode_tools.nit:374 */
1600 CALL_SUPER_icode_tools___IClosCall___dup_with(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
1603 stack_frame_head
= fra
.me
.prev
;
1606 val_t
icode_tools___IClosCall___inner_dup_with(val_t p0
, val_t p1
){
1607 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1609 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1610 fra
.me
.file
= LOCATE_icode_tools
;
1612 fra
.me
.meth
= LOCATE_icode_tools___IClosCall___inner_dup_with
;
1613 fra
.me
.has_broke
= 0;
1614 fra
.me
.REG_size
= 2;
1615 fra
.me
.REG
[0] = NIT_NULL
;
1616 fra
.me
.REG
[1] = NIT_NULL
;
1619 /* ./icode//icode_tools.nit:380 */
1620 fra
.me
.REG
[1] = CALL_icode_base___IClosCall___closure_decl(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1621 fra
.me
.REG
[0] = CALL_icode_base___ICodeN___exprs(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1622 fra
.me
.REG
[0] = NEW_IClosCall_icode_base___IClosCall___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1625 stack_frame_head
= fra
.me
.prev
;
1626 return fra
.me
.REG
[0];
1628 val_t
icode_tools___INative___inner_dup_with(val_t p0
, val_t p1
){
1629 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
1632 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1633 fra
.me
.file
= LOCATE_icode_tools
;
1635 fra
.me
.meth
= LOCATE_icode_tools___INative___inner_dup_with
;
1636 fra
.me
.has_broke
= 0;
1637 fra
.me
.REG_size
= 4;
1638 fra
.me
.REG
[0] = NIT_NULL
;
1639 fra
.me
.REG
[1] = NIT_NULL
;
1640 fra
.me
.REG
[2] = NIT_NULL
;
1641 fra
.me
.REG
[3] = NIT_NULL
;
1644 /* ./icode//icode_tools.nit:387 */
1645 fra
.me
.REG
[2] = CALL_icode_base___INative___method(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1646 fra
.me
.REG
[3] = CALL_icode_base___ICodeN___exprs(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1647 fra
.me
.REG
[3] = CALL_icode_tools___ICodeDupContext___dup_iregs(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
1648 fra
.me
.REG
[3] = NEW_INative_icode_base___INative___init(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1649 /* ./icode//icode_tools.nit:388 */
1650 REGB0
= CALL_icode_base___ICode___is_pure(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1651 CALL_icode_base___INative___is_pure__eq(fra
.me
.REG
[3])(fra
.me
.REG
[3], REGB0
);
1652 /* ./icode//icode_tools.nit:389 */
1655 stack_frame_head
= fra
.me
.prev
;
1656 return fra
.me
.REG
[3];
1658 val_t
icode_tools___IIntValue___inner_dup_with(val_t p0
, val_t p1
){
1659 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1661 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1662 fra
.me
.file
= LOCATE_icode_tools
;
1664 fra
.me
.meth
= LOCATE_icode_tools___IIntValue___inner_dup_with
;
1665 fra
.me
.has_broke
= 0;
1666 fra
.me
.REG_size
= 2;
1667 fra
.me
.REG
[0] = NIT_NULL
;
1668 fra
.me
.REG
[1] = NIT_NULL
;
1671 /* ./icode//icode_tools.nit:396 */
1672 fra
.me
.REG
[0] = CALL_icode_base___IIntValue___value(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1673 fra
.me
.REG
[0] = NEW_IIntValue_icode_base___IIntValue___init(fra
.me
.REG
[0]);
1676 stack_frame_head
= fra
.me
.prev
;
1677 return fra
.me
.REG
[0];
1679 val_t
icode_tools___IBoolValue___inner_dup_with(val_t p0
, val_t p1
){
1680 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1683 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1684 fra
.me
.file
= LOCATE_icode_tools
;
1686 fra
.me
.meth
= LOCATE_icode_tools___IBoolValue___inner_dup_with
;
1687 fra
.me
.has_broke
= 0;
1688 fra
.me
.REG_size
= 2;
1689 fra
.me
.REG
[0] = NIT_NULL
;
1690 fra
.me
.REG
[1] = NIT_NULL
;
1693 /* ./icode//icode_tools.nit:403 */
1694 REGB0
= CALL_icode_base___IBoolValue___value(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1695 fra
.me
.REG
[0] = NEW_IBoolValue_icode_base___IBoolValue___init(REGB0
);
1698 stack_frame_head
= fra
.me
.prev
;
1699 return fra
.me
.REG
[0];
1701 val_t
icode_tools___IStringValue___inner_dup_with(val_t p0
, val_t p1
){
1702 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1704 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1705 fra
.me
.file
= LOCATE_icode_tools
;
1707 fra
.me
.meth
= LOCATE_icode_tools___IStringValue___inner_dup_with
;
1708 fra
.me
.has_broke
= 0;
1709 fra
.me
.REG_size
= 2;
1710 fra
.me
.REG
[0] = NIT_NULL
;
1711 fra
.me
.REG
[1] = NIT_NULL
;
1714 /* ./icode//icode_tools.nit:410 */
1715 fra
.me
.REG
[0] = CALL_icode_base___IStringValue___value(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1716 fra
.me
.REG
[0] = NEW_IStringValue_icode_base___IStringValue___init(fra
.me
.REG
[0]);
1719 stack_frame_head
= fra
.me
.prev
;
1720 return fra
.me
.REG
[0];
1722 val_t
icode_tools___IFloatValue___inner_dup_with(val_t p0
, val_t p1
){
1723 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1725 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1726 fra
.me
.file
= LOCATE_icode_tools
;
1728 fra
.me
.meth
= LOCATE_icode_tools___IFloatValue___inner_dup_with
;
1729 fra
.me
.has_broke
= 0;
1730 fra
.me
.REG_size
= 2;
1731 fra
.me
.REG
[0] = NIT_NULL
;
1732 fra
.me
.REG
[1] = NIT_NULL
;
1735 /* ./icode//icode_tools.nit:417 */
1736 fra
.me
.REG
[0] = CALL_icode_base___IFloatValue___value(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1737 fra
.me
.REG
[0] = NEW_IFloatValue_icode_base___IFloatValue___init(fra
.me
.REG
[0]);
1740 stack_frame_head
= fra
.me
.prev
;
1741 return fra
.me
.REG
[0];
1743 val_t
icode_tools___ICharValue___inner_dup_with(val_t p0
, val_t p1
){
1744 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1746 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1747 fra
.me
.file
= LOCATE_icode_tools
;
1749 fra
.me
.meth
= LOCATE_icode_tools___ICharValue___inner_dup_with
;
1750 fra
.me
.has_broke
= 0;
1751 fra
.me
.REG_size
= 2;
1752 fra
.me
.REG
[0] = NIT_NULL
;
1753 fra
.me
.REG
[1] = NIT_NULL
;
1756 /* ./icode//icode_tools.nit:424 */
1757 fra
.me
.REG
[0] = CALL_icode_base___ICharValue___value(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1758 fra
.me
.REG
[0] = NEW_ICharValue_icode_base___ICharValue___init(fra
.me
.REG
[0]);
1761 stack_frame_head
= fra
.me
.prev
;
1762 return fra
.me
.REG
[0];
1764 val_t
icode_tools___IMove___inner_dup_with(val_t p0
, val_t p1
){
1765 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1768 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1769 fra
.me
.file
= LOCATE_icode_tools
;
1771 fra
.me
.meth
= LOCATE_icode_tools___IMove___inner_dup_with
;
1772 fra
.me
.has_broke
= 0;
1773 fra
.me
.REG_size
= 3;
1774 fra
.me
.REG
[0] = NIT_NULL
;
1775 fra
.me
.REG
[1] = NIT_NULL
;
1776 fra
.me
.REG
[2] = NIT_NULL
;
1779 /* ./icode//icode_tools.nit:431 */
1780 fra
.me
.REG
[2] = CALL_icode_base___ICode___result(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1781 REGB0
= TAG_Bool((fra
.me
.REG
[2]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[2], COLOR_IRegister
, ID_IRegister
)) /*cast IRegister*/;
1782 if (UNTAG_Bool(REGB0
)) {
1784 nit_abort("Cast failed", NULL
, LOCATE_icode_tools
, 431);
1786 fra
.me
.REG
[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
1787 fra
.me
.REG
[0] = CALL_icode_base___ICode1___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1788 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1789 fra
.me
.REG
[0] = NEW_IMove_icode_base___IMove___init(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1792 stack_frame_head
= fra
.me
.prev
;
1793 return fra
.me
.REG
[0];
1795 val_t
icode_tools___IAttrRead___inner_dup_with(val_t p0
, val_t p1
){
1796 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1798 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1799 fra
.me
.file
= LOCATE_icode_tools
;
1801 fra
.me
.meth
= LOCATE_icode_tools___IAttrRead___inner_dup_with
;
1802 fra
.me
.has_broke
= 0;
1803 fra
.me
.REG_size
= 3;
1804 fra
.me
.REG
[0] = NIT_NULL
;
1805 fra
.me
.REG
[1] = NIT_NULL
;
1806 fra
.me
.REG
[2] = NIT_NULL
;
1809 /* ./icode//icode_tools.nit:438 */
1810 fra
.me
.REG
[2] = CALL_icode_base___IAttrRead___property(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1811 fra
.me
.REG
[0] = CALL_icode_base___ICode1___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1812 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1813 fra
.me
.REG
[0] = NEW_IAttrRead_icode_base___IAttrRead___init(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1816 stack_frame_head
= fra
.me
.prev
;
1817 return fra
.me
.REG
[0];
1819 val_t
icode_tools___IAttrWrite___inner_dup_with(val_t p0
, val_t p1
){
1820 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
1822 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1823 fra
.me
.file
= LOCATE_icode_tools
;
1825 fra
.me
.meth
= LOCATE_icode_tools___IAttrWrite___inner_dup_with
;
1826 fra
.me
.has_broke
= 0;
1827 fra
.me
.REG_size
= 4;
1828 fra
.me
.REG
[0] = NIT_NULL
;
1829 fra
.me
.REG
[1] = NIT_NULL
;
1830 fra
.me
.REG
[2] = NIT_NULL
;
1831 fra
.me
.REG
[3] = NIT_NULL
;
1834 /* ./icode//icode_tools.nit:445 */
1835 fra
.me
.REG
[2] = CALL_icode_base___IAttrWrite___property(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1836 fra
.me
.REG
[3] = CALL_icode_base___ICode2___expr1(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1837 fra
.me
.REG
[3] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
1838 fra
.me
.REG
[0] = CALL_icode_base___ICode2___expr2(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1839 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1840 fra
.me
.REG
[0] = NEW_IAttrWrite_icode_base___IAttrWrite___init(fra
.me
.REG
[2], fra
.me
.REG
[3], fra
.me
.REG
[0]);
1843 stack_frame_head
= fra
.me
.prev
;
1844 return fra
.me
.REG
[0];
1846 val_t
icode_tools___IAttrIsset___inner_dup_with(val_t p0
, val_t p1
){
1847 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1849 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1850 fra
.me
.file
= LOCATE_icode_tools
;
1852 fra
.me
.meth
= LOCATE_icode_tools___IAttrIsset___inner_dup_with
;
1853 fra
.me
.has_broke
= 0;
1854 fra
.me
.REG_size
= 3;
1855 fra
.me
.REG
[0] = NIT_NULL
;
1856 fra
.me
.REG
[1] = NIT_NULL
;
1857 fra
.me
.REG
[2] = NIT_NULL
;
1860 /* ./icode//icode_tools.nit:452 */
1861 fra
.me
.REG
[2] = CALL_icode_base___IAttrIsset___property(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1862 fra
.me
.REG
[0] = CALL_icode_base___ICode1___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1863 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1864 fra
.me
.REG
[0] = NEW_IAttrIsset_icode_base___IAttrIsset___init(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1867 stack_frame_head
= fra
.me
.prev
;
1868 return fra
.me
.REG
[0];
1870 val_t
icode_tools___ITypeCheck___inner_dup_with(val_t p0
, val_t p1
){
1871 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1873 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1874 fra
.me
.file
= LOCATE_icode_tools
;
1876 fra
.me
.meth
= LOCATE_icode_tools___ITypeCheck___inner_dup_with
;
1877 fra
.me
.has_broke
= 0;
1878 fra
.me
.REG_size
= 3;
1879 fra
.me
.REG
[0] = NIT_NULL
;
1880 fra
.me
.REG
[1] = NIT_NULL
;
1881 fra
.me
.REG
[2] = NIT_NULL
;
1884 /* ./icode//icode_tools.nit:459 */
1885 fra
.me
.REG
[2] = CALL_icode_base___ICode1___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1886 fra
.me
.REG
[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
1887 fra
.me
.REG
[0] = CALL_icode_base___ITypeCheck___stype(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1888 fra
.me
.REG
[0] = NEW_ITypeCheck_icode_base___ITypeCheck___init(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1891 stack_frame_head
= fra
.me
.prev
;
1892 return fra
.me
.REG
[0];
1894 val_t
icode_tools___IIs___inner_dup_with(val_t p0
, val_t p1
){
1895 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1897 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1898 fra
.me
.file
= LOCATE_icode_tools
;
1900 fra
.me
.meth
= LOCATE_icode_tools___IIs___inner_dup_with
;
1901 fra
.me
.has_broke
= 0;
1902 fra
.me
.REG_size
= 3;
1903 fra
.me
.REG
[0] = NIT_NULL
;
1904 fra
.me
.REG
[1] = NIT_NULL
;
1905 fra
.me
.REG
[2] = NIT_NULL
;
1908 /* ./icode//icode_tools.nit:466 */
1909 fra
.me
.REG
[2] = CALL_icode_base___ICode2___expr1(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1910 fra
.me
.REG
[2] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
1911 fra
.me
.REG
[0] = CALL_icode_base___ICode2___expr2(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1912 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1913 fra
.me
.REG
[0] = NEW_IIs_icode_base___IIs___init(fra
.me
.REG
[2], fra
.me
.REG
[0]);
1916 stack_frame_head
= fra
.me
.prev
;
1917 return fra
.me
.REG
[0];
1919 val_t
icode_tools___INot___inner_dup_with(val_t p0
, val_t p1
){
1920 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1922 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1923 fra
.me
.file
= LOCATE_icode_tools
;
1925 fra
.me
.meth
= LOCATE_icode_tools___INot___inner_dup_with
;
1926 fra
.me
.has_broke
= 0;
1927 fra
.me
.REG_size
= 2;
1928 fra
.me
.REG
[0] = NIT_NULL
;
1929 fra
.me
.REG
[1] = NIT_NULL
;
1932 /* ./icode//icode_tools.nit:473 */
1933 fra
.me
.REG
[0] = CALL_icode_base___ICode1___expr(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1934 fra
.me
.REG
[0] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1935 fra
.me
.REG
[0] = NEW_INot_icode_base___INot___init(fra
.me
.REG
[0]);
1938 stack_frame_head
= fra
.me
.prev
;
1939 return fra
.me
.REG
[0];
1941 val_t
icode_tools___IOnce___inner_dup_with(val_t p0
, val_t p1
){
1942 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
1944 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1945 fra
.me
.file
= LOCATE_icode_tools
;
1947 fra
.me
.meth
= LOCATE_icode_tools___IOnce___inner_dup_with
;
1948 fra
.me
.has_broke
= 0;
1949 fra
.me
.REG_size
= 4;
1950 fra
.me
.REG
[0] = NIT_NULL
;
1951 fra
.me
.REG
[1] = NIT_NULL
;
1952 fra
.me
.REG
[2] = NIT_NULL
;
1953 fra
.me
.REG
[3] = NIT_NULL
;
1956 /* ./icode//icode_tools.nit:480 */
1957 fra
.me
.REG
[2] = NEW_IOnce_icode_base___IOnce___init();
1958 /* ./icode//icode_tools.nit:481 */
1959 fra
.me
.REG
[0] = CALL_icode_base___IOnce___body(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1960 fra
.me
.REG
[3] = CALL_icode_base___IOnce___body(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1961 CALL_icode_tools___ISeq___dup_seq_to(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[3]);
1962 /* ./icode//icode_tools.nit:482 */
1965 stack_frame_head
= fra
.me
.prev
;
1966 return fra
.me
.REG
[2];
1968 val_t
icode_tools___IHasClos___inner_dup_with(val_t p0
, val_t p1
){
1969 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
1973 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1974 fra
.me
.file
= LOCATE_icode_tools
;
1976 fra
.me
.meth
= LOCATE_icode_tools___IHasClos___inner_dup_with
;
1977 fra
.me
.has_broke
= 0;
1978 fra
.me
.REG_size
= 4;
1979 fra
.me
.REG
[0] = NIT_NULL
;
1980 fra
.me
.REG
[1] = NIT_NULL
;
1981 fra
.me
.REG
[2] = NIT_NULL
;
1982 fra
.me
.REG
[3] = NIT_NULL
;
1985 /* ./icode//icode_tools.nit:489 */
1986 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____closures(fra
.me
.REG
[1])!=NIT_NULL
);
1987 if (UNTAG_Bool(REGB0
)) {
1989 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode_tools
, 489);
1991 fra
.me
.REG
[2] = ATTR_icode_tools___ICodeDupContext____closures(fra
.me
.REG
[1]);
1992 fra
.me
.REG
[3] = CALL_icode_base___IHasClos___closure_decl(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1993 REGB0
= CALL_abstract_collection___MapRead___has_key(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1994 if (UNTAG_Bool(REGB0
)) {
1995 /* ./icode//icode_tools.nit:491 */
1996 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____closures(fra
.me
.REG
[1])!=NIT_NULL
);
1997 if (UNTAG_Bool(REGB0
)) {
1999 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode_tools
, 491);
2001 fra
.me
.REG
[3] = ATTR_icode_tools___ICodeDupContext____closures(fra
.me
.REG
[1]);
2002 fra
.me
.REG
[2] = CALL_icode_base___IHasClos___closure_decl(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
2003 fra
.me
.REG
[2] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
2004 /* ./icode//icode_tools.nit:493 */
2005 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
2006 if (UNTAG_Bool(REGB0
)) {
2008 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
2009 if (UNTAG_Bool(REGB1
)) {
2010 REGB1
= TAG_Bool(false);
2013 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
2017 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
2018 if (UNTAG_Bool(REGB0
)) {
2019 /* ./icode//icode_tools.nit:494 */
2020 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1])!=NIT_NULL
);
2021 if (UNTAG_Bool(REGB0
)) {
2023 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode_tools
, 494);
2025 fra
.me
.REG
[2] = ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1]);
2026 fra
.me
.REG
[2] = CALL_icode_builder___ICodeBuilder___lit_true_reg(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
2028 /* ./icode//icode_tools.nit:496 */
2029 REGB0
= TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1])!=NIT_NULL
);
2030 if (UNTAG_Bool(REGB0
)) {
2032 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode_tools
, 496);
2034 fra
.me
.REG
[3] = ATTR_icode_tools___ICodeDupContext____icb(fra
.me
.REG
[1]);
2035 fra
.me
.REG
[3] = CALL_icode_builder___ICodeBuilder___lit_false_reg(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
2036 fra
.me
.REG
[2] = fra
.me
.REG
[3];
2038 /* ./icode//icode_tools.nit:498 */
2039 fra
.me
.REG
[3] = CALL_icode_base___ICode___result(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
2040 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_IRegister
, ID_IRegister
)) /*cast IRegister*/;
2041 if (UNTAG_Bool(REGB0
)) {
2043 nit_abort("Cast failed", NULL
, LOCATE_icode_tools
, 498);
2045 fra
.me
.REG
[3] = CALL_icode_tools___ICodeDupContext___dup_ireg(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
2046 fra
.me
.REG
[2] = NEW_IMove_icode_base___IMove___init(fra
.me
.REG
[3], fra
.me
.REG
[2]);
2049 /* ./icode//icode_tools.nit:500 */
2050 fra
.me
.REG
[0] = CALL_icode_base___IHasClos___closure_decl(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
2051 fra
.me
.REG
[0] = NEW_IHasClos_icode_base___IHasClos___init(fra
.me
.REG
[0]);
2052 fra
.me
.REG
[2] = fra
.me
.REG
[0];
2056 stack_frame_head
= fra
.me
.prev
;
2057 return fra
.me
.REG
[2];