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