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