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
;
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
;
11 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaContext___init
;
14 fra
.me
.REG
[0] = NIT_NULL
;
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;
23 val_t
analysis___rta_analysis___RtaContext___instanciated_classes(val_t p0
){
24 struct {struct stack_frame_t me
;} fra
;
27 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
28 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
30 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaContext___instanciated_classes
;
33 fra
.me
.REG
[0] = NIT_NULL
;
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
)) {
39 nit_abort("Uninitialized attribute %s", "_instanciated_classes", LOCATE_analysis___rta_analysis
, 29);
41 fra
.me
.REG
[0] = ATTR_analysis___rta_analysis___RtaContext____instanciated_classes(fra
.me
.REG
[0]);
42 stack_frame_head
= fra
.me
.prev
;
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
;
49 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
50 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
52 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaContext___is_class_instantiated
;
55 fra
.me
.REG
[0] = NIT_NULL
;
56 fra
.me
.REG
[1] = NIT_NULL
;
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]);
64 stack_frame_head
= fra
.me
.prev
;
67 val_t
analysis___rta_analysis___RtaContext___reachable_iroutines(val_t p0
){
68 struct {struct stack_frame_t me
;} fra
;
71 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
72 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
74 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaContext___reachable_iroutines
;
77 fra
.me
.REG
[0] = NIT_NULL
;
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
)) {
83 nit_abort("Uninitialized attribute %s", "_reachable_iroutines", LOCATE_analysis___rta_analysis
, 33);
85 fra
.me
.REG
[0] = ATTR_analysis___rta_analysis___RtaContext____reachable_iroutines(fra
.me
.REG
[0]);
86 stack_frame_head
= fra
.me
.prev
;
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
;
94 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
95 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
97 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaContext___is_iroutine_reachable
;
100 fra
.me
.REG
[0] = NIT_NULL
;
101 fra
.me
.REG
[1] = NIT_NULL
;
104 /* ./analysis//rta_analysis.nit:36 */
105 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
106 if (UNTAG_Bool(REGB0
)) {
108 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
109 if (UNTAG_Bool(REGB1
)) {
110 REGB1
= TAG_Bool(false);
113 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
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]);
122 REGB1
= TAG_Bool(false);
127 stack_frame_head
= fra
.me
.prev
;
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
;
134 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
135 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
137 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaContext___is_method_reachable
;
138 fra
.me
.has_broke
= 0;
140 fra
.me
.REG
[0] = NIT_NULL
;
141 fra
.me
.REG
[1] = NIT_NULL
;
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]);
149 stack_frame_head
= fra
.me
.prev
;
152 val_t
analysis___rta_analysis___RtaBuilder___context(val_t p0
){
153 struct {struct stack_frame_t me
;} fra
;
156 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
157 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
159 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___context
;
160 fra
.me
.has_broke
= 0;
162 fra
.me
.REG
[0] = NIT_NULL
;
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
)) {
168 nit_abort("Uninitialized attribute %s", "_context", LOCATE_analysis___rta_analysis
, 45);
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];
174 val_t
analysis___rta_analysis___RtaBuilder___program(val_t p0
){
175 struct {struct stack_frame_t me
;} fra
;
178 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
179 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
181 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___program
;
182 fra
.me
.has_broke
= 0;
184 fra
.me
.REG
[0] = NIT_NULL
;
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
)) {
190 nit_abort("Uninitialized attribute %s", "_program", LOCATE_analysis___rta_analysis
, 46);
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];
196 val_t
analysis___rta_analysis___RtaBuilder___iroutine_to_search(val_t p0
){
197 struct {struct stack_frame_t me
;} fra
;
200 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
201 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
203 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___iroutine_to_search
;
204 fra
.me
.has_broke
= 0;
206 fra
.me
.REG
[0] = NIT_NULL
;
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
)) {
212 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_analysis___rta_analysis
, 47);
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];
218 val_t
analysis___rta_analysis___RtaBuilder___call_sites(val_t p0
){
219 struct {struct stack_frame_t me
;} fra
;
222 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
223 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
225 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___call_sites
;
226 fra
.me
.has_broke
= 0;
228 fra
.me
.REG
[0] = NIT_NULL
;
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
)) {
234 nit_abort("Uninitialized attribute %s", "_call_sites", LOCATE_analysis___rta_analysis
, 48);
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];
240 val_t
analysis___rta_analysis___RtaBuilder___called_methods(val_t p0
){
241 struct {struct stack_frame_t me
;} fra
;
244 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
245 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
247 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___called_methods
;
248 fra
.me
.has_broke
= 0;
250 fra
.me
.REG
[0] = NIT_NULL
;
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
)) {
256 nit_abort("Uninitialized attribute %s", "_called_methods", LOCATE_analysis___rta_analysis
, 49);
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];
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
;
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
;
270 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___init
;
271 fra
.me
.has_broke
= 0;
273 fra
.me
.REG
[0] = NIT_NULL
;
274 fra
.me
.REG
[1] = NIT_NULL
;
275 fra
.me
.REG
[2] = NIT_NULL
;
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;
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
;
291 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
292 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
294 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___check_method
;
295 fra
.me
.has_broke
= 0;
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
;
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
;
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
) {
322 case 1: (&(fra
.me
))->has_broke
= 0; goto label1
;
324 /* ./analysis//rta_analysis.nit:68 */
325 REGB0
= TAG_Bool(false);
326 fra
.me
.REG
[2] = REGB0
;
329 stack_frame_head
= fra
.me
.prev
;
330 return fra
.me
.REG
[2];
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
;
338 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
339 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
341 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___check_method
;
342 fra
.me
.has_broke
= 0;
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
;
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
)) {
356 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
->REG
[1]);
359 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
360 if (UNTAG_Bool(REGB0
)) {
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;
373 stack_frame_head
= fra
.me
.prev
;
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
;
379 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
380 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
382 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___check_call_sites
;
383 fra
.me
.has_broke
= 0;
385 fra
.me
.REG
[0] = NIT_NULL
;
386 fra
.me
.REG
[1] = NIT_NULL
;
387 fra
.me
.REG
[2] = NIT_NULL
;
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
;
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
;
403 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
404 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
406 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___check_call_sites
;
407 fra
.me
.has_broke
= 0;
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
;
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]);
428 /* ./analysis//rta_analysis.nit:83 */
429 REGB0
= TAG_Bool(false);
430 closctx
->REG
[2] = REGB0
;
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]);
440 stack_frame_head
= fra
.me
.prev
;
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
;
448 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
449 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
451 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___check_call_sites
;
452 fra
.me
.has_broke
= 0;
454 fra
.me
.REG
[0] = NIT_NULL
;
455 fra
.me
.closure_ctx
= closctx_param
;
456 fra
.me
.closure_funs
= CREG
;
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
)) {
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]);
472 /* ./analysis//rta_analysis.nit:92 */
473 REGB0
= TAG_Bool(false);
474 closctx
->REG
[2] = REGB0
;
477 stack_frame_head
= fra
.me
.prev
;
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
;
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
;
488 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___check_call_sites
;
489 fra
.me
.has_broke
= 0;
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
;
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
;
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
;
507 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
508 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
510 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___add_instantiated_class
;
511 fra
.me
.has_broke
= 0;
513 fra
.me
.REG
[0] = NIT_NULL
;
514 fra
.me
.REG
[1] = NIT_NULL
;
515 fra
.me
.REG
[2] = NIT_NULL
;
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
)) {
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]);
531 stack_frame_head
= fra
.me
.prev
;
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
;
538 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
539 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
541 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___add_reachable_call
;
542 fra
.me
.has_broke
= 0;
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
;
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
)) {
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
)) {
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]);
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]);
585 stack_frame_head
= fra
.me
.prev
;
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
;
593 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
594 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
596 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine
;
597 fra
.me
.has_broke
= 0;
599 fra
.me
.REG
[0] = NIT_NULL
;
600 fra
.me
.REG
[1] = NIT_NULL
;
601 fra
.me
.REG
[2] = NIT_NULL
;
604 /* ./analysis//rta_analysis.nit:132 */
605 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
606 if (UNTAG_Bool(REGB0
)) {
608 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
609 if (UNTAG_Bool(REGB1
)) {
610 REGB1
= TAG_Bool(false);
613 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
617 if (UNTAG_Bool(REGB0
)) {
618 REGB0
= TAG_Bool(true);
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]);
624 if (UNTAG_Bool(REGB0
)) {
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]);
635 stack_frame_head
= fra
.me
.prev
;
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
;
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
;
661 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___force_some_type_analysis
;
662 fra
.me
.has_broke
= 0;
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
;
671 /* ./analysis//rta_analysis.nit:139 */
673 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
675 fra
.me
.REG
[2] = BOX_NativeString("Object");
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]);
684 fra
.me
.REG
[2] = BOX_NativeString("Bool");
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]);
693 fra
.me
.REG
[2] = BOX_NativeString("Float");
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]);
702 fra
.me
.REG
[2] = BOX_NativeString("Int");
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]);
711 fra
.me
.REG
[2] = BOX_NativeString("String");
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]);
720 fra
.me
.REG
[2] = BOX_NativeString("NativeString");
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]);
729 fra
.me
.REG
[2] = BOX_NativeString("Range");
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]);
738 fra
.me
.REG
[2] = BOX_NativeString("Array");
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]);
747 fra
.me
.REG
[2] = BOX_NativeString("ArrayIterator");
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__");
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:269 */
766 /* ./../lib/standard//collection//array.nit:270 */
767 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
768 if (UNTAG_Bool(REGB1
)) {
770 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 270);
772 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1]);
773 /* ./../lib/standard//collection//array.nit:271 */
774 fra
.me
.REG
[2] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[1]);
775 /* ./../lib/standard//collection//array.nit:272 */
777 /* ./../lib/standard//collection//array.nit:24 */
778 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
779 if (UNTAG_Bool(REGB1
)) {
781 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
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
)) {
787 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
789 /* ./../lib/standard//kernel.nit:232 */
790 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
791 /* ./../lib/standard//collection//array.nit:272 */
792 if (UNTAG_Bool(REGB1
)) {
793 /* ./../lib/standard//collection//array.nit:273 */
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
, 273);
798 /* ./../lib/standard//collection//array.nit:718 */
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
)) {
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]);
817 /* ./../lib/standard//collection//array.nit:274 */
819 /* ./../lib/standard//kernel.nit:235 */
820 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
821 /* ./../lib/standard//collection//array.nit:274 */
824 /* ./../lib/standard//collection//array.nit:272 */
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__");
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__");
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
));
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");
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");
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
));
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 /* ./analysis//rta_analysis.nit:174 */
899 fra
.me
.REG
[2] = CALL_analysis___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
900 CALL_program___Program___with_each_methods(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_analysis___rta_analysis___RtaBuilder___force_some_type_analysis_21
));
901 stack_frame_head
= fra
.me
.prev
;
904 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
){
905 struct {struct stack_frame_t me
;} fra
;
908 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
909 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
911 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___force_some_type_analysis
;
912 fra
.me
.has_broke
= 0;
914 fra
.me
.REG
[0] = NIT_NULL
;
915 fra
.me
.closure_ctx
= closctx_param
;
916 fra
.me
.closure_funs
= CREG
;
919 /* ./analysis//rta_analysis.nit:153 */
920 CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
921 stack_frame_head
= fra
.me
.prev
;
924 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
){
925 struct {struct stack_frame_t me
;} fra
;
928 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
929 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
931 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___force_some_type_analysis
;
932 fra
.me
.has_broke
= 0;
934 fra
.me
.REG
[0] = NIT_NULL
;
935 fra
.me
.closure_ctx
= closctx_param
;
936 fra
.me
.closure_funs
= CREG
;
939 /* ./analysis//rta_analysis.nit:163 */
940 CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
941 stack_frame_head
= fra
.me
.prev
;
944 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
){
945 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
950 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
951 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
953 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___force_some_type_analysis
;
954 fra
.me
.has_broke
= 0;
956 fra
.me
.REG
[0] = NIT_NULL
;
957 fra
.me
.REG
[1] = NIT_NULL
;
958 fra
.me
.closure_ctx
= closctx_param
;
959 fra
.me
.closure_funs
= CREG
;
962 /* ./analysis//rta_analysis.nit:168 */
963 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
964 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
965 if (UNTAG_Bool(REGB0
)) {
966 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
967 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
969 REGB1
= TAG_Bool(false);
972 if (UNTAG_Bool(REGB0
)) {
975 /* ./analysis//rta_analysis.nit:169 */
976 fra
.me
.REG
[1] = CALL_analysis___rta_analysis___RtaBuilder___program(closctx
->REG
[0])(closctx
->REG
[0]);
977 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
978 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
979 CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
981 stack_frame_head
= fra
.me
.prev
;
984 void OC_analysis___rta_analysis___RtaBuilder___force_some_type_analysis_21(struct stack_frame_t
*closctx
, val_t p0
){
985 struct {struct stack_frame_t me
;} fra
;
988 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
989 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
991 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___force_some_type_analysis
;
992 fra
.me
.has_broke
= 0;
994 fra
.me
.REG
[0] = NIT_NULL
;
996 /* ./analysis//rta_analysis.nit:175 */
997 REGB0
= CALL_metamodel___abstractmetamodel___MMMethod___is_extern(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
998 if (UNTAG_Bool(REGB0
)) {
999 /* ./analysis//rta_analysis.nit:176 */
1000 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1001 CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
1003 stack_frame_head
= fra
.me
.prev
;
1006 void analysis___rta_analysis___RtaBuilder___work(val_t p0
){
1007 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
1012 static val_t once_value_1
; /* Once value */
1013 static val_t once_value_2
; /* Once value */
1014 static val_t once_value_3
; /* Once value */
1015 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1016 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
1018 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaBuilder___work
;
1019 fra
.me
.has_broke
= 0;
1020 fra
.me
.REG_size
= 7;
1021 fra
.me
.REG
[0] = NIT_NULL
;
1022 fra
.me
.REG
[1] = NIT_NULL
;
1023 fra
.me
.REG
[2] = NIT_NULL
;
1024 fra
.me
.REG
[3] = NIT_NULL
;
1025 fra
.me
.REG
[4] = NIT_NULL
;
1026 fra
.me
.REG
[5] = NIT_NULL
;
1027 fra
.me
.REG
[6] = NIT_NULL
;
1029 /* ./analysis//rta_analysis.nit:181 */
1030 fra
.me
.REG
[1] = fra
.me
.REG
[0];
1031 /* ./analysis//rta_analysis.nit:183 */
1032 fra
.me
.REG
[2] = CALL_analysis___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1033 fra
.me
.REG
[2] = CALL_program___Program___main_method(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1034 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
1035 if (UNTAG_Bool(REGB0
)) {
1037 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
1038 if (UNTAG_Bool(REGB1
)) {
1039 REGB1
= TAG_Bool(false);
1042 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
1046 if (UNTAG_Bool(REGB0
)) {
1047 /* ./analysis//rta_analysis.nit:185 */
1049 fra
.me
.REG
[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
1050 if (!once_value_1
) {
1051 fra
.me
.REG
[3] = BOX_NativeString("Int");
1053 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
1054 once_value_1
= fra
.me
.REG
[3];
1055 register_static_object(&once_value_1
);
1056 } else fra
.me
.REG
[3] = once_value_1
;
1057 fra
.me
.REG
[3] = fra
.me
.REG
[3];
1058 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1059 if (!once_value_2
) {
1060 fra
.me
.REG
[3] = BOX_NativeString("Char");
1062 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
1063 once_value_2
= fra
.me
.REG
[3];
1064 register_static_object(&once_value_2
);
1065 } else fra
.me
.REG
[3] = once_value_2
;
1066 fra
.me
.REG
[3] = fra
.me
.REG
[3];
1067 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1068 if (!once_value_3
) {
1069 fra
.me
.REG
[3] = BOX_NativeString("Bool");
1071 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
1072 once_value_3
= fra
.me
.REG
[3];
1073 register_static_object(&once_value_3
);
1074 } else fra
.me
.REG
[3] = once_value_3
;
1075 fra
.me
.REG
[3] = fra
.me
.REG
[3];
1076 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1077 /* ./../lib/standard//collection//array.nit:269 */
1079 /* ./../lib/standard//collection//array.nit:270 */
1080 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2])!=NIT_NULL
);
1081 if (UNTAG_Bool(REGB1
)) {
1083 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 270);
1085 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2]);
1086 /* ./../lib/standard//collection//array.nit:271 */
1087 fra
.me
.REG
[3] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[2]);
1088 /* ./../lib/standard//collection//array.nit:272 */
1090 /* ./../lib/standard//collection//array.nit:24 */
1091 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2])!=NIT_NULL
);
1092 if (UNTAG_Bool(REGB1
)) {
1094 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
1096 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2]);
1097 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
1098 if (UNTAG_Bool(REGB2
)) {
1100 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
1102 /* ./../lib/standard//kernel.nit:232 */
1103 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
1104 /* ./../lib/standard//collection//array.nit:272 */
1105 if (UNTAG_Bool(REGB1
)) {
1106 /* ./../lib/standard//collection//array.nit:273 */
1107 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1108 if (UNTAG_Bool(REGB1
)) {
1109 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 273);
1111 /* ./../lib/standard//collection//array.nit:718 */
1112 fra
.me
.REG
[4] = ((Nit_NativeArray
)fra
.me
.REG
[3])->val
[UNTAG_Int(REGB0
)];
1113 /* ./analysis//rta_analysis.nit:186 */
1114 fra
.me
.REG
[5] = CALL_analysis___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1115 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1116 fra
.me
.REG
[6] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1117 REGB1
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[6]);
1118 if (UNTAG_Bool(REGB1
)) {
1119 /* ./analysis//rta_analysis.nit:187 */
1120 fra
.me
.REG
[6] = CALL_analysis___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1121 fra
.me
.REG
[6] = CALL_program___Program___main_module(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
1122 fra
.me
.REG
[4] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1123 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[4]);
1124 CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[4]);
1126 /* ./../lib/standard//collection//array.nit:274 */
1128 /* ./../lib/standard//kernel.nit:235 */
1129 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
1130 /* ./../lib/standard//collection//array.nit:274 */
1133 /* ./../lib/standard//collection//array.nit:272 */
1138 /* ./analysis//rta_analysis.nit:190 */
1141 /* ./analysis//rta_analysis.nit:193 */
1142 fra
.me
.REG
[3] = CALL_analysis___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1143 fra
.me
.REG
[3] = CALL_program___Program___main_class(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1144 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*/;
1145 if (UNTAG_Bool(REGB0
)) {
1147 nit_abort("Cast failed", NULL
, LOCATE_analysis___rta_analysis
, 193);
1149 CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
1150 /* ./analysis//rta_analysis.nit:194 */
1151 fra
.me
.REG
[3] = CALL_analysis___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1152 fra
.me
.REG
[3] = CALL_program___Program___main_method(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1153 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*/;
1154 if (UNTAG_Bool(REGB0
)) {
1156 nit_abort("Cast failed", NULL
, LOCATE_analysis___rta_analysis
, 194);
1158 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1159 if (UNTAG_Bool(REGB0
)) {
1160 nit_abort("Reciever is null", NULL
, LOCATE_analysis___rta_analysis
, 194);
1162 fra
.me
.REG
[3] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1163 CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
1164 /* ./analysis//rta_analysis.nit:195 */
1165 CALL_analysis___rta_analysis___RtaBuilder___force_some_type_analysis(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1166 /* ./analysis//rta_analysis.nit:197 */
1168 fra
.me
.REG
[3] = CALL_analysis___rta_analysis___RtaBuilder___iroutine_to_search(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1169 REGB0
= CALL_standard___collection___abstract_collection___Collection___is_empty(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1170 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1171 if (UNTAG_Bool(REGB0
)) {
1172 /* ./analysis//rta_analysis.nit:198 */
1173 fra
.me
.REG
[3] = NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init(fra
.me
.REG
[1]);
1174 /* ./analysis//rta_analysis.nit:199 */
1175 fra
.me
.REG
[0] = CALL_analysis___rta_analysis___RtaBuilder___iroutine_to_search(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1176 fra
.me
.REG
[0] = CALL_standard___collection___abstract_collection___Sequence___pop(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1177 /* ./analysis//rta_analysis.nit:200 */
1178 fra
.me
.REG
[0] = CALL_icode___icode_base___IRoutine___body(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1179 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[0]);
1181 /* ./analysis//rta_analysis.nit:197 */
1187 stack_frame_head
= fra
.me
.prev
;
1190 val_t
analysis___rta_analysis___RtaVisitor___builder(val_t p0
){
1191 struct {struct stack_frame_t me
;} fra
;
1194 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1195 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
1197 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaVisitor___builder
;
1198 fra
.me
.has_broke
= 0;
1199 fra
.me
.REG_size
= 1;
1200 fra
.me
.REG
[0] = NIT_NULL
;
1202 /* ./analysis//rta_analysis.nit:207 */
1203 REGB0
= TAG_Bool(ATTR_analysis___rta_analysis___RtaVisitor____builder(fra
.me
.REG
[0])!=NIT_NULL
);
1204 if (UNTAG_Bool(REGB0
)) {
1206 nit_abort("Uninitialized attribute %s", "_builder", LOCATE_analysis___rta_analysis
, 207);
1208 fra
.me
.REG
[0] = ATTR_analysis___rta_analysis___RtaVisitor____builder(fra
.me
.REG
[0]);
1209 stack_frame_head
= fra
.me
.prev
;
1210 return fra
.me
.REG
[0];
1212 void analysis___rta_analysis___RtaVisitor___visit_icode(val_t p0
, val_t p1
){
1213 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
1216 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1217 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
1219 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaVisitor___visit_icode
;
1220 fra
.me
.has_broke
= 0;
1221 fra
.me
.REG_size
= 7;
1222 fra
.me
.REG
[0] = NIT_NULL
;
1223 fra
.me
.REG
[1] = NIT_NULL
;
1224 fra
.me
.REG
[2] = NIT_NULL
;
1225 fra
.me
.REG
[3] = NIT_NULL
;
1226 fra
.me
.REG
[4] = NIT_NULL
;
1227 fra
.me
.REG
[5] = NIT_NULL
;
1228 fra
.me
.REG
[6] = NIT_NULL
;
1231 /* ./analysis//rta_analysis.nit:209 */
1232 fra
.me
.REG
[2] = fra
.me
.REG
[0];
1233 fra
.me
.REG
[3] = fra
.me
.REG
[1];
1234 /* ./analysis//rta_analysis.nit:211 */
1235 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*/;
1236 if (UNTAG_Bool(REGB0
)) {
1237 /* ./analysis//rta_analysis.nit:213 */
1238 fra
.me
.REG
[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1239 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1240 if (UNTAG_Bool(REGB0
)) {
1241 nit_abort("Reciever is null", NULL
, LOCATE_analysis___rta_analysis
, 213);
1243 fra
.me
.REG
[5] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1244 fra
.me
.REG
[5] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1245 CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1247 /* ./analysis//rta_analysis.nit:214 */
1248 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*/;
1249 if (UNTAG_Bool(REGB0
)) {
1250 /* ./analysis//rta_analysis.nit:216 */
1251 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1252 if (UNTAG_Bool(REGB0
)) {
1253 nit_abort("Reciever is null", NULL
, LOCATE_analysis___rta_analysis
, 216);
1255 fra
.me
.REG
[5] = CALL_icode___icode_base___INew___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1256 /* ./analysis//rta_analysis.nit:217 */
1257 fra
.me
.REG
[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1258 fra
.me
.REG
[4] = CALL_analysis___rta_analysis___RtaBuilder___program(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1259 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1260 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
1261 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1262 /* ./analysis//rta_analysis.nit:218 */
1263 fra
.me
.REG
[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1264 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1265 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1266 if (UNTAG_Bool(REGB0
)) {
1267 /* ./analysis//rta_analysis.nit:219 */
1268 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1269 if (UNTAG_Bool(REGB0
)) {
1270 nit_abort("Reciever is null", NULL
, LOCATE_analysis___rta_analysis
, 219);
1272 fra
.me
.REG
[5] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1273 fra
.me
.REG
[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1274 fra
.me
.REG
[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1275 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[5], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
1276 if (UNTAG_Bool(REGB0
)) {
1278 nit_abort("Cast failed", NULL
, LOCATE_analysis___rta_analysis
, 219);
1280 /* ./analysis//rta_analysis.nit:220 */
1281 fra
.me
.REG
[6] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1282 fra
.me
.REG
[5] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
1283 /* ./analysis//rta_analysis.nit:221 */
1284 fra
.me
.REG
[6] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1285 CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
1287 /* ./analysis//rta_analysis.nit:223 */
1288 fra
.me
.REG
[5] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1289 CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
1291 /* ./analysis//rta_analysis.nit:224 */
1292 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*/;
1293 if (UNTAG_Bool(REGB0
)) {
1294 /* ./analysis//rta_analysis.nit:226 */
1295 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1296 if (UNTAG_Bool(REGB0
)) {
1297 nit_abort("Reciever is null", NULL
, LOCATE_analysis___rta_analysis
, 226);
1299 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1300 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1301 fra
.me
.REG
[4] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1302 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[4])(fra
.me
.REG
[4], (&(fra
.me
)), ((fun_t
)OC_analysis___rta_analysis___RtaVisitor___visit_icode_1
));
1304 /* ./analysis//rta_analysis.nit:231 */
1305 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*/;
1306 if (UNTAG_Bool(REGB0
)) {
1307 /* ./analysis//rta_analysis.nit:232 */
1308 fra
.me
.REG
[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1309 CALL_analysis___rta_analysis___RtaBuilder___add_reachable_call(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[3]);
1311 /* ./analysis//rta_analysis.nit:233 */
1312 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*/;
1313 if (UNTAG_Bool(REGB0
)) {
1314 /* ./analysis//rta_analysis.nit:234 */
1315 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1316 if (UNTAG_Bool(REGB0
)) {
1317 nit_abort("Reciever is null", NULL
, LOCATE_analysis___rta_analysis
, 234);
1319 fra
.me
.REG
[4] = CALL_icode___icode_base___ICheckInstance___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1320 /* ./analysis//rta_analysis.nit:235 */
1321 fra
.me
.REG
[5] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1322 fra
.me
.REG
[5] = CALL_analysis___rta_analysis___RtaBuilder___program(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1323 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1324 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1325 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1326 /* ./analysis//rta_analysis.nit:236 */
1327 fra
.me
.REG
[5] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1328 /* ./analysis//rta_analysis.nit:237 */
1329 fra
.me
.REG
[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1330 CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1332 /* ./analysis//rta_analysis.nit:238 */
1333 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*/;
1334 if (UNTAG_Bool(REGB0
)) {
1335 /* ./analysis//rta_analysis.nit:239 */
1336 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1337 if (UNTAG_Bool(REGB0
)) {
1338 nit_abort("Reciever is null", NULL
, LOCATE_analysis___rta_analysis
, 239);
1340 fra
.me
.REG
[3] = CALL_icode___icode_base___IInitAttributes___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1341 /* ./analysis//rta_analysis.nit:240 */
1342 fra
.me
.REG
[5] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1343 fra
.me
.REG
[5] = CALL_analysis___rta_analysis___RtaBuilder___program(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1344 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1345 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[5]);
1346 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1347 /* ./analysis//rta_analysis.nit:241 */
1348 fra
.me
.REG
[5] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1349 /* ./analysis//rta_analysis.nit:242 */
1350 fra
.me
.REG
[2] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1351 CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[5]);
1358 /* ./analysis//rta_analysis.nit:244 */
1359 CALL_SUPER_analysis___rta_analysis___RtaVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
1360 stack_frame_head
= fra
.me
.prev
;
1363 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
){
1364 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1368 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1369 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
1371 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaVisitor___visit_icode
;
1372 fra
.me
.has_broke
= 0;
1373 fra
.me
.REG_size
= 2;
1374 fra
.me
.REG
[0] = NIT_NULL
;
1375 fra
.me
.REG
[1] = NIT_NULL
;
1376 fra
.me
.closure_ctx
= closctx_param
;
1377 fra
.me
.closure_funs
= CREG
;
1379 CREG
[0] = clos_fun0
;
1380 /* ./analysis//rta_analysis.nit:227 */
1381 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
1382 if (UNTAG_Bool(REGB0
)) {
1383 /* ./analysis//rta_analysis.nit:228 */
1384 fra
.me
.REG
[1] = CALL_analysis___rta_analysis___RtaVisitor___builder(closctx
->REG
[2])(closctx
->REG
[2]);
1385 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1386 CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1388 stack_frame_head
= fra
.me
.prev
;
1391 void analysis___rta_analysis___RtaVisitor___init(val_t p0
, val_t p1
, int* init_table
){
1392 int itpos2
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_analysis___rta_analysis___RtaVisitor
].i
;
1393 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1395 if (init_table
[itpos2
]) return;
1396 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1397 fra
.me
.file
= LOCATE_analysis___rta_analysis
;
1399 fra
.me
.meth
= LOCATE_analysis___rta_analysis___RtaVisitor___init
;
1400 fra
.me
.has_broke
= 0;
1401 fra
.me
.REG_size
= 3;
1402 fra
.me
.REG
[0] = NIT_NULL
;
1403 fra
.me
.REG
[1] = NIT_NULL
;
1404 fra
.me
.REG
[2] = NIT_NULL
;
1407 /* ./analysis//rta_analysis.nit:247 */
1408 fra
.me
.REG
[2] = fra
.me
.REG
[0];
1409 CALL_icode___icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
1410 /* ./analysis//rta_analysis.nit:249 */
1411 ATTR_analysis___rta_analysis___RtaVisitor____builder(fra
.me
.REG
[2]) = fra
.me
.REG
[1];
1412 stack_frame_head
= fra
.me
.prev
;
1413 init_table
[itpos2
] = 1;