1 /* This C file is generated by NIT to compile module global___rta_analysis. */
2 #include "global___rta_analysis._sep.h"
3 void global___rta_analysis___RtaContext___init(val_t p0
, int* init_table
){
4 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___rta_analysis___RtaContext
].i
;
5 struct {struct stack_frame_t me
;} fra
;
7 if (init_table
[itpos0
]) return;
8 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
9 fra
.me
.file
= LOCATE_global___rta_analysis
;
11 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___init
;
14 fra
.me
.nitni_local_ref_head
= NULL
;
15 fra
.me
.REG
[0] = NIT_NULL
;
17 stack_frame_head
= fra
.me
.prev
;
18 init_table
[itpos0
] = 1;
21 val_t
global___rta_analysis___RtaContext___instanciated_classes(val_t p0
){
22 struct {struct stack_frame_t me
;} fra
;
25 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
26 fra
.me
.file
= LOCATE_global___rta_analysis
;
28 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___instanciated_classes
;
31 fra
.me
.nitni_local_ref_head
= NULL
;
32 fra
.me
.REG
[0] = NIT_NULL
;
34 /* global/rta_analysis.nit:29 */
35 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaContext____instanciated_classes(fra
.me
.REG
[0])!=NIT_NULL
);
36 if (UNTAG_Bool(REGB0
)) {
38 nit_abort("Uninitialized attribute %s", "_instanciated_classes", LOCATE_global___rta_analysis
, 29);
40 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaContext____instanciated_classes(fra
.me
.REG
[0]);
41 stack_frame_head
= fra
.me
.prev
;
44 val_t
global___rta_analysis___RtaContext___is_class_instantiated(val_t p0
, val_t p1
){
45 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
48 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
49 fra
.me
.file
= LOCATE_global___rta_analysis
;
51 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___is_class_instantiated
;
54 fra
.me
.nitni_local_ref_head
= NULL
;
55 fra
.me
.REG
[0] = NIT_NULL
;
56 fra
.me
.REG
[1] = NIT_NULL
;
59 /* global/rta_analysis.nit:31 */
60 fra
.me
.REG
[0] = CALL_global___rta_analysis___RtaContext___instanciated_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
61 REGB0
= CALL_standard___collection___abstract_collection___Collection___has(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
64 stack_frame_head
= fra
.me
.prev
;
67 val_t
global___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_global___rta_analysis
;
74 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___reachable_iroutines
;
77 fra
.me
.nitni_local_ref_head
= NULL
;
78 fra
.me
.REG
[0] = NIT_NULL
;
80 /* global/rta_analysis.nit:33 */
81 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaContext____reachable_iroutines(fra
.me
.REG
[0])!=NIT_NULL
);
82 if (UNTAG_Bool(REGB0
)) {
84 nit_abort("Uninitialized attribute %s", "_reachable_iroutines", LOCATE_global___rta_analysis
, 33);
86 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaContext____reachable_iroutines(fra
.me
.REG
[0]);
87 stack_frame_head
= fra
.me
.prev
;
90 val_t
global___rta_analysis___RtaContext___is_iroutine_reachable(val_t p0
, val_t p1
){
91 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
95 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
96 fra
.me
.file
= LOCATE_global___rta_analysis
;
98 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___is_iroutine_reachable
;
101 fra
.me
.nitni_local_ref_head
= NULL
;
102 fra
.me
.REG
[0] = NIT_NULL
;
103 fra
.me
.REG
[1] = NIT_NULL
;
106 /* global/rta_analysis.nit:36 */
107 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
108 if (UNTAG_Bool(REGB0
)) {
110 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
111 if (UNTAG_Bool(REGB1
)) {
112 REGB1
= TAG_Bool(false);
115 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
119 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
120 if (UNTAG_Bool(REGB0
)) {
121 fra
.me
.REG
[0] = CALL_global___rta_analysis___RtaContext___reachable_iroutines(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
122 REGB0
= CALL_standard___collection___abstract_collection___Collection___has(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
124 REGB1
= TAG_Bool(false);
129 stack_frame_head
= fra
.me
.prev
;
132 val_t
global___rta_analysis___RtaContext___is_method_reachable(val_t p0
, val_t p1
){
133 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
136 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
137 fra
.me
.file
= LOCATE_global___rta_analysis
;
139 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___is_method_reachable
;
140 fra
.me
.has_broke
= 0;
142 fra
.me
.nitni_local_ref_head
= NULL
;
143 fra
.me
.REG
[0] = NIT_NULL
;
144 fra
.me
.REG
[1] = NIT_NULL
;
147 /* global/rta_analysis.nit:40 */
148 fra
.me
.REG
[1] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
149 REGB0
= CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
152 stack_frame_head
= fra
.me
.prev
;
155 val_t
global___rta_analysis___RtaBuilder___context(val_t p0
){
156 struct {struct stack_frame_t me
;} fra
;
159 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
160 fra
.me
.file
= LOCATE_global___rta_analysis
;
162 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___context
;
163 fra
.me
.has_broke
= 0;
165 fra
.me
.nitni_local_ref_head
= NULL
;
166 fra
.me
.REG
[0] = NIT_NULL
;
168 /* global/rta_analysis.nit:45 */
169 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____context(fra
.me
.REG
[0])!=NIT_NULL
);
170 if (UNTAG_Bool(REGB0
)) {
172 nit_abort("Uninitialized attribute %s", "_context", LOCATE_global___rta_analysis
, 45);
174 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaBuilder____context(fra
.me
.REG
[0]);
175 stack_frame_head
= fra
.me
.prev
;
176 return fra
.me
.REG
[0];
178 val_t
global___rta_analysis___RtaBuilder___program(val_t p0
){
179 struct {struct stack_frame_t me
;} fra
;
182 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
183 fra
.me
.file
= LOCATE_global___rta_analysis
;
185 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___program
;
186 fra
.me
.has_broke
= 0;
188 fra
.me
.nitni_local_ref_head
= NULL
;
189 fra
.me
.REG
[0] = NIT_NULL
;
191 /* global/rta_analysis.nit:46 */
192 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____program(fra
.me
.REG
[0])!=NIT_NULL
);
193 if (UNTAG_Bool(REGB0
)) {
195 nit_abort("Uninitialized attribute %s", "_program", LOCATE_global___rta_analysis
, 46);
197 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaBuilder____program(fra
.me
.REG
[0]);
198 stack_frame_head
= fra
.me
.prev
;
199 return fra
.me
.REG
[0];
201 val_t
global___rta_analysis___RtaBuilder___iroutine_to_search(val_t p0
){
202 struct {struct stack_frame_t me
;} fra
;
205 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
206 fra
.me
.file
= LOCATE_global___rta_analysis
;
208 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___iroutine_to_search
;
209 fra
.me
.has_broke
= 0;
211 fra
.me
.nitni_local_ref_head
= NULL
;
212 fra
.me
.REG
[0] = NIT_NULL
;
214 /* global/rta_analysis.nit:47 */
215 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____iroutine_to_search(fra
.me
.REG
[0])!=NIT_NULL
);
216 if (UNTAG_Bool(REGB0
)) {
218 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_global___rta_analysis
, 47);
220 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaBuilder____iroutine_to_search(fra
.me
.REG
[0]);
221 stack_frame_head
= fra
.me
.prev
;
222 return fra
.me
.REG
[0];
224 val_t
global___rta_analysis___RtaBuilder___call_sites(val_t p0
){
225 struct {struct stack_frame_t me
;} fra
;
228 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
229 fra
.me
.file
= LOCATE_global___rta_analysis
;
231 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___call_sites
;
232 fra
.me
.has_broke
= 0;
234 fra
.me
.nitni_local_ref_head
= NULL
;
235 fra
.me
.REG
[0] = NIT_NULL
;
237 /* global/rta_analysis.nit:48 */
238 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____call_sites(fra
.me
.REG
[0])!=NIT_NULL
);
239 if (UNTAG_Bool(REGB0
)) {
241 nit_abort("Uninitialized attribute %s", "_call_sites", LOCATE_global___rta_analysis
, 48);
243 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaBuilder____call_sites(fra
.me
.REG
[0]);
244 stack_frame_head
= fra
.me
.prev
;
245 return fra
.me
.REG
[0];
247 val_t
global___rta_analysis___RtaBuilder___called_methods(val_t p0
){
248 struct {struct stack_frame_t me
;} fra
;
251 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
252 fra
.me
.file
= LOCATE_global___rta_analysis
;
254 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___called_methods
;
255 fra
.me
.has_broke
= 0;
257 fra
.me
.nitni_local_ref_head
= NULL
;
258 fra
.me
.REG
[0] = NIT_NULL
;
260 /* global/rta_analysis.nit:49 */
261 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____called_methods(fra
.me
.REG
[0])!=NIT_NULL
);
262 if (UNTAG_Bool(REGB0
)) {
264 nit_abort("Uninitialized attribute %s", "_called_methods", LOCATE_global___rta_analysis
, 49);
266 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaBuilder____called_methods(fra
.me
.REG
[0]);
267 stack_frame_head
= fra
.me
.prev
;
268 return fra
.me
.REG
[0];
270 void global___rta_analysis___RtaBuilder___init(val_t p0
, val_t p1
, int* init_table
){
271 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___rta_analysis___RtaBuilder
].i
;
272 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
274 if (init_table
[itpos1
]) return;
275 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
276 fra
.me
.file
= LOCATE_global___rta_analysis
;
278 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___init
;
279 fra
.me
.has_broke
= 0;
281 fra
.me
.nitni_local_ref_head
= NULL
;
282 fra
.me
.REG
[0] = NIT_NULL
;
283 fra
.me
.REG
[1] = NIT_NULL
;
284 fra
.me
.REG
[2] = NIT_NULL
;
287 /* global/rta_analysis.nit:52 */
288 fra
.me
.REG
[2] = NEW_RtaContext_global___rta_analysis___RtaContext___init();
289 ATTR_global___rta_analysis___RtaBuilder____context(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
290 /* global/rta_analysis.nit:53 */
291 ATTR_global___rta_analysis___RtaBuilder____program(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
292 stack_frame_head
= fra
.me
.prev
;
293 init_table
[itpos1
] = 1;
296 val_t
global___rta_analysis___RtaBuilder___check_method(val_t p0
, val_t p1
){
297 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
300 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
301 fra
.me
.file
= LOCATE_global___rta_analysis
;
303 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_method
;
304 fra
.me
.has_broke
= 0;
306 fra
.me
.nitni_local_ref_head
= NULL
;
307 fra
.me
.REG
[0] = NIT_NULL
;
308 fra
.me
.REG
[1] = NIT_NULL
;
309 fra
.me
.REG
[2] = NIT_NULL
;
310 fra
.me
.REG
[3] = NIT_NULL
;
313 /* global/rta_analysis.nit:60 */
314 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
315 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
316 fra
.me
.REG
[3] = CALL_program___Program___main_module(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
317 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
318 /* global/rta_analysis.nit:62 */
319 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
320 REGB0
= CALL_global___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
321 if (UNTAG_Bool(REGB0
)) {
322 REGB0
= TAG_Bool(true);
323 fra
.me
.REG
[2] = REGB0
;
326 /* global/rta_analysis.nit:64 */
327 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
328 fra
.me
.REG
[3] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
329 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[3])(fra
.me
.REG
[3], (&(fra
.me
)), ((fun_t
)OC_global___rta_analysis___RtaBuilder___check_method_2
));
330 switch ((&(fra
.me
))->has_broke
) {
332 case 1: (&(fra
.me
))->has_broke
= 0; goto label1
;
334 /* global/rta_analysis.nit:68 */
335 REGB0
= TAG_Bool(false);
336 fra
.me
.REG
[2] = REGB0
;
339 stack_frame_head
= fra
.me
.prev
;
340 return fra
.me
.REG
[2];
342 void OC_global___rta_analysis___RtaBuilder___check_method_2(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
343 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
348 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
349 fra
.me
.file
= LOCATE_global___rta_analysis
;
351 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_method
;
352 fra
.me
.has_broke
= 0;
354 fra
.me
.nitni_local_ref_head
= NULL
;
355 fra
.me
.REG
[0] = NIT_NULL
;
356 fra
.me
.REG
[1] = NIT_NULL
;
357 fra
.me
.closure_ctx
= closctx_param
;
358 fra
.me
.closure_funs
= CREG
;
361 /* global/rta_analysis.nit:65 */
362 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(closctx
->REG
[1])(closctx
->REG
[1]);
363 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
364 REGB0
= TAG_Bool(IS_EQUAL_OO(fra
.me
.REG
[1],closctx
->REG
[1]));
365 if (UNTAG_Bool(REGB0
)) {
367 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
->REG
[1]);
370 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
371 if (UNTAG_Bool(REGB0
)) {
374 /* global/rta_analysis.nit:66 */
375 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___context(closctx
->REG
[0])(closctx
->REG
[0]);
376 REGB0
= CALL_global___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
377 if (UNTAG_Bool(REGB0
)) {
378 REGB0
= TAG_Bool(true);
379 closctx
->REG
[2] = REGB0
;
380 closctx
->has_broke
= 1;
384 stack_frame_head
= fra
.me
.prev
;
387 void global___rta_analysis___RtaBuilder___check_call_sites(val_t p0
){
388 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
390 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
391 fra
.me
.file
= LOCATE_global___rta_analysis
;
393 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_call_sites
;
394 fra
.me
.has_broke
= 0;
396 fra
.me
.nitni_local_ref_head
= NULL
;
397 fra
.me
.REG
[0] = NIT_NULL
;
398 fra
.me
.REG
[1] = NIT_NULL
;
399 fra
.me
.REG
[2] = NIT_NULL
;
401 /* global/rta_analysis.nit:74 */
402 fra
.me
.REG
[1] = NEW_List_standard___collection___list___List___init();
403 /* global/rta_analysis.nit:75 */
404 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___call_sites(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
405 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_global___rta_analysis___RtaBuilder___check_call_sites_1
));
406 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], (&(fra
.me
)), ((fun_t
)OC_global___rta_analysis___RtaBuilder___check_call_sites_4
));
407 stack_frame_head
= fra
.me
.prev
;
410 void OC_global___rta_analysis___RtaBuilder___check_call_sites_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
411 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
415 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
416 fra
.me
.file
= LOCATE_global___rta_analysis
;
418 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_call_sites
;
419 fra
.me
.has_broke
= 0;
421 fra
.me
.nitni_local_ref_head
= NULL
;
422 fra
.me
.REG
[0] = NIT_NULL
;
423 fra
.me
.REG
[1] = NIT_NULL
;
424 fra
.me
.REG
[2] = NIT_NULL
;
425 fra
.me
.closure_ctx
= closctx_param
;
426 fra
.me
.closure_funs
= CREG
;
429 /* global/rta_analysis.nit:76 */
430 fra
.me
.REG
[1] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
431 /* global/rta_analysis.nit:77 */
432 REGB0
= TAG_Bool(true);
433 closctx
->REG
[2] = REGB0
;
434 /* global/rta_analysis.nit:80 */
435 REGB0
= CALL_global___rta_analysis___RtaBuilder___check_method(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[1]);
436 if (UNTAG_Bool(REGB0
)) {
437 /* global/rta_analysis.nit:81 */
438 fra
.me
.REG
[2] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
439 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[2]);
441 /* global/rta_analysis.nit:83 */
442 REGB0
= TAG_Bool(false);
443 closctx
->REG
[2] = REGB0
;
445 /* global/rta_analysis.nit:87 */
446 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
447 fra
.me
.REG
[1] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
448 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
, ((fun_t
)OC_global___rta_analysis___RtaBuilder___check_call_sites_2
));
449 /* global/rta_analysis.nit:96 */
450 if (UNTAG_Bool(closctx
->REG
[2])) {
451 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
453 stack_frame_head
= fra
.me
.prev
;
456 void OC_global___rta_analysis___RtaBuilder___check_call_sites_2(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
457 struct {struct stack_frame_t me
;} fra
;
461 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
462 fra
.me
.file
= LOCATE_global___rta_analysis
;
464 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_call_sites
;
465 fra
.me
.has_broke
= 0;
467 fra
.me
.nitni_local_ref_head
= NULL
;
468 fra
.me
.REG
[0] = NIT_NULL
;
469 fra
.me
.closure_ctx
= closctx_param
;
470 fra
.me
.closure_funs
= CREG
;
473 /* global/rta_analysis.nit:88 */
474 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
475 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
476 if (UNTAG_Bool(REGB0
)) {
479 /* global/rta_analysis.nit:89 */
480 REGB0
= CALL_global___rta_analysis___RtaBuilder___check_method(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
481 if (UNTAG_Bool(REGB0
)) {
482 /* global/rta_analysis.nit:90 */
483 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
484 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
486 /* global/rta_analysis.nit:92 */
487 REGB0
= TAG_Bool(false);
488 closctx
->REG
[2] = REGB0
;
491 stack_frame_head
= fra
.me
.prev
;
494 void OC_global___rta_analysis___RtaBuilder___check_call_sites_4(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
495 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
498 /* global/rta_analysis.nit:100 */
499 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
500 fra
.me
.file
= LOCATE_global___rta_analysis
;
502 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_call_sites
;
503 fra
.me
.has_broke
= 0;
505 fra
.me
.nitni_local_ref_head
= NULL
;
506 fra
.me
.REG
[0] = NIT_NULL
;
507 fra
.me
.REG
[1] = NIT_NULL
;
508 fra
.me
.closure_ctx
= closctx_param
;
509 fra
.me
.closure_funs
= CREG
;
512 /* global/rta_analysis.nit:101 */
513 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___call_sites(closctx
->REG
[0])(closctx
->REG
[0]);
514 CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
515 stack_frame_head
= fra
.me
.prev
;
518 void global___rta_analysis___RtaBuilder___add_instantiated_class(val_t p0
, val_t p1
){
519 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
522 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
523 fra
.me
.file
= LOCATE_global___rta_analysis
;
525 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___add_instantiated_class
;
526 fra
.me
.has_broke
= 0;
528 fra
.me
.nitni_local_ref_head
= NULL
;
529 fra
.me
.REG
[0] = NIT_NULL
;
530 fra
.me
.REG
[1] = NIT_NULL
;
531 fra
.me
.REG
[2] = NIT_NULL
;
534 /* global/rta_analysis.nit:106 */
535 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
536 REGB0
= CALL_global___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
537 if (UNTAG_Bool(REGB0
)) {
540 /* global/rta_analysis.nit:107 */
541 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
542 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaContext___instanciated_classes(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
543 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
544 /* global/rta_analysis.nit:109 */
545 CALL_global___rta_analysis___RtaBuilder___check_call_sites(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
547 stack_frame_head
= fra
.me
.prev
;
550 void global___rta_analysis___RtaBuilder___add_reachable_call(val_t p0
, val_t p1
){
551 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
554 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
555 fra
.me
.file
= LOCATE_global___rta_analysis
;
557 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___add_reachable_call
;
558 fra
.me
.has_broke
= 0;
560 fra
.me
.nitni_local_ref_head
= NULL
;
561 fra
.me
.REG
[0] = NIT_NULL
;
562 fra
.me
.REG
[1] = NIT_NULL
;
563 fra
.me
.REG
[2] = NIT_NULL
;
564 fra
.me
.REG
[3] = NIT_NULL
;
567 /* global/rta_analysis.nit:113 */
568 fra
.me
.REG
[2] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
569 /* global/rta_analysis.nit:114 */
570 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___called_methods(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
571 REGB0
= CALL_standard___collection___abstract_collection___Collection___has(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
572 if (UNTAG_Bool(REGB0
)) {
575 /* global/rta_analysis.nit:115 */
576 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___call_sites(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
577 REGB0
= CALL_standard___collection___abstract_collection___Collection___has(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
578 if (UNTAG_Bool(REGB0
)) {
581 /* global/rta_analysis.nit:117 */
582 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___call_sites(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
583 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
584 /* global/rta_analysis.nit:118 */
585 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___called_methods(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
586 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
587 /* global/rta_analysis.nit:119 */
588 CALL_global___rta_analysis___RtaBuilder___check_call_sites(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
590 stack_frame_head
= fra
.me
.prev
;
593 void global___rta_analysis___RtaBuilder___add_reachable_iroutine(val_t p0
, val_t p1
){
594 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
598 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
599 fra
.me
.file
= LOCATE_global___rta_analysis
;
601 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___add_reachable_iroutine
;
602 fra
.me
.has_broke
= 0;
604 fra
.me
.nitni_local_ref_head
= NULL
;
605 fra
.me
.REG
[0] = NIT_NULL
;
606 fra
.me
.REG
[1] = NIT_NULL
;
607 fra
.me
.REG
[2] = NIT_NULL
;
610 /* global/rta_analysis.nit:123 */
611 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
612 if (UNTAG_Bool(REGB0
)) {
614 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
615 if (UNTAG_Bool(REGB1
)) {
616 REGB1
= TAG_Bool(false);
619 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
623 if (UNTAG_Bool(REGB0
)) {
624 REGB0
= TAG_Bool(true);
626 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
627 REGB1
= CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
630 if (UNTAG_Bool(REGB0
)) {
633 /* global/rta_analysis.nit:124 */
634 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
635 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaContext___reachable_iroutines(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
636 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
637 /* global/rta_analysis.nit:125 */
638 fra
.me
.REG
[0] = CALL_global___rta_analysis___RtaBuilder___iroutine_to_search(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
639 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
641 stack_frame_head
= fra
.me
.prev
;
644 void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0
){
645 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
650 static val_t once_value_1
; /* Once value */
651 static val_t once_value_2
; /* Once value */
652 static val_t once_value_3
; /* Once value */
653 static val_t once_value_4
; /* Once value */
654 static val_t once_value_5
; /* Once value */
655 static val_t once_value_6
; /* Once value */
656 static val_t once_value_7
; /* Once value */
657 static val_t once_value_8
; /* Once value */
658 static val_t once_value_9
; /* Once value */
659 static val_t once_value_10
; /* Once value */
660 static val_t once_value_13
; /* Once value */
661 static val_t once_value_14
; /* Once value */
662 static val_t once_value_16
; /* Once value */
663 static val_t once_value_17
; /* Once value */
664 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
665 fra
.me
.file
= LOCATE_global___rta_analysis
;
667 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
;
668 fra
.me
.has_broke
= 0;
670 fra
.me
.nitni_local_ref_head
= NULL
;
671 fra
.me
.REG
[0] = NIT_NULL
;
672 fra
.me
.REG
[1] = NIT_NULL
;
673 fra
.me
.REG
[2] = NIT_NULL
;
674 fra
.me
.REG
[3] = NIT_NULL
;
675 fra
.me
.REG
[4] = NIT_NULL
;
676 fra
.me
.REG
[5] = NIT_NULL
;
678 /* global/rta_analysis.nit:130 */
680 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
682 fra
.me
.REG
[2] = BOX_NativeString("Object");
684 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
685 once_value_1
= fra
.me
.REG
[2];
686 register_static_object(&once_value_1
);
687 } else fra
.me
.REG
[2] = once_value_1
;
688 fra
.me
.REG
[2] = fra
.me
.REG
[2];
689 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
691 fra
.me
.REG
[2] = BOX_NativeString("Bool");
693 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
694 once_value_2
= fra
.me
.REG
[2];
695 register_static_object(&once_value_2
);
696 } else fra
.me
.REG
[2] = once_value_2
;
697 fra
.me
.REG
[2] = fra
.me
.REG
[2];
698 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
700 fra
.me
.REG
[2] = BOX_NativeString("Float");
702 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
703 once_value_3
= fra
.me
.REG
[2];
704 register_static_object(&once_value_3
);
705 } else fra
.me
.REG
[2] = once_value_3
;
706 fra
.me
.REG
[2] = fra
.me
.REG
[2];
707 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
709 fra
.me
.REG
[2] = BOX_NativeString("Int");
711 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
712 once_value_4
= fra
.me
.REG
[2];
713 register_static_object(&once_value_4
);
714 } else fra
.me
.REG
[2] = once_value_4
;
715 fra
.me
.REG
[2] = fra
.me
.REG
[2];
716 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
718 fra
.me
.REG
[2] = BOX_NativeString("String");
720 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
721 once_value_5
= fra
.me
.REG
[2];
722 register_static_object(&once_value_5
);
723 } else fra
.me
.REG
[2] = once_value_5
;
724 fra
.me
.REG
[2] = fra
.me
.REG
[2];
725 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
727 fra
.me
.REG
[2] = BOX_NativeString("NativeString");
729 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
730 once_value_6
= fra
.me
.REG
[2];
731 register_static_object(&once_value_6
);
732 } else fra
.me
.REG
[2] = once_value_6
;
733 fra
.me
.REG
[2] = fra
.me
.REG
[2];
734 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
736 fra
.me
.REG
[2] = BOX_NativeString("Range");
738 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
739 once_value_7
= fra
.me
.REG
[2];
740 register_static_object(&once_value_7
);
741 } else fra
.me
.REG
[2] = once_value_7
;
742 fra
.me
.REG
[2] = fra
.me
.REG
[2];
743 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
745 fra
.me
.REG
[2] = BOX_NativeString("Array");
747 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
748 once_value_8
= fra
.me
.REG
[2];
749 register_static_object(&once_value_8
);
750 } else fra
.me
.REG
[2] = once_value_8
;
751 fra
.me
.REG
[2] = fra
.me
.REG
[2];
752 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
754 fra
.me
.REG
[2] = BOX_NativeString("ArrayIterator");
756 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
757 once_value_9
= fra
.me
.REG
[2];
758 register_static_object(&once_value_9
);
759 } else fra
.me
.REG
[2] = once_value_9
;
760 fra
.me
.REG
[2] = fra
.me
.REG
[2];
761 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
762 if (!once_value_10
) {
763 fra
.me
.REG
[2] = BOX_NativeString("Inline__");
765 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
766 once_value_10
= fra
.me
.REG
[2];
767 register_static_object(&once_value_10
);
768 } else fra
.me
.REG
[2] = once_value_10
;
769 fra
.me
.REG
[2] = fra
.me
.REG
[2];
770 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
771 /* ../lib/standard/collection/array.nit:269 */
773 /* ../lib/standard/collection/array.nit:270 */
774 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
775 if (UNTAG_Bool(REGB1
)) {
777 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 270);
779 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1]);
780 /* ../lib/standard/collection/array.nit:271 */
781 fra
.me
.REG
[2] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[1]);
782 /* ../lib/standard/collection/array.nit:272 */
784 /* ../lib/standard/collection/array.nit:24 */
785 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
786 if (UNTAG_Bool(REGB1
)) {
788 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
790 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1]);
791 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
792 if (UNTAG_Bool(REGB2
)) {
794 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
796 /* ../lib/standard/kernel.nit:232 */
797 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
798 /* ../lib/standard/collection/array.nit:272 */
799 if (UNTAG_Bool(REGB1
)) {
800 /* ../lib/standard/collection/array.nit:273 */
801 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
802 if (UNTAG_Bool(REGB1
)) {
803 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 273);
805 /* ../lib/standard/collection/array.nit:718 */
806 fra
.me
.REG
[3] = ((Nit_NativeArray
)fra
.me
.REG
[2])->val
[UNTAG_Int(REGB0
)];
807 /* global/rta_analysis.nit:133 */
808 fra
.me
.REG
[4] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
809 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
810 fra
.me
.REG
[5] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
811 REGB1
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
812 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
813 if (UNTAG_Bool(REGB1
)) {
816 /* global/rta_analysis.nit:134 */
817 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
818 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
819 fra
.me
.REG
[3] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
820 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[3]);
821 /* global/rta_analysis.nit:135 */
822 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
824 /* ../lib/standard/collection/array.nit:274 */
826 /* ../lib/standard/kernel.nit:235 */
827 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
828 /* ../lib/standard/collection/array.nit:274 */
831 /* ../lib/standard/collection/array.nit:272 */
836 /* global/rta_analysis.nit:138 */
837 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
838 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
839 if (!once_value_13
) {
840 fra
.me
.REG
[1] = BOX_NativeString("Inline__");
842 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
843 once_value_13
= fra
.me
.REG
[1];
844 register_static_object(&once_value_13
);
845 } else fra
.me
.REG
[1] = once_value_13
;
846 fra
.me
.REG
[1] = fra
.me
.REG
[1];
847 fra
.me
.REG
[1] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
848 REGB0
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
849 if (UNTAG_Bool(REGB0
)) {
850 /* global/rta_analysis.nit:139 */
851 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
852 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
853 if (!once_value_14
) {
854 fra
.me
.REG
[2] = BOX_NativeString("Inline__");
856 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
857 once_value_14
= fra
.me
.REG
[2];
858 register_static_object(&once_value_14
);
859 } else fra
.me
.REG
[2] = once_value_14
;
860 fra
.me
.REG
[2] = fra
.me
.REG
[2];
861 fra
.me
.REG
[2] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
862 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
863 /* global/rta_analysis.nit:143 */
864 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
865 fra
.me
.REG
[2] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
866 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_15
));
868 /* global/rta_analysis.nit:148 */
869 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
870 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
871 if (!once_value_16
) {
872 fra
.me
.REG
[1] = BOX_NativeString("Pointer");
874 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
875 once_value_16
= fra
.me
.REG
[1];
876 register_static_object(&once_value_16
);
877 } else fra
.me
.REG
[1] = once_value_16
;
878 fra
.me
.REG
[1] = fra
.me
.REG
[1];
879 fra
.me
.REG
[1] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
880 REGB0
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
881 if (UNTAG_Bool(REGB0
)) {
882 /* global/rta_analysis.nit:149 */
883 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
884 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
885 if (!once_value_17
) {
886 fra
.me
.REG
[2] = BOX_NativeString("Pointer");
888 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
889 once_value_17
= fra
.me
.REG
[2];
890 register_static_object(&once_value_17
);
891 } else fra
.me
.REG
[2] = once_value_17
;
892 fra
.me
.REG
[2] = fra
.me
.REG
[2];
893 fra
.me
.REG
[2] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
894 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
895 /* global/rta_analysis.nit:153 */
896 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
897 fra
.me
.REG
[2] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
898 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_18
));
900 /* global/rta_analysis.nit:158 */
901 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
902 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
903 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMModule___global_classes(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
904 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_19
));
905 /* global/rta_analysis.nit:165 */
906 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
907 CALL_program___Program___with_each_methods(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_21
));
908 stack_frame_head
= fra
.me
.prev
;
911 void OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_15(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
912 struct {struct stack_frame_t me
;} fra
;
915 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
916 fra
.me
.file
= LOCATE_global___rta_analysis
;
918 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
;
919 fra
.me
.has_broke
= 0;
921 fra
.me
.nitni_local_ref_head
= NULL
;
922 fra
.me
.REG
[0] = NIT_NULL
;
923 fra
.me
.closure_ctx
= closctx_param
;
924 fra
.me
.closure_funs
= CREG
;
927 /* global/rta_analysis.nit:144 */
928 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
929 stack_frame_head
= fra
.me
.prev
;
932 void OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_18(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
933 struct {struct stack_frame_t me
;} fra
;
936 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
937 fra
.me
.file
= LOCATE_global___rta_analysis
;
939 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
;
940 fra
.me
.has_broke
= 0;
942 fra
.me
.nitni_local_ref_head
= NULL
;
943 fra
.me
.REG
[0] = NIT_NULL
;
944 fra
.me
.closure_ctx
= closctx_param
;
945 fra
.me
.closure_funs
= CREG
;
948 /* global/rta_analysis.nit:154 */
949 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
950 stack_frame_head
= fra
.me
.prev
;
953 void OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_19(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
954 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
959 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
960 fra
.me
.file
= LOCATE_global___rta_analysis
;
962 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
;
963 fra
.me
.has_broke
= 0;
965 fra
.me
.nitni_local_ref_head
= NULL
;
966 fra
.me
.REG
[0] = NIT_NULL
;
967 fra
.me
.REG
[1] = NIT_NULL
;
968 fra
.me
.closure_ctx
= closctx_param
;
969 fra
.me
.closure_funs
= CREG
;
972 /* global/rta_analysis.nit:159 */
973 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
974 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
975 if (UNTAG_Bool(REGB0
)) {
976 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
977 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
979 REGB1
= TAG_Bool(false);
982 if (UNTAG_Bool(REGB0
)) {
985 /* global/rta_analysis.nit:160 */
986 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___program(closctx
->REG
[0])(closctx
->REG
[0]);
987 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
988 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
989 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
991 stack_frame_head
= fra
.me
.prev
;
994 void OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_21(struct stack_frame_t
*closctx
, val_t p0
){
995 struct {struct stack_frame_t me
;} fra
;
998 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
999 fra
.me
.file
= LOCATE_global___rta_analysis
;
1001 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
;
1002 fra
.me
.has_broke
= 0;
1003 fra
.me
.REG_size
= 1;
1004 fra
.me
.nitni_local_ref_head
= NULL
;
1005 fra
.me
.REG
[0] = NIT_NULL
;
1007 /* global/rta_analysis.nit:166 */
1008 REGB0
= CALL_metamodel___abstractmetamodel___MMMethod___is_extern(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1009 if (UNTAG_Bool(REGB0
)) {
1010 /* global/rta_analysis.nit:167 */
1011 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1012 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
1014 stack_frame_head
= fra
.me
.prev
;
1017 void global___rta_analysis___RtaBuilder___work(val_t p0
){
1018 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
1023 static val_t once_value_1
; /* Once value */
1024 static val_t once_value_2
; /* Once value */
1025 static val_t once_value_3
; /* Once value */
1026 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1027 fra
.me
.file
= LOCATE_global___rta_analysis
;
1029 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___work
;
1030 fra
.me
.has_broke
= 0;
1031 fra
.me
.REG_size
= 7;
1032 fra
.me
.nitni_local_ref_head
= NULL
;
1033 fra
.me
.REG
[0] = NIT_NULL
;
1034 fra
.me
.REG
[1] = NIT_NULL
;
1035 fra
.me
.REG
[2] = NIT_NULL
;
1036 fra
.me
.REG
[3] = NIT_NULL
;
1037 fra
.me
.REG
[4] = NIT_NULL
;
1038 fra
.me
.REG
[5] = NIT_NULL
;
1039 fra
.me
.REG
[6] = NIT_NULL
;
1041 /* global/rta_analysis.nit:172 */
1042 fra
.me
.REG
[1] = fra
.me
.REG
[0];
1043 /* global/rta_analysis.nit:174 */
1044 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1045 fra
.me
.REG
[2] = CALL_program___Program___main_method(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1046 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
1047 if (UNTAG_Bool(REGB0
)) {
1049 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
1050 if (UNTAG_Bool(REGB1
)) {
1051 REGB1
= TAG_Bool(false);
1054 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
1058 if (UNTAG_Bool(REGB0
)) {
1059 /* global/rta_analysis.nit:176 */
1061 fra
.me
.REG
[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
1062 if (!once_value_1
) {
1063 fra
.me
.REG
[3] = BOX_NativeString("Int");
1065 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
1066 once_value_1
= fra
.me
.REG
[3];
1067 register_static_object(&once_value_1
);
1068 } else fra
.me
.REG
[3] = once_value_1
;
1069 fra
.me
.REG
[3] = fra
.me
.REG
[3];
1070 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1071 if (!once_value_2
) {
1072 fra
.me
.REG
[3] = BOX_NativeString("Char");
1074 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
1075 once_value_2
= fra
.me
.REG
[3];
1076 register_static_object(&once_value_2
);
1077 } else fra
.me
.REG
[3] = once_value_2
;
1078 fra
.me
.REG
[3] = fra
.me
.REG
[3];
1079 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1080 if (!once_value_3
) {
1081 fra
.me
.REG
[3] = BOX_NativeString("Bool");
1083 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
1084 once_value_3
= fra
.me
.REG
[3];
1085 register_static_object(&once_value_3
);
1086 } else fra
.me
.REG
[3] = once_value_3
;
1087 fra
.me
.REG
[3] = fra
.me
.REG
[3];
1088 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1089 /* ../lib/standard/collection/array.nit:269 */
1091 /* ../lib/standard/collection/array.nit:270 */
1092 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2])!=NIT_NULL
);
1093 if (UNTAG_Bool(REGB1
)) {
1095 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 270);
1097 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2]);
1098 /* ../lib/standard/collection/array.nit:271 */
1099 fra
.me
.REG
[3] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[2]);
1100 /* ../lib/standard/collection/array.nit:272 */
1102 /* ../lib/standard/collection/array.nit:24 */
1103 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2])!=NIT_NULL
);
1104 if (UNTAG_Bool(REGB1
)) {
1106 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
1108 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2]);
1109 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
1110 if (UNTAG_Bool(REGB2
)) {
1112 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
1114 /* ../lib/standard/kernel.nit:232 */
1115 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
1116 /* ../lib/standard/collection/array.nit:272 */
1117 if (UNTAG_Bool(REGB1
)) {
1118 /* ../lib/standard/collection/array.nit:273 */
1119 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1120 if (UNTAG_Bool(REGB1
)) {
1121 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 273);
1123 /* ../lib/standard/collection/array.nit:718 */
1124 fra
.me
.REG
[4] = ((Nit_NativeArray
)fra
.me
.REG
[3])->val
[UNTAG_Int(REGB0
)];
1125 /* global/rta_analysis.nit:177 */
1126 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1127 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1128 fra
.me
.REG
[6] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1129 REGB1
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[6]);
1130 if (UNTAG_Bool(REGB1
)) {
1131 /* global/rta_analysis.nit:178 */
1132 fra
.me
.REG
[6] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1133 fra
.me
.REG
[6] = CALL_program___Program___main_module(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
1134 fra
.me
.REG
[4] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1135 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[4]);
1136 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[4]);
1138 /* ../lib/standard/collection/array.nit:274 */
1140 /* ../lib/standard/kernel.nit:235 */
1141 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
1142 /* ../lib/standard/collection/array.nit:274 */
1145 /* ../lib/standard/collection/array.nit:272 */
1150 /* global/rta_analysis.nit:181 */
1153 /* global/rta_analysis.nit:184 */
1154 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1155 fra
.me
.REG
[3] = CALL_program___Program___main_class(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1156 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_metamodel___abstractmetamodel___MMLocalClass
, ID_metamodel___abstractmetamodel___MMLocalClass
)) /*cast MMLocalClass*/;
1157 if (UNTAG_Bool(REGB0
)) {
1159 nit_abort("Cast failed", NULL
, LOCATE_global___rta_analysis
, 184);
1161 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
1162 /* global/rta_analysis.nit:185 */
1163 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1164 fra
.me
.REG
[3] = CALL_program___Program___main_method(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1165 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
1166 if (UNTAG_Bool(REGB0
)) {
1168 nit_abort("Cast failed", NULL
, LOCATE_global___rta_analysis
, 185);
1170 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1171 if (UNTAG_Bool(REGB0
)) {
1172 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 185);
1174 fra
.me
.REG
[3] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1175 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
1176 /* global/rta_analysis.nit:186 */
1177 CALL_global___rta_analysis___RtaBuilder___force_some_type_analysis(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1178 /* global/rta_analysis.nit:188 */
1180 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___iroutine_to_search(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1181 REGB0
= CALL_standard___collection___abstract_collection___Collection___is_empty(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1182 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1183 if (UNTAG_Bool(REGB0
)) {
1184 /* global/rta_analysis.nit:189 */
1185 fra
.me
.REG
[3] = NEW_RtaVisitor_global___rta_analysis___RtaVisitor___init(fra
.me
.REG
[1]);
1186 /* global/rta_analysis.nit:190 */
1187 fra
.me
.REG
[0] = CALL_global___rta_analysis___RtaBuilder___iroutine_to_search(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1188 fra
.me
.REG
[0] = CALL_standard___collection___abstract_collection___Sequence___pop(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1189 /* global/rta_analysis.nit:191 */
1190 fra
.me
.REG
[0] = CALL_icode___icode_base___IRoutine___body(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1191 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[0]);
1193 /* global/rta_analysis.nit:188 */
1199 stack_frame_head
= fra
.me
.prev
;
1202 val_t
global___rta_analysis___RtaVisitor___builder(val_t p0
){
1203 struct {struct stack_frame_t me
;} fra
;
1206 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1207 fra
.me
.file
= LOCATE_global___rta_analysis
;
1209 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaVisitor___builder
;
1210 fra
.me
.has_broke
= 0;
1211 fra
.me
.REG_size
= 1;
1212 fra
.me
.nitni_local_ref_head
= NULL
;
1213 fra
.me
.REG
[0] = NIT_NULL
;
1215 /* global/rta_analysis.nit:198 */
1216 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaVisitor____builder(fra
.me
.REG
[0])!=NIT_NULL
);
1217 if (UNTAG_Bool(REGB0
)) {
1219 nit_abort("Uninitialized attribute %s", "_builder", LOCATE_global___rta_analysis
, 198);
1221 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaVisitor____builder(fra
.me
.REG
[0]);
1222 stack_frame_head
= fra
.me
.prev
;
1223 return fra
.me
.REG
[0];
1225 void global___rta_analysis___RtaVisitor___visit_icode(val_t p0
, val_t p1
){
1226 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
1229 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1230 fra
.me
.file
= LOCATE_global___rta_analysis
;
1232 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaVisitor___visit_icode
;
1233 fra
.me
.has_broke
= 0;
1234 fra
.me
.REG_size
= 7;
1235 fra
.me
.nitni_local_ref_head
= NULL
;
1236 fra
.me
.REG
[0] = NIT_NULL
;
1237 fra
.me
.REG
[1] = NIT_NULL
;
1238 fra
.me
.REG
[2] = NIT_NULL
;
1239 fra
.me
.REG
[3] = NIT_NULL
;
1240 fra
.me
.REG
[4] = NIT_NULL
;
1241 fra
.me
.REG
[5] = NIT_NULL
;
1242 fra
.me
.REG
[6] = NIT_NULL
;
1245 /* global/rta_analysis.nit:200 */
1246 fra
.me
.REG
[2] = fra
.me
.REG
[0];
1247 fra
.me
.REG
[3] = fra
.me
.REG
[1];
1248 /* global/rta_analysis.nit:202 */
1249 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_icode___icode_base___IStaticCall
, ID_icode___icode_base___IStaticCall
)) /*cast IStaticCall*/;
1250 if (UNTAG_Bool(REGB0
)) {
1251 /* global/rta_analysis.nit:204 */
1252 fra
.me
.REG
[4] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1253 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1254 if (UNTAG_Bool(REGB0
)) {
1255 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 204);
1257 fra
.me
.REG
[5] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1258 fra
.me
.REG
[5] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1259 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1261 /* global/rta_analysis.nit:205 */
1262 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_icode___icode_base___INew
, ID_icode___icode_base___INew
)) /*cast INew*/;
1263 if (UNTAG_Bool(REGB0
)) {
1264 /* global/rta_analysis.nit:207 */
1265 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1266 if (UNTAG_Bool(REGB0
)) {
1267 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 207);
1269 fra
.me
.REG
[5] = CALL_icode___icode_base___INew___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1270 /* global/rta_analysis.nit:208 */
1271 fra
.me
.REG
[4] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1272 fra
.me
.REG
[4] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1273 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1274 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
1275 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1276 /* global/rta_analysis.nit:209 */
1277 fra
.me
.REG
[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1278 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1279 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1280 if (UNTAG_Bool(REGB0
)) {
1281 /* global/rta_analysis.nit:210 */
1282 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1283 if (UNTAG_Bool(REGB0
)) {
1284 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 210);
1286 fra
.me
.REG
[5] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1287 fra
.me
.REG
[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1288 fra
.me
.REG
[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1289 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[5], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
1290 if (UNTAG_Bool(REGB0
)) {
1292 nit_abort("Cast failed", NULL
, LOCATE_global___rta_analysis
, 210);
1294 /* global/rta_analysis.nit:211 */
1295 fra
.me
.REG
[6] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1296 fra
.me
.REG
[5] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
1297 /* global/rta_analysis.nit:212 */
1298 fra
.me
.REG
[6] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1299 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
1301 /* global/rta_analysis.nit:214 */
1302 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1303 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
1305 /* global/rta_analysis.nit:215 */
1306 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_icode___icode_base___ISuper
, ID_icode___icode_base___ISuper
)) /*cast ISuper*/;
1307 if (UNTAG_Bool(REGB0
)) {
1308 /* global/rta_analysis.nit:217 */
1309 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1310 if (UNTAG_Bool(REGB0
)) {
1311 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 217);
1313 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1314 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1315 fra
.me
.REG
[4] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1316 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[4])(fra
.me
.REG
[4], (&(fra
.me
)), ((fun_t
)OC_global___rta_analysis___RtaVisitor___visit_icode_1
));
1318 /* global/rta_analysis.nit:222 */
1319 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_icode___icode_base___ICall
, ID_icode___icode_base___ICall
)) /*cast ICall*/;
1320 if (UNTAG_Bool(REGB0
)) {
1321 /* global/rta_analysis.nit:223 */
1322 fra
.me
.REG
[4] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1323 CALL_global___rta_analysis___RtaBuilder___add_reachable_call(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[3]);
1325 /* global/rta_analysis.nit:224 */
1326 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_icode___icode_base___ICheckInstance
, ID_icode___icode_base___ICheckInstance
)) /*cast ICheckInstance*/;
1327 if (UNTAG_Bool(REGB0
)) {
1328 /* global/rta_analysis.nit:225 */
1329 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1330 if (UNTAG_Bool(REGB0
)) {
1331 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 225);
1333 fra
.me
.REG
[4] = CALL_icode___icode_base___ICheckInstance___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1334 /* global/rta_analysis.nit:226 */
1335 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1336 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1337 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1338 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1339 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1340 /* global/rta_analysis.nit:227 */
1341 fra
.me
.REG
[5] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1342 /* global/rta_analysis.nit:228 */
1343 fra
.me
.REG
[4] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1344 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1346 /* global/rta_analysis.nit:229 */
1347 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_icode___icode_base___IInitAttributes
, ID_icode___icode_base___IInitAttributes
)) /*cast IInitAttributes*/;
1348 if (UNTAG_Bool(REGB0
)) {
1349 /* global/rta_analysis.nit:230 */
1350 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1351 if (UNTAG_Bool(REGB0
)) {
1352 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 230);
1354 fra
.me
.REG
[3] = CALL_icode___icode_base___IInitAttributes___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1355 /* global/rta_analysis.nit:231 */
1356 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1357 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1358 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1359 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[5]);
1360 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1361 /* global/rta_analysis.nit:232 */
1362 fra
.me
.REG
[5] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1363 /* global/rta_analysis.nit:233 */
1364 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1365 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[5]);
1372 /* global/rta_analysis.nit:235 */
1373 CALL_SUPER_global___rta_analysis___RtaVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
1374 stack_frame_head
= fra
.me
.prev
;
1377 void OC_global___rta_analysis___RtaVisitor___visit_icode_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
1378 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1382 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1383 fra
.me
.file
= LOCATE_global___rta_analysis
;
1385 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaVisitor___visit_icode
;
1386 fra
.me
.has_broke
= 0;
1387 fra
.me
.REG_size
= 2;
1388 fra
.me
.nitni_local_ref_head
= NULL
;
1389 fra
.me
.REG
[0] = NIT_NULL
;
1390 fra
.me
.REG
[1] = NIT_NULL
;
1391 fra
.me
.closure_ctx
= closctx_param
;
1392 fra
.me
.closure_funs
= CREG
;
1394 CREG
[0] = clos_fun0
;
1395 /* global/rta_analysis.nit:218 */
1396 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
1397 if (UNTAG_Bool(REGB0
)) {
1398 /* global/rta_analysis.nit:219 */
1399 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaVisitor___builder(closctx
->REG
[2])(closctx
->REG
[2]);
1400 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1401 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1403 stack_frame_head
= fra
.me
.prev
;
1406 void global___rta_analysis___RtaVisitor___init(val_t p0
, val_t p1
, int* init_table
){
1407 int itpos2
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___rta_analysis___RtaVisitor
].i
;
1408 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1410 if (init_table
[itpos2
]) return;
1411 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1412 fra
.me
.file
= LOCATE_global___rta_analysis
;
1414 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaVisitor___init
;
1415 fra
.me
.has_broke
= 0;
1416 fra
.me
.REG_size
= 3;
1417 fra
.me
.nitni_local_ref_head
= NULL
;
1418 fra
.me
.REG
[0] = NIT_NULL
;
1419 fra
.me
.REG
[1] = NIT_NULL
;
1420 fra
.me
.REG
[2] = NIT_NULL
;
1423 /* global/rta_analysis.nit:238 */
1424 fra
.me
.REG
[2] = fra
.me
.REG
[0];
1425 CALL_icode___icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
1426 /* global/rta_analysis.nit:240 */
1427 ATTR_global___rta_analysis___RtaVisitor____builder(fra
.me
.REG
[2]) = fra
.me
.REG
[1];
1428 stack_frame_head
= fra
.me
.prev
;
1429 init_table
[itpos2
] = 1;