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