1 /* This C file is generated by NIT to compile module global___cha_analysis. */
2 #include "global___cha_analysis._sep.h"
3 val_t
global___cha_analysis___ChaContext___reachable_iroutines(val_t p0
){
4 struct {struct stack_frame_t me
;} fra
;
7 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
8 fra
.me
.file
= LOCATE_global___cha_analysis
;
10 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaContext___reachable_iroutines
;
13 fra
.me
.nitni_local_ref_head
= NULL
;
14 fra
.me
.REG
[0] = NIT_NULL
;
16 /* global/cha_analysis.nit:26 */
17 REGB0
= TAG_Bool(ATTR_global___cha_analysis___ChaContext____reachable_iroutines(fra
.me
.REG
[0])!=NIT_NULL
);
18 if (UNTAG_Bool(REGB0
)) {
20 nit_abort("Uninitialized attribute %s", "_reachable_iroutines", LOCATE_global___cha_analysis
, 26);
22 fra
.me
.REG
[0] = ATTR_global___cha_analysis___ChaContext____reachable_iroutines(fra
.me
.REG
[0]);
23 stack_frame_head
= fra
.me
.prev
;
26 val_t
global___cha_analysis___ChaContext___is_iroutine_reachable(val_t p0
, val_t p1
){
27 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
31 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
32 fra
.me
.file
= LOCATE_global___cha_analysis
;
34 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaContext___is_iroutine_reachable
;
37 fra
.me
.nitni_local_ref_head
= NULL
;
38 fra
.me
.REG
[0] = NIT_NULL
;
39 fra
.me
.REG
[1] = NIT_NULL
;
42 /* global/cha_analysis.nit:29 */
43 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
44 if (UNTAG_Bool(REGB0
)) {
46 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
47 if (UNTAG_Bool(REGB1
)) {
48 REGB1
= TAG_Bool(false);
51 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
55 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
56 if (UNTAG_Bool(REGB0
)) {
57 fra
.me
.REG
[0] = CALL_global___cha_analysis___ChaContext___reachable_iroutines(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
58 REGB0
= CALL_standard___collection___abstract_collection___Collection___has(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
60 REGB1
= TAG_Bool(false);
65 stack_frame_head
= fra
.me
.prev
;
68 val_t
global___cha_analysis___ChaContext___is_method_reachable(val_t p0
, val_t p1
){
69 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
72 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
73 fra
.me
.file
= LOCATE_global___cha_analysis
;
75 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaContext___is_method_reachable
;
78 fra
.me
.nitni_local_ref_head
= NULL
;
79 fra
.me
.REG
[0] = NIT_NULL
;
80 fra
.me
.REG
[1] = NIT_NULL
;
83 /* global/cha_analysis.nit:33 */
84 fra
.me
.REG
[1] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
85 REGB0
= CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
88 stack_frame_head
= fra
.me
.prev
;
91 void global___cha_analysis___ChaContext___init(val_t p0
, int* init_table
){
92 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___cha_analysis___ChaContext
].i
;
93 struct {struct stack_frame_t me
;} fra
;
95 if (init_table
[itpos0
]) return;
96 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
97 fra
.me
.file
= LOCATE_global___cha_analysis
;
99 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaContext___init
;
100 fra
.me
.has_broke
= 0;
102 fra
.me
.nitni_local_ref_head
= NULL
;
103 stack_frame_head
= fra
.me
.prev
;
104 init_table
[itpos0
] = 1;
107 val_t
global___cha_analysis___ChaBuilder___iroutine_to_search(val_t p0
){
108 struct {struct stack_frame_t me
;} fra
;
111 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
112 fra
.me
.file
= LOCATE_global___cha_analysis
;
114 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaBuilder___iroutine_to_search
;
115 fra
.me
.has_broke
= 0;
117 fra
.me
.nitni_local_ref_head
= NULL
;
118 fra
.me
.REG
[0] = NIT_NULL
;
120 /* global/cha_analysis.nit:38 */
121 REGB0
= TAG_Bool(ATTR_global___cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0])!=NIT_NULL
);
122 if (UNTAG_Bool(REGB0
)) {
124 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_global___cha_analysis
, 38);
126 fra
.me
.REG
[0] = ATTR_global___cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0]);
127 stack_frame_head
= fra
.me
.prev
;
128 return fra
.me
.REG
[0];
130 val_t
global___cha_analysis___ChaBuilder___context(val_t p0
){
131 struct {struct stack_frame_t me
;} fra
;
134 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
135 fra
.me
.file
= LOCATE_global___cha_analysis
;
137 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaBuilder___context
;
138 fra
.me
.has_broke
= 0;
140 fra
.me
.nitni_local_ref_head
= NULL
;
141 fra
.me
.REG
[0] = NIT_NULL
;
143 /* global/cha_analysis.nit:39 */
144 REGB0
= TAG_Bool(ATTR_global___cha_analysis___ChaBuilder____context(fra
.me
.REG
[0])!=NIT_NULL
);
145 if (UNTAG_Bool(REGB0
)) {
147 nit_abort("Uninitialized attribute %s", "_context", LOCATE_global___cha_analysis
, 39);
149 fra
.me
.REG
[0] = ATTR_global___cha_analysis___ChaBuilder____context(fra
.me
.REG
[0]);
150 stack_frame_head
= fra
.me
.prev
;
151 return fra
.me
.REG
[0];
153 val_t
global___cha_analysis___ChaBuilder___program(val_t p0
){
154 struct {struct stack_frame_t me
;} fra
;
157 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
158 fra
.me
.file
= LOCATE_global___cha_analysis
;
160 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaBuilder___program
;
161 fra
.me
.has_broke
= 0;
163 fra
.me
.nitni_local_ref_head
= NULL
;
164 fra
.me
.REG
[0] = NIT_NULL
;
166 /* global/cha_analysis.nit:40 */
167 REGB0
= TAG_Bool(ATTR_global___cha_analysis___ChaBuilder____program(fra
.me
.REG
[0])!=NIT_NULL
);
168 if (UNTAG_Bool(REGB0
)) {
170 nit_abort("Uninitialized attribute %s", "_program", LOCATE_global___cha_analysis
, 40);
172 fra
.me
.REG
[0] = ATTR_global___cha_analysis___ChaBuilder____program(fra
.me
.REG
[0]);
173 stack_frame_head
= fra
.me
.prev
;
174 return fra
.me
.REG
[0];
176 void global___cha_analysis___ChaBuilder___init(val_t p0
, val_t p1
, int* init_table
){
177 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___cha_analysis___ChaBuilder
].i
;
178 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
180 if (init_table
[itpos1
]) return;
181 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
182 fra
.me
.file
= LOCATE_global___cha_analysis
;
184 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaBuilder___init
;
185 fra
.me
.has_broke
= 0;
187 fra
.me
.nitni_local_ref_head
= NULL
;
188 fra
.me
.REG
[0] = NIT_NULL
;
189 fra
.me
.REG
[1] = NIT_NULL
;
192 /* global/cha_analysis.nit:43 */
193 ATTR_global___cha_analysis___ChaBuilder____program(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
194 /* global/cha_analysis.nit:44 */
195 fra
.me
.REG
[1] = NEW_ChaContext_global___cha_analysis___ChaContext___init();
196 ATTR_global___cha_analysis___ChaBuilder____context(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
197 stack_frame_head
= fra
.me
.prev
;
198 init_table
[itpos1
] = 1;
201 void global___cha_analysis___ChaBuilder___add_search(val_t p0
, val_t p1
, val_t p2
, val_t p3
, val_t p4
){
202 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
208 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
209 fra
.me
.file
= LOCATE_global___cha_analysis
;
211 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaBuilder___add_search
;
212 fra
.me
.has_broke
= 0;
214 fra
.me
.nitni_local_ref_head
= NULL
;
215 fra
.me
.REG
[0] = NIT_NULL
;
216 fra
.me
.REG
[1] = NIT_NULL
;
217 fra
.me
.REG
[2] = NIT_NULL
;
218 fra
.me
.REG
[3] = NIT_NULL
;
224 /* global/cha_analysis.nit:49 */
225 REGB2
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
226 if (UNTAG_Bool(REGB2
)) {
228 REGB3
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
229 if (UNTAG_Bool(REGB3
)) {
230 REGB3
= TAG_Bool(false);
233 REGB3
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
237 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
238 if (UNTAG_Bool(REGB2
)) {
239 fra
.me
.REG
[3] = CALL_global___cha_analysis___ChaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
240 REGB2
= CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
241 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
243 REGB3
= TAG_Bool(false);
246 if (UNTAG_Bool(REGB2
)) {
247 /* global/cha_analysis.nit:50 */
248 fra
.me
.REG
[3] = CALL_global___cha_analysis___ChaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
249 fra
.me
.REG
[3] = CALL_global___cha_analysis___ChaContext___reachable_iroutines(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
250 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
251 /* global/cha_analysis.nit:51 */
252 REGB2
= TAG_Bool(ATTR_global___cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0])!=NIT_NULL
);
253 if (UNTAG_Bool(REGB2
)) {
255 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_global___cha_analysis
, 51);
257 fra
.me
.REG
[3] = ATTR_global___cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0]);
258 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
260 /* global/cha_analysis.nit:54 */
261 REGB2
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
262 if (UNTAG_Bool(REGB2
)) {
264 REGB3
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
265 if (UNTAG_Bool(REGB3
)) {
266 REGB3
= TAG_Bool(false);
269 REGB3
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
273 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
274 if (UNTAG_Bool(REGB2
)) {
275 /* global/cha_analysis.nit:56 */
276 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
277 if (UNTAG_Bool(REGB0
)) {
278 /* global/cha_analysis.nit:57 */
279 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
280 if (UNTAG_Bool(REGB0
)) {
281 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 57);
283 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
284 fra
.me
.REG
[2] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
285 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_global___cha_analysis___ChaBuilder___add_search_1
));
287 /* global/cha_analysis.nit:65 */
288 if (UNTAG_Bool(REGB1
)) {
289 /* global/cha_analysis.nit:66 */
290 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
291 if (UNTAG_Bool(REGB1
)) {
292 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 66);
294 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
295 fra
.me
.REG
[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
296 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], (&(fra
.me
)), ((fun_t
)OC_global___cha_analysis___ChaBuilder___add_search_2
));
299 stack_frame_head
= fra
.me
.prev
;
302 void OC_global___cha_analysis___ChaBuilder___add_search_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
303 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
308 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
309 fra
.me
.file
= LOCATE_global___cha_analysis
;
311 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaBuilder___add_search
;
312 fra
.me
.has_broke
= 0;
314 fra
.me
.nitni_local_ref_head
= NULL
;
315 fra
.me
.REG
[0] = NIT_NULL
;
316 fra
.me
.REG
[1] = NIT_NULL
;
317 fra
.me
.closure_ctx
= closctx_param
;
318 fra
.me
.closure_funs
= CREG
;
321 /* global/cha_analysis.nit:58 */
322 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
323 if (UNTAG_Bool(REGB0
)) {
324 /* global/cha_analysis.nit:59 */
325 fra
.me
.REG
[1] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
326 REGB0
= TAG_Bool(true);
327 REGB1
= TAG_Bool(false);
328 CALL_global___cha_analysis___ChaBuilder___add_search(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0], fra
.me
.REG
[1], REGB0
, REGB1
);
330 stack_frame_head
= fra
.me
.prev
;
333 void OC_global___cha_analysis___ChaBuilder___add_search_2(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
334 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
339 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
340 fra
.me
.file
= LOCATE_global___cha_analysis
;
342 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaBuilder___add_search
;
343 fra
.me
.has_broke
= 0;
345 fra
.me
.nitni_local_ref_head
= NULL
;
346 fra
.me
.REG
[0] = NIT_NULL
;
347 fra
.me
.REG
[1] = NIT_NULL
;
348 fra
.me
.closure_ctx
= closctx_param
;
349 fra
.me
.closure_funs
= CREG
;
352 /* global/cha_analysis.nit:67 */
353 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
354 if (UNTAG_Bool(REGB0
)) {
355 /* global/cha_analysis.nit:68 */
356 fra
.me
.REG
[1] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
357 REGB0
= TAG_Bool(true);
358 REGB1
= TAG_Bool(false);
359 CALL_global___cha_analysis___ChaBuilder___add_search(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0], fra
.me
.REG
[1], REGB0
, REGB1
);
361 stack_frame_head
= fra
.me
.prev
;
364 void global___cha_analysis___ChaBuilder___work(val_t p0
){
365 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
369 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
370 fra
.me
.file
= LOCATE_global___cha_analysis
;
372 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaBuilder___work
;
373 fra
.me
.has_broke
= 0;
375 fra
.me
.nitni_local_ref_head
= NULL
;
376 fra
.me
.REG
[0] = NIT_NULL
;
377 fra
.me
.REG
[1] = NIT_NULL
;
378 fra
.me
.REG
[2] = NIT_NULL
;
380 /* global/cha_analysis.nit:77 */
381 fra
.me
.REG
[1] = CALL_global___cha_analysis___ChaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
382 fra
.me
.REG
[1] = CALL_program___Program___main_method(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
383 /* global/cha_analysis.nit:78 */
384 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
385 if (UNTAG_Bool(REGB0
)) {
387 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
388 if (UNTAG_Bool(REGB1
)) {
389 REGB1
= TAG_Bool(false);
392 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
396 if (UNTAG_Bool(REGB0
)) {
399 /* global/cha_analysis.nit:80 */
400 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
401 if (UNTAG_Bool(REGB0
)) {
402 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 80);
404 fra
.me
.REG
[2] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
405 REGB0
= TAG_Bool(true);
406 REGB1
= TAG_Bool(false);
407 CALL_global___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2], REGB0
, REGB1
);
408 /* global/cha_analysis.nit:82 */
410 fra
.me
.REG
[2] = CALL_global___cha_analysis___ChaBuilder___iroutine_to_search(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
411 REGB1
= CALL_standard___collection___abstract_collection___Collection___is_empty(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
412 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
413 if (UNTAG_Bool(REGB1
)) {
414 /* global/cha_analysis.nit:83 */
415 fra
.me
.REG
[2] = NEW_ChaVisitor_global___cha_analysis___ChaVisitor___init(fra
.me
.REG
[0]);
416 /* global/cha_analysis.nit:84 */
417 fra
.me
.REG
[1] = CALL_global___cha_analysis___ChaBuilder___iroutine_to_search(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
418 fra
.me
.REG
[1] = CALL_standard___collection___abstract_collection___Sequence___pop(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
419 /* global/cha_analysis.nit:85 */
420 fra
.me
.REG
[1] = CALL_icode___icode_base___IRoutine___body(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
421 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
423 /* global/cha_analysis.nit:82 */
429 stack_frame_head
= fra
.me
.prev
;
432 val_t
global___cha_analysis___ChaVisitor___builder(val_t p0
){
433 struct {struct stack_frame_t me
;} fra
;
436 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
437 fra
.me
.file
= LOCATE_global___cha_analysis
;
439 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaVisitor___builder
;
440 fra
.me
.has_broke
= 0;
442 fra
.me
.nitni_local_ref_head
= NULL
;
443 fra
.me
.REG
[0] = NIT_NULL
;
445 /* global/cha_analysis.nit:92 */
446 REGB0
= TAG_Bool(ATTR_global___cha_analysis___ChaVisitor____builder(fra
.me
.REG
[0])!=NIT_NULL
);
447 if (UNTAG_Bool(REGB0
)) {
449 nit_abort("Uninitialized attribute %s", "_builder", LOCATE_global___cha_analysis
, 92);
451 fra
.me
.REG
[0] = ATTR_global___cha_analysis___ChaVisitor____builder(fra
.me
.REG
[0]);
452 stack_frame_head
= fra
.me
.prev
;
453 return fra
.me
.REG
[0];
455 void global___cha_analysis___ChaVisitor___visit_icode(val_t p0
, val_t p1
){
456 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
460 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
461 fra
.me
.file
= LOCATE_global___cha_analysis
;
463 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaVisitor___visit_icode
;
464 fra
.me
.has_broke
= 0;
466 fra
.me
.nitni_local_ref_head
= NULL
;
467 fra
.me
.REG
[0] = NIT_NULL
;
468 fra
.me
.REG
[1] = NIT_NULL
;
469 fra
.me
.REG
[2] = NIT_NULL
;
470 fra
.me
.REG
[3] = NIT_NULL
;
471 fra
.me
.REG
[4] = NIT_NULL
;
472 fra
.me
.REG
[5] = NIT_NULL
;
473 fra
.me
.REG
[6] = NIT_NULL
;
476 /* global/cha_analysis.nit:94 */
477 fra
.me
.REG
[2] = fra
.me
.REG
[0];
478 fra
.me
.REG
[3] = fra
.me
.REG
[1];
479 /* global/cha_analysis.nit:96 */
480 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*/;
481 if (UNTAG_Bool(REGB0
)) {
482 /* global/cha_analysis.nit:98 */
483 fra
.me
.REG
[4] = CALL_global___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
484 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
485 if (UNTAG_Bool(REGB0
)) {
486 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 98);
488 fra
.me
.REG
[5] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
489 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
490 if (UNTAG_Bool(REGB0
)) {
491 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 98);
493 fra
.me
.REG
[6] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
494 fra
.me
.REG
[6] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
495 REGB0
= TAG_Bool(true);
496 REGB1
= TAG_Bool(false);
497 CALL_global___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5], fra
.me
.REG
[6], REGB0
, REGB1
);
499 /* global/cha_analysis.nit:99 */
500 REGB1
= 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*/;
501 if (UNTAG_Bool(REGB1
)) {
502 /* global/cha_analysis.nit:101 */
503 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
504 if (UNTAG_Bool(REGB1
)) {
505 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 101);
507 fra
.me
.REG
[6] = CALL_icode___icode_base___INew___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
508 /* global/cha_analysis.nit:102 */
509 fra
.me
.REG
[5] = CALL_global___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
510 fra
.me
.REG
[5] = CALL_global___cha_analysis___ChaBuilder___program(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
511 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
512 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
513 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
514 /* global/cha_analysis.nit:103 */
515 fra
.me
.REG
[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
516 REGB1
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
517 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
518 if (UNTAG_Bool(REGB1
)) {
519 /* global/cha_analysis.nit:104 */
520 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
521 if (UNTAG_Bool(REGB1
)) {
522 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 104);
524 fra
.me
.REG
[6] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
525 fra
.me
.REG
[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
526 fra
.me
.REG
[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[6]);
527 REGB1
= TAG_Bool(VAL_ISA(fra
.me
.REG
[6], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
528 if (UNTAG_Bool(REGB1
)) {
530 nit_abort("Cast failed", NULL
, LOCATE_global___cha_analysis
, 104);
532 /* global/cha_analysis.nit:105 */
533 fra
.me
.REG
[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
534 fra
.me
.REG
[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[6]);
535 /* global/cha_analysis.nit:106 */
536 fra
.me
.REG
[5] = CALL_global___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
537 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
538 if (UNTAG_Bool(REGB1
)) {
539 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 106);
541 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
542 REGB1
= TAG_Bool(false);
543 REGB0
= TAG_Bool(false);
544 CALL_global___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4], fra
.me
.REG
[6], REGB1
, REGB0
);
547 /* global/cha_analysis.nit:108 */
548 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*/;
549 if (UNTAG_Bool(REGB0
)) {
550 /* global/cha_analysis.nit:109 */
551 fra
.me
.REG
[6] = CALL_global___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
552 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
553 if (UNTAG_Bool(REGB0
)) {
554 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 109);
556 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
557 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
558 if (UNTAG_Bool(REGB0
)) {
559 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 109);
561 fra
.me
.REG
[5] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
562 fra
.me
.REG
[5] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
563 REGB0
= TAG_Bool(false);
564 REGB1
= TAG_Bool(true);
565 CALL_global___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[4], fra
.me
.REG
[5], REGB0
, REGB1
);
567 /* global/cha_analysis.nit:110 */
568 REGB1
= 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*/;
569 if (UNTAG_Bool(REGB1
)) {
570 /* global/cha_analysis.nit:111 */
571 fra
.me
.REG
[5] = CALL_global___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
572 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
573 if (UNTAG_Bool(REGB1
)) {
574 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 111);
576 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
577 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
578 if (UNTAG_Bool(REGB1
)) {
579 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 111);
581 fra
.me
.REG
[6] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
582 fra
.me
.REG
[6] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
583 REGB1
= TAG_Bool(false);
584 REGB0
= TAG_Bool(false);
585 CALL_global___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4], fra
.me
.REG
[6], REGB1
, REGB0
);
587 /* global/cha_analysis.nit:112 */
588 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*/;
589 if (UNTAG_Bool(REGB0
)) {
590 /* global/cha_analysis.nit:113 */
591 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
592 if (UNTAG_Bool(REGB0
)) {
593 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 113);
595 fra
.me
.REG
[6] = CALL_icode___icode_base___ICheckInstance___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
596 /* global/cha_analysis.nit:114 */
597 fra
.me
.REG
[4] = CALL_global___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
598 fra
.me
.REG
[4] = CALL_global___cha_analysis___ChaBuilder___program(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
599 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
600 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[4]);
601 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
602 /* global/cha_analysis.nit:115 */
603 fra
.me
.REG
[4] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
604 /* global/cha_analysis.nit:116 */
605 fra
.me
.REG
[6] = CALL_global___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
606 REGB0
= TAG_Bool(true);
607 REGB1
= TAG_Bool(false);
608 CALL_global___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[6])(fra
.me
.REG
[6], NIT_NULL
, fra
.me
.REG
[4], REGB0
, REGB1
);
610 /* global/cha_analysis.nit:117 */
611 REGB1
= 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*/;
612 if (UNTAG_Bool(REGB1
)) {
613 /* global/cha_analysis.nit:118 */
614 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
615 if (UNTAG_Bool(REGB1
)) {
616 nit_abort("Reciever is null", NULL
, LOCATE_global___cha_analysis
, 118);
618 fra
.me
.REG
[3] = CALL_icode___icode_base___IInitAttributes___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
619 /* global/cha_analysis.nit:119 */
620 fra
.me
.REG
[4] = CALL_global___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
621 fra
.me
.REG
[4] = CALL_global___cha_analysis___ChaBuilder___program(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
622 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
623 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
624 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
625 /* global/cha_analysis.nit:120 */
626 fra
.me
.REG
[4] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
627 /* global/cha_analysis.nit:121 */
628 fra
.me
.REG
[2] = CALL_global___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
629 REGB1
= TAG_Bool(true);
630 REGB0
= TAG_Bool(false);
631 CALL_global___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
, fra
.me
.REG
[4], REGB1
, REGB0
);
638 /* global/cha_analysis.nit:123 */
639 CALL_SUPER_global___cha_analysis___ChaVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
640 stack_frame_head
= fra
.me
.prev
;
643 void global___cha_analysis___ChaVisitor___init(val_t p0
, val_t p1
, int* init_table
){
644 int itpos2
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___cha_analysis___ChaVisitor
].i
;
645 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
647 if (init_table
[itpos2
]) return;
648 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
649 fra
.me
.file
= LOCATE_global___cha_analysis
;
651 fra
.me
.meth
= LOCATE_global___cha_analysis___ChaVisitor___init
;
652 fra
.me
.has_broke
= 0;
654 fra
.me
.nitni_local_ref_head
= NULL
;
655 fra
.me
.REG
[0] = NIT_NULL
;
656 fra
.me
.REG
[1] = NIT_NULL
;
657 fra
.me
.REG
[2] = NIT_NULL
;
660 /* global/cha_analysis.nit:126 */
661 fra
.me
.REG
[2] = fra
.me
.REG
[0];
662 CALL_icode___icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
663 /* global/cha_analysis.nit:128 */
664 ATTR_global___cha_analysis___ChaVisitor____builder(fra
.me
.REG
[2]) = fra
.me
.REG
[1];
665 stack_frame_head
= fra
.me
.prev
;
666 init_table
[itpos2
] = 1;