gc: add 'help' option to list all available GC
[nit.git] / c_src / allocate_iregister_slots._sep.c
1 /* This C file is generated by NIT to compile module allocate_iregister_slots. */
2 #include "allocate_iregister_slots._sep.h"
3 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_read(val_t p0, val_t p1, val_t p2){
4 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
5 val_t REGB0;
6 val_t REGB1;
7 val_t REGB2;
8 val_t tmp;
9 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
10 fra.me.file = LOCATE_allocate_iregister_slots;
11 fra.me.line = 48;
12 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_read;
13 fra.me.has_broke = 0;
14 fra.me.REG_size = 4;
15 fra.me.REG[0] = NIT_NULL;
16 fra.me.REG[1] = NIT_NULL;
17 fra.me.REG[2] = NIT_NULL;
18 fra.me.REG[3] = NIT_NULL;
19 fra.me.REG[0] = p0;
20 fra.me.REG[1] = p1;
21 fra.me.REG[2] = p2;
22 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0])!=NIT_NULL);
23 /* ./analysis//allocate_iregister_slots.nit:50 */
24 if (UNTAG_Bool(REGB0)) {
25 } else {
26 fprintf(stderr, "Uninitialized attribute %s", "_pass");
27 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 50);
28 nit_exit(1);
29 }
30 REGB0 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0]);
31 REGB1 = TAG_Int(0);
32 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
33 /* ./analysis//allocate_iregister_slots.nit:51 */
34 if (UNTAG_Bool(REGB2)) {
35 } else {
36 REGB1 = TAG_Bool((REGB0)==(REGB1));
37 REGB2 = REGB1;
38 /* ./analysis//allocate_iregister_slots.nit:51 */
39 }
40 if (UNTAG_Bool(REGB2)) {
41 /* ./analysis//allocate_iregister_slots.nit:52 */
42 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
43 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
44 /* ./analysis//allocate_iregister_slots.nit:53 */
45 if (UNTAG_Bool(REGB2)) {
46 } else {
47 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
48 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 53);
49 nit_exit(1);
50 }
51 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
52 CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
53 /* ./analysis//allocate_iregister_slots.nit:54 */
54 ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[2]) = NIT_NULL;
55 } else {
56 REGB2 = TAG_Int(1);
57 REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
58 /* ./analysis//allocate_iregister_slots.nit:55 */
59 if (UNTAG_Bool(REGB1)) {
60 } else {
61 REGB2 = TAG_Bool((REGB0)==(REGB2));
62 REGB1 = REGB2;
63 /* ./analysis//allocate_iregister_slots.nit:55 */
64 }
65 if (UNTAG_Bool(REGB1)) {
66 REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
67 if (UNTAG_Bool(REGB1)) {
68 } else {
69 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
70 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 55);
71 nit_exit(1);
72 }
73 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
74 REGB1 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
75 } else {
76 REGB2 = TAG_Bool(false);
77 REGB1 = REGB2;
78 }
79 if (UNTAG_Bool(REGB1)) {
80 REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
81 if (UNTAG_Bool(REGB1)) {
82 } else {
83 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
84 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 55);
85 nit_exit(1);
86 }
87 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
88 fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
89 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
90 if (UNTAG_Bool(REGB1)) {
91 } else {
92 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
93 if (UNTAG_Bool(REGB2)) {
94 REGB2 = TAG_Bool(false);
95 REGB1 = REGB2;
96 } else {
97 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
98 REGB1 = REGB2;
99 }
100 }
101 } else {
102 REGB2 = TAG_Bool(false);
103 REGB1 = REGB2;
104 }
105 if (UNTAG_Bool(REGB1)) {
106 /* ./analysis//allocate_iregister_slots.nit:56 */
107 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
108 }
109 }
110 stack_frame_head = fra.me.prev;
111 return;
112 }
113 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_write(val_t p0, val_t p1, val_t p2){
114 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
115 val_t REGB0;
116 val_t REGB1;
117 val_t REGB2;
118 val_t tmp;
119 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
120 fra.me.file = LOCATE_allocate_iregister_slots;
121 fra.me.line = 60;
122 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_write;
123 fra.me.has_broke = 0;
124 fra.me.REG_size = 4;
125 fra.me.REG[0] = NIT_NULL;
126 fra.me.REG[1] = NIT_NULL;
127 fra.me.REG[2] = NIT_NULL;
128 fra.me.REG[3] = NIT_NULL;
129 fra.me.REG[0] = p0;
130 fra.me.REG[1] = p1;
131 fra.me.REG[2] = p2;
132 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0])!=NIT_NULL);
133 /* ./analysis//allocate_iregister_slots.nit:62 */
134 if (UNTAG_Bool(REGB0)) {
135 } else {
136 fprintf(stderr, "Uninitialized attribute %s", "_pass");
137 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 62);
138 nit_exit(1);
139 }
140 REGB0 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0]);
141 REGB1 = TAG_Int(0);
142 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
143 /* ./analysis//allocate_iregister_slots.nit:63 */
144 if (UNTAG_Bool(REGB2)) {
145 } else {
146 REGB1 = TAG_Bool((REGB0)==(REGB1));
147 REGB2 = REGB1;
148 /* ./analysis//allocate_iregister_slots.nit:63 */
149 }
150 if (UNTAG_Bool(REGB2)) {
151 /* ./analysis//allocate_iregister_slots.nit:64 */
152 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
153 /* ./analysis//allocate_iregister_slots.nit:65 */
154 ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[2]) = NIT_NULL;
155 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0])!=NIT_NULL);
156 /* ./analysis//allocate_iregister_slots.nit:67 */
157 if (UNTAG_Bool(REGB2)) {
158 } else {
159 fprintf(stderr, "Uninitialized attribute %s", "_firsts");
160 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 67);
161 nit_exit(1);
162 }
163 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0]);
164 REGB2 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
165 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
166 if (UNTAG_Bool(REGB2)) {
167 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0])!=NIT_NULL);
168 if (UNTAG_Bool(REGB2)) {
169 } else {
170 fprintf(stderr, "Uninitialized attribute %s", "_firsts");
171 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 67);
172 nit_exit(1);
173 }
174 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0]);
175 CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
176 }
177 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
178 /* ./analysis//allocate_iregister_slots.nit:69 */
179 if (UNTAG_Bool(REGB2)) {
180 } else {
181 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
182 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 69);
183 nit_exit(1);
184 }
185 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
186 REGB2 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
187 if (UNTAG_Bool(REGB2)) {
188 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
189 if (UNTAG_Bool(REGB2)) {
190 } else {
191 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
192 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 69);
193 nit_exit(1);
194 }
195 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
196 CALL_abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
197 }
198 } else {
199 REGB2 = TAG_Int(1);
200 REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
201 /* ./analysis//allocate_iregister_slots.nit:70 */
202 if (UNTAG_Bool(REGB1)) {
203 } else {
204 REGB2 = TAG_Bool((REGB0)==(REGB2));
205 REGB1 = REGB2;
206 /* ./analysis//allocate_iregister_slots.nit:70 */
207 }
208 if (UNTAG_Bool(REGB1)) {
209 REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0])!=NIT_NULL);
210 /* ./analysis//allocate_iregister_slots.nit:71 */
211 if (UNTAG_Bool(REGB1)) {
212 } else {
213 fprintf(stderr, "Uninitialized attribute %s", "_firsts");
214 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 71);
215 nit_exit(1);
216 }
217 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[0]);
218 fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
219 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
220 if (UNTAG_Bool(REGB1)) {
221 } else {
222 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
223 if (UNTAG_Bool(REGB2)) {
224 REGB2 = TAG_Bool(false);
225 REGB1 = REGB2;
226 } else {
227 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
228 REGB1 = REGB2;
229 }
230 }
231 if (UNTAG_Bool(REGB1)) {
232 /* ./analysis//allocate_iregister_slots.nit:72 */
233 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
234 } else {
235 REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
236 /* ./analysis//allocate_iregister_slots.nit:73 */
237 if (UNTAG_Bool(REGB1)) {
238 } else {
239 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
240 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 73);
241 nit_exit(1);
242 }
243 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
244 REGB1 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
245 if (UNTAG_Bool(REGB1)) {
246 REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
247 if (UNTAG_Bool(REGB1)) {
248 } else {
249 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
250 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 73);
251 nit_exit(1);
252 }
253 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
254 fra.me.REG[3] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
255 REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
256 if (UNTAG_Bool(REGB1)) {
257 } else {
258 REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
259 if (UNTAG_Bool(REGB2)) {
260 REGB2 = TAG_Bool(false);
261 REGB1 = REGB2;
262 } else {
263 REGB2 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
264 REGB1 = REGB2;
265 }
266 }
267 } else {
268 REGB2 = TAG_Bool(false);
269 REGB1 = REGB2;
270 }
271 if (UNTAG_Bool(REGB1)) {
272 /* ./analysis//allocate_iregister_slots.nit:74 */
273 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
274 }
275 }
276 }
277 }
278 stack_frame_head = fra.me.prev;
279 return;
280 }
281 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode(val_t p0, val_t p1){
282 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
283 val_t REGB0;
284 val_t REGB1;
285 val_t REGB2;
286 val_t tmp;
287 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
288 fra.me.file = LOCATE_allocate_iregister_slots;
289 fra.me.line = 105;
290 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode;
291 fra.me.has_broke = 0;
292 fra.me.REG_size = 5;
293 fra.me.REG[0] = NIT_NULL;
294 fra.me.REG[1] = NIT_NULL;
295 fra.me.REG[2] = NIT_NULL;
296 fra.me.REG[3] = NIT_NULL;
297 fra.me.REG[4] = NIT_NULL;
298 fra.me.REG[0] = p0;
299 fra.me.REG[1] = p1;
300 fra.me.REG[2] = fra.me.REG[0];
301 fra.me.REG[3] = fra.me.REG[1];
302 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2])!=NIT_NULL);
303 /* ./analysis//allocate_iregister_slots.nit:107 */
304 if (UNTAG_Bool(REGB0)) {
305 } else {
306 fprintf(stderr, "Uninitialized attribute %s", "_pass");
307 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 107);
308 nit_exit(1);
309 }
310 REGB0 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2]);
311 REGB1 = TAG_Int(1);
312 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
313 if (UNTAG_Bool(REGB2)) {
314 } else {
315 REGB1 = TAG_Bool((REGB0)==(REGB1));
316 REGB2 = REGB1;
317 /* ./analysis//allocate_iregister_slots.nit:107 */
318 }
319 if (UNTAG_Bool(REGB2)) {
320 REGB2 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_ILoop, ID_ILoop)) /*cast ILoop*/;
321 } else {
322 REGB1 = TAG_Bool(false);
323 REGB2 = REGB1;
324 }
325 if (UNTAG_Bool(REGB2)) {
326 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2])!=NIT_NULL);
327 /* ./analysis//allocate_iregister_slots.nit:108 */
328 if (UNTAG_Bool(REGB2)) {
329 } else {
330 fprintf(stderr, "Uninitialized attribute %s", "_live");
331 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 108);
332 nit_exit(1);
333 }
334 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]);
335 fra.me.REG[4] = NEW_HashSet_hash_collection___HashSet___init();
336 /* ./analysis//allocate_iregister_slots.nit:110 */
337 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]) = fra.me.REG[4];
338 /* ./analysis//allocate_iregister_slots.nit:111 */
339 CALL_SUPER_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
340 /* ./analysis//allocate_iregister_slots.nit:112 */
341 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]) = fra.me.REG[3];
342 /* ./analysis//allocate_iregister_slots.nit:113 */
343 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
344 } else {
345 /* ./analysis//allocate_iregister_slots.nit:115 */
346 CALL_SUPER_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
347 }
348 stack_frame_head = fra.me.prev;
349 return;
350 }
351 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs(val_t p0, val_t p1){
352 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
353 val_t REGB0;
354 val_t REGB1;
355 val_t REGB2;
356 val_t tmp;
357 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
358 fra.me.file = LOCATE_allocate_iregister_slots;
359 fra.me.line = 119;
360 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs;
361 fra.me.has_broke = 0;
362 fra.me.REG_size = 5;
363 fra.me.REG[0] = NIT_NULL;
364 fra.me.REG[1] = NIT_NULL;
365 fra.me.REG[2] = NIT_NULL;
366 fra.me.REG[3] = NIT_NULL;
367 fra.me.REG[4] = NIT_NULL;
368 fra.me.REG[0] = p0;
369 fra.me.REG[1] = p1;
370 fra.me.REG[2] = fra.me.REG[0];
371 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2])!=NIT_NULL);
372 /* ./analysis//allocate_iregister_slots.nit:121 */
373 if (UNTAG_Bool(REGB0)) {
374 } else {
375 fprintf(stderr, "Uninitialized attribute %s", "_pass");
376 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 121);
377 nit_exit(1);
378 }
379 REGB0 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2]);
380 REGB1 = TAG_Int(1);
381 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
382 if (UNTAG_Bool(REGB2)) {
383 } else {
384 REGB1 = TAG_Bool((REGB0)==(REGB1));
385 REGB2 = REGB1;
386 /* ./analysis//allocate_iregister_slots.nit:121 */
387 }
388 if (UNTAG_Bool(REGB2)) {
389 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2])!=NIT_NULL);
390 /* ./analysis//allocate_iregister_slots.nit:122 */
391 if (UNTAG_Bool(REGB2)) {
392 } else {
393 fprintf(stderr, "Uninitialized attribute %s", "_live");
394 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 122);
395 nit_exit(1);
396 }
397 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]);
398 fra.me.REG[4] = NEW_HashSet_hash_collection___HashSet___init();
399 /* ./analysis//allocate_iregister_slots.nit:124 */
400 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]) = fra.me.REG[4];
401 /* ./analysis//allocate_iregister_slots.nit:125 */
402 CALL_SUPER_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
403 /* ./analysis//allocate_iregister_slots.nit:126 */
404 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[2]) = fra.me.REG[3];
405 /* ./analysis//allocate_iregister_slots.nit:127 */
406 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
407 } else {
408 /* ./analysis//allocate_iregister_slots.nit:129 */
409 CALL_SUPER_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
410 }
411 stack_frame_head = fra.me.prev;
412 return;
413 }
414 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine(val_t p0, val_t p1){
415 struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
416 val_t REGB0;
417 val_t REGB1;
418 val_t REGB2;
419 val_t tmp;
420 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
421 fra.me.file = LOCATE_allocate_iregister_slots;
422 fra.me.line = 137;
423 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine;
424 fra.me.has_broke = 0;
425 fra.me.REG_size = 9;
426 fra.me.REG[0] = NIT_NULL;
427 fra.me.REG[1] = NIT_NULL;
428 fra.me.REG[2] = NIT_NULL;
429 fra.me.REG[3] = NIT_NULL;
430 fra.me.REG[4] = NIT_NULL;
431 fra.me.REG[5] = NIT_NULL;
432 fra.me.REG[6] = NIT_NULL;
433 fra.me.REG[7] = NIT_NULL;
434 fra.me.REG[8] = NIT_NULL;
435 fra.me.REG[0] = p0;
436 fra.me.REG[1] = p1;
437 fra.me.REG[2] = fra.me.REG[0];
438 fra.me.REG[3] = fra.me.REG[1];
439 fra.me.REG[4] = CALL_icode_base___IRoutine___result(fra.me.REG[3])(fra.me.REG[3]);
440 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2])!=NIT_NULL);
441 /* ./analysis//allocate_iregister_slots.nit:140 */
442 if (UNTAG_Bool(REGB0)) {
443 } else {
444 fprintf(stderr, "Uninitialized attribute %s", "_pass");
445 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 140);
446 nit_exit(1);
447 }
448 REGB0 = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[2]);
449 REGB1 = TAG_Int(0);
450 REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
451 if (UNTAG_Bool(REGB2)) {
452 } else {
453 REGB1 = TAG_Bool((REGB0)==(REGB1));
454 REGB2 = REGB1;
455 /* ./analysis//allocate_iregister_slots.nit:140 */
456 }
457 if (UNTAG_Bool(REGB2)) {
458 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2])!=NIT_NULL);
459 /* ./analysis//allocate_iregister_slots.nit:141 */
460 if (UNTAG_Bool(REGB2)) {
461 } else {
462 fprintf(stderr, "Uninitialized attribute %s", "_current_ir");
463 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 141);
464 nit_exit(1);
465 }
466 fra.me.REG[5] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2]);
467 /* ./analysis//allocate_iregister_slots.nit:142 */
468 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2]) = fra.me.REG[3];
469 fra.me.REG[6] = CALL_icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
470 fra.me.REG[6] = CALL_abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
471 /* ./analysis//allocate_iregister_slots.nit:143 */
472 while(1) {
473 REGB2 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[6])(fra.me.REG[6]);
474 if (UNTAG_Bool(REGB2)) {
475 fra.me.REG[7] = CALL_abstract_collection___Iterator___item(fra.me.REG[6])(fra.me.REG[6]);
476 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[2])!=NIT_NULL);
477 /* ./analysis//allocate_iregister_slots.nit:144 */
478 if (UNTAG_Bool(REGB2)) {
479 } else {
480 fprintf(stderr, "Uninitialized attribute %s", "_firsts");
481 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 144);
482 nit_exit(1);
483 }
484 fra.me.REG[8] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____firsts(fra.me.REG[2]);
485 CALL_abstract_collection___Map_____braeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7], fra.me.REG[2]);
486 /* ./analysis//allocate_iregister_slots.nit:145 */
487 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
488 } else {
489 /* ./analysis//allocate_iregister_slots.nit:143 */
490 goto label1;
491 }
492 CALL_abstract_collection___Iterator___next(fra.me.REG[6])(fra.me.REG[6]);
493 }
494 label1: while(0);
495 /* ./analysis//allocate_iregister_slots.nit:147 */
496 CALL_SUPER_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
497 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
498 /* ./analysis//allocate_iregister_slots.nit:148 */
499 if (UNTAG_Bool(REGB2)) {
500 } else {
501 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
502 if (UNTAG_Bool(REGB1)) {
503 REGB1 = TAG_Bool(false);
504 REGB2 = REGB1;
505 } else {
506 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
507 REGB2 = REGB1;
508 }
509 }
510 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
511 if (UNTAG_Bool(REGB2)) {
512 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[2])!=NIT_NULL);
513 /* ./analysis//allocate_iregister_slots.nit:149 */
514 if (UNTAG_Bool(REGB2)) {
515 } else {
516 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
517 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 149);
518 nit_exit(1);
519 }
520 fra.me.REG[6] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[2]);
521 CALL_abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4], fra.me.REG[2]);
522 /* ./analysis//allocate_iregister_slots.nit:150 */
523 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
524 }
525 /* ./analysis//allocate_iregister_slots.nit:152 */
526 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2]) = fra.me.REG[5];
527 } else {
528 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2])!=NIT_NULL);
529 /* ./analysis//allocate_iregister_slots.nit:154 */
530 if (UNTAG_Bool(REGB2)) {
531 } else {
532 fprintf(stderr, "Uninitialized attribute %s", "_tag_slots");
533 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 154);
534 nit_exit(1);
535 }
536 fra.me.REG[5] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]);
537 fra.me.REG[6] = NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init();
538 /* ./analysis//allocate_iregister_slots.nit:155 */
539 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]) = fra.me.REG[6];
540 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2])!=NIT_NULL);
541 /* ./analysis//allocate_iregister_slots.nit:156 */
542 if (UNTAG_Bool(REGB2)) {
543 } else {
544 fprintf(stderr, "Uninitialized attribute %s", "_std_slots");
545 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 156);
546 nit_exit(1);
547 }
548 fra.me.REG[6] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]);
549 REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_IClosureDef, ID_IClosureDef)) /*cast IClosureDef*/;
550 /* ./analysis//allocate_iregister_slots.nit:157 */
551 if (UNTAG_Bool(REGB2)) {
552 fra.me.REG[7] = NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init();
553 /* ./analysis//allocate_iregister_slots.nit:158 */
554 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]) = fra.me.REG[7];
555 }
556 fra.me.REG[7] = CALL_icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
557 fra.me.REG[7] = CALL_abstract_collection___Collection___iterator(fra.me.REG[7])(fra.me.REG[7]);
558 /* ./analysis//allocate_iregister_slots.nit:160 */
559 while(1) {
560 REGB2 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[7])(fra.me.REG[7]);
561 if (UNTAG_Bool(REGB2)) {
562 fra.me.REG[8] = CALL_abstract_collection___Iterator___item(fra.me.REG[7])(fra.me.REG[7]);
563 /* ./analysis//allocate_iregister_slots.nit:161 */
564 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
565 } else {
566 /* ./analysis//allocate_iregister_slots.nit:160 */
567 goto label2;
568 }
569 CALL_abstract_collection___Iterator___next(fra.me.REG[7])(fra.me.REG[7]);
570 }
571 label2: while(0);
572 /* ./analysis//allocate_iregister_slots.nit:163 */
573 CALL_SUPER_allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
574 REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
575 /* ./analysis//allocate_iregister_slots.nit:164 */
576 if (UNTAG_Bool(REGB2)) {
577 } else {
578 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
579 if (UNTAG_Bool(REGB1)) {
580 REGB1 = TAG_Bool(false);
581 REGB2 = REGB1;
582 } else {
583 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
584 REGB2 = REGB1;
585 }
586 }
587 REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
588 if (UNTAG_Bool(REGB2)) {
589 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
590 }
591 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2])!=NIT_NULL);
592 /* ./analysis//allocate_iregister_slots.nit:165 */
593 if (UNTAG_Bool(REGB2)) {
594 } else {
595 fprintf(stderr, "Uninitialized attribute %s", "_tag_slots");
596 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 165);
597 nit_exit(1);
598 }
599 fra.me.REG[4] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]);
600 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[4])!=NIT_NULL);
601 if (UNTAG_Bool(REGB2)) {
602 } else {
603 fprintf(stderr, "Uninitialized attribute %s", "_next_index");
604 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 165);
605 nit_exit(1);
606 }
607 REGB2 = ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[4]);
608 ATTR_allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[3]) = REGB2;
609 /* ./analysis//allocate_iregister_slots.nit:166 */
610 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[2]) = fra.me.REG[5];
611 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2])!=NIT_NULL);
612 /* ./analysis//allocate_iregister_slots.nit:167 */
613 if (UNTAG_Bool(REGB2)) {
614 } else {
615 fprintf(stderr, "Uninitialized attribute %s", "_std_slots");
616 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 167);
617 nit_exit(1);
618 }
619 fra.me.REG[5] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]);
620 REGB2 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[5])!=NIT_NULL);
621 if (UNTAG_Bool(REGB2)) {
622 } else {
623 fprintf(stderr, "Uninitialized attribute %s", "_next_index");
624 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 167);
625 nit_exit(1);
626 }
627 REGB2 = ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[5]);
628 ATTR_allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[3]) = REGB2;
629 /* ./analysis//allocate_iregister_slots.nit:168 */
630 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]) = fra.me.REG[6];
631 }
632 stack_frame_head = fra.me.prev;
633 return;
634 }
635 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality(val_t p0, val_t p1){
636 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
637 val_t REGB0;
638 val_t REGB1;
639 val_t tmp;
640 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
641 fra.me.file = LOCATE_allocate_iregister_slots;
642 fra.me.line = 36;
643 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality;
644 fra.me.has_broke = 0;
645 fra.me.REG_size = 4;
646 fra.me.REG[0] = NIT_NULL;
647 fra.me.REG[1] = NIT_NULL;
648 fra.me.REG[2] = NIT_NULL;
649 fra.me.REG[3] = NIT_NULL;
650 fra.me.REG[0] = p0;
651 fra.me.REG[1] = p1;
652 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1])!=NIT_NULL);
653 /* ./analysis//allocate_iregister_slots.nit:39 */
654 if (UNTAG_Bool(REGB0)) {
655 } else {
656 fprintf(stderr, "Uninitialized attribute %s", "_is_local");
657 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 39);
658 nit_exit(1);
659 }
660 REGB0 = ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]);
661 if (UNTAG_Bool(REGB0)) {
662 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]);
663 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
664 if (UNTAG_Bool(REGB0)) {
665 } else {
666 fprintf(stderr, "Uninitialized attribute %s", "_current_ir");
667 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 39);
668 nit_exit(1);
669 }
670 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0]);
671 REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[2]));
672 if (UNTAG_Bool(REGB0)) {
673 } else {
674 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
675 if (UNTAG_Bool(REGB1)) {
676 REGB1 = TAG_Bool(false);
677 REGB0 = REGB1;
678 } else {
679 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
680 REGB0 = REGB1;
681 }
682 }
683 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
684 } else {
685 REGB1 = TAG_Bool(false);
686 REGB0 = REGB1;
687 }
688 if (UNTAG_Bool(REGB0)) {
689 fra.me.REG[3] = ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]);
690 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
691 /* ./analysis//allocate_iregister_slots.nit:40 */
692 if (UNTAG_Bool(REGB0)) {
693 } else {
694 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
695 if (UNTAG_Bool(REGB1)) {
696 REGB1 = TAG_Bool(false);
697 REGB0 = REGB1;
698 } else {
699 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
700 REGB0 = REGB1;
701 }
702 }
703 if (UNTAG_Bool(REGB0)) {
704 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
705 /* ./analysis//allocate_iregister_slots.nit:41 */
706 if (UNTAG_Bool(REGB0)) {
707 } else {
708 fprintf(stderr, "Uninitialized attribute %s", "_current_ir");
709 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 41);
710 nit_exit(1);
711 }
712 fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0]);
713 ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[1]) = fra.me.REG[0];
714 } else {
715 REGB0 = TAG_Bool(false);
716 /* ./analysis//allocate_iregister_slots.nit:43 */
717 ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]) = REGB0;
718 }
719 }
720 stack_frame_head = fra.me.prev;
721 return;
722 }
723 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free(val_t p0, val_t p1){
724 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
725 val_t REGB0;
726 val_t tmp;
727 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
728 fra.me.file = LOCATE_allocate_iregister_slots;
729 fra.me.line = 90;
730 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free;
731 fra.me.has_broke = 0;
732 fra.me.REG_size = 3;
733 fra.me.REG[0] = NIT_NULL;
734 fra.me.REG[1] = NIT_NULL;
735 fra.me.REG[2] = NIT_NULL;
736 fra.me.REG[0] = p0;
737 fra.me.REG[1] = p1;
738 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred(fra.me.REG[0])!=NIT_NULL);
739 /* ./analysis//allocate_iregister_slots.nit:95 */
740 if (UNTAG_Bool(REGB0)) {
741 } else {
742 fprintf(stderr, "Uninitialized attribute %s", "_deferred");
743 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 95);
744 nit_exit(1);
745 }
746 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred(fra.me.REG[0]);
747 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
748 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
749 /* ./analysis//allocate_iregister_slots.nit:96 */
750 if (UNTAG_Bool(REGB0)) {
751 /* ./analysis//allocate_iregister_slots.nit:97 */
752 CALL_abstract_collection___RemovableCollection___clear(fra.me.REG[1])(fra.me.REG[1]);
753 /* ./analysis//allocate_iregister_slots.nit:98 */
754 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred(fra.me.REG[0]) = fra.me.REG[1];
755 fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
756 /* ./analysis//allocate_iregister_slots.nit:99 */
757 while(1) {
758 REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
759 if (UNTAG_Bool(REGB0)) {
760 fra.me.REG[1] = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
761 /* ./analysis//allocate_iregister_slots.nit:100 */
762 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
763 } else {
764 /* ./analysis//allocate_iregister_slots.nit:99 */
765 goto label1;
766 }
767 CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
768 }
769 label1: while(0);
770 }
771 stack_frame_head = fra.me.prev;
772 return;
773 }
774 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___register(val_t p0, val_t p1){
775 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
776 val_t REGB0;
777 val_t REGB1;
778 val_t tmp;
779 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
780 fra.me.file = LOCATE_allocate_iregister_slots;
781 fra.me.line = 182;
782 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___register;
783 fra.me.has_broke = 0;
784 fra.me.REG_size = 3;
785 fra.me.REG[0] = NIT_NULL;
786 fra.me.REG[1] = NIT_NULL;
787 fra.me.REG[2] = NIT_NULL;
788 fra.me.REG[0] = p0;
789 fra.me.REG[1] = p1;
790 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
791 /* ./analysis//allocate_iregister_slots.nit:185 */
792 if (UNTAG_Bool(REGB0)) {
793 } else {
794 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
795 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 185);
796 nit_exit(1);
797 }
798 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
799 REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
800 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
801 if (UNTAG_Bool(REGB0)) {
802 goto label1;
803 }
804 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]);
805 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
806 /* ./analysis//allocate_iregister_slots.nit:186 */
807 if (UNTAG_Bool(REGB0)) {
808 } else {
809 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
810 if (UNTAG_Bool(REGB1)) {
811 REGB1 = TAG_Bool(false);
812 REGB0 = REGB1;
813 } else {
814 REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
815 REGB0 = REGB1;
816 /* ./analysis//allocate_iregister_slots.nit:186 */
817 }
818 }
819 if (UNTAG_Bool(REGB0)) {
820 } else {
821 fprintf(stderr, "Assert failed");
822 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 186);
823 nit_exit(1);
824 }
825 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[0])!=NIT_NULL);
826 /* ./analysis//allocate_iregister_slots.nit:187 */
827 if (UNTAG_Bool(REGB0)) {
828 } else {
829 fprintf(stderr, "Uninitialized attribute %s", "_live");
830 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 187);
831 nit_exit(1);
832 }
833 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[0]);
834 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
835 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1])!=NIT_NULL);
836 /* ./analysis//allocate_iregister_slots.nit:188 */
837 if (UNTAG_Bool(REGB0)) {
838 } else {
839 fprintf(stderr, "Uninitialized attribute %s", "_is_local");
840 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 188);
841 nit_exit(1);
842 }
843 REGB0 = ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]);
844 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
845 if (UNTAG_Bool(REGB0)) {
846 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0])!=NIT_NULL);
847 /* ./analysis//allocate_iregister_slots.nit:189 */
848 if (UNTAG_Bool(REGB0)) {
849 } else {
850 fprintf(stderr, "Uninitialized attribute %s", "_global_slots");
851 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 189);
852 nit_exit(1);
853 }
854 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0]);
855 CALL_allocate_iregister_slots___SlotGroup___register(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
856 } else {
857 fra.me.REG[2] = CALL_icode_base___IRegister___stype(fra.me.REG[1])(fra.me.REG[1]);
858 REGB0 = CALL_primitive_info___MMType___is_tagged(fra.me.REG[2])(fra.me.REG[2]);
859 /* ./analysis//allocate_iregister_slots.nit:190 */
860 if (UNTAG_Bool(REGB0)) {
861 REGB0 = TAG_Bool(true);
862 /* ./analysis//allocate_iregister_slots.nit:191 */
863 ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[1]) = REGB0;
864 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0])!=NIT_NULL);
865 /* ./analysis//allocate_iregister_slots.nit:192 */
866 if (UNTAG_Bool(REGB0)) {
867 } else {
868 fprintf(stderr, "Uninitialized attribute %s", "_tag_slots");
869 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 192);
870 nit_exit(1);
871 }
872 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0]);
873 CALL_allocate_iregister_slots___SlotGroup___register(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
874 } else {
875 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0])!=NIT_NULL);
876 /* ./analysis//allocate_iregister_slots.nit:194 */
877 if (UNTAG_Bool(REGB0)) {
878 } else {
879 fprintf(stderr, "Uninitialized attribute %s", "_std_slots");
880 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 194);
881 nit_exit(1);
882 }
883 fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0]);
884 CALL_allocate_iregister_slots___SlotGroup___register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
885 }
886 }
887 label1: while(0);
888 stack_frame_head = fra.me.prev;
889 return;
890 }
891 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___free(val_t p0, val_t p1){
892 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
893 val_t REGB0;
894 val_t REGB1;
895 val_t tmp;
896 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
897 fra.me.file = LOCATE_allocate_iregister_slots;
898 fra.me.line = 198;
899 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___free;
900 fra.me.has_broke = 0;
901 fra.me.REG_size = 3;
902 fra.me.REG[0] = NIT_NULL;
903 fra.me.REG[1] = NIT_NULL;
904 fra.me.REG[2] = NIT_NULL;
905 fra.me.REG[0] = p0;
906 fra.me.REG[1] = p1;
907 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]);
908 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
909 /* ./analysis//allocate_iregister_slots.nit:202 */
910 if (UNTAG_Bool(REGB0)) {
911 } else {
912 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
913 if (UNTAG_Bool(REGB1)) {
914 REGB1 = TAG_Bool(false);
915 REGB0 = REGB1;
916 } else {
917 REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
918 REGB0 = REGB1;
919 /* ./analysis//allocate_iregister_slots.nit:202 */
920 }
921 }
922 if (UNTAG_Bool(REGB0)) {
923 goto label1;
924 }
925 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[0])!=NIT_NULL);
926 /* ./analysis//allocate_iregister_slots.nit:203 */
927 if (UNTAG_Bool(REGB0)) {
928 } else {
929 fprintf(stderr, "Uninitialized attribute %s", "_live");
930 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 203);
931 nit_exit(1);
932 }
933 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____live(fra.me.REG[0]);
934 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
935 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
936 if (UNTAG_Bool(REGB0)) {
937 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred(fra.me.REG[0])!=NIT_NULL);
938 /* ./analysis//allocate_iregister_slots.nit:204 */
939 if (UNTAG_Bool(REGB0)) {
940 } else {
941 fprintf(stderr, "Uninitialized attribute %s", "_deferred");
942 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 204);
943 nit_exit(1);
944 }
945 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred(fra.me.REG[0]);
946 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
947 } else {
948 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
949 /* ./analysis//allocate_iregister_slots.nit:205 */
950 if (UNTAG_Bool(REGB0)) {
951 } else {
952 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
953 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 205);
954 nit_exit(1);
955 }
956 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
957 REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
958 if (UNTAG_Bool(REGB0)) {
959 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[1])!=NIT_NULL);
960 /* ./analysis//allocate_iregister_slots.nit:206 */
961 if (UNTAG_Bool(REGB0)) {
962 } else {
963 fprintf(stderr, "Uninitialized attribute %s", "_in_tag_slots");
964 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 206);
965 nit_exit(1);
966 }
967 REGB0 = ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[1]);
968 if (UNTAG_Bool(REGB0)) {
969 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0])!=NIT_NULL);
970 /* ./analysis//allocate_iregister_slots.nit:207 */
971 if (UNTAG_Bool(REGB0)) {
972 } else {
973 fprintf(stderr, "Uninitialized attribute %s", "_tag_slots");
974 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 207);
975 nit_exit(1);
976 }
977 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0]);
978 CALL_allocate_iregister_slots___SlotGroup___free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
979 } else {
980 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1])!=NIT_NULL);
981 /* ./analysis//allocate_iregister_slots.nit:208 */
982 if (UNTAG_Bool(REGB0)) {
983 } else {
984 fprintf(stderr, "Uninitialized attribute %s", "_is_local");
985 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 208);
986 nit_exit(1);
987 }
988 REGB0 = ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[1]);
989 if (UNTAG_Bool(REGB0)) {
990 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0])!=NIT_NULL);
991 /* ./analysis//allocate_iregister_slots.nit:209 */
992 if (UNTAG_Bool(REGB0)) {
993 } else {
994 fprintf(stderr, "Uninitialized attribute %s", "_std_slots");
995 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 209);
996 nit_exit(1);
997 }
998 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0]);
999 CALL_allocate_iregister_slots___SlotGroup___free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1000 } else {
1001 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0])!=NIT_NULL);
1002 /* ./analysis//allocate_iregister_slots.nit:211 */
1003 if (UNTAG_Bool(REGB0)) {
1004 } else {
1005 fprintf(stderr, "Uninitialized attribute %s", "_global_slots");
1006 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 211);
1007 nit_exit(1);
1008 }
1009 fra.me.REG[2] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0]);
1010 CALL_allocate_iregister_slots___SlotGroup___free(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
1011 }
1012 }
1013 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0])!=NIT_NULL);
1014 /* ./analysis//allocate_iregister_slots.nit:213 */
1015 if (UNTAG_Bool(REGB0)) {
1016 } else {
1017 fprintf(stderr, "Uninitialized attribute %s", "_lasts");
1018 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 213);
1019 nit_exit(1);
1020 }
1021 fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____lasts(fra.me.REG[0]);
1022 CALL_abstract_collection___Map___remove_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1023 }
1024 }
1025 label1: while(0);
1026 stack_frame_head = fra.me.prev;
1027 return;
1028 }
1029 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation(val_t p0){
1030 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1031 val_t REGB0;
1032 val_t tmp;
1033 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1034 fra.me.file = LOCATE_allocate_iregister_slots;
1035 fra.me.line = 226;
1036 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation;
1037 fra.me.has_broke = 0;
1038 fra.me.REG_size = 2;
1039 fra.me.REG[0] = NIT_NULL;
1040 fra.me.REG[1] = NIT_NULL;
1041 fra.me.REG[0] = p0;
1042 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
1043 /* ./analysis//allocate_iregister_slots.nit:229 */
1044 if (UNTAG_Bool(REGB0)) {
1045 } else {
1046 fprintf(stderr, "Uninitialized attribute %s", "_current_ir");
1047 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 229);
1048 nit_exit(1);
1049 }
1050 fra.me.REG[1] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0]);
1051 /* ./analysis//allocate_iregister_slots.nit:230 */
1052 CALL_icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1053 REGB0 = TAG_Int(1);
1054 /* ./analysis//allocate_iregister_slots.nit:231 */
1055 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0]) = REGB0;
1056 /* ./analysis//allocate_iregister_slots.nit:232 */
1057 CALL_icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1058 stack_frame_head = fra.me.prev;
1059 return;
1060 }
1061 void allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(val_t p0, val_t p1, int* init_table){
1062 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_IRegisterSlotAllocationVisitor].i;
1063 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1064 val_t REGB0;
1065 val_t tmp;
1066 if (init_table[itpos0]) return;
1067 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1068 fra.me.file = LOCATE_allocate_iregister_slots;
1069 fra.me.line = 235;
1070 fra.me.meth = LOCATE_allocate_iregister_slots___IRegisterSlotAllocationVisitor___init;
1071 fra.me.has_broke = 0;
1072 fra.me.REG_size = 3;
1073 fra.me.REG[0] = NIT_NULL;
1074 fra.me.REG[1] = NIT_NULL;
1075 fra.me.REG[2] = NIT_NULL;
1076 fra.me.REG[0] = p0;
1077 fra.me.REG[1] = p1;
1078 fra.me.REG[2] = fra.me.REG[0];
1079 /* ./analysis//allocate_iregister_slots.nit:235 */
1080 CALL_icode_tools___ICodeVisitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
1081 /* ./analysis//allocate_iregister_slots.nit:237 */
1082 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[2]) = fra.me.REG[1];
1083 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[2])!=NIT_NULL);
1084 /* ./analysis//allocate_iregister_slots.nit:238 */
1085 if (UNTAG_Bool(REGB0)) {
1086 } else {
1087 fprintf(stderr, "Uninitialized attribute %s", "_global_slots");
1088 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 238);
1089 nit_exit(1);
1090 }
1091 fra.me.REG[1] = ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[2]);
1092 ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[2]) = fra.me.REG[1];
1093 stack_frame_head = fra.me.prev;
1094 init_table[itpos0] = 1;
1095 return;
1096 }
1097 void allocate_iregister_slots___SlotGroup___register(val_t p0, val_t p1){
1098 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1099 val_t REGB0;
1100 val_t REGB1;
1101 val_t tmp;
1102 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1103 fra.me.file = LOCATE_allocate_iregister_slots;
1104 fra.me.line = 250;
1105 fra.me.meth = LOCATE_allocate_iregister_slots___SlotGroup___register;
1106 fra.me.has_broke = 0;
1107 fra.me.REG_size = 3;
1108 fra.me.REG[0] = NIT_NULL;
1109 fra.me.REG[1] = NIT_NULL;
1110 fra.me.REG[2] = NIT_NULL;
1111 fra.me.REG[0] = p0;
1112 fra.me.REG[1] = p1;
1113 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
1114 /* ./analysis//allocate_iregister_slots.nit:253 */
1115 if (UNTAG_Bool(REGB0)) {
1116 } else {
1117 fprintf(stderr, "Uninitialized attribute %s", "_free");
1118 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 253);
1119 nit_exit(1);
1120 }
1121 fra.me.REG[2] = ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]);
1122 REGB0 = CALL_abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
1123 if (UNTAG_Bool(REGB0)) {
1124 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0])!=NIT_NULL);
1125 /* ./analysis//allocate_iregister_slots.nit:254 */
1126 if (UNTAG_Bool(REGB0)) {
1127 } else {
1128 fprintf(stderr, "Uninitialized attribute %s", "_next_index");
1129 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 254);
1130 nit_exit(1);
1131 }
1132 REGB0 = ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]);
1133 ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]) = REGB0;
1134 REGB0 = ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]);
1135 REGB1 = TAG_Int(1);
1136 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1137 /* ./analysis//allocate_iregister_slots.nit:255 */
1138 ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]) = REGB1;
1139 } else {
1140 REGB1 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
1141 /* ./analysis//allocate_iregister_slots.nit:257 */
1142 if (UNTAG_Bool(REGB1)) {
1143 } else {
1144 fprintf(stderr, "Uninitialized attribute %s", "_free");
1145 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 257);
1146 nit_exit(1);
1147 }
1148 fra.me.REG[0] = ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]);
1149 fra.me.REG[0] = CALL_abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
1150 ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]) = fra.me.REG[0];
1151 }
1152 stack_frame_head = fra.me.prev;
1153 return;
1154 }
1155 void allocate_iregister_slots___SlotGroup___free(val_t p0, val_t p1){
1156 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1157 val_t REGB0;
1158 val_t tmp;
1159 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1160 fra.me.file = LOCATE_allocate_iregister_slots;
1161 fra.me.line = 261;
1162 fra.me.meth = LOCATE_allocate_iregister_slots___SlotGroup___free;
1163 fra.me.has_broke = 0;
1164 fra.me.REG_size = 2;
1165 fra.me.REG[0] = NIT_NULL;
1166 fra.me.REG[1] = NIT_NULL;
1167 fra.me.REG[0] = p0;
1168 fra.me.REG[1] = p1;
1169 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
1170 /* ./analysis//allocate_iregister_slots.nit:264 */
1171 if (UNTAG_Bool(REGB0)) {
1172 } else {
1173 fprintf(stderr, "Uninitialized attribute %s", "_free");
1174 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 264);
1175 nit_exit(1);
1176 }
1177 fra.me.REG[0] = ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]);
1178 fra.me.REG[1] = ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]);
1179 REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
1180 if (UNTAG_Bool(REGB0)) {
1181 } else {
1182 fprintf(stderr, "Cast failed");
1183 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 264);
1184 nit_exit(1);
1185 }
1186 CALL_abstract_collection___Sequence___push(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1187 stack_frame_head = fra.me.prev;
1188 return;
1189 }
1190 void allocate_iregister_slots___SlotGroup___init(val_t p0, int* init_table){
1191 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_SlotGroup].i;
1192 struct {struct stack_frame_t me;} fra;
1193 val_t tmp;
1194 if (init_table[itpos1]) return;
1195 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1196 fra.me.file = LOCATE_allocate_iregister_slots;
1197 fra.me.line = 0;
1198 fra.me.meth = LOCATE_allocate_iregister_slots___SlotGroup___init;
1199 fra.me.has_broke = 0;
1200 fra.me.REG_size = 0;
1201 stack_frame_head = fra.me.prev;
1202 init_table[itpos1] = 1;
1203 return;
1204 }
1205 val_t allocate_iregister_slots___IRoutine___std_slots_nb(val_t p0){
1206 struct {struct stack_frame_t me;} fra;
1207 val_t REGB0;
1208 val_t tmp;
1209 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1210 fra.me.file = LOCATE_allocate_iregister_slots;
1211 fra.me.line = 269;
1212 fra.me.meth = LOCATE_allocate_iregister_slots___IRoutine___std_slots_nb;
1213 fra.me.has_broke = 0;
1214 fra.me.REG_size = 1;
1215 fra.me.REG[0] = NIT_NULL;
1216 fra.me.REG[0] = p0;
1217 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0])!=NIT_NULL);
1218 /* ./analysis//allocate_iregister_slots.nit:269 */
1219 if (UNTAG_Bool(REGB0)) {
1220 } else {
1221 fprintf(stderr, "Uninitialized attribute %s", "_std_slots_nb");
1222 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 269);
1223 nit_exit(1);
1224 }
1225 REGB0 = ATTR_allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0]);
1226 stack_frame_head = fra.me.prev;
1227 return REGB0;
1228 }
1229 val_t allocate_iregister_slots___IRoutine___tag_slots_nb(val_t p0){
1230 struct {struct stack_frame_t me;} fra;
1231 val_t REGB0;
1232 val_t tmp;
1233 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1234 fra.me.file = LOCATE_allocate_iregister_slots;
1235 fra.me.line = 272;
1236 fra.me.meth = LOCATE_allocate_iregister_slots___IRoutine___tag_slots_nb;
1237 fra.me.has_broke = 0;
1238 fra.me.REG_size = 1;
1239 fra.me.REG[0] = NIT_NULL;
1240 fra.me.REG[0] = p0;
1241 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0])!=NIT_NULL);
1242 /* ./analysis//allocate_iregister_slots.nit:272 */
1243 if (UNTAG_Bool(REGB0)) {
1244 } else {
1245 fprintf(stderr, "Uninitialized attribute %s", "_tag_slots_nb");
1246 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 272);
1247 nit_exit(1);
1248 }
1249 REGB0 = ATTR_allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0]);
1250 stack_frame_head = fra.me.prev;
1251 return REGB0;
1252 }
1253 void allocate_iregister_slots___IRoutine___allocate_iregister_slots(val_t p0){
1254 struct {struct stack_frame_t me;} fra;
1255 val_t tmp;
1256 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1257 fra.me.file = LOCATE_allocate_iregister_slots;
1258 fra.me.line = 275;
1259 fra.me.meth = LOCATE_allocate_iregister_slots___IRoutine___allocate_iregister_slots;
1260 fra.me.has_broke = 0;
1261 fra.me.REG_size = 1;
1262 fra.me.REG[0] = NIT_NULL;
1263 fra.me.REG[0] = p0;
1264 fra.me.REG[0] = NEW_IRegisterSlotAllocationVisitor_allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(fra.me.REG[0]);
1265 /* ./analysis//allocate_iregister_slots.nit:278 */
1266 CALL_allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation(fra.me.REG[0])(fra.me.REG[0]);
1267 stack_frame_head = fra.me.prev;
1268 return;
1269 }
1270 val_t allocate_iregister_slots___IRegister___slot_index(val_t p0){
1271 struct {struct stack_frame_t me;} fra;
1272 val_t tmp;
1273 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1274 fra.me.file = LOCATE_allocate_iregister_slots;
1275 fra.me.line = 283;
1276 fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___slot_index;
1277 fra.me.has_broke = 0;
1278 fra.me.REG_size = 1;
1279 fra.me.REG[0] = NIT_NULL;
1280 fra.me.REG[0] = p0;
1281 fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[0]);
1282 /* ./analysis//allocate_iregister_slots.nit:283 */
1283 stack_frame_head = fra.me.prev;
1284 return fra.me.REG[0];
1285 }
1286 void allocate_iregister_slots___IRegister___slot_index__eq(val_t p0, val_t p1){
1287 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1288 val_t tmp;
1289 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1290 fra.me.file = LOCATE_allocate_iregister_slots;
1291 fra.me.line = 283;
1292 fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___slot_index__eq;
1293 fra.me.has_broke = 0;
1294 fra.me.REG_size = 2;
1295 fra.me.REG[0] = NIT_NULL;
1296 fra.me.REG[1] = NIT_NULL;
1297 fra.me.REG[0] = p0;
1298 fra.me.REG[1] = p1;
1299 /* ./analysis//allocate_iregister_slots.nit:283 */
1300 ATTR_allocate_iregister_slots___IRegister____slot_index(fra.me.REG[0]) = fra.me.REG[1];
1301 stack_frame_head = fra.me.prev;
1302 return;
1303 }
1304 val_t allocate_iregister_slots___IRegister___is_local(val_t p0){
1305 struct {struct stack_frame_t me;} fra;
1306 val_t REGB0;
1307 val_t tmp;
1308 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1309 fra.me.file = LOCATE_allocate_iregister_slots;
1310 fra.me.line = 288;
1311 fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___is_local;
1312 fra.me.has_broke = 0;
1313 fra.me.REG_size = 1;
1314 fra.me.REG[0] = NIT_NULL;
1315 fra.me.REG[0] = p0;
1316 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[0])!=NIT_NULL);
1317 /* ./analysis//allocate_iregister_slots.nit:288 */
1318 if (UNTAG_Bool(REGB0)) {
1319 } else {
1320 fprintf(stderr, "Uninitialized attribute %s", "_is_local");
1321 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 288);
1322 nit_exit(1);
1323 }
1324 REGB0 = ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[0]);
1325 stack_frame_head = fra.me.prev;
1326 return REGB0;
1327 }
1328 void allocate_iregister_slots___IRegister___is_local__eq(val_t p0, val_t p1){
1329 struct {struct stack_frame_t me;} fra;
1330 val_t REGB0;
1331 val_t tmp;
1332 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1333 fra.me.file = LOCATE_allocate_iregister_slots;
1334 fra.me.line = 288;
1335 fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___is_local__eq;
1336 fra.me.has_broke = 0;
1337 fra.me.REG_size = 1;
1338 fra.me.REG[0] = NIT_NULL;
1339 fra.me.REG[0] = p0;
1340 REGB0 = p1;
1341 /* ./analysis//allocate_iregister_slots.nit:288 */
1342 ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[0]) = REGB0;
1343 stack_frame_head = fra.me.prev;
1344 return;
1345 }
1346 val_t allocate_iregister_slots___IRegister___local_iroutine(val_t p0){
1347 struct {struct stack_frame_t me;} fra;
1348 val_t tmp;
1349 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1350 fra.me.file = LOCATE_allocate_iregister_slots;
1351 fra.me.line = 291;
1352 fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___local_iroutine;
1353 fra.me.has_broke = 0;
1354 fra.me.REG_size = 1;
1355 fra.me.REG[0] = NIT_NULL;
1356 fra.me.REG[0] = p0;
1357 fra.me.REG[0] = ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[0]);
1358 /* ./analysis//allocate_iregister_slots.nit:291 */
1359 stack_frame_head = fra.me.prev;
1360 return fra.me.REG[0];
1361 }
1362 void allocate_iregister_slots___IRegister___local_iroutine__eq(val_t p0, val_t p1){
1363 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1364 val_t tmp;
1365 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1366 fra.me.file = LOCATE_allocate_iregister_slots;
1367 fra.me.line = 291;
1368 fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___local_iroutine__eq;
1369 fra.me.has_broke = 0;
1370 fra.me.REG_size = 2;
1371 fra.me.REG[0] = NIT_NULL;
1372 fra.me.REG[1] = NIT_NULL;
1373 fra.me.REG[0] = p0;
1374 fra.me.REG[1] = p1;
1375 /* ./analysis//allocate_iregister_slots.nit:291 */
1376 ATTR_allocate_iregister_slots___IRegister____local_iroutine(fra.me.REG[0]) = fra.me.REG[1];
1377 stack_frame_head = fra.me.prev;
1378 return;
1379 }
1380 val_t allocate_iregister_slots___IRegister___in_tag_slots(val_t p0){
1381 struct {struct stack_frame_t me;} fra;
1382 val_t REGB0;
1383 val_t tmp;
1384 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1385 fra.me.file = LOCATE_allocate_iregister_slots;
1386 fra.me.line = 294;
1387 fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___in_tag_slots;
1388 fra.me.has_broke = 0;
1389 fra.me.REG_size = 1;
1390 fra.me.REG[0] = NIT_NULL;
1391 fra.me.REG[0] = p0;
1392 REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0])!=NIT_NULL);
1393 /* ./analysis//allocate_iregister_slots.nit:294 */
1394 if (UNTAG_Bool(REGB0)) {
1395 } else {
1396 fprintf(stderr, "Uninitialized attribute %s", "_in_tag_slots");
1397 fprintf(stderr, " (%s:%d)\n", LOCATE_allocate_iregister_slots, 294);
1398 nit_exit(1);
1399 }
1400 REGB0 = ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0]);
1401 stack_frame_head = fra.me.prev;
1402 return REGB0;
1403 }
1404 void allocate_iregister_slots___IRegister___in_tag_slots__eq(val_t p0, val_t p1){
1405 struct {struct stack_frame_t me;} fra;
1406 val_t REGB0;
1407 val_t tmp;
1408 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1409 fra.me.file = LOCATE_allocate_iregister_slots;
1410 fra.me.line = 294;
1411 fra.me.meth = LOCATE_allocate_iregister_slots___IRegister___in_tag_slots__eq;
1412 fra.me.has_broke = 0;
1413 fra.me.REG_size = 1;
1414 fra.me.REG[0] = NIT_NULL;
1415 fra.me.REG[0] = p0;
1416 REGB0 = p1;
1417 /* ./analysis//allocate_iregister_slots.nit:294 */
1418 ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0]) = REGB0;
1419 stack_frame_head = fra.me.prev;
1420 return;
1421 }