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