1 /* This C file is generated by NIT to compile module global___rta_analysis. */
2 #include "global___rta_analysis._sep.h"
3 static const char LOCATE_global___rta_analysis___RtaContext___init
[] = "rta_analysis::RtaContext::init";
4 void global___rta_analysis___RtaContext___init(val_t p0
, int* init_table
){
5 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___rta_analysis___RtaContext
].i
;
6 struct {struct stack_frame_t me
;} fra
;
8 if (init_table
[itpos0
]) return;
9 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
10 fra
.me
.file
= LOCATE_global___rta_analysis
;
12 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___init
;
15 fra
.me
.nitni_local_ref_head
= NULL
;
16 fra
.me
.REG
[0] = NIT_NULL
;
18 stack_frame_head
= fra
.me
.prev
;
19 init_table
[itpos0
] = 1;
22 static const char LOCATE_global___rta_analysis___RtaContext___instanciated_classes
[] = "rta_analysis::RtaContext::instanciated_classes";
23 val_t
global___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_global___rta_analysis
;
30 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___instanciated_classes
;
33 fra
.me
.nitni_local_ref_head
= NULL
;
34 fra
.me
.REG
[0] = NIT_NULL
;
36 /* global/rta_analysis.nit:29 */
37 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaContext____instanciated_classes(fra
.me
.REG
[0])!=NIT_NULL
);
38 if (UNTAG_Bool(REGB0
)) {
40 nit_abort("Uninitialized attribute %s", "_instanciated_classes", LOCATE_global___rta_analysis
, 29);
42 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaContext____instanciated_classes(fra
.me
.REG
[0]);
43 stack_frame_head
= fra
.me
.prev
;
46 static const char LOCATE_global___rta_analysis___RtaContext___is_class_instantiated
[] = "rta_analysis::RtaContext::(instantiated_type_analysis::InstantiatedTypeAnalysis::is_class_instantiated)";
47 val_t
global___rta_analysis___RtaContext___is_class_instantiated(val_t p0
, val_t p1
){
48 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
51 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
52 fra
.me
.file
= LOCATE_global___rta_analysis
;
54 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___is_class_instantiated
;
57 fra
.me
.nitni_local_ref_head
= NULL
;
58 fra
.me
.REG
[0] = NIT_NULL
;
59 fra
.me
.REG
[1] = NIT_NULL
;
62 /* global/rta_analysis.nit:31 */
63 fra
.me
.REG
[0] = CALL_global___rta_analysis___RtaContext___instanciated_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
64 REGB0
= CALL_standard___collection___abstract_collection___Collection___has(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
67 stack_frame_head
= fra
.me
.prev
;
70 static const char LOCATE_global___rta_analysis___RtaContext___reachable_iroutines
[] = "rta_analysis::RtaContext::reachable_iroutines";
71 val_t
global___rta_analysis___RtaContext___reachable_iroutines(val_t p0
){
72 struct {struct stack_frame_t me
;} fra
;
75 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
76 fra
.me
.file
= LOCATE_global___rta_analysis
;
78 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___reachable_iroutines
;
81 fra
.me
.nitni_local_ref_head
= NULL
;
82 fra
.me
.REG
[0] = NIT_NULL
;
84 /* global/rta_analysis.nit:33 */
85 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaContext____reachable_iroutines(fra
.me
.REG
[0])!=NIT_NULL
);
86 if (UNTAG_Bool(REGB0
)) {
88 nit_abort("Uninitialized attribute %s", "_reachable_iroutines", LOCATE_global___rta_analysis
, 33);
90 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaContext____reachable_iroutines(fra
.me
.REG
[0]);
91 stack_frame_head
= fra
.me
.prev
;
94 static const char LOCATE_global___rta_analysis___RtaContext___is_iroutine_reachable
[] = "rta_analysis::RtaContext::(reachable_method_analysis::ReachableMethodAnalysis::is_iroutine_reachable)";
95 val_t
global___rta_analysis___RtaContext___is_iroutine_reachable(val_t p0
, val_t p1
){
96 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
100 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
101 fra
.me
.file
= LOCATE_global___rta_analysis
;
103 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___is_iroutine_reachable
;
104 fra
.me
.has_broke
= 0;
106 fra
.me
.nitni_local_ref_head
= NULL
;
107 fra
.me
.REG
[0] = NIT_NULL
;
108 fra
.me
.REG
[1] = NIT_NULL
;
111 /* global/rta_analysis.nit:36 */
112 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
113 if (UNTAG_Bool(REGB0
)) {
115 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
116 if (UNTAG_Bool(REGB1
)) {
120 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
124 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
125 if (UNTAG_Bool(REGB0
)) {
126 fra
.me
.REG
[0] = CALL_global___rta_analysis___RtaContext___reachable_iroutines(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
127 REGB0
= CALL_standard___collection___abstract_collection___Collection___has(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
134 stack_frame_head
= fra
.me
.prev
;
137 static const char LOCATE_global___rta_analysis___RtaContext___is_method_reachable
[] = "rta_analysis::RtaContext::(reachable_method_analysis::ReachableMethodAnalysis::is_method_reachable)";
138 val_t
global___rta_analysis___RtaContext___is_method_reachable(val_t p0
, val_t p1
){
139 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
142 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
143 fra
.me
.file
= LOCATE_global___rta_analysis
;
145 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaContext___is_method_reachable
;
146 fra
.me
.has_broke
= 0;
148 fra
.me
.nitni_local_ref_head
= NULL
;
149 fra
.me
.REG
[0] = NIT_NULL
;
150 fra
.me
.REG
[1] = NIT_NULL
;
153 /* global/rta_analysis.nit:40 */
154 fra
.me
.REG
[1] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
155 REGB0
= CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
158 stack_frame_head
= fra
.me
.prev
;
161 static const char LOCATE_global___rta_analysis___RtaBuilder___context
[] = "rta_analysis::RtaBuilder::context";
162 val_t
global___rta_analysis___RtaBuilder___context(val_t p0
){
163 struct {struct stack_frame_t me
;} fra
;
166 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
167 fra
.me
.file
= LOCATE_global___rta_analysis
;
169 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___context
;
170 fra
.me
.has_broke
= 0;
172 fra
.me
.nitni_local_ref_head
= NULL
;
173 fra
.me
.REG
[0] = NIT_NULL
;
175 /* global/rta_analysis.nit:45 */
176 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____context(fra
.me
.REG
[0])!=NIT_NULL
);
177 if (UNTAG_Bool(REGB0
)) {
179 nit_abort("Uninitialized attribute %s", "_context", LOCATE_global___rta_analysis
, 45);
181 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaBuilder____context(fra
.me
.REG
[0]);
182 stack_frame_head
= fra
.me
.prev
;
183 return fra
.me
.REG
[0];
185 static const char LOCATE_global___rta_analysis___RtaBuilder___program
[] = "rta_analysis::RtaBuilder::program";
186 val_t
global___rta_analysis___RtaBuilder___program(val_t p0
){
187 struct {struct stack_frame_t me
;} fra
;
190 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
191 fra
.me
.file
= LOCATE_global___rta_analysis
;
193 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___program
;
194 fra
.me
.has_broke
= 0;
196 fra
.me
.nitni_local_ref_head
= NULL
;
197 fra
.me
.REG
[0] = NIT_NULL
;
199 /* global/rta_analysis.nit:46 */
200 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____program(fra
.me
.REG
[0])!=NIT_NULL
);
201 if (UNTAG_Bool(REGB0
)) {
203 nit_abort("Uninitialized attribute %s", "_program", LOCATE_global___rta_analysis
, 46);
205 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaBuilder____program(fra
.me
.REG
[0]);
206 stack_frame_head
= fra
.me
.prev
;
207 return fra
.me
.REG
[0];
209 static const char LOCATE_global___rta_analysis___RtaBuilder___iroutine_to_search
[] = "rta_analysis::RtaBuilder::iroutine_to_search";
210 val_t
global___rta_analysis___RtaBuilder___iroutine_to_search(val_t p0
){
211 struct {struct stack_frame_t me
;} fra
;
214 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
215 fra
.me
.file
= LOCATE_global___rta_analysis
;
217 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___iroutine_to_search
;
218 fra
.me
.has_broke
= 0;
220 fra
.me
.nitni_local_ref_head
= NULL
;
221 fra
.me
.REG
[0] = NIT_NULL
;
223 /* global/rta_analysis.nit:47 */
224 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____iroutine_to_search(fra
.me
.REG
[0])!=NIT_NULL
);
225 if (UNTAG_Bool(REGB0
)) {
227 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_global___rta_analysis
, 47);
229 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaBuilder____iroutine_to_search(fra
.me
.REG
[0]);
230 stack_frame_head
= fra
.me
.prev
;
231 return fra
.me
.REG
[0];
233 static const char LOCATE_global___rta_analysis___RtaBuilder___call_sites
[] = "rta_analysis::RtaBuilder::call_sites";
234 val_t
global___rta_analysis___RtaBuilder___call_sites(val_t p0
){
235 struct {struct stack_frame_t me
;} fra
;
238 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
239 fra
.me
.file
= LOCATE_global___rta_analysis
;
241 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___call_sites
;
242 fra
.me
.has_broke
= 0;
244 fra
.me
.nitni_local_ref_head
= NULL
;
245 fra
.me
.REG
[0] = NIT_NULL
;
247 /* global/rta_analysis.nit:48 */
248 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____call_sites(fra
.me
.REG
[0])!=NIT_NULL
);
249 if (UNTAG_Bool(REGB0
)) {
251 nit_abort("Uninitialized attribute %s", "_call_sites", LOCATE_global___rta_analysis
, 48);
253 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaBuilder____call_sites(fra
.me
.REG
[0]);
254 stack_frame_head
= fra
.me
.prev
;
255 return fra
.me
.REG
[0];
257 static const char LOCATE_global___rta_analysis___RtaBuilder___called_methods
[] = "rta_analysis::RtaBuilder::called_methods";
258 val_t
global___rta_analysis___RtaBuilder___called_methods(val_t p0
){
259 struct {struct stack_frame_t me
;} fra
;
262 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
263 fra
.me
.file
= LOCATE_global___rta_analysis
;
265 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___called_methods
;
266 fra
.me
.has_broke
= 0;
268 fra
.me
.nitni_local_ref_head
= NULL
;
269 fra
.me
.REG
[0] = NIT_NULL
;
271 /* global/rta_analysis.nit:49 */
272 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaBuilder____called_methods(fra
.me
.REG
[0])!=NIT_NULL
);
273 if (UNTAG_Bool(REGB0
)) {
275 nit_abort("Uninitialized attribute %s", "_called_methods", LOCATE_global___rta_analysis
, 49);
277 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaBuilder____called_methods(fra
.me
.REG
[0]);
278 stack_frame_head
= fra
.me
.prev
;
279 return fra
.me
.REG
[0];
281 static const char LOCATE_global___rta_analysis___RtaBuilder___init
[] = "rta_analysis::RtaBuilder::init";
282 void global___rta_analysis___RtaBuilder___init(val_t p0
, val_t p1
, int* init_table
){
283 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___rta_analysis___RtaBuilder
].i
;
284 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
286 if (init_table
[itpos1
]) return;
287 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
288 fra
.me
.file
= LOCATE_global___rta_analysis
;
290 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___init
;
291 fra
.me
.has_broke
= 0;
293 fra
.me
.nitni_local_ref_head
= NULL
;
294 fra
.me
.REG
[0] = NIT_NULL
;
295 fra
.me
.REG
[1] = NIT_NULL
;
296 fra
.me
.REG
[2] = NIT_NULL
;
299 /* global/rta_analysis.nit:52 */
300 fra
.me
.REG
[2] = NEW_RtaContext_global___rta_analysis___RtaContext___init();
301 ATTR_global___rta_analysis___RtaBuilder____context(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
302 /* global/rta_analysis.nit:53 */
303 ATTR_global___rta_analysis___RtaBuilder____program(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
304 stack_frame_head
= fra
.me
.prev
;
305 init_table
[itpos1
] = 1;
308 static const char LOCATE_global___rta_analysis___RtaBuilder___check_method
[] = "rta_analysis::RtaBuilder::check_method";
309 val_t
global___rta_analysis___RtaBuilder___check_method(val_t p0
, val_t p1
){
310 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
313 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
314 fra
.me
.file
= LOCATE_global___rta_analysis
;
316 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_method
;
317 fra
.me
.has_broke
= 0;
319 fra
.me
.nitni_local_ref_head
= NULL
;
320 fra
.me
.REG
[0] = NIT_NULL
;
321 fra
.me
.REG
[1] = NIT_NULL
;
322 fra
.me
.REG
[2] = NIT_NULL
;
323 fra
.me
.REG
[3] = NIT_NULL
;
326 /* global/rta_analysis.nit:60 */
327 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
328 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
329 fra
.me
.REG
[3] = CALL_program___Program___main_module(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
330 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
331 /* global/rta_analysis.nit:62 */
332 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
333 REGB0
= CALL_global___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
334 if (UNTAG_Bool(REGB0
)) {
336 fra
.me
.REG
[2] = REGB0
;
339 /* global/rta_analysis.nit:64 */
340 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
341 fra
.me
.REG
[3] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
342 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
));
343 switch ((&(fra
.me
))->has_broke
) {
345 case 1: (&(fra
.me
))->has_broke
= 0; goto label1
;
347 /* global/rta_analysis.nit:68 */
349 fra
.me
.REG
[2] = REGB0
;
352 stack_frame_head
= fra
.me
.prev
;
353 return fra
.me
.REG
[2];
355 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
){
356 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
361 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
362 fra
.me
.file
= LOCATE_global___rta_analysis
;
364 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_method
;
365 fra
.me
.has_broke
= 0;
367 fra
.me
.nitni_local_ref_head
= NULL
;
368 fra
.me
.REG
[0] = NIT_NULL
;
369 fra
.me
.REG
[1] = NIT_NULL
;
370 fra
.me
.closure_ctx
= closctx_param
;
371 fra
.me
.closure_funs
= CREG
;
374 /* global/rta_analysis.nit:65 */
375 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(closctx
->REG
[1])(closctx
->REG
[1]);
376 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
377 REGB0
= TAG_Bool(IS_EQUAL_OO(fra
.me
.REG
[1],closctx
->REG
[1]));
378 if (UNTAG_Bool(REGB0
)) {
380 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
->REG
[1]);
383 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
384 if (UNTAG_Bool(REGB0
)) {
387 /* global/rta_analysis.nit:66 */
388 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___context(closctx
->REG
[0])(closctx
->REG
[0]);
389 REGB0
= CALL_global___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
390 if (UNTAG_Bool(REGB0
)) {
392 closctx
->REG
[2] = REGB0
;
393 closctx
->has_broke
= 1;
397 stack_frame_head
= fra
.me
.prev
;
400 static const char LOCATE_global___rta_analysis___RtaBuilder___check_call_sites
[] = "rta_analysis::RtaBuilder::check_call_sites";
401 void global___rta_analysis___RtaBuilder___check_call_sites(val_t p0
){
402 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
404 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
405 fra
.me
.file
= LOCATE_global___rta_analysis
;
407 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_call_sites
;
408 fra
.me
.has_broke
= 0;
410 fra
.me
.nitni_local_ref_head
= NULL
;
411 fra
.me
.REG
[0] = NIT_NULL
;
412 fra
.me
.REG
[1] = NIT_NULL
;
413 fra
.me
.REG
[2] = NIT_NULL
;
415 /* global/rta_analysis.nit:74 */
416 fra
.me
.REG
[1] = NEW_List_standard___collection___list___List___init();
417 /* global/rta_analysis.nit:75 */
418 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___call_sites(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
419 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
));
420 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
));
421 stack_frame_head
= fra
.me
.prev
;
424 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
){
425 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
429 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
430 fra
.me
.file
= LOCATE_global___rta_analysis
;
432 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_call_sites
;
433 fra
.me
.has_broke
= 0;
435 fra
.me
.nitni_local_ref_head
= NULL
;
436 fra
.me
.REG
[0] = NIT_NULL
;
437 fra
.me
.REG
[1] = NIT_NULL
;
438 fra
.me
.REG
[2] = NIT_NULL
;
439 fra
.me
.closure_ctx
= closctx_param
;
440 fra
.me
.closure_funs
= CREG
;
443 /* global/rta_analysis.nit:76 */
444 fra
.me
.REG
[1] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
445 /* global/rta_analysis.nit:77 */
447 closctx
->REG
[2] = REGB0
;
448 /* global/rta_analysis.nit:80 */
449 REGB0
= CALL_global___rta_analysis___RtaBuilder___check_method(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[1]);
450 if (UNTAG_Bool(REGB0
)) {
451 /* global/rta_analysis.nit:81 */
452 fra
.me
.REG
[2] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
453 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[2]);
455 /* global/rta_analysis.nit:83 */
457 closctx
->REG
[2] = REGB0
;
459 /* global/rta_analysis.nit:87 */
460 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
461 fra
.me
.REG
[1] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
462 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
));
463 /* global/rta_analysis.nit:96 */
464 if (UNTAG_Bool(closctx
->REG
[2])) {
465 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
467 stack_frame_head
= fra
.me
.prev
;
470 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
){
471 struct {struct stack_frame_t me
;} fra
;
475 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
476 fra
.me
.file
= LOCATE_global___rta_analysis
;
478 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_call_sites
;
479 fra
.me
.has_broke
= 0;
481 fra
.me
.nitni_local_ref_head
= NULL
;
482 fra
.me
.REG
[0] = NIT_NULL
;
483 fra
.me
.closure_ctx
= closctx_param
;
484 fra
.me
.closure_funs
= CREG
;
487 /* global/rta_analysis.nit:88 */
488 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
489 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
490 if (UNTAG_Bool(REGB0
)) {
493 /* global/rta_analysis.nit:89 */
494 REGB0
= CALL_global___rta_analysis___RtaBuilder___check_method(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
495 if (UNTAG_Bool(REGB0
)) {
496 /* global/rta_analysis.nit:90 */
497 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
498 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
500 /* global/rta_analysis.nit:92 */
502 closctx
->REG
[2] = REGB0
;
505 stack_frame_head
= fra
.me
.prev
;
508 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
){
509 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
512 /* global/rta_analysis.nit:100 */
513 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
514 fra
.me
.file
= LOCATE_global___rta_analysis
;
516 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___check_call_sites
;
517 fra
.me
.has_broke
= 0;
519 fra
.me
.nitni_local_ref_head
= NULL
;
520 fra
.me
.REG
[0] = NIT_NULL
;
521 fra
.me
.REG
[1] = NIT_NULL
;
522 fra
.me
.closure_ctx
= closctx_param
;
523 fra
.me
.closure_funs
= CREG
;
526 /* global/rta_analysis.nit:101 */
527 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___call_sites(closctx
->REG
[0])(closctx
->REG
[0]);
528 CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
529 stack_frame_head
= fra
.me
.prev
;
532 static const char LOCATE_global___rta_analysis___RtaBuilder___add_instantiated_class
[] = "rta_analysis::RtaBuilder::add_instantiated_class";
533 void global___rta_analysis___RtaBuilder___add_instantiated_class(val_t p0
, val_t p1
){
534 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
537 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
538 fra
.me
.file
= LOCATE_global___rta_analysis
;
540 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___add_instantiated_class
;
541 fra
.me
.has_broke
= 0;
543 fra
.me
.nitni_local_ref_head
= NULL
;
544 fra
.me
.REG
[0] = NIT_NULL
;
545 fra
.me
.REG
[1] = NIT_NULL
;
546 fra
.me
.REG
[2] = NIT_NULL
;
549 /* global/rta_analysis.nit:106 */
550 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
551 REGB0
= CALL_global___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
552 if (UNTAG_Bool(REGB0
)) {
555 /* global/rta_analysis.nit:107 */
556 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
557 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaContext___instanciated_classes(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
558 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
559 /* global/rta_analysis.nit:109 */
560 CALL_global___rta_analysis___RtaBuilder___check_call_sites(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
562 stack_frame_head
= fra
.me
.prev
;
565 static const char LOCATE_global___rta_analysis___RtaBuilder___add_reachable_call
[] = "rta_analysis::RtaBuilder::add_reachable_call";
566 void global___rta_analysis___RtaBuilder___add_reachable_call(val_t p0
, val_t p1
){
567 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
570 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
571 fra
.me
.file
= LOCATE_global___rta_analysis
;
573 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___add_reachable_call
;
574 fra
.me
.has_broke
= 0;
576 fra
.me
.nitni_local_ref_head
= NULL
;
577 fra
.me
.REG
[0] = NIT_NULL
;
578 fra
.me
.REG
[1] = NIT_NULL
;
579 fra
.me
.REG
[2] = NIT_NULL
;
580 fra
.me
.REG
[3] = NIT_NULL
;
583 /* global/rta_analysis.nit:113 */
584 fra
.me
.REG
[2] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
585 /* global/rta_analysis.nit:114 */
586 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___called_methods(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
587 REGB0
= CALL_standard___collection___abstract_collection___Collection___has(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
588 if (UNTAG_Bool(REGB0
)) {
591 /* global/rta_analysis.nit:115 */
592 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___call_sites(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
593 REGB0
= CALL_standard___collection___abstract_collection___Collection___has(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
594 if (UNTAG_Bool(REGB0
)) {
597 /* global/rta_analysis.nit:117 */
598 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___call_sites(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
599 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
600 /* global/rta_analysis.nit:118 */
601 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___called_methods(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
602 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
603 /* global/rta_analysis.nit:119 */
604 CALL_global___rta_analysis___RtaBuilder___check_call_sites(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
606 stack_frame_head
= fra
.me
.prev
;
609 static const char LOCATE_global___rta_analysis___RtaBuilder___add_reachable_iroutine
[] = "rta_analysis::RtaBuilder::add_reachable_iroutine";
610 void global___rta_analysis___RtaBuilder___add_reachable_iroutine(val_t p0
, val_t p1
){
611 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
615 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
616 fra
.me
.file
= LOCATE_global___rta_analysis
;
618 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___add_reachable_iroutine
;
619 fra
.me
.has_broke
= 0;
621 fra
.me
.nitni_local_ref_head
= NULL
;
622 fra
.me
.REG
[0] = NIT_NULL
;
623 fra
.me
.REG
[1] = NIT_NULL
;
624 fra
.me
.REG
[2] = NIT_NULL
;
627 /* global/rta_analysis.nit:123 */
628 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
629 if (UNTAG_Bool(REGB0
)) {
631 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
632 if (UNTAG_Bool(REGB1
)) {
636 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
640 if (UNTAG_Bool(REGB0
)) {
643 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
644 REGB1
= CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
647 if (UNTAG_Bool(REGB0
)) {
650 /* global/rta_analysis.nit:124 */
651 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
652 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaContext___reachable_iroutines(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
653 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
654 /* global/rta_analysis.nit:125 */
655 fra
.me
.REG
[0] = CALL_global___rta_analysis___RtaBuilder___iroutine_to_search(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
656 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
658 stack_frame_head
= fra
.me
.prev
;
661 static const char LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
[] = "rta_analysis::RtaBuilder::force_some_type_analysis";
662 void global___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0
){
663 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
668 static val_t once_value_1
; /* Once value */
669 static val_t once_value_2
; /* Once value */
670 static val_t once_value_3
; /* Once value */
671 static val_t once_value_4
; /* Once value */
672 static val_t once_value_5
; /* Once value */
673 static val_t once_value_6
; /* Once value */
674 static val_t once_value_7
; /* Once value */
675 static val_t once_value_8
; /* Once value */
676 static val_t once_value_9
; /* Once value */
677 static val_t once_value_10
; /* Once value */
678 static val_t once_value_13
; /* Once value */
679 static val_t once_value_14
; /* Once value */
680 static val_t once_value_16
; /* Once value */
681 static val_t once_value_17
; /* Once value */
682 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
683 fra
.me
.file
= LOCATE_global___rta_analysis
;
685 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
;
686 fra
.me
.has_broke
= 0;
688 fra
.me
.nitni_local_ref_head
= NULL
;
689 fra
.me
.REG
[0] = NIT_NULL
;
690 fra
.me
.REG
[1] = NIT_NULL
;
691 fra
.me
.REG
[2] = NIT_NULL
;
692 fra
.me
.REG
[3] = NIT_NULL
;
693 fra
.me
.REG
[4] = NIT_NULL
;
694 fra
.me
.REG
[5] = NIT_NULL
;
696 /* global/rta_analysis.nit:130 */
698 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
700 fra
.me
.REG
[2] = BOX_NativeString("Object");
702 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
703 once_value_1
= fra
.me
.REG
[2];
704 register_static_object(&once_value_1
);
705 } else fra
.me
.REG
[2] = once_value_1
;
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("Bool");
711 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
712 once_value_2
= fra
.me
.REG
[2];
713 register_static_object(&once_value_2
);
714 } else fra
.me
.REG
[2] = once_value_2
;
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("Float");
720 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
721 once_value_3
= fra
.me
.REG
[2];
722 register_static_object(&once_value_3
);
723 } else fra
.me
.REG
[2] = once_value_3
;
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("Int");
729 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
730 once_value_4
= fra
.me
.REG
[2];
731 register_static_object(&once_value_4
);
732 } else fra
.me
.REG
[2] = once_value_4
;
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("String");
738 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
739 once_value_5
= fra
.me
.REG
[2];
740 register_static_object(&once_value_5
);
741 } else fra
.me
.REG
[2] = once_value_5
;
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("NativeString");
747 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
748 once_value_6
= fra
.me
.REG
[2];
749 register_static_object(&once_value_6
);
750 } else fra
.me
.REG
[2] = once_value_6
;
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("Range");
756 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
757 once_value_7
= fra
.me
.REG
[2];
758 register_static_object(&once_value_7
);
759 } else fra
.me
.REG
[2] = once_value_7
;
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]);
763 fra
.me
.REG
[2] = BOX_NativeString("Array");
765 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
766 once_value_8
= fra
.me
.REG
[2];
767 register_static_object(&once_value_8
);
768 } else fra
.me
.REG
[2] = once_value_8
;
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]);
772 fra
.me
.REG
[2] = BOX_NativeString("ArrayIterator");
774 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
775 once_value_9
= fra
.me
.REG
[2];
776 register_static_object(&once_value_9
);
777 } else fra
.me
.REG
[2] = once_value_9
;
778 fra
.me
.REG
[2] = fra
.me
.REG
[2];
779 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
780 if (!once_value_10
) {
781 fra
.me
.REG
[2] = BOX_NativeString("Inline__");
783 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
784 once_value_10
= fra
.me
.REG
[2];
785 register_static_object(&once_value_10
);
786 } else fra
.me
.REG
[2] = once_value_10
;
787 fra
.me
.REG
[2] = fra
.me
.REG
[2];
788 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
789 /* ../lib/standard/collection/array.nit:269 */
791 /* ../lib/standard/collection/array.nit:270 */
792 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
793 if (UNTAG_Bool(REGB1
)) {
795 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 270);
797 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1]);
798 /* ../lib/standard/collection/array.nit:271 */
799 fra
.me
.REG
[2] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[1]);
800 /* ../lib/standard/collection/array.nit:272 */
802 /* ../lib/standard/collection/array.nit:24 */
803 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
804 if (UNTAG_Bool(REGB1
)) {
806 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
808 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1]);
809 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
810 if (UNTAG_Bool(REGB2
)) {
812 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
814 /* ../lib/standard/kernel.nit:235 */
815 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
816 /* ../lib/standard/collection/array.nit:272 */
817 if (UNTAG_Bool(REGB1
)) {
818 /* ../lib/standard/collection/array.nit:273 */
819 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
820 if (UNTAG_Bool(REGB1
)) {
821 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 273);
823 /* ../lib/standard/collection/array.nit:718 */
824 fra
.me
.REG
[3] = ((Nit_NativeArray
)fra
.me
.REG
[2])->val
[UNTAG_Int(REGB0
)];
825 /* global/rta_analysis.nit:133 */
826 fra
.me
.REG
[4] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
827 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
828 fra
.me
.REG
[5] = CALL_symbol___String___to_symbol(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
829 REGB1
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
830 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
831 if (UNTAG_Bool(REGB1
)) {
834 /* global/rta_analysis.nit:134 */
835 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
836 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
837 fra
.me
.REG
[3] = CALL_symbol___String___to_symbol(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
838 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[3]);
839 /* global/rta_analysis.nit:135 */
840 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[3]);
842 /* ../lib/standard/collection/array.nit:274 */
844 /* ../lib/standard/kernel.nit:238 */
845 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
846 /* ../lib/standard/collection/array.nit:274 */
849 /* ../lib/standard/collection/array.nit:272 */
854 /* global/rta_analysis.nit:138 */
855 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
856 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
857 if (!once_value_13
) {
858 fra
.me
.REG
[1] = BOX_NativeString("Inline__");
860 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
861 once_value_13
= fra
.me
.REG
[1];
862 register_static_object(&once_value_13
);
863 } else fra
.me
.REG
[1] = once_value_13
;
864 fra
.me
.REG
[1] = fra
.me
.REG
[1];
865 fra
.me
.REG
[1] = CALL_symbol___String___to_symbol(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
866 REGB0
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
867 if (UNTAG_Bool(REGB0
)) {
868 /* global/rta_analysis.nit:139 */
869 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
870 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
871 if (!once_value_14
) {
872 fra
.me
.REG
[2] = BOX_NativeString("Inline__");
874 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
875 once_value_14
= fra
.me
.REG
[2];
876 register_static_object(&once_value_14
);
877 } else fra
.me
.REG
[2] = once_value_14
;
878 fra
.me
.REG
[2] = fra
.me
.REG
[2];
879 fra
.me
.REG
[2] = CALL_symbol___String___to_symbol(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
880 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
881 /* global/rta_analysis.nit:143 */
882 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
883 fra
.me
.REG
[2] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
884 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
));
886 /* global/rta_analysis.nit:148 */
887 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
888 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
889 if (!once_value_16
) {
890 fra
.me
.REG
[1] = BOX_NativeString("Pointer");
892 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
893 once_value_16
= fra
.me
.REG
[1];
894 register_static_object(&once_value_16
);
895 } else fra
.me
.REG
[1] = once_value_16
;
896 fra
.me
.REG
[1] = fra
.me
.REG
[1];
897 fra
.me
.REG
[1] = CALL_symbol___String___to_symbol(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
898 REGB0
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
899 if (UNTAG_Bool(REGB0
)) {
900 /* global/rta_analysis.nit:149 */
901 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
902 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
903 if (!once_value_17
) {
904 fra
.me
.REG
[2] = BOX_NativeString("Pointer");
906 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
907 once_value_17
= fra
.me
.REG
[2];
908 register_static_object(&once_value_17
);
909 } else fra
.me
.REG
[2] = once_value_17
;
910 fra
.me
.REG
[2] = fra
.me
.REG
[2];
911 fra
.me
.REG
[2] = CALL_symbol___String___to_symbol(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
912 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
913 /* global/rta_analysis.nit:153 */
914 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
915 fra
.me
.REG
[2] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
916 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
));
918 /* global/rta_analysis.nit:158 */
919 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
920 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
921 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMModule___global_classes(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
922 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
));
923 /* global/rta_analysis.nit:165 */
924 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
925 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
));
926 stack_frame_head
= fra
.me
.prev
;
929 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
){
930 struct {struct stack_frame_t me
;} fra
;
933 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
934 fra
.me
.file
= LOCATE_global___rta_analysis
;
936 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
;
937 fra
.me
.has_broke
= 0;
939 fra
.me
.nitni_local_ref_head
= NULL
;
940 fra
.me
.REG
[0] = NIT_NULL
;
941 fra
.me
.closure_ctx
= closctx_param
;
942 fra
.me
.closure_funs
= CREG
;
945 /* global/rta_analysis.nit:144 */
946 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
947 stack_frame_head
= fra
.me
.prev
;
950 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
){
951 struct {struct stack_frame_t me
;} fra
;
954 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
955 fra
.me
.file
= LOCATE_global___rta_analysis
;
957 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
;
958 fra
.me
.has_broke
= 0;
960 fra
.me
.nitni_local_ref_head
= NULL
;
961 fra
.me
.REG
[0] = NIT_NULL
;
962 fra
.me
.closure_ctx
= closctx_param
;
963 fra
.me
.closure_funs
= CREG
;
966 /* global/rta_analysis.nit:154 */
967 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
968 stack_frame_head
= fra
.me
.prev
;
971 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
){
972 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
977 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
978 fra
.me
.file
= LOCATE_global___rta_analysis
;
980 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
;
981 fra
.me
.has_broke
= 0;
983 fra
.me
.nitni_local_ref_head
= NULL
;
984 fra
.me
.REG
[0] = NIT_NULL
;
985 fra
.me
.REG
[1] = NIT_NULL
;
986 fra
.me
.closure_ctx
= closctx_param
;
987 fra
.me
.closure_funs
= CREG
;
990 /* global/rta_analysis.nit:159 */
991 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
992 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
993 if (UNTAG_Bool(REGB0
)) {
994 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
995 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1000 if (UNTAG_Bool(REGB0
)) {
1003 /* global/rta_analysis.nit:160 */
1004 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaBuilder___program(closctx
->REG
[0])(closctx
->REG
[0]);
1005 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1006 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1007 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
1009 stack_frame_head
= fra
.me
.prev
;
1012 void OC_global___rta_analysis___RtaBuilder___force_some_type_analysis_21(struct stack_frame_t
*closctx
, val_t p0
){
1013 struct {struct stack_frame_t me
;} fra
;
1016 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1017 fra
.me
.file
= LOCATE_global___rta_analysis
;
1019 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___force_some_type_analysis
;
1020 fra
.me
.has_broke
= 0;
1021 fra
.me
.REG_size
= 1;
1022 fra
.me
.nitni_local_ref_head
= NULL
;
1023 fra
.me
.REG
[0] = NIT_NULL
;
1025 /* global/rta_analysis.nit:166 */
1026 REGB0
= CALL_metamodel___abstractmetamodel___MMMethod___is_extern(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1027 if (UNTAG_Bool(REGB0
)) {
1028 /* global/rta_analysis.nit:167 */
1029 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1030 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0]);
1032 stack_frame_head
= fra
.me
.prev
;
1035 static const char LOCATE_global___rta_analysis___RtaBuilder___work
[] = "rta_analysis::RtaBuilder::work";
1036 void global___rta_analysis___RtaBuilder___work(val_t p0
){
1037 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
1042 static val_t once_value_1
; /* Once value */
1043 static val_t once_value_2
; /* Once value */
1044 static val_t once_value_3
; /* Once value */
1045 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1046 fra
.me
.file
= LOCATE_global___rta_analysis
;
1048 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaBuilder___work
;
1049 fra
.me
.has_broke
= 0;
1050 fra
.me
.REG_size
= 7;
1051 fra
.me
.nitni_local_ref_head
= NULL
;
1052 fra
.me
.REG
[0] = NIT_NULL
;
1053 fra
.me
.REG
[1] = NIT_NULL
;
1054 fra
.me
.REG
[2] = NIT_NULL
;
1055 fra
.me
.REG
[3] = NIT_NULL
;
1056 fra
.me
.REG
[4] = NIT_NULL
;
1057 fra
.me
.REG
[5] = NIT_NULL
;
1058 fra
.me
.REG
[6] = NIT_NULL
;
1060 /* global/rta_analysis.nit:172 */
1061 fra
.me
.REG
[1] = fra
.me
.REG
[0];
1062 /* global/rta_analysis.nit:174 */
1063 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1064 fra
.me
.REG
[2] = CALL_program___Program___main_method(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1065 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
1066 if (UNTAG_Bool(REGB0
)) {
1068 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
1069 if (UNTAG_Bool(REGB1
)) {
1070 REGB1
= TAG_Bool(0);
1073 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
1077 if (UNTAG_Bool(REGB0
)) {
1078 /* global/rta_analysis.nit:176 */
1080 fra
.me
.REG
[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
1081 if (!once_value_1
) {
1082 fra
.me
.REG
[3] = BOX_NativeString("Int");
1084 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
1085 once_value_1
= fra
.me
.REG
[3];
1086 register_static_object(&once_value_1
);
1087 } else fra
.me
.REG
[3] = once_value_1
;
1088 fra
.me
.REG
[3] = fra
.me
.REG
[3];
1089 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1090 if (!once_value_2
) {
1091 fra
.me
.REG
[3] = BOX_NativeString("Char");
1093 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
1094 once_value_2
= fra
.me
.REG
[3];
1095 register_static_object(&once_value_2
);
1096 } else fra
.me
.REG
[3] = once_value_2
;
1097 fra
.me
.REG
[3] = fra
.me
.REG
[3];
1098 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1099 if (!once_value_3
) {
1100 fra
.me
.REG
[3] = BOX_NativeString("Bool");
1102 fra
.me
.REG
[3] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[3], REGB0
);
1103 once_value_3
= fra
.me
.REG
[3];
1104 register_static_object(&once_value_3
);
1105 } else fra
.me
.REG
[3] = once_value_3
;
1106 fra
.me
.REG
[3] = fra
.me
.REG
[3];
1107 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
1108 /* ../lib/standard/collection/array.nit:269 */
1110 /* ../lib/standard/collection/array.nit:270 */
1111 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2])!=NIT_NULL
);
1112 if (UNTAG_Bool(REGB1
)) {
1114 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 270);
1116 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2]);
1117 /* ../lib/standard/collection/array.nit:271 */
1118 fra
.me
.REG
[3] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[2]);
1119 /* ../lib/standard/collection/array.nit:272 */
1121 /* ../lib/standard/collection/array.nit:24 */
1122 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2])!=NIT_NULL
);
1123 if (UNTAG_Bool(REGB1
)) {
1125 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
1127 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[2]);
1128 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
1129 if (UNTAG_Bool(REGB2
)) {
1131 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
1133 /* ../lib/standard/kernel.nit:235 */
1134 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
1135 /* ../lib/standard/collection/array.nit:272 */
1136 if (UNTAG_Bool(REGB1
)) {
1137 /* ../lib/standard/collection/array.nit:273 */
1138 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1139 if (UNTAG_Bool(REGB1
)) {
1140 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 273);
1142 /* ../lib/standard/collection/array.nit:718 */
1143 fra
.me
.REG
[4] = ((Nit_NativeArray
)fra
.me
.REG
[3])->val
[UNTAG_Int(REGB0
)];
1144 /* global/rta_analysis.nit:177 */
1145 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1146 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1147 fra
.me
.REG
[6] = CALL_symbol___String___to_symbol(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1148 REGB1
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[6]);
1149 if (UNTAG_Bool(REGB1
)) {
1150 /* global/rta_analysis.nit:178 */
1151 fra
.me
.REG
[6] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1152 fra
.me
.REG
[6] = CALL_program___Program___main_module(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
1153 fra
.me
.REG
[4] = CALL_symbol___String___to_symbol(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1154 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[4]);
1155 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[4]);
1157 /* ../lib/standard/collection/array.nit:274 */
1159 /* ../lib/standard/kernel.nit:238 */
1160 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
1161 /* ../lib/standard/collection/array.nit:274 */
1164 /* ../lib/standard/collection/array.nit:272 */
1169 /* global/rta_analysis.nit:181 */
1172 /* global/rta_analysis.nit:184 */
1173 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1174 fra
.me
.REG
[3] = CALL_program___Program___main_class(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1175 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*/;
1176 if (UNTAG_Bool(REGB0
)) {
1178 nit_abort("Cast failed", NULL
, LOCATE_global___rta_analysis
, 184);
1180 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
1181 /* global/rta_analysis.nit:185 */
1182 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1183 fra
.me
.REG
[3] = CALL_program___Program___main_method(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1184 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*/;
1185 if (UNTAG_Bool(REGB0
)) {
1187 nit_abort("Cast failed", NULL
, LOCATE_global___rta_analysis
, 185);
1189 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1190 if (UNTAG_Bool(REGB0
)) {
1191 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 185);
1193 fra
.me
.REG
[3] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1194 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[3]);
1195 /* global/rta_analysis.nit:186 */
1196 CALL_global___rta_analysis___RtaBuilder___force_some_type_analysis(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1197 /* global/rta_analysis.nit:188 */
1199 fra
.me
.REG
[3] = CALL_global___rta_analysis___RtaBuilder___iroutine_to_search(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1200 REGB0
= CALL_standard___collection___abstract_collection___Collection___is_empty(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1201 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1202 if (UNTAG_Bool(REGB0
)) {
1203 /* global/rta_analysis.nit:189 */
1204 fra
.me
.REG
[3] = NEW_RtaVisitor_global___rta_analysis___RtaVisitor___init(fra
.me
.REG
[1]);
1205 /* global/rta_analysis.nit:190 */
1206 fra
.me
.REG
[0] = CALL_global___rta_analysis___RtaBuilder___iroutine_to_search(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1207 fra
.me
.REG
[0] = CALL_standard___collection___abstract_collection___Sequence___pop(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1208 /* global/rta_analysis.nit:191 */
1209 fra
.me
.REG
[0] = CALL_icode___icode_base___IRoutine___body(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1210 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[0]);
1212 /* global/rta_analysis.nit:188 */
1218 stack_frame_head
= fra
.me
.prev
;
1221 static const char LOCATE_global___rta_analysis___RtaVisitor___builder
[] = "rta_analysis::RtaVisitor::builder";
1222 val_t
global___rta_analysis___RtaVisitor___builder(val_t p0
){
1223 struct {struct stack_frame_t me
;} fra
;
1226 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1227 fra
.me
.file
= LOCATE_global___rta_analysis
;
1229 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaVisitor___builder
;
1230 fra
.me
.has_broke
= 0;
1231 fra
.me
.REG_size
= 1;
1232 fra
.me
.nitni_local_ref_head
= NULL
;
1233 fra
.me
.REG
[0] = NIT_NULL
;
1235 /* global/rta_analysis.nit:198 */
1236 REGB0
= TAG_Bool(ATTR_global___rta_analysis___RtaVisitor____builder(fra
.me
.REG
[0])!=NIT_NULL
);
1237 if (UNTAG_Bool(REGB0
)) {
1239 nit_abort("Uninitialized attribute %s", "_builder", LOCATE_global___rta_analysis
, 198);
1241 fra
.me
.REG
[0] = ATTR_global___rta_analysis___RtaVisitor____builder(fra
.me
.REG
[0]);
1242 stack_frame_head
= fra
.me
.prev
;
1243 return fra
.me
.REG
[0];
1245 static const char LOCATE_global___rta_analysis___RtaVisitor___visit_icode
[] = "rta_analysis::RtaVisitor::(icode_tools::ICodeVisitor::visit_icode)";
1246 void global___rta_analysis___RtaVisitor___visit_icode(val_t p0
, val_t p1
){
1247 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
1250 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1251 fra
.me
.file
= LOCATE_global___rta_analysis
;
1253 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaVisitor___visit_icode
;
1254 fra
.me
.has_broke
= 0;
1255 fra
.me
.REG_size
= 7;
1256 fra
.me
.nitni_local_ref_head
= NULL
;
1257 fra
.me
.REG
[0] = NIT_NULL
;
1258 fra
.me
.REG
[1] = NIT_NULL
;
1259 fra
.me
.REG
[2] = NIT_NULL
;
1260 fra
.me
.REG
[3] = NIT_NULL
;
1261 fra
.me
.REG
[4] = NIT_NULL
;
1262 fra
.me
.REG
[5] = NIT_NULL
;
1263 fra
.me
.REG
[6] = NIT_NULL
;
1266 /* global/rta_analysis.nit:200 */
1267 fra
.me
.REG
[2] = fra
.me
.REG
[0];
1268 fra
.me
.REG
[3] = fra
.me
.REG
[1];
1269 /* global/rta_analysis.nit:202 */
1270 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*/;
1271 if (UNTAG_Bool(REGB0
)) {
1272 /* global/rta_analysis.nit:204 */
1273 fra
.me
.REG
[4] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1274 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1275 if (UNTAG_Bool(REGB0
)) {
1276 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 204);
1278 fra
.me
.REG
[5] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1279 fra
.me
.REG
[5] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1280 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1282 /* global/rta_analysis.nit:205 */
1283 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*/;
1284 if (UNTAG_Bool(REGB0
)) {
1285 /* global/rta_analysis.nit:207 */
1286 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1287 if (UNTAG_Bool(REGB0
)) {
1288 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 207);
1290 fra
.me
.REG
[5] = CALL_icode___icode_base___INew___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1291 /* global/rta_analysis.nit:208 */
1292 fra
.me
.REG
[4] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1293 fra
.me
.REG
[4] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1294 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1295 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
1296 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1297 /* global/rta_analysis.nit:209 */
1298 fra
.me
.REG
[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1299 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1300 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
1301 if (UNTAG_Bool(REGB0
)) {
1302 /* global/rta_analysis.nit:210 */
1303 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1304 if (UNTAG_Bool(REGB0
)) {
1305 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 210);
1307 fra
.me
.REG
[5] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1308 fra
.me
.REG
[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1309 fra
.me
.REG
[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1310 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[5], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
1311 if (UNTAG_Bool(REGB0
)) {
1313 nit_abort("Cast failed", NULL
, LOCATE_global___rta_analysis
, 210);
1315 /* global/rta_analysis.nit:211 */
1316 fra
.me
.REG
[6] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1317 fra
.me
.REG
[5] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
1318 /* global/rta_analysis.nit:212 */
1319 fra
.me
.REG
[6] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1320 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
1322 /* global/rta_analysis.nit:214 */
1323 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1324 CALL_global___rta_analysis___RtaBuilder___add_instantiated_class(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
1326 /* global/rta_analysis.nit:215 */
1327 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*/;
1328 if (UNTAG_Bool(REGB0
)) {
1329 /* global/rta_analysis.nit:217 */
1330 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1331 if (UNTAG_Bool(REGB0
)) {
1332 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 217);
1334 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1335 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1336 fra
.me
.REG
[4] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
1337 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
));
1339 /* global/rta_analysis.nit:222 */
1340 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*/;
1341 if (UNTAG_Bool(REGB0
)) {
1342 /* global/rta_analysis.nit:223 */
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_call(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[3]);
1346 /* global/rta_analysis.nit:224 */
1347 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*/;
1348 if (UNTAG_Bool(REGB0
)) {
1349 /* global/rta_analysis.nit:225 */
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
, 225);
1354 fra
.me
.REG
[4] = CALL_icode___icode_base___ICheckInstance___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1355 /* global/rta_analysis.nit:226 */
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
[4])(fra
.me
.REG
[4], 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:227 */
1362 fra
.me
.REG
[5] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1363 /* global/rta_analysis.nit:228 */
1364 fra
.me
.REG
[4] = 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
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
1367 /* global/rta_analysis.nit:229 */
1368 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*/;
1369 if (UNTAG_Bool(REGB0
)) {
1370 /* global/rta_analysis.nit:230 */
1371 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
1372 if (UNTAG_Bool(REGB0
)) {
1373 nit_abort("Reciever is null", NULL
, LOCATE_global___rta_analysis
, 230);
1375 fra
.me
.REG
[3] = CALL_icode___icode_base___IInitAttributes___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
1376 /* global/rta_analysis.nit:231 */
1377 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1378 fra
.me
.REG
[5] = CALL_global___rta_analysis___RtaBuilder___program(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1379 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1380 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[5]);
1381 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1382 /* global/rta_analysis.nit:232 */
1383 fra
.me
.REG
[5] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
1384 /* global/rta_analysis.nit:233 */
1385 fra
.me
.REG
[2] = CALL_global___rta_analysis___RtaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
1386 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[5]);
1393 /* global/rta_analysis.nit:235 */
1394 CALL_SUPER_global___rta_analysis___RtaVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
1395 stack_frame_head
= fra
.me
.prev
;
1398 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
){
1399 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1403 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1404 fra
.me
.file
= LOCATE_global___rta_analysis
;
1406 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaVisitor___visit_icode
;
1407 fra
.me
.has_broke
= 0;
1408 fra
.me
.REG_size
= 2;
1409 fra
.me
.nitni_local_ref_head
= NULL
;
1410 fra
.me
.REG
[0] = NIT_NULL
;
1411 fra
.me
.REG
[1] = NIT_NULL
;
1412 fra
.me
.closure_ctx
= closctx_param
;
1413 fra
.me
.closure_funs
= CREG
;
1415 CREG
[0] = clos_fun0
;
1416 /* global/rta_analysis.nit:218 */
1417 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
1418 if (UNTAG_Bool(REGB0
)) {
1419 /* global/rta_analysis.nit:219 */
1420 fra
.me
.REG
[1] = CALL_global___rta_analysis___RtaVisitor___builder(closctx
->REG
[2])(closctx
->REG
[2]);
1421 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1422 CALL_global___rta_analysis___RtaBuilder___add_reachable_iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
1424 stack_frame_head
= fra
.me
.prev
;
1427 static const char LOCATE_global___rta_analysis___RtaVisitor___init
[] = "rta_analysis::RtaVisitor::init";
1428 void global___rta_analysis___RtaVisitor___init(val_t p0
, val_t p1
, int* init_table
){
1429 int itpos2
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___rta_analysis___RtaVisitor
].i
;
1430 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1432 if (init_table
[itpos2
]) return;
1433 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1434 fra
.me
.file
= LOCATE_global___rta_analysis
;
1436 fra
.me
.meth
= LOCATE_global___rta_analysis___RtaVisitor___init
;
1437 fra
.me
.has_broke
= 0;
1438 fra
.me
.REG_size
= 3;
1439 fra
.me
.nitni_local_ref_head
= NULL
;
1440 fra
.me
.REG
[0] = NIT_NULL
;
1441 fra
.me
.REG
[1] = NIT_NULL
;
1442 fra
.me
.REG
[2] = NIT_NULL
;
1445 /* global/rta_analysis.nit:238 */
1446 fra
.me
.REG
[2] = fra
.me
.REG
[0];
1447 CALL_icode___icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
1448 /* global/rta_analysis.nit:240 */
1449 ATTR_global___rta_analysis___RtaVisitor____builder(fra
.me
.REG
[2]) = fra
.me
.REG
[1];
1450 stack_frame_head
= fra
.me
.prev
;
1451 init_table
[itpos2
] = 1;