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