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
;
7 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
8 fra
.me
.file
= LOCATE_icode___icode_tools
;
10 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeVisitor___visit_iregister_read
;
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
;
20 stack_frame_head
= fra
.me
.prev
;
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
;
27 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
28 fra
.me
.file
= LOCATE_icode___icode_tools
;
30 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeVisitor___visit_iregister_write
;
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
;
40 stack_frame_head
= fra
.me
.prev
;
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
;
47 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
48 fra
.me
.file
= LOCATE_icode___icode_tools
;
50 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeVisitor___current_icode
;
53 fra
.me
.nitni_local_ref_head
= NULL
;
54 fra
.me
.REG
[0] = NIT_NULL
;
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
;
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
;
67 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
68 fra
.me
.file
= LOCATE_icode___icode_tools
;
70 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeVisitor___visit_icode
;
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
;
81 /* icode/icode_tools.nit:37 */
82 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
83 if (UNTAG_Bool(REGB0
)) {
85 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
86 if (UNTAG_Bool(REGB1
)) {
90 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
94 if (UNTAG_Bool(REGB0
)) {
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);
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 */
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]);
122 /* icode/icode_tools.nit:41 */
127 /* icode/icode_tools.nit:47 */
128 ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
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);
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);
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);
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]);
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);
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]);
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);
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]);
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);
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);
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]);
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);
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);
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);
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]);
222 /* icode/icode_tools.nit:67 */
223 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
224 if (UNTAG_Bool(REGB0
)) {
226 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
227 if (UNTAG_Bool(REGB1
)) {
231 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
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]);
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);
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
)) {
256 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
257 if (UNTAG_Bool(REGB1
)) {
261 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
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]);
270 stack_frame_head
= fra
.me
.prev
;
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
;
277 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
278 fra
.me
.file
= LOCATE_icode___icode_tools
;
280 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeVisitor___visit_icode
;
281 fra
.me
.has_broke
= 0;
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
;
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
;
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
;
298 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
299 fra
.me
.file
= LOCATE_icode___icode_tools
;
301 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeVisitor___visit_closure_defs
;
302 fra
.me
.has_broke
= 0;
304 fra
.me
.nitni_local_ref_head
= NULL
;
305 fra
.me
.REG
[0] = NIT_NULL
;
306 fra
.me
.REG
[1] = NIT_NULL
;
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
;
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
;
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
;
323 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeVisitor___visit_closure_defs
;
324 fra
.me
.has_broke
= 0;
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
;
332 /* icode/icode_tools.nit:80 */
333 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
334 if (UNTAG_Bool(REGB0
)) {
336 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
337 if (UNTAG_Bool(REGB1
)) {
341 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
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]);
350 stack_frame_head
= fra
.me
.prev
;
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
;
357 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
358 fra
.me
.file
= LOCATE_icode___icode_tools
;
360 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeVisitor___visit_iroutine
;
361 fra
.me
.has_broke
= 0;
363 fra
.me
.nitni_local_ref_head
= NULL
;
364 fra
.me
.REG
[0] = NIT_NULL
;
365 fra
.me
.REG
[1] = NIT_NULL
;
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
;
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
;
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
;
383 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeVisitor___init
;
384 fra
.me
.has_broke
= 0;
386 fra
.me
.nitni_local_ref_head
= NULL
;
387 stack_frame_head
= fra
.me
.prev
;
388 init_table
[itpos0
] = 1;
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
;
401 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
402 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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
)) {
427 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[4]);
430 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
431 if (UNTAG_Bool(REGB0
)) {
433 nit_abort("Assert failed", NULL
, LOCATE_icode___icode_tools
, 100);
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
)) {
444 /* ../lib/standard/kernel.nit:230 */
445 REGB1
= TAG_Bool((REGB0
)==(REGB1
));
446 /* icode/icode_tools.nit:102 */
449 if (UNTAG_Bool(REGB2
)) {
451 nit_abort("Assert failed", NULL
, LOCATE_icode___icode_tools
, 102);
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
)) {
459 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
460 if (UNTAG_Bool(REGB1
)) {
464 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
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);
474 REGB2
= CALL_standard___collection___abstract_collection___Collection___length(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
479 /* icode/icode_tools.nit:105 */
480 REGB1
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
481 if (UNTAG_Bool(REGB1
)) {
483 REGB0
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
484 if (UNTAG_Bool(REGB0
)) {
488 REGB0
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[5])(fra
.me
.REG
[5], NIT_NULL
);
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);
498 REGB1
= CALL_standard___collection___abstract_collection___Collection___length(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
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
)) {
506 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
508 /* ../lib/standard/kernel.nit:234 */
509 REGB0
= TAG_Bool(UNTAG_Int(REGB2
)<=UNTAG_Int(REGB1
));
510 /* icode/icode_tools.nit:106 */
511 if (UNTAG_Bool(REGB0
)) {
513 nit_abort("Assert failed", NULL
, LOCATE_icode___icode_tools
, 106);
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
)) {
519 nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode___icode_tools
, 109);
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
)) {
528 REGB3
= TAG_Bool(fra
.me
.REG
[7]==NIT_NULL
);
529 if (UNTAG_Bool(REGB3
)) {
533 REGB3
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[7])(fra
.me
.REG
[7], NIT_NULL
);
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);
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];
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 */
556 REGB3
= CALL_standard___collection___abstract_collection___Collection___length(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
557 /* ../lib/standard/kernel.nit:355 */
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
)) {
562 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
564 /* ../lib/standard/kernel.nit:235 */
565 REGB4
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB3
));
566 /* ../lib/standard/kernel.nit:355 */
567 if (UNTAG_Bool(REGB4
)) {
568 /* icode/icode_tools.nit:120 */
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:357 */
577 /* ../lib/standard/kernel.nit:238 */
578 REGB4
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB4
));
579 /* ../lib/standard/kernel.nit:357 */
582 /* ../lib/standard/kernel.nit:355 */
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
)) {
594 REGB3
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
595 if (UNTAG_Bool(REGB3
)) {
599 REGB3
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[5])(fra
.me
.REG
[5], NIT_NULL
);
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
)) {
609 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools
, 136);
611 fra
.me
.REG
[0] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra
.me
.REG
[4]);
612 /* icode/icode_tools.nit:137 */
614 /* ../lib/standard/kernel.nit:350 */
616 /* ../lib/standard/kernel.nit:355 */
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
)) {
621 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
623 /* ../lib/standard/kernel.nit:235 */
624 REGB4
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB3
));
625 /* ../lib/standard/kernel.nit:355 */
626 if (UNTAG_Bool(REGB4
)) {
627 /* icode/icode_tools.nit:137 */
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);
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);
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:357 */
643 /* ../lib/standard/kernel.nit:238 */
644 REGB4
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB4
));
645 /* ../lib/standard/kernel.nit:357 */
648 /* ../lib/standard/kernel.nit:355 */
653 /* ../lib/standard/kernel.nit:355 */
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
)) {
658 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
660 /* ../lib/standard/kernel.nit:235 */
661 REGB0
= TAG_Bool(UNTAG_Int(REGB2
)<UNTAG_Int(REGB1
));
662 /* ../lib/standard/kernel.nit:355 */
663 if (UNTAG_Bool(REGB0
)) {
664 /* icode/icode_tools.nit:140 */
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);
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:357 */
675 /* ../lib/standard/kernel.nit:238 */
676 REGB0
= TAG_Int(UNTAG_Int(REGB2
)+UNTAG_Int(REGB0
));
677 /* ../lib/standard/kernel.nit:357 */
680 /* ../lib/standard/kernel.nit:355 */
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 */
692 stack_frame_head
= fra
.me
.prev
;
693 return fra
.me
.REG
[7];
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
;
700 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
701 fra
.me
.file
= LOCATE_icode___icode_tools
;
703 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeBuilder___inline_routine
;
704 fra
.me
.has_broke
= 0;
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
;
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
)) {
718 nit_abort("Assert failed", NULL
, LOCATE_icode___icode_tools
, 117);
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
;
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
;
732 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
733 fra
.me
.file
= LOCATE_icode___icode_tools
;
735 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeBuilder___inline_routine
;
736 fra
.me
.has_broke
= 0;
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
;
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
)) {
756 nit_abort("Uninitialized attribute %s", "_marks", LOCATE_icode___icode_tools
, 131);
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
;
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
;
768 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
769 fra
.me
.file
= LOCATE_icode___icode_tools
;
771 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeDupContext___dup_ireg
;
772 fra
.me
.has_broke
= 0;
774 fra
.me
.nitni_local_ref_head
= NULL
;
775 fra
.me
.REG
[0] = NIT_NULL
;
776 fra
.me
.REG
[1] = NIT_NULL
;
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
)) {
783 nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode___icode_tools
, 158);
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]);
793 /* icode/icode_tools.nit:162 */
794 fra
.me
.REG
[0] = fra
.me
.REG
[1];
798 stack_frame_head
= fra
.me
.prev
;
799 return fra
.me
.REG
[0];
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
;
806 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
807 fra
.me
.file
= LOCATE_icode___icode_tools
;
809 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeDupContext___dup_iregs
;
810 fra
.me
.has_broke
= 0;
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
;
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 */
825 stack_frame_head
= fra
.me
.prev
;
826 return fra
.me
.REG
[2];
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
;
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
;
836 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeDupContext___dup_iregs
;
837 fra
.me
.has_broke
= 0;
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
;
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
;
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
;
856 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
857 fra
.me
.file
= LOCATE_icode___icode_tools
;
859 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeDupContext___dup_mark
;
860 fra
.me
.has_broke
= 0;
862 fra
.me
.nitni_local_ref_head
= NULL
;
863 fra
.me
.REG
[0] = NIT_NULL
;
864 fra
.me
.REG
[1] = NIT_NULL
;
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
)) {
871 nit_abort("Uninitialized attribute %s", "_marks", LOCATE_icode___icode_tools
, 185);
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]);
881 /* icode/icode_tools.nit:189 */
882 fra
.me
.REG
[0] = fra
.me
.REG
[1];
886 stack_frame_head
= fra
.me
.prev
;
887 return fra
.me
.REG
[0];
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
;
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
;
898 fra
.me
.meth
= LOCATE_icode___icode_tools___ICodeDupContext___init
;
899 fra
.me
.has_broke
= 0;
901 fra
.me
.nitni_local_ref_head
= NULL
;
902 fra
.me
.REG
[0] = NIT_NULL
;
903 fra
.me
.REG
[1] = NIT_NULL
;
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;
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
;
918 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
919 fra
.me
.file
= LOCATE_icode___icode_tools
;
921 fra
.me
.meth
= LOCATE_icode___icode_tools___ICode___dup_with
;
922 fra
.me
.has_broke
= 0;
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
;
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
)) {
941 nit_abort("Assert failed", NULL
, LOCATE_icode___icode_tools
, 215);
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
)) {
949 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
950 if (UNTAG_Bool(REGB1
)) {
954 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
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);
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);
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]);
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
)) {
983 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
984 if (UNTAG_Bool(REGB1
)) {
988 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
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]);
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
)) {
1004 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools
, 237);
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
;
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
;
1019 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1020 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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
)) {
1037 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
1038 if (UNTAG_Bool(REGB1
)) {
1039 REGB1
= TAG_Bool(0);
1042 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
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
);
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);
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
)) {
1060 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
1061 if (UNTAG_Bool(REGB1
)) {
1062 REGB1
= TAG_Bool(0);
1065 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
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];
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);
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);
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]);
1093 stack_frame_head
= fra
.me
.prev
;
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
;
1100 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1101 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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
;
1116 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1117 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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 */
1135 stack_frame_head
= fra
.me
.prev
;
1136 return fra
.me
.REG
[2];
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
;
1144 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1145 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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
)) {
1163 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools
, 256);
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
)) {
1171 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools
, 257);
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
)) {
1182 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools
, 261);
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
)) {
1191 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1192 if (UNTAG_Bool(REGB1
)) {
1193 REGB1
= TAG_Bool(0);
1196 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
1200 if (UNTAG_Bool(REGB0
)) {
1202 nit_abort("Assert failed", NULL
, LOCATE_icode___icode_tools
, 262);
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
)) {
1210 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
1211 if (UNTAG_Bool(REGB1
)) {
1212 REGB1
= TAG_Bool(0);
1215 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
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]);
1225 stack_frame_head
= fra
.me
.prev
;
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
;
1232 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1233 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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
;
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
;
1253 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1254 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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 */
1272 stack_frame_head
= fra
.me
.prev
;
1273 return fra
.me
.REG
[2];
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
;
1279 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1280 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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 */
1308 stack_frame_head
= fra
.me
.prev
;
1309 return fra
.me
.REG
[2];
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
;
1315 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1316 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1333 stack_frame_head
= fra
.me
.prev
;
1334 return fra
.me
.REG
[0];
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
;
1340 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1341 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1357 stack_frame_head
= fra
.me
.prev
;
1358 return fra
.me
.REG
[0];
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
;
1364 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1365 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1383 stack_frame_head
= fra
.me
.prev
;
1384 return fra
.me
.REG
[0];
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
;
1390 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1391 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1409 stack_frame_head
= fra
.me
.prev
;
1410 return fra
.me
.REG
[0];
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
;
1416 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1417 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1437 stack_frame_head
= fra
.me
.prev
;
1438 return fra
.me
.REG
[0];
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
;
1444 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1445 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1460 stack_frame_head
= fra
.me
.prev
;
1461 return fra
.me
.REG
[0];
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
;
1467 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1468 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1486 stack_frame_head
= fra
.me
.prev
;
1487 return fra
.me
.REG
[0];
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
;
1493 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1494 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1512 stack_frame_head
= fra
.me
.prev
;
1513 return fra
.me
.REG
[0];
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
;
1519 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1520 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1538 stack_frame_head
= fra
.me
.prev
;
1539 return fra
.me
.REG
[0];
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
;
1547 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1548 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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
)) {
1570 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools
, 358);
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
)) {
1580 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools
, 360);
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
)) {
1589 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
1590 if (UNTAG_Bool(REGB1
)) {
1591 REGB1
= TAG_Bool(0);
1594 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
1598 if (UNTAG_Bool(REGB0
)) {
1599 /* icode/icode_tools.nit:363 */
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
)) {
1607 REGB1
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
1608 if (UNTAG_Bool(REGB1
)) {
1609 REGB1
= TAG_Bool(0);
1612 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[5])(fra
.me
.REG
[5], NIT_NULL
);
1616 if (UNTAG_Bool(REGB0
)) {
1618 nit_abort("Assert failed", NULL
, LOCATE_icode___icode_tools
, 366);
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
)) {
1624 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools
, 368);
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
)) {
1635 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
1636 if (UNTAG_Bool(REGB1
)) {
1637 REGB1
= TAG_Bool(0);
1640 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
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
)) {
1650 REGB1
= TAG_Bool(fra
.me
.REG
[6]==NIT_NULL
);
1651 if (UNTAG_Bool(REGB1
)) {
1652 REGB1
= TAG_Bool(0);
1655 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[6])(fra
.me
.REG
[6], NIT_NULL
);
1659 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1660 if (UNTAG_Bool(REGB0
)) {
1662 nit_abort("Assert failed", NULL
, LOCATE_icode___icode_tools
, 370);
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
)) {
1668 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools
, 371);
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
)) {
1675 nit_abort("Cast failed", NULL
, LOCATE_icode___icode_tools
, 371);
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]);
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]);
1686 stack_frame_head
= fra
.me
.prev
;
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
;
1693 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1694 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1710 stack_frame_head
= fra
.me
.prev
;
1711 return fra
.me
.REG
[0];
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
;
1718 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1719 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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 */
1742 stack_frame_head
= fra
.me
.prev
;
1743 return fra
.me
.REG
[3];
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
;
1749 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1750 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1765 stack_frame_head
= fra
.me
.prev
;
1766 return fra
.me
.REG
[0];
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
;
1773 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1774 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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
);
1789 stack_frame_head
= fra
.me
.prev
;
1790 return fra
.me
.REG
[0];
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
;
1796 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1797 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1812 stack_frame_head
= fra
.me
.prev
;
1813 return fra
.me
.REG
[0];
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
;
1819 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1820 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1835 stack_frame_head
= fra
.me
.prev
;
1836 return fra
.me
.REG
[0];
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
;
1842 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1843 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1858 stack_frame_head
= fra
.me
.prev
;
1859 return fra
.me
.REG
[0];
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
;
1866 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1867 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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
)) {
1886 nit_abort("Cast failed", NULL
, LOCATE_icode___icode_tools
, 432);
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]);
1894 stack_frame_head
= fra
.me
.prev
;
1895 return fra
.me
.REG
[2];
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
;
1901 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1902 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1920 stack_frame_head
= fra
.me
.prev
;
1921 return fra
.me
.REG
[0];
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
;
1927 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1928 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1949 stack_frame_head
= fra
.me
.prev
;
1950 return fra
.me
.REG
[0];
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
;
1956 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1957 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
1975 stack_frame_head
= fra
.me
.prev
;
1976 return fra
.me
.REG
[0];
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
;
1982 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1983 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
2004 stack_frame_head
= fra
.me
.prev
;
2005 return fra
.me
.REG
[0];
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
;
2011 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
2012 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
2031 stack_frame_head
= fra
.me
.prev
;
2032 return fra
.me
.REG
[0];
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
;
2038 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
2039 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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]);
2055 stack_frame_head
= fra
.me
.prev
;
2056 return fra
.me
.REG
[0];
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
;
2062 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
2063 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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 */
2084 stack_frame_head
= fra
.me
.prev
;
2085 return fra
.me
.REG
[2];
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
;
2093 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
2094 fra
.me
.file
= LOCATE_icode___icode_tools
;
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
;
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
)) {
2113 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools
, 490);
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
)) {
2123 nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools
, 492);
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
)) {
2132 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
2133 if (UNTAG_Bool(REGB1
)) {
2134 REGB1
= TAG_Bool(0);
2137 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[3])(fra
.me
.REG
[3], NIT_NULL
);
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
)) {
2147 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools
, 495);
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]);
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
)) {
2156 nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools
, 497);
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];
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
)) {
2167 nit_abort("Cast failed", NULL
, LOCATE_icode___icode_tools
, 499);
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]);
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];
2180 stack_frame_head
= fra
.me
.prev
;
2181 return fra
.me
.REG
[3];