ead4b2b09a91d94cd7e96e63e68e40e3d0967d7c
[nit.git] / c_src / global___rta_analysis._sep.c
1 /* This C file is generated by NIT to compile module global___rta_analysis. */
2 #include "global___rta_analysis._sep.h"
3 void global___rta_analysis___RtaContext___init(val_t p0, int* init_table){
4 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_global___rta_analysis___RtaContext].i;
5 struct {struct stack_frame_t me;} fra;
6 val_t tmp;
7 if (init_table[itpos0]) return;
8 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9 fra.me.file = LOCATE_global___rta_analysis;
10 fra.me.line = 28;
11 fra.me.meth = LOCATE_global___rta_analysis___RtaContext___init;
12 fra.me.has_broke = 0;
13 fra.me.REG_size = 1;
14 fra.me.nitni_local_ref_head = NULL;
15 fra.me.REG[0] = NIT_NULL;
16 fra.me.REG[0] = p0;
17 stack_frame_head = fra.me.prev;
18 init_table[itpos0] = 1;
19 return;
20 }
21 val_t global___rta_analysis___RtaContext___instanciated_classes(val_t p0){
22 struct {struct stack_frame_t me;} fra;
23 val_t REGB0;
24 val_t tmp;
25 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
26 fra.me.file = LOCATE_global___rta_analysis;
27 fra.me.line = 29;
28 fra.me.meth = LOCATE_global___rta_analysis___RtaContext___instanciated_classes;
29 fra.me.has_broke = 0;
30 fra.me.REG_size = 1;
31 fra.me.nitni_local_ref_head = NULL;
32 fra.me.REG[0] = NIT_NULL;
33 fra.me.REG[0] = p0;
34 /* global/rta_analysis.nit:29 */
35 REGB0 = TAG_Bool(ATTR_global___rta_analysis___RtaContext____instanciated_classes(fra.me.REG[0])!=NIT_NULL);
36 if (UNTAG_Bool(REGB0)) {
37 } else {
38 nit_abort("Uninitialized attribute %s", "_instanciated_classes", LOCATE_global___rta_analysis, 29);
39 }
40 fra.me.REG[0] = ATTR_global___rta_analysis___RtaContext____instanciated_classes(fra.me.REG[0]);
41 stack_frame_head = fra.me.prev;
42 return fra.me.REG[0];
43 }
44 val_t global___rta_analysis___RtaContext___is_class_instantiated(val_t p0, val_t p1){
45 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
46 val_t REGB0;
47 val_t tmp;
48 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
49 fra.me.file = LOCATE_global___rta_analysis;
50 fra.me.line = 31;
51 fra.me.meth = LOCATE_global___rta_analysis___RtaContext___is_class_instantiated;
52 fra.me.has_broke = 0;
53 fra.me.REG_size = 2;
54 fra.me.nitni_local_ref_head = NULL;
55 fra.me.REG[0] = NIT_NULL;
56 fra.me.REG[1] = NIT_NULL;
57 fra.me.REG[0] = p0;
58 fra.me.REG[1] = p1;
59 /* global/rta_analysis.nit:31 */
60 fra.me.REG[0] = CALL_global___rta_analysis___RtaContext___instanciated_classes(fra.me.REG[0])(fra.me.REG[0]);
61 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
62 goto label1;
63 label1: while(0);
64 stack_frame_head = fra.me.prev;
65 return REGB0;
66 }
67 val_t global___rta_analysis___RtaContext___reachable_iroutines(val_t p0){
68 struct {struct stack_frame_t me;} fra;
69 val_t REGB0;
70 val_t tmp;
71 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
72 fra.me.file = LOCATE_global___rta_analysis;
73 fra.me.line = 33;
74 fra.me.meth = LOCATE_global___rta_analysis___RtaContext___reachable_iroutines;
75 fra.me.has_broke = 0;
76 fra.me.REG_size = 1;
77 fra.me.nitni_local_ref_head = NULL;
78 fra.me.REG[0] = NIT_NULL;
79 fra.me.REG[0] = p0;
80 /* global/rta_analysis.nit:33 */
81 REGB0 = TAG_Bool(ATTR_global___rta_analysis___RtaContext____reachable_iroutines(fra.me.REG[0])!=NIT_NULL);
82 if (UNTAG_Bool(REGB0)) {
83 } else {
84 nit_abort("Uninitialized attribute %s", "_reachable_iroutines", LOCATE_global___rta_analysis, 33);
85 }
86 fra.me.REG[0] = ATTR_global___rta_analysis___RtaContext____reachable_iroutines(fra.me.REG[0]);
87 stack_frame_head = fra.me.prev;
88 return fra.me.REG[0];
89 }
90 val_t global___rta_analysis___RtaContext___is_iroutine_reachable(val_t p0, val_t p1){
91 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
92 val_t REGB0;
93 val_t REGB1;
94 val_t tmp;
95 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
96 fra.me.file = LOCATE_global___rta_analysis;
97 fra.me.line = 35;
98 fra.me.meth = LOCATE_global___rta_analysis___RtaContext___is_iroutine_reachable;
99 fra.me.has_broke = 0;
100 fra.me.REG_size = 2;
101 fra.me.nitni_local_ref_head = NULL;
102 fra.me.REG[0] = NIT_NULL;
103 fra.me.REG[1] = NIT_NULL;
104 fra.me.REG[0] = p0;
105 fra.me.REG[1] = p1;
106 /* global/rta_analysis.nit:36 */
107 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
108 if (UNTAG_Bool(REGB0)) {
109 } else {
110 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
111 if (UNTAG_Bool(REGB1)) {
112 REGB1 = TAG_Bool(false);
113 REGB0 = REGB1;
114 } else {
115 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
116 REGB0 = REGB1;
117 }
118 }
119 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
120 if (UNTAG_Bool(REGB0)) {
121 fra.me.REG[0] = CALL_global___rta_analysis___RtaContext___reachable_iroutines(fra.me.REG[0])(fra.me.REG[0]);
122 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
123 } else {
124 REGB1 = TAG_Bool(false);
125 REGB0 = REGB1;
126 }
127 goto label1;
128 label1: while(0);
129 stack_frame_head = fra.me.prev;
130 return REGB0;
131 }
132 val_t global___rta_analysis___RtaContext___is_method_reachable(val_t p0, val_t p1){
133 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
134 val_t REGB0;
135 val_t tmp;
136 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
137 fra.me.file = LOCATE_global___rta_analysis;
138 fra.me.line = 39;
139 fra.me.meth = LOCATE_global___rta_analysis___RtaContext___is_method_reachable;
140 fra.me.has_broke = 0;
141 fra.me.REG_size = 2;
142 fra.me.nitni_local_ref_head = NULL;
143 fra.me.REG[0] = NIT_NULL;
144 fra.me.REG[1] = NIT_NULL;
145 fra.me.REG[0] = p0;
146 fra.me.REG[1] = p1;
147 /* global/rta_analysis.nit:40 */
148 fra.me.REG[1] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[1])(fra.me.REG[1]);
149 REGB0 = CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
150 goto label1;
151 label1: while(0);
152 stack_frame_head = fra.me.prev;
153 return REGB0;
154 }
155 val_t global___rta_analysis___RtaBuilder___context(val_t p0){
156 struct {struct stack_frame_t me;} fra;
157 val_t REGB0;
158 val_t tmp;
159 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
160 fra.me.file = LOCATE_global___rta_analysis;
161 fra.me.line = 45;
162 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___context;
163 fra.me.has_broke = 0;
164 fra.me.REG_size = 1;
165 fra.me.nitni_local_ref_head = NULL;
166 fra.me.REG[0] = NIT_NULL;
167 fra.me.REG[0] = p0;
168 /* global/rta_analysis.nit:45 */
169 REGB0 = TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____context(fra.me.REG[0])!=NIT_NULL);
170 if (UNTAG_Bool(REGB0)) {
171 } else {
172 nit_abort("Uninitialized attribute %s", "_context", LOCATE_global___rta_analysis, 45);
173 }
174 fra.me.REG[0] = ATTR_global___rta_analysis___RtaBuilder____context(fra.me.REG[0]);
175 stack_frame_head = fra.me.prev;
176 return fra.me.REG[0];
177 }
178 val_t global___rta_analysis___RtaBuilder___program(val_t p0){
179 struct {struct stack_frame_t me;} fra;
180 val_t REGB0;
181 val_t tmp;
182 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
183 fra.me.file = LOCATE_global___rta_analysis;
184 fra.me.line = 46;
185 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___program;
186 fra.me.has_broke = 0;
187 fra.me.REG_size = 1;
188 fra.me.nitni_local_ref_head = NULL;
189 fra.me.REG[0] = NIT_NULL;
190 fra.me.REG[0] = p0;
191 /* global/rta_analysis.nit:46 */
192 REGB0 = TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____program(fra.me.REG[0])!=NIT_NULL);
193 if (UNTAG_Bool(REGB0)) {
194 } else {
195 nit_abort("Uninitialized attribute %s", "_program", LOCATE_global___rta_analysis, 46);
196 }
197 fra.me.REG[0] = ATTR_global___rta_analysis___RtaBuilder____program(fra.me.REG[0]);
198 stack_frame_head = fra.me.prev;
199 return fra.me.REG[0];
200 }
201 val_t global___rta_analysis___RtaBuilder___iroutine_to_search(val_t p0){
202 struct {struct stack_frame_t me;} fra;
203 val_t REGB0;
204 val_t tmp;
205 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
206 fra.me.file = LOCATE_global___rta_analysis;
207 fra.me.line = 47;
208 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___iroutine_to_search;
209 fra.me.has_broke = 0;
210 fra.me.REG_size = 1;
211 fra.me.nitni_local_ref_head = NULL;
212 fra.me.REG[0] = NIT_NULL;
213 fra.me.REG[0] = p0;
214 /* global/rta_analysis.nit:47 */
215 REGB0 = TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____iroutine_to_search(fra.me.REG[0])!=NIT_NULL);
216 if (UNTAG_Bool(REGB0)) {
217 } else {
218 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_global___rta_analysis, 47);
219 }
220 fra.me.REG[0] = ATTR_global___rta_analysis___RtaBuilder____iroutine_to_search(fra.me.REG[0]);
221 stack_frame_head = fra.me.prev;
222 return fra.me.REG[0];
223 }
224 val_t global___rta_analysis___RtaBuilder___call_sites(val_t p0){
225 struct {struct stack_frame_t me;} fra;
226 val_t REGB0;
227 val_t tmp;
228 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
229 fra.me.file = LOCATE_global___rta_analysis;
230 fra.me.line = 48;
231 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___call_sites;
232 fra.me.has_broke = 0;
233 fra.me.REG_size = 1;
234 fra.me.nitni_local_ref_head = NULL;
235 fra.me.REG[0] = NIT_NULL;
236 fra.me.REG[0] = p0;
237 /* global/rta_analysis.nit:48 */
238 REGB0 = TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____call_sites(fra.me.REG[0])!=NIT_NULL);
239 if (UNTAG_Bool(REGB0)) {
240 } else {
241 nit_abort("Uninitialized attribute %s", "_call_sites", LOCATE_global___rta_analysis, 48);
242 }
243 fra.me.REG[0] = ATTR_global___rta_analysis___RtaBuilder____call_sites(fra.me.REG[0]);
244 stack_frame_head = fra.me.prev;
245 return fra.me.REG[0];
246 }
247 val_t global___rta_analysis___RtaBuilder___called_methods(val_t p0){
248 struct {struct stack_frame_t me;} fra;
249 val_t REGB0;
250 val_t tmp;
251 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
252 fra.me.file = LOCATE_global___rta_analysis;
253 fra.me.line = 49;
254 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___called_methods;
255 fra.me.has_broke = 0;
256 fra.me.REG_size = 1;
257 fra.me.nitni_local_ref_head = NULL;
258 fra.me.REG[0] = NIT_NULL;
259 fra.me.REG[0] = p0;
260 /* global/rta_analysis.nit:49 */
261 REGB0 = TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____called_methods(fra.me.REG[0])!=NIT_NULL);
262 if (UNTAG_Bool(REGB0)) {
263 } else {
264 nit_abort("Uninitialized attribute %s", "_called_methods", LOCATE_global___rta_analysis, 49);
265 }
266 fra.me.REG[0] = ATTR_global___rta_analysis___RtaBuilder____called_methods(fra.me.REG[0]);
267 stack_frame_head = fra.me.prev;
268 return fra.me.REG[0];
269 }
270 void global___rta_analysis___RtaBuilder___init(val_t p0, val_t p1, int* init_table){
271 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_global___rta_analysis___RtaBuilder].i;
272 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
273 val_t tmp;
274 if (init_table[itpos1]) return;
275 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
276 fra.me.file = LOCATE_global___rta_analysis;
277 fra.me.line = 51;
278 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___init;
279 fra.me.has_broke = 0;
280 fra.me.REG_size = 3;
281 fra.me.nitni_local_ref_head = NULL;
282 fra.me.REG[0] = NIT_NULL;
283 fra.me.REG[1] = NIT_NULL;
284 fra.me.REG[2] = NIT_NULL;
285 fra.me.REG[0] = p0;
286 fra.me.REG[1] = p1;
287 /* global/rta_analysis.nit:52 */
288 fra.me.REG[2] = NEW_RtaContext_global___rta_analysis___RtaContext___init();
289 ATTR_global___rta_analysis___RtaBuilder____context(fra.me.REG[0]) = fra.me.REG[2];
290 /* global/rta_analysis.nit:53 */
291 ATTR_global___rta_analysis___RtaBuilder____program(fra.me.REG[0]) = fra.me.REG[1];
292 stack_frame_head = fra.me.prev;
293 init_table[itpos1] = 1;
294 return;
295 }
296 val_t global___rta_analysis___RtaBuilder___check_method(val_t p0, val_t p1){
297 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
298 val_t REGB0;
299 val_t tmp;
300 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
301 fra.me.file = LOCATE_global___rta_analysis;
302 fra.me.line = 56;
303 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___check_method;
304 fra.me.has_broke = 0;
305 fra.me.REG_size = 4;
306 fra.me.nitni_local_ref_head = NULL;
307 fra.me.REG[0] = NIT_NULL;
308 fra.me.REG[1] = NIT_NULL;
309 fra.me.REG[2] = NIT_NULL;
310 fra.me.REG[3] = NIT_NULL;
311 fra.me.REG[0] = p0;
312 fra.me.REG[1] = p1;
313 /* global/rta_analysis.nit:60 */
314 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[1])(fra.me.REG[1]);
315 fra.me.REG[3] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
316 fra.me.REG[3] = CALL_program___Program___main_module(fra.me.REG[3])(fra.me.REG[3]);
317 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
318 /* global/rta_analysis.nit:62 */
319 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___context(fra.me.REG[0])(fra.me.REG[0]);
320 REGB0 = CALL_global___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
321 if (UNTAG_Bool(REGB0)) {
322 REGB0 = TAG_Bool(true);
323 fra.me.REG[2] = REGB0;
324 goto label1;
325 }
326 /* global/rta_analysis.nit:64 */
327 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[3])(fra.me.REG[3]);
328 fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra.me.REG[3])(fra.me.REG[3]);
329 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_global___rta_analysis___RtaBuilder___check_method_2));
330 switch ((&(fra.me))->has_broke) {
331 case 0: break;
332 case 1: (&(fra.me))->has_broke = 0; goto label1;
333 }
334 /* global/rta_analysis.nit:68 */
335 REGB0 = TAG_Bool(false);
336 fra.me.REG[2] = REGB0;
337 goto label1;
338 label1: while(0);
339 stack_frame_head = fra.me.prev;
340 return fra.me.REG[2];
341 }
342 void OC_global___rta_analysis___RtaBuilder___check_method_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
343 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
344 val_t REGB0;
345 val_t REGB1;
346 fun_t CREG[1];
347 val_t tmp;
348 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
349 fra.me.file = LOCATE_global___rta_analysis;
350 fra.me.line = 0;
351 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___check_method;
352 fra.me.has_broke = 0;
353 fra.me.REG_size = 2;
354 fra.me.nitni_local_ref_head = NULL;
355 fra.me.REG[0] = NIT_NULL;
356 fra.me.REG[1] = NIT_NULL;
357 fra.me.closure_ctx = closctx_param;
358 fra.me.closure_funs = CREG;
359 fra.me.REG[0] = p0;
360 CREG[0] = clos_fun0;
361 /* global/rta_analysis.nit:65 */
362 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(closctx->REG[1])(closctx->REG[1]);
363 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
364 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],closctx->REG[1]));
365 if (UNTAG_Bool(REGB0)) {
366 } else {
367 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[1]);
368 REGB0 = REGB1;
369 }
370 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
371 if (UNTAG_Bool(REGB0)) {
372 goto label3;
373 }
374 /* global/rta_analysis.nit:66 */
375 fra.me.REG[1] = CALL_global___rta_analysis___RtaBuilder___context(closctx->REG[0])(closctx->REG[0]);
376 REGB0 = CALL_global___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
377 if (UNTAG_Bool(REGB0)) {
378 REGB0 = TAG_Bool(true);
379 closctx->REG[2] = REGB0;
380 closctx->has_broke = 1;
381 goto label3;
382 }
383 label3: while(0);
384 stack_frame_head = fra.me.prev;
385 return;
386 }
387 void global___rta_analysis___RtaBuilder___check_call_sites(val_t p0){
388 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
389 val_t tmp;
390 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
391 fra.me.file = LOCATE_global___rta_analysis;
392 fra.me.line = 71;
393 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___check_call_sites;
394 fra.me.has_broke = 0;
395 fra.me.REG_size = 3;
396 fra.me.nitni_local_ref_head = NULL;
397 fra.me.REG[0] = NIT_NULL;
398 fra.me.REG[1] = NIT_NULL;
399 fra.me.REG[2] = NIT_NULL;
400 fra.me.REG[0] = p0;
401 /* global/rta_analysis.nit:74 */
402 fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
403 /* global/rta_analysis.nit:75 */
404 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___call_sites(fra.me.REG[0])(fra.me.REG[0]);
405 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_global___rta_analysis___RtaBuilder___check_call_sites_1));
406 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_global___rta_analysis___RtaBuilder___check_call_sites_4));
407 stack_frame_head = fra.me.prev;
408 return;
409 }
410 void OC_global___rta_analysis___RtaBuilder___check_call_sites_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
411 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
412 val_t REGB0;
413 fun_t CREG[1];
414 val_t tmp;
415 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
416 fra.me.file = LOCATE_global___rta_analysis;
417 fra.me.line = 0;
418 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___check_call_sites;
419 fra.me.has_broke = 0;
420 fra.me.REG_size = 3;
421 fra.me.nitni_local_ref_head = NULL;
422 fra.me.REG[0] = NIT_NULL;
423 fra.me.REG[1] = NIT_NULL;
424 fra.me.REG[2] = NIT_NULL;
425 fra.me.closure_ctx = closctx_param;
426 fra.me.closure_funs = CREG;
427 fra.me.REG[0] = p0;
428 CREG[0] = clos_fun0;
429 /* global/rta_analysis.nit:76 */
430 fra.me.REG[1] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
431 /* global/rta_analysis.nit:77 */
432 REGB0 = TAG_Bool(true);
433 closctx->REG[2] = REGB0;
434 /* global/rta_analysis.nit:80 */
435 REGB0 = CALL_global___rta_analysis___RtaBuilder___check_method(closctx->REG[0])(closctx->REG[0], fra.me.REG[1]);
436 if (UNTAG_Bool(REGB0)) {
437 /* global/rta_analysis.nit:81 */
438 fra.me.REG[2] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[1])(fra.me.REG[1]);
439 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx->REG[0])(closctx->REG[0], fra.me.REG[2]);
440 } else {
441 /* global/rta_analysis.nit:83 */
442 REGB0 = TAG_Bool(false);
443 closctx->REG[2] = REGB0;
444 }
445 /* global/rta_analysis.nit:87 */
446 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[1])(fra.me.REG[1]);
447 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra.me.REG[1])(fra.me.REG[1]);
448 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], closctx, ((fun_t)OC_global___rta_analysis___RtaBuilder___check_call_sites_2));
449 /* global/rta_analysis.nit:96 */
450 if (UNTAG_Bool(closctx->REG[2])) {
451 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
452 }
453 stack_frame_head = fra.me.prev;
454 return;
455 }
456 void OC_global___rta_analysis___RtaBuilder___check_call_sites_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
457 struct {struct stack_frame_t me;} fra;
458 val_t REGB0;
459 fun_t CREG[1];
460 val_t tmp;
461 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
462 fra.me.file = LOCATE_global___rta_analysis;
463 fra.me.line = 0;
464 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___check_call_sites;
465 fra.me.has_broke = 0;
466 fra.me.REG_size = 1;
467 fra.me.nitni_local_ref_head = NULL;
468 fra.me.REG[0] = NIT_NULL;
469 fra.me.closure_ctx = closctx_param;
470 fra.me.closure_funs = CREG;
471 fra.me.REG[0] = p0;
472 CREG[0] = clos_fun0;
473 /* global/rta_analysis.nit:88 */
474 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
475 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
476 if (UNTAG_Bool(REGB0)) {
477 goto label3;
478 }
479 /* global/rta_analysis.nit:89 */
480 REGB0 = CALL_global___rta_analysis___RtaBuilder___check_method(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
481 if (UNTAG_Bool(REGB0)) {
482 /* global/rta_analysis.nit:90 */
483 fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
484 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
485 } else {
486 /* global/rta_analysis.nit:92 */
487 REGB0 = TAG_Bool(false);
488 closctx->REG[2] = REGB0;
489 }
490 label3: while(0);
491 stack_frame_head = fra.me.prev;
492 return;
493 }
494 void OC_global___rta_analysis___RtaBuilder___check_call_sites_4(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
495 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
496 fun_t CREG[1];
497 val_t tmp;
498 /* global/rta_analysis.nit:100 */
499 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
500 fra.me.file = LOCATE_global___rta_analysis;
501 fra.me.line = 0;
502 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___check_call_sites;
503 fra.me.has_broke = 0;
504 fra.me.REG_size = 2;
505 fra.me.nitni_local_ref_head = NULL;
506 fra.me.REG[0] = NIT_NULL;
507 fra.me.REG[1] = NIT_NULL;
508 fra.me.closure_ctx = closctx_param;
509 fra.me.closure_funs = CREG;
510 fra.me.REG[0] = p0;
511 CREG[0] = clos_fun0;
512 /* global/rta_analysis.nit:101 */
513 fra.me.REG[1] = CALL_global___rta_analysis___RtaBuilder___call_sites(closctx->REG[0])(closctx->REG[0]);
514 CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
515 stack_frame_head = fra.me.prev;
516 return;
517 }
518 void global___rta_analysis___RtaBuilder___add_instantiated_class(val_t p0, val_t p1){
519 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
520 val_t REGB0;
521 val_t tmp;
522 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
523 fra.me.file = LOCATE_global___rta_analysis;
524 fra.me.line = 105;
525 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___add_instantiated_class;
526 fra.me.has_broke = 0;
527 fra.me.REG_size = 3;
528 fra.me.nitni_local_ref_head = NULL;
529 fra.me.REG[0] = NIT_NULL;
530 fra.me.REG[1] = NIT_NULL;
531 fra.me.REG[2] = NIT_NULL;
532 fra.me.REG[0] = p0;
533 fra.me.REG[1] = p1;
534 /* global/rta_analysis.nit:106 */
535 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___context(fra.me.REG[0])(fra.me.REG[0]);
536 REGB0 = CALL_global___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
537 if (UNTAG_Bool(REGB0)) {
538 goto label1;
539 }
540 /* global/rta_analysis.nit:107 */
541 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___context(fra.me.REG[0])(fra.me.REG[0]);
542 fra.me.REG[2] = CALL_global___rta_analysis___RtaContext___instanciated_classes(fra.me.REG[2])(fra.me.REG[2]);
543 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
544 /* global/rta_analysis.nit:109 */
545 CALL_global___rta_analysis___RtaBuilder___check_call_sites(fra.me.REG[0])(fra.me.REG[0]);
546 label1: while(0);
547 stack_frame_head = fra.me.prev;
548 return;
549 }
550 void global___rta_analysis___RtaBuilder___add_reachable_call(val_t p0, val_t p1){
551 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
552 val_t REGB0;
553 val_t tmp;
554 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
555 fra.me.file = LOCATE_global___rta_analysis;
556 fra.me.line = 112;
557 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___add_reachable_call;
558 fra.me.has_broke = 0;
559 fra.me.REG_size = 4;
560 fra.me.nitni_local_ref_head = NULL;
561 fra.me.REG[0] = NIT_NULL;
562 fra.me.REG[1] = NIT_NULL;
563 fra.me.REG[2] = NIT_NULL;
564 fra.me.REG[3] = NIT_NULL;
565 fra.me.REG[0] = p0;
566 fra.me.REG[1] = p1;
567 /* global/rta_analysis.nit:113 */
568 fra.me.REG[2] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[1])(fra.me.REG[1]);
569 /* global/rta_analysis.nit:114 */
570 fra.me.REG[3] = CALL_global___rta_analysis___RtaBuilder___called_methods(fra.me.REG[0])(fra.me.REG[0]);
571 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
572 if (UNTAG_Bool(REGB0)) {
573 goto label1;
574 }
575 /* global/rta_analysis.nit:115 */
576 fra.me.REG[3] = CALL_global___rta_analysis___RtaBuilder___call_sites(fra.me.REG[0])(fra.me.REG[0]);
577 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
578 if (UNTAG_Bool(REGB0)) {
579 goto label1;
580 }
581 /* global/rta_analysis.nit:117 */
582 fra.me.REG[3] = CALL_global___rta_analysis___RtaBuilder___call_sites(fra.me.REG[0])(fra.me.REG[0]);
583 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
584 /* global/rta_analysis.nit:118 */
585 fra.me.REG[1] = CALL_global___rta_analysis___RtaBuilder___called_methods(fra.me.REG[0])(fra.me.REG[0]);
586 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
587 /* global/rta_analysis.nit:119 */
588 CALL_global___rta_analysis___RtaBuilder___check_call_sites(fra.me.REG[0])(fra.me.REG[0]);
589 label1: while(0);
590 stack_frame_head = fra.me.prev;
591 return;
592 }
593 void global___rta_analysis___RtaBuilder___add_reachable_iroutine(val_t p0, val_t p1){
594 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
595 val_t REGB0;
596 val_t REGB1;
597 val_t tmp;
598 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
599 fra.me.file = LOCATE_global___rta_analysis;
600 fra.me.line = 122;
601 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___add_reachable_iroutine;
602 fra.me.has_broke = 0;
603 fra.me.REG_size = 3;
604 fra.me.nitni_local_ref_head = NULL;
605 fra.me.REG[0] = NIT_NULL;
606 fra.me.REG[1] = NIT_NULL;
607 fra.me.REG[2] = NIT_NULL;
608 fra.me.REG[0] = p0;
609 fra.me.REG[1] = p1;
610 /* global/rta_analysis.nit:123 */
611 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
612 if (UNTAG_Bool(REGB0)) {
613 } else {
614 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
615 if (UNTAG_Bool(REGB1)) {
616 REGB1 = TAG_Bool(false);
617 REGB0 = REGB1;
618 } else {
619 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
620 REGB0 = REGB1;
621 }
622 }
623 if (UNTAG_Bool(REGB0)) {
624 REGB0 = TAG_Bool(true);
625 } else {
626 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___context(fra.me.REG[0])(fra.me.REG[0]);
627 REGB1 = CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
628 REGB0 = REGB1;
629 }
630 if (UNTAG_Bool(REGB0)) {
631 goto label1;
632 }
633 /* global/rta_analysis.nit:124 */
634 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___context(fra.me.REG[0])(fra.me.REG[0]);
635 fra.me.REG[2] = CALL_global___rta_analysis___RtaContext___reachable_iroutines(fra.me.REG[2])(fra.me.REG[2]);
636 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
637 /* global/rta_analysis.nit:125 */
638 fra.me.REG[0] = CALL_global___rta_analysis___RtaBuilder___iroutine_to_search(fra.me.REG[0])(fra.me.REG[0]);
639 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
640 label1: while(0);
641 stack_frame_head = fra.me.prev;
642 return;
643 }
644 void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
645 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
646 val_t REGB0;
647 val_t REGB1;
648 val_t REGB2;
649 val_t tmp;
650 static val_t once_value_1; /* Once value */
651 static val_t once_value_2; /* Once value */
652 static val_t once_value_3; /* Once value */
653 static val_t once_value_4; /* Once value */
654 static val_t once_value_5; /* Once value */
655 static val_t once_value_6; /* Once value */
656 static val_t once_value_7; /* Once value */
657 static val_t once_value_8; /* Once value */
658 static val_t once_value_9; /* Once value */
659 static val_t once_value_10; /* Once value */
660 static val_t once_value_13; /* Once value */
661 static val_t once_value_14; /* Once value */
662 static val_t once_value_16; /* Once value */
663 static val_t once_value_17; /* Once value */
664 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
665 fra.me.file = LOCATE_global___rta_analysis;
666 fra.me.line = 128;
667 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis;
668 fra.me.has_broke = 0;
669 fra.me.REG_size = 6;
670 fra.me.nitni_local_ref_head = NULL;
671 fra.me.REG[0] = NIT_NULL;
672 fra.me.REG[1] = NIT_NULL;
673 fra.me.REG[2] = NIT_NULL;
674 fra.me.REG[3] = NIT_NULL;
675 fra.me.REG[4] = NIT_NULL;
676 fra.me.REG[5] = NIT_NULL;
677 fra.me.REG[0] = p0;
678 /* global/rta_analysis.nit:130 */
679 REGB0 = TAG_Int(10);
680 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
681 if (!once_value_1) {
682 fra.me.REG[2] = BOX_NativeString("Object");
683 REGB0 = TAG_Int(6);
684 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
685 once_value_1 = fra.me.REG[2];
686 register_static_object(&once_value_1);
687 } else fra.me.REG[2] = once_value_1;
688 fra.me.REG[2] = fra.me.REG[2];
689 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
690 if (!once_value_2) {
691 fra.me.REG[2] = BOX_NativeString("Bool");
692 REGB0 = TAG_Int(4);
693 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
694 once_value_2 = fra.me.REG[2];
695 register_static_object(&once_value_2);
696 } else fra.me.REG[2] = once_value_2;
697 fra.me.REG[2] = fra.me.REG[2];
698 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
699 if (!once_value_3) {
700 fra.me.REG[2] = BOX_NativeString("Float");
701 REGB0 = TAG_Int(5);
702 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
703 once_value_3 = fra.me.REG[2];
704 register_static_object(&once_value_3);
705 } else fra.me.REG[2] = once_value_3;
706 fra.me.REG[2] = fra.me.REG[2];
707 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
708 if (!once_value_4) {
709 fra.me.REG[2] = BOX_NativeString("Int");
710 REGB0 = TAG_Int(3);
711 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
712 once_value_4 = fra.me.REG[2];
713 register_static_object(&once_value_4);
714 } else fra.me.REG[2] = once_value_4;
715 fra.me.REG[2] = fra.me.REG[2];
716 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
717 if (!once_value_5) {
718 fra.me.REG[2] = BOX_NativeString("String");
719 REGB0 = TAG_Int(6);
720 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
721 once_value_5 = fra.me.REG[2];
722 register_static_object(&once_value_5);
723 } else fra.me.REG[2] = once_value_5;
724 fra.me.REG[2] = fra.me.REG[2];
725 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
726 if (!once_value_6) {
727 fra.me.REG[2] = BOX_NativeString("NativeString");
728 REGB0 = TAG_Int(12);
729 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
730 once_value_6 = fra.me.REG[2];
731 register_static_object(&once_value_6);
732 } else fra.me.REG[2] = once_value_6;
733 fra.me.REG[2] = fra.me.REG[2];
734 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
735 if (!once_value_7) {
736 fra.me.REG[2] = BOX_NativeString("Range");
737 REGB0 = TAG_Int(5);
738 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
739 once_value_7 = fra.me.REG[2];
740 register_static_object(&once_value_7);
741 } else fra.me.REG[2] = once_value_7;
742 fra.me.REG[2] = fra.me.REG[2];
743 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
744 if (!once_value_8) {
745 fra.me.REG[2] = BOX_NativeString("Array");
746 REGB0 = TAG_Int(5);
747 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
748 once_value_8 = fra.me.REG[2];
749 register_static_object(&once_value_8);
750 } else fra.me.REG[2] = once_value_8;
751 fra.me.REG[2] = fra.me.REG[2];
752 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
753 if (!once_value_9) {
754 fra.me.REG[2] = BOX_NativeString("ArrayIterator");
755 REGB0 = TAG_Int(13);
756 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
757 once_value_9 = fra.me.REG[2];
758 register_static_object(&once_value_9);
759 } else fra.me.REG[2] = once_value_9;
760 fra.me.REG[2] = fra.me.REG[2];
761 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
762 if (!once_value_10) {
763 fra.me.REG[2] = BOX_NativeString("Inline__");
764 REGB0 = TAG_Int(8);
765 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
766 once_value_10 = fra.me.REG[2];
767 register_static_object(&once_value_10);
768 } else fra.me.REG[2] = once_value_10;
769 fra.me.REG[2] = fra.me.REG[2];
770 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
771 /* ../lib/standard/collection/array.nit:269 */
772 REGB0 = TAG_Int(0);
773 /* ../lib/standard/collection/array.nit:270 */
774 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
775 if (UNTAG_Bool(REGB1)) {
776 } else {
777 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
778 }
779 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
780 /* ../lib/standard/collection/array.nit:271 */
781 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
782 /* ../lib/standard/collection/array.nit:272 */
783 while(1) {
784 /* ../lib/standard/collection/array.nit:24 */
785 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
786 if (UNTAG_Bool(REGB1)) {
787 } else {
788 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
789 }
790 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
791 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
792 if (UNTAG_Bool(REGB2)) {
793 } else {
794 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
795 }
796 /* ../lib/standard/kernel.nit:232 */
797 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
798 /* ../lib/standard/collection/array.nit:272 */
799 if (UNTAG_Bool(REGB1)) {
800 /* ../lib/standard/collection/array.nit:273 */
801 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
802 if (UNTAG_Bool(REGB1)) {
803 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
804 }
805 /* ../lib/standard/collection/array.nit:718 */
806 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
807 /* global/rta_analysis.nit:133 */
808 fra.me.REG[4] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
809 fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
810 fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
811 REGB1 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
812 REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
813 if (UNTAG_Bool(REGB1)) {
814 goto label11;
815 }
816 /* global/rta_analysis.nit:134 */
817 fra.me.REG[5] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
818 fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
819 fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
820 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
821 /* global/rta_analysis.nit:135 */
822 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
823 label11: while(0);
824 /* ../lib/standard/collection/array.nit:274 */
825 REGB1 = TAG_Int(1);
826 /* ../lib/standard/kernel.nit:235 */
827 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
828 /* ../lib/standard/collection/array.nit:274 */
829 REGB0 = REGB1;
830 } else {
831 /* ../lib/standard/collection/array.nit:272 */
832 goto label12;
833 }
834 }
835 label12: while(0);
836 /* global/rta_analysis.nit:138 */
837 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
838 fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[2])(fra.me.REG[2]);
839 if (!once_value_13) {
840 fra.me.REG[1] = BOX_NativeString("Inline__");
841 REGB0 = TAG_Int(8);
842 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
843 once_value_13 = fra.me.REG[1];
844 register_static_object(&once_value_13);
845 } else fra.me.REG[1] = once_value_13;
846 fra.me.REG[1] = fra.me.REG[1];
847 fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
848 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
849 if (UNTAG_Bool(REGB0)) {
850 /* global/rta_analysis.nit:139 */
851 fra.me.REG[1] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
852 fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[1])(fra.me.REG[1]);
853 if (!once_value_14) {
854 fra.me.REG[2] = BOX_NativeString("Inline__");
855 REGB0 = TAG_Int(8);
856 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
857 once_value_14 = fra.me.REG[2];
858 register_static_object(&once_value_14);
859 } else fra.me.REG[2] = once_value_14;
860 fra.me.REG[2] = fra.me.REG[2];
861 fra.me.REG[2] = CALL_standard___symbol___String___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
862 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
863 /* global/rta_analysis.nit:143 */
864 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[2])(fra.me.REG[2]);
865 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra.me.REG[2])(fra.me.REG[2]);
866 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_15));
867 }
868 /* global/rta_analysis.nit:148 */
869 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
870 fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[2])(fra.me.REG[2]);
871 if (!once_value_16) {
872 fra.me.REG[1] = BOX_NativeString("Pointer");
873 REGB0 = TAG_Int(7);
874 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
875 once_value_16 = fra.me.REG[1];
876 register_static_object(&once_value_16);
877 } else fra.me.REG[1] = once_value_16;
878 fra.me.REG[1] = fra.me.REG[1];
879 fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
880 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
881 if (UNTAG_Bool(REGB0)) {
882 /* global/rta_analysis.nit:149 */
883 fra.me.REG[1] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
884 fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[1])(fra.me.REG[1]);
885 if (!once_value_17) {
886 fra.me.REG[2] = BOX_NativeString("Pointer");
887 REGB0 = TAG_Int(7);
888 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
889 once_value_17 = fra.me.REG[2];
890 register_static_object(&once_value_17);
891 } else fra.me.REG[2] = once_value_17;
892 fra.me.REG[2] = fra.me.REG[2];
893 fra.me.REG[2] = CALL_standard___symbol___String___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
894 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
895 /* global/rta_analysis.nit:153 */
896 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[2])(fra.me.REG[2]);
897 fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra.me.REG[2])(fra.me.REG[2]);
898 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_18));
899 }
900 /* global/rta_analysis.nit:158 */
901 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
902 fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[2])(fra.me.REG[2]);
903 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___global_classes(fra.me.REG[2])(fra.me.REG[2]);
904 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_19));
905 /* global/rta_analysis.nit:165 */
906 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
907 CALL_program___Program___with_each_methods(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_21));
908 stack_frame_head = fra.me.prev;
909 return;
910 }
911 void OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_15(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
912 struct {struct stack_frame_t me;} fra;
913 fun_t CREG[1];
914 val_t tmp;
915 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
916 fra.me.file = LOCATE_global___rta_analysis;
917 fra.me.line = 0;
918 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis;
919 fra.me.has_broke = 0;
920 fra.me.REG_size = 1;
921 fra.me.nitni_local_ref_head = NULL;
922 fra.me.REG[0] = NIT_NULL;
923 fra.me.closure_ctx = closctx_param;
924 fra.me.closure_funs = CREG;
925 fra.me.REG[0] = p0;
926 CREG[0] = clos_fun0;
927 /* global/rta_analysis.nit:144 */
928 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
929 stack_frame_head = fra.me.prev;
930 return;
931 }
932 void OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_18(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
933 struct {struct stack_frame_t me;} fra;
934 fun_t CREG[1];
935 val_t tmp;
936 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
937 fra.me.file = LOCATE_global___rta_analysis;
938 fra.me.line = 0;
939 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis;
940 fra.me.has_broke = 0;
941 fra.me.REG_size = 1;
942 fra.me.nitni_local_ref_head = NULL;
943 fra.me.REG[0] = NIT_NULL;
944 fra.me.closure_ctx = closctx_param;
945 fra.me.closure_funs = CREG;
946 fra.me.REG[0] = p0;
947 CREG[0] = clos_fun0;
948 /* global/rta_analysis.nit:154 */
949 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
950 stack_frame_head = fra.me.prev;
951 return;
952 }
953 void OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_19(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
954 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
955 val_t REGB0;
956 val_t REGB1;
957 fun_t CREG[1];
958 val_t tmp;
959 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
960 fra.me.file = LOCATE_global___rta_analysis;
961 fra.me.line = 0;
962 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis;
963 fra.me.has_broke = 0;
964 fra.me.REG_size = 2;
965 fra.me.nitni_local_ref_head = NULL;
966 fra.me.REG[0] = NIT_NULL;
967 fra.me.REG[1] = NIT_NULL;
968 fra.me.closure_ctx = closctx_param;
969 fra.me.closure_funs = CREG;
970 fra.me.REG[0] = p0;
971 CREG[0] = clos_fun0;
972 /* global/rta_analysis.nit:159 */
973 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[0])(fra.me.REG[0]);
974 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
975 if (UNTAG_Bool(REGB0)) {
976 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[0])(fra.me.REG[0]);
977 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
978 } else {
979 REGB1 = TAG_Bool(false);
980 REGB0 = REGB1;
981 }
982 if (UNTAG_Bool(REGB0)) {
983 goto label20;
984 }
985 /* global/rta_analysis.nit:160 */
986 fra.me.REG[1] = CALL_global___rta_analysis___RtaBuilder___program(closctx->REG[0])(closctx->REG[0]);
987 fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[1])(fra.me.REG[1]);
988 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
989 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
990 label20: while(0);
991 stack_frame_head = fra.me.prev;
992 return;
993 }
994 void OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_21(struct stack_frame_t *closctx, val_t p0){
995 struct {struct stack_frame_t me;} fra;
996 val_t REGB0;
997 val_t tmp;
998 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
999 fra.me.file = LOCATE_global___rta_analysis;
1000 fra.me.line = 165;
1001 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis;
1002 fra.me.has_broke = 0;
1003 fra.me.REG_size = 1;
1004 fra.me.nitni_local_ref_head = NULL;
1005 fra.me.REG[0] = NIT_NULL;
1006 fra.me.REG[0] = p0;
1007 /* global/rta_analysis.nit:166 */
1008 REGB0 = CALL_metamodel___abstractmetamodel___MMMethod___is_extern(fra.me.REG[0])(fra.me.REG[0]);
1009 if (UNTAG_Bool(REGB0)) {
1010 /* global/rta_analysis.nit:167 */
1011 fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
1012 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
1013 }
1014 stack_frame_head = fra.me.prev;
1015 return;
1016 }
1017 void global___rta_analysis___RtaBuilder___work(val_t p0){
1018 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
1019 val_t REGB0;
1020 val_t REGB1;
1021 val_t REGB2;
1022 val_t tmp;
1023 static val_t once_value_1; /* Once value */
1024 static val_t once_value_2; /* Once value */
1025 static val_t once_value_3; /* Once value */
1026 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1027 fra.me.file = LOCATE_global___rta_analysis;
1028 fra.me.line = 172;
1029 fra.me.meth = LOCATE_global___rta_analysis___RtaBuilder___work;
1030 fra.me.has_broke = 0;
1031 fra.me.REG_size = 7;
1032 fra.me.nitni_local_ref_head = NULL;
1033 fra.me.REG[0] = NIT_NULL;
1034 fra.me.REG[1] = NIT_NULL;
1035 fra.me.REG[2] = NIT_NULL;
1036 fra.me.REG[3] = NIT_NULL;
1037 fra.me.REG[4] = NIT_NULL;
1038 fra.me.REG[5] = NIT_NULL;
1039 fra.me.REG[6] = NIT_NULL;
1040 fra.me.REG[0] = p0;
1041 /* global/rta_analysis.nit:172 */
1042 fra.me.REG[1] = fra.me.REG[0];
1043 /* global/rta_analysis.nit:174 */
1044 fra.me.REG[2] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
1045 fra.me.REG[2] = CALL_program___Program___main_method(fra.me.REG[2])(fra.me.REG[2]);
1046 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1047 if (UNTAG_Bool(REGB0)) {
1048 } else {
1049 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
1050 if (UNTAG_Bool(REGB1)) {
1051 REGB1 = TAG_Bool(false);
1052 REGB0 = REGB1;
1053 } else {
1054 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
1055 REGB0 = REGB1;
1056 }
1057 }
1058 if (UNTAG_Bool(REGB0)) {
1059 /* global/rta_analysis.nit:176 */
1060 REGB0 = TAG_Int(3);
1061 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
1062 if (!once_value_1) {
1063 fra.me.REG[3] = BOX_NativeString("Int");
1064 REGB0 = TAG_Int(3);
1065 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1066 once_value_1 = fra.me.REG[3];
1067 register_static_object(&once_value_1);
1068 } else fra.me.REG[3] = once_value_1;
1069 fra.me.REG[3] = fra.me.REG[3];
1070 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1071 if (!once_value_2) {
1072 fra.me.REG[3] = BOX_NativeString("Char");
1073 REGB0 = TAG_Int(4);
1074 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1075 once_value_2 = fra.me.REG[3];
1076 register_static_object(&once_value_2);
1077 } else fra.me.REG[3] = once_value_2;
1078 fra.me.REG[3] = fra.me.REG[3];
1079 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1080 if (!once_value_3) {
1081 fra.me.REG[3] = BOX_NativeString("Bool");
1082 REGB0 = TAG_Int(4);
1083 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
1084 once_value_3 = fra.me.REG[3];
1085 register_static_object(&once_value_3);
1086 } else fra.me.REG[3] = once_value_3;
1087 fra.me.REG[3] = fra.me.REG[3];
1088 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
1089 /* ../lib/standard/collection/array.nit:269 */
1090 REGB0 = TAG_Int(0);
1091 /* ../lib/standard/collection/array.nit:270 */
1092 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1093 if (UNTAG_Bool(REGB1)) {
1094 } else {
1095 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
1096 }
1097 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1098 /* ../lib/standard/collection/array.nit:271 */
1099 fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
1100 /* ../lib/standard/collection/array.nit:272 */
1101 while(1) {
1102 /* ../lib/standard/collection/array.nit:24 */
1103 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
1104 if (UNTAG_Bool(REGB1)) {
1105 } else {
1106 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
1107 }
1108 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
1109 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
1110 if (UNTAG_Bool(REGB2)) {
1111 } else {
1112 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
1113 }
1114 /* ../lib/standard/kernel.nit:232 */
1115 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
1116 /* ../lib/standard/collection/array.nit:272 */
1117 if (UNTAG_Bool(REGB1)) {
1118 /* ../lib/standard/collection/array.nit:273 */
1119 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1120 if (UNTAG_Bool(REGB1)) {
1121 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
1122 }
1123 /* ../lib/standard/collection/array.nit:718 */
1124 fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
1125 /* global/rta_analysis.nit:177 */
1126 fra.me.REG[5] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
1127 fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
1128 fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1129 REGB1 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
1130 if (UNTAG_Bool(REGB1)) {
1131 /* global/rta_analysis.nit:178 */
1132 fra.me.REG[6] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
1133 fra.me.REG[6] = CALL_program___Program___main_module(fra.me.REG[6])(fra.me.REG[6]);
1134 fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
1135 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
1136 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
1137 }
1138 /* ../lib/standard/collection/array.nit:274 */
1139 REGB1 = TAG_Int(1);
1140 /* ../lib/standard/kernel.nit:235 */
1141 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
1142 /* ../lib/standard/collection/array.nit:274 */
1143 REGB0 = REGB1;
1144 } else {
1145 /* ../lib/standard/collection/array.nit:272 */
1146 goto label4;
1147 }
1148 }
1149 label4: while(0);
1150 /* global/rta_analysis.nit:181 */
1151 goto label5;
1152 }
1153 /* global/rta_analysis.nit:184 */
1154 fra.me.REG[3] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
1155 fra.me.REG[3] = CALL_program___Program___main_class(fra.me.REG[3])(fra.me.REG[3]);
1156 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___abstractmetamodel___MMLocalClass, ID_metamodel___abstractmetamodel___MMLocalClass)) /*cast MMLocalClass*/;
1157 if (UNTAG_Bool(REGB0)) {
1158 } else {
1159 nit_abort("Cast failed", NULL, LOCATE_global___rta_analysis, 184);
1160 }
1161 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1162 /* global/rta_analysis.nit:185 */
1163 fra.me.REG[3] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
1164 fra.me.REG[3] = CALL_program___Program___main_method(fra.me.REG[3])(fra.me.REG[3]);
1165 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
1166 if (UNTAG_Bool(REGB0)) {
1167 } else {
1168 nit_abort("Cast failed", NULL, LOCATE_global___rta_analysis, 185);
1169 }
1170 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1171 if (UNTAG_Bool(REGB0)) {
1172 nit_abort("Reciever is null", NULL, LOCATE_global___rta_analysis, 185);
1173 }
1174 fra.me.REG[3] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[3])(fra.me.REG[3]);
1175 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
1176 /* global/rta_analysis.nit:186 */
1177 CALL_global___rta_analysis___RtaBuilder___force_some_type_analysis(fra.me.REG[1])(fra.me.REG[1]);
1178 /* global/rta_analysis.nit:188 */
1179 while(1) {
1180 fra.me.REG[3] = CALL_global___rta_analysis___RtaBuilder___iroutine_to_search(fra.me.REG[1])(fra.me.REG[1]);
1181 REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
1182 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1183 if (UNTAG_Bool(REGB0)) {
1184 /* global/rta_analysis.nit:189 */
1185 fra.me.REG[3] = NEW_RtaVisitor_global___rta_analysis___RtaVisitor___init(fra.me.REG[1]);
1186 /* global/rta_analysis.nit:190 */
1187 fra.me.REG[0] = CALL_global___rta_analysis___RtaBuilder___iroutine_to_search(fra.me.REG[1])(fra.me.REG[1]);
1188 fra.me.REG[0] = CALL_standard___collection___abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
1189 /* global/rta_analysis.nit:191 */
1190 fra.me.REG[0] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[0])(fra.me.REG[0]);
1191 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
1192 } else {
1193 /* global/rta_analysis.nit:188 */
1194 goto label6;
1195 }
1196 }
1197 label6: while(0);
1198 label5: while(0);
1199 stack_frame_head = fra.me.prev;
1200 return;
1201 }
1202 val_t global___rta_analysis___RtaVisitor___builder(val_t p0){
1203 struct {struct stack_frame_t me;} fra;
1204 val_t REGB0;
1205 val_t tmp;
1206 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1207 fra.me.file = LOCATE_global___rta_analysis;
1208 fra.me.line = 198;
1209 fra.me.meth = LOCATE_global___rta_analysis___RtaVisitor___builder;
1210 fra.me.has_broke = 0;
1211 fra.me.REG_size = 1;
1212 fra.me.nitni_local_ref_head = NULL;
1213 fra.me.REG[0] = NIT_NULL;
1214 fra.me.REG[0] = p0;
1215 /* global/rta_analysis.nit:198 */
1216 REGB0 = TAG_Bool(ATTR_global___rta_analysis___RtaVisitor____builder(fra.me.REG[0])!=NIT_NULL);
1217 if (UNTAG_Bool(REGB0)) {
1218 } else {
1219 nit_abort("Uninitialized attribute %s", "_builder", LOCATE_global___rta_analysis, 198);
1220 }
1221 fra.me.REG[0] = ATTR_global___rta_analysis___RtaVisitor____builder(fra.me.REG[0]);
1222 stack_frame_head = fra.me.prev;
1223 return fra.me.REG[0];
1224 }
1225 void global___rta_analysis___RtaVisitor___visit_icode(val_t p0, val_t p1){
1226 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
1227 val_t REGB0;
1228 val_t tmp;
1229 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1230 fra.me.file = LOCATE_global___rta_analysis;
1231 fra.me.line = 200;
1232 fra.me.meth = LOCATE_global___rta_analysis___RtaVisitor___visit_icode;
1233 fra.me.has_broke = 0;
1234 fra.me.REG_size = 7;
1235 fra.me.nitni_local_ref_head = NULL;
1236 fra.me.REG[0] = NIT_NULL;
1237 fra.me.REG[1] = NIT_NULL;
1238 fra.me.REG[2] = NIT_NULL;
1239 fra.me.REG[3] = NIT_NULL;
1240 fra.me.REG[4] = NIT_NULL;
1241 fra.me.REG[5] = NIT_NULL;
1242 fra.me.REG[6] = NIT_NULL;
1243 fra.me.REG[0] = p0;
1244 fra.me.REG[1] = p1;
1245 /* global/rta_analysis.nit:200 */
1246 fra.me.REG[2] = fra.me.REG[0];
1247 fra.me.REG[3] = fra.me.REG[1];
1248 /* global/rta_analysis.nit:202 */
1249 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IStaticCall, ID_icode___icode_base___IStaticCall)) /*cast IStaticCall*/;
1250 if (UNTAG_Bool(REGB0)) {
1251 /* global/rta_analysis.nit:204 */
1252 fra.me.REG[4] = CALL_global___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
1253 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1254 if (UNTAG_Bool(REGB0)) {
1255 nit_abort("Reciever is null", NULL, LOCATE_global___rta_analysis, 204);
1256 }
1257 fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
1258 fra.me.REG[5] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[5])(fra.me.REG[5]);
1259 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1260 } else {
1261 /* global/rta_analysis.nit:205 */
1262 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___INew, ID_icode___icode_base___INew)) /*cast INew*/;
1263 if (UNTAG_Bool(REGB0)) {
1264 /* global/rta_analysis.nit:207 */
1265 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1266 if (UNTAG_Bool(REGB0)) {
1267 nit_abort("Reciever is null", NULL, LOCATE_global___rta_analysis, 207);
1268 }
1269 fra.me.REG[5] = CALL_icode___icode_base___INew___stype(fra.me.REG[3])(fra.me.REG[3]);
1270 /* global/rta_analysis.nit:208 */
1271 fra.me.REG[4] = CALL_global___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
1272 fra.me.REG[4] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[4])(fra.me.REG[4]);
1273 fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
1274 fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1275 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
1276 /* global/rta_analysis.nit:209 */
1277 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
1278 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[5])(fra.me.REG[5]);
1279 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
1280 if (UNTAG_Bool(REGB0)) {
1281 /* global/rta_analysis.nit:210 */
1282 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1283 if (UNTAG_Bool(REGB0)) {
1284 nit_abort("Reciever is null", NULL, LOCATE_global___rta_analysis, 210);
1285 }
1286 fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
1287 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
1288 fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1289 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
1290 if (UNTAG_Bool(REGB0)) {
1291 } else {
1292 nit_abort("Cast failed", NULL, LOCATE_global___rta_analysis, 210);
1293 }
1294 /* global/rta_analysis.nit:211 */
1295 fra.me.REG[6] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[4])(fra.me.REG[4]);
1296 fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
1297 /* global/rta_analysis.nit:212 */
1298 fra.me.REG[6] = CALL_global___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
1299 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
1300 }
1301 /* global/rta_analysis.nit:214 */
1302 fra.me.REG[5] = CALL_global___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
1303 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
1304 } else {
1305 /* global/rta_analysis.nit:215 */
1306 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ISuper, ID_icode___icode_base___ISuper)) /*cast ISuper*/;
1307 if (UNTAG_Bool(REGB0)) {
1308 /* global/rta_analysis.nit:217 */
1309 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1310 if (UNTAG_Bool(REGB0)) {
1311 nit_abort("Reciever is null", NULL, LOCATE_global___rta_analysis, 217);
1312 }
1313 fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
1314 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[4])(fra.me.REG[4]);
1315 fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[4])(fra.me.REG[4]);
1316 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_global___rta_analysis___RtaVisitor___visit_icode_1));
1317 } else {
1318 /* global/rta_analysis.nit:222 */
1319 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICall, ID_icode___icode_base___ICall)) /*cast ICall*/;
1320 if (UNTAG_Bool(REGB0)) {
1321 /* global/rta_analysis.nit:223 */
1322 fra.me.REG[4] = CALL_global___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
1323 CALL_global___rta_analysis___RtaBuilder___add_reachable_call(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
1324 } else {
1325 /* global/rta_analysis.nit:224 */
1326 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICheckInstance, ID_icode___icode_base___ICheckInstance)) /*cast ICheckInstance*/;
1327 if (UNTAG_Bool(REGB0)) {
1328 /* global/rta_analysis.nit:225 */
1329 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1330 if (UNTAG_Bool(REGB0)) {
1331 nit_abort("Reciever is null", NULL, LOCATE_global___rta_analysis, 225);
1332 }
1333 fra.me.REG[4] = CALL_icode___icode_base___ICheckInstance___stype(fra.me.REG[3])(fra.me.REG[3]);
1334 /* global/rta_analysis.nit:226 */
1335 fra.me.REG[5] = CALL_global___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
1336 fra.me.REG[5] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[5])(fra.me.REG[5]);
1337 fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
1338 fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1339 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
1340 /* global/rta_analysis.nit:227 */
1341 fra.me.REG[5] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[5])(fra.me.REG[5]);
1342 /* global/rta_analysis.nit:228 */
1343 fra.me.REG[4] = CALL_global___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
1344 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
1345 } else {
1346 /* global/rta_analysis.nit:229 */
1347 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IInitAttributes, ID_icode___icode_base___IInitAttributes)) /*cast IInitAttributes*/;
1348 if (UNTAG_Bool(REGB0)) {
1349 /* global/rta_analysis.nit:230 */
1350 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
1351 if (UNTAG_Bool(REGB0)) {
1352 nit_abort("Reciever is null", NULL, LOCATE_global___rta_analysis, 230);
1353 }
1354 fra.me.REG[3] = CALL_icode___icode_base___IInitAttributes___stype(fra.me.REG[3])(fra.me.REG[3]);
1355 /* global/rta_analysis.nit:231 */
1356 fra.me.REG[5] = CALL_global___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
1357 fra.me.REG[5] = CALL_global___rta_analysis___RtaBuilder___program(fra.me.REG[5])(fra.me.REG[5]);
1358 fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
1359 fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
1360 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
1361 /* global/rta_analysis.nit:232 */
1362 fra.me.REG[5] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[5])(fra.me.REG[5]);
1363 /* global/rta_analysis.nit:233 */
1364 fra.me.REG[2] = CALL_global___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
1365 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
1366 }
1367 }
1368 }
1369 }
1370 }
1371 }
1372 /* global/rta_analysis.nit:235 */
1373 CALL_SUPER_global___rta_analysis___RtaVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
1374 stack_frame_head = fra.me.prev;
1375 return;
1376 }
1377 void OC_global___rta_analysis___RtaVisitor___visit_icode_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1378 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1379 val_t REGB0;
1380 fun_t CREG[1];
1381 val_t tmp;
1382 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1383 fra.me.file = LOCATE_global___rta_analysis;
1384 fra.me.line = 0;
1385 fra.me.meth = LOCATE_global___rta_analysis___RtaVisitor___visit_icode;
1386 fra.me.has_broke = 0;
1387 fra.me.REG_size = 2;
1388 fra.me.nitni_local_ref_head = NULL;
1389 fra.me.REG[0] = NIT_NULL;
1390 fra.me.REG[1] = NIT_NULL;
1391 fra.me.closure_ctx = closctx_param;
1392 fra.me.closure_funs = CREG;
1393 fra.me.REG[0] = p0;
1394 CREG[0] = clos_fun0;
1395 /* global/rta_analysis.nit:218 */
1396 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
1397 if (UNTAG_Bool(REGB0)) {
1398 /* global/rta_analysis.nit:219 */
1399 fra.me.REG[1] = CALL_global___rta_analysis___RtaVisitor___builder(closctx->REG[2])(closctx->REG[2]);
1400 fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
1401 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
1402 }
1403 stack_frame_head = fra.me.prev;
1404 return;
1405 }
1406 void global___rta_analysis___RtaVisitor___init(val_t p0, val_t p1, int* init_table){
1407 int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_global___rta_analysis___RtaVisitor].i;
1408 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1409 val_t tmp;
1410 if (init_table[itpos2]) return;
1411 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1412 fra.me.file = LOCATE_global___rta_analysis;
1413 fra.me.line = 238;
1414 fra.me.meth = LOCATE_global___rta_analysis___RtaVisitor___init;
1415 fra.me.has_broke = 0;
1416 fra.me.REG_size = 3;
1417 fra.me.nitni_local_ref_head = NULL;
1418 fra.me.REG[0] = NIT_NULL;
1419 fra.me.REG[1] = NIT_NULL;
1420 fra.me.REG[2] = NIT_NULL;
1421 fra.me.REG[0] = p0;
1422 fra.me.REG[1] = p1;
1423 /* global/rta_analysis.nit:238 */
1424 fra.me.REG[2] = fra.me.REG[0];
1425 CALL_icode___icode_tools___ICodeVisitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
1426 /* global/rta_analysis.nit:240 */
1427 ATTR_global___rta_analysis___RtaVisitor____builder(fra.me.REG[2]) = fra.me.REG[1];
1428 stack_frame_head = fra.me.prev;
1429 init_table[itpos2] = 1;
1430 return;
1431 }