1 /* This C file is generated by NIT to compile module analysis___cha_analysis. */
2 #include "analysis___cha_analysis._sep.h"
3 val_t
analysis___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_analysis___cha_analysis
;
10 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaContext___reachable_iroutines
;
13 fra
.me
.nitni_local_ref_head
= NULL
;
14 fra
.me
.REG
[0] = NIT_NULL
;
16 /* ./analysis//cha_analysis.nit:26 */
17 REGB0
= TAG_Bool(ATTR_analysis___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_analysis___cha_analysis
, 26);
22 fra
.me
.REG
[0] = ATTR_analysis___cha_analysis___ChaContext____reachable_iroutines(fra
.me
.REG
[0]);
23 stack_frame_head
= fra
.me
.prev
;
26 val_t
analysis___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_analysis___cha_analysis
;
34 fra
.me
.meth
= LOCATE_analysis___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 /* ./analysis//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_analysis___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
analysis___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_analysis___cha_analysis
;
75 fra
.me
.meth
= LOCATE_analysis___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 /* ./analysis//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_analysis___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 val_t
analysis___cha_analysis___ChaBuilder___iroutine_to_search(val_t p0
){
92 struct {struct stack_frame_t me
;} fra
;
95 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
96 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
98 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaBuilder___iroutine_to_search
;
101 fra
.me
.nitni_local_ref_head
= NULL
;
102 fra
.me
.REG
[0] = NIT_NULL
;
104 /* ./analysis//cha_analysis.nit:38 */
105 REGB0
= TAG_Bool(ATTR_analysis___cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0])!=NIT_NULL
);
106 if (UNTAG_Bool(REGB0
)) {
108 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_analysis___cha_analysis
, 38);
110 fra
.me
.REG
[0] = ATTR_analysis___cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0]);
111 stack_frame_head
= fra
.me
.prev
;
112 return fra
.me
.REG
[0];
114 val_t
analysis___cha_analysis___ChaBuilder___context(val_t p0
){
115 struct {struct stack_frame_t me
;} fra
;
118 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
119 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
121 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaBuilder___context
;
122 fra
.me
.has_broke
= 0;
124 fra
.me
.nitni_local_ref_head
= NULL
;
125 fra
.me
.REG
[0] = NIT_NULL
;
127 /* ./analysis//cha_analysis.nit:39 */
128 REGB0
= TAG_Bool(ATTR_analysis___cha_analysis___ChaBuilder____context(fra
.me
.REG
[0])!=NIT_NULL
);
129 if (UNTAG_Bool(REGB0
)) {
131 nit_abort("Uninitialized attribute %s", "_context", LOCATE_analysis___cha_analysis
, 39);
133 fra
.me
.REG
[0] = ATTR_analysis___cha_analysis___ChaBuilder____context(fra
.me
.REG
[0]);
134 stack_frame_head
= fra
.me
.prev
;
135 return fra
.me
.REG
[0];
137 val_t
analysis___cha_analysis___ChaBuilder___program(val_t p0
){
138 struct {struct stack_frame_t me
;} fra
;
141 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
142 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
144 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaBuilder___program
;
145 fra
.me
.has_broke
= 0;
147 fra
.me
.nitni_local_ref_head
= NULL
;
148 fra
.me
.REG
[0] = NIT_NULL
;
150 /* ./analysis//cha_analysis.nit:40 */
151 REGB0
= TAG_Bool(ATTR_analysis___cha_analysis___ChaBuilder____program(fra
.me
.REG
[0])!=NIT_NULL
);
152 if (UNTAG_Bool(REGB0
)) {
154 nit_abort("Uninitialized attribute %s", "_program", LOCATE_analysis___cha_analysis
, 40);
156 fra
.me
.REG
[0] = ATTR_analysis___cha_analysis___ChaBuilder____program(fra
.me
.REG
[0]);
157 stack_frame_head
= fra
.me
.prev
;
158 return fra
.me
.REG
[0];
160 void analysis___cha_analysis___ChaBuilder___init(val_t p0
, val_t p1
, int* init_table
){
161 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_analysis___cha_analysis___ChaBuilder
].i
;
162 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
164 if (init_table
[itpos0
]) return;
165 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
166 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
168 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaBuilder___init
;
169 fra
.me
.has_broke
= 0;
171 fra
.me
.nitni_local_ref_head
= NULL
;
172 fra
.me
.REG
[0] = NIT_NULL
;
173 fra
.me
.REG
[1] = NIT_NULL
;
176 /* ./analysis//cha_analysis.nit:43 */
177 ATTR_analysis___cha_analysis___ChaBuilder____program(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
178 /* ./analysis//cha_analysis.nit:44 */
179 fra
.me
.REG
[1] = NEW_ChaContext_analysis___reachable_method_analysis___ReachableMethodAnalysis___init();
180 ATTR_analysis___cha_analysis___ChaBuilder____context(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
181 stack_frame_head
= fra
.me
.prev
;
182 init_table
[itpos0
] = 1;
185 void analysis___cha_analysis___ChaBuilder___add_search(val_t p0
, val_t p1
, val_t p2
, val_t p3
, val_t p4
){
186 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
192 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
193 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
195 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaBuilder___add_search
;
196 fra
.me
.has_broke
= 0;
198 fra
.me
.nitni_local_ref_head
= NULL
;
199 fra
.me
.REG
[0] = NIT_NULL
;
200 fra
.me
.REG
[1] = NIT_NULL
;
201 fra
.me
.REG
[2] = NIT_NULL
;
202 fra
.me
.REG
[3] = NIT_NULL
;
208 /* ./analysis//cha_analysis.nit:49 */
209 REGB2
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
210 if (UNTAG_Bool(REGB2
)) {
212 REGB3
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
213 if (UNTAG_Bool(REGB3
)) {
214 REGB3
= TAG_Bool(false);
217 REGB3
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
221 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
222 if (UNTAG_Bool(REGB2
)) {
223 fra
.me
.REG
[3] = CALL_analysis___cha_analysis___ChaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
224 REGB2
= CALL_analysis___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
225 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
227 REGB3
= TAG_Bool(false);
230 if (UNTAG_Bool(REGB2
)) {
231 /* ./analysis//cha_analysis.nit:50 */
232 fra
.me
.REG
[3] = CALL_analysis___cha_analysis___ChaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
233 fra
.me
.REG
[3] = CALL_analysis___cha_analysis___ChaContext___reachable_iroutines(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
234 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
235 /* ./analysis//cha_analysis.nit:51 */
236 REGB2
= TAG_Bool(ATTR_analysis___cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0])!=NIT_NULL
);
237 if (UNTAG_Bool(REGB2
)) {
239 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_analysis___cha_analysis
, 51);
241 fra
.me
.REG
[3] = ATTR_analysis___cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0]);
242 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
244 /* ./analysis//cha_analysis.nit:54 */
245 REGB2
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
246 if (UNTAG_Bool(REGB2
)) {
248 REGB3
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
249 if (UNTAG_Bool(REGB3
)) {
250 REGB3
= TAG_Bool(false);
253 REGB3
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
257 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
258 if (UNTAG_Bool(REGB2
)) {
259 /* ./analysis//cha_analysis.nit:56 */
260 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
261 if (UNTAG_Bool(REGB0
)) {
262 /* ./analysis//cha_analysis.nit:57 */
263 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
264 if (UNTAG_Bool(REGB0
)) {
265 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 57);
267 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
268 fra
.me
.REG
[2] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
269 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_analysis___cha_analysis___ChaBuilder___add_search_1
));
271 /* ./analysis//cha_analysis.nit:65 */
272 if (UNTAG_Bool(REGB1
)) {
273 /* ./analysis//cha_analysis.nit:66 */
274 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
275 if (UNTAG_Bool(REGB1
)) {
276 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 66);
278 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
279 fra
.me
.REG
[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
280 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], (&(fra
.me
)), ((fun_t
)OC_analysis___cha_analysis___ChaBuilder___add_search_2
));
283 stack_frame_head
= fra
.me
.prev
;
286 void OC_analysis___cha_analysis___ChaBuilder___add_search_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
287 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
292 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
293 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
295 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaBuilder___add_search
;
296 fra
.me
.has_broke
= 0;
298 fra
.me
.nitni_local_ref_head
= NULL
;
299 fra
.me
.REG
[0] = NIT_NULL
;
300 fra
.me
.REG
[1] = NIT_NULL
;
301 fra
.me
.closure_ctx
= closctx_param
;
302 fra
.me
.closure_funs
= CREG
;
305 /* ./analysis//cha_analysis.nit:58 */
306 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
307 if (UNTAG_Bool(REGB0
)) {
308 /* ./analysis//cha_analysis.nit:59 */
309 fra
.me
.REG
[1] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
310 REGB0
= TAG_Bool(true);
311 REGB1
= TAG_Bool(false);
312 CALL_analysis___cha_analysis___ChaBuilder___add_search(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0], fra
.me
.REG
[1], REGB0
, REGB1
);
314 stack_frame_head
= fra
.me
.prev
;
317 void OC_analysis___cha_analysis___ChaBuilder___add_search_2(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
318 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
323 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
324 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
326 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaBuilder___add_search
;
327 fra
.me
.has_broke
= 0;
329 fra
.me
.nitni_local_ref_head
= NULL
;
330 fra
.me
.REG
[0] = NIT_NULL
;
331 fra
.me
.REG
[1] = NIT_NULL
;
332 fra
.me
.closure_ctx
= closctx_param
;
333 fra
.me
.closure_funs
= CREG
;
336 /* ./analysis//cha_analysis.nit:67 */
337 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
338 if (UNTAG_Bool(REGB0
)) {
339 /* ./analysis//cha_analysis.nit:68 */
340 fra
.me
.REG
[1] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
341 REGB0
= TAG_Bool(true);
342 REGB1
= TAG_Bool(false);
343 CALL_analysis___cha_analysis___ChaBuilder___add_search(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0], fra
.me
.REG
[1], REGB0
, REGB1
);
345 stack_frame_head
= fra
.me
.prev
;
348 void analysis___cha_analysis___ChaBuilder___work(val_t p0
){
349 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
353 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
354 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
356 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaBuilder___work
;
357 fra
.me
.has_broke
= 0;
359 fra
.me
.nitni_local_ref_head
= NULL
;
360 fra
.me
.REG
[0] = NIT_NULL
;
361 fra
.me
.REG
[1] = NIT_NULL
;
362 fra
.me
.REG
[2] = NIT_NULL
;
364 /* ./analysis//cha_analysis.nit:77 */
365 fra
.me
.REG
[1] = CALL_analysis___cha_analysis___ChaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
366 fra
.me
.REG
[1] = CALL_program___Program___main_method(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
367 /* ./analysis//cha_analysis.nit:78 */
368 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
369 if (UNTAG_Bool(REGB0
)) {
371 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
372 if (UNTAG_Bool(REGB1
)) {
373 REGB1
= TAG_Bool(false);
376 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
380 if (UNTAG_Bool(REGB0
)) {
383 /* ./analysis//cha_analysis.nit:80 */
384 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
385 if (UNTAG_Bool(REGB0
)) {
386 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 80);
388 fra
.me
.REG
[2] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
389 REGB0
= TAG_Bool(true);
390 REGB1
= TAG_Bool(false);
391 CALL_analysis___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2], REGB0
, REGB1
);
392 /* ./analysis//cha_analysis.nit:82 */
394 fra
.me
.REG
[2] = CALL_analysis___cha_analysis___ChaBuilder___iroutine_to_search(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
395 REGB1
= CALL_standard___collection___abstract_collection___Collection___is_empty(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
396 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
397 if (UNTAG_Bool(REGB1
)) {
398 /* ./analysis//cha_analysis.nit:83 */
399 fra
.me
.REG
[2] = NEW_ChaVisitor_analysis___cha_analysis___ChaVisitor___init(fra
.me
.REG
[0]);
400 /* ./analysis//cha_analysis.nit:84 */
401 fra
.me
.REG
[1] = CALL_analysis___cha_analysis___ChaBuilder___iroutine_to_search(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
402 fra
.me
.REG
[1] = CALL_standard___collection___abstract_collection___Sequence___pop(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
403 /* ./analysis//cha_analysis.nit:85 */
404 fra
.me
.REG
[1] = CALL_icode___icode_base___IRoutine___body(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
405 CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
407 /* ./analysis//cha_analysis.nit:82 */
413 stack_frame_head
= fra
.me
.prev
;
416 val_t
analysis___cha_analysis___ChaVisitor___builder(val_t p0
){
417 struct {struct stack_frame_t me
;} fra
;
420 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
421 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
423 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaVisitor___builder
;
424 fra
.me
.has_broke
= 0;
426 fra
.me
.nitni_local_ref_head
= NULL
;
427 fra
.me
.REG
[0] = NIT_NULL
;
429 /* ./analysis//cha_analysis.nit:92 */
430 REGB0
= TAG_Bool(ATTR_analysis___cha_analysis___ChaVisitor____builder(fra
.me
.REG
[0])!=NIT_NULL
);
431 if (UNTAG_Bool(REGB0
)) {
433 nit_abort("Uninitialized attribute %s", "_builder", LOCATE_analysis___cha_analysis
, 92);
435 fra
.me
.REG
[0] = ATTR_analysis___cha_analysis___ChaVisitor____builder(fra
.me
.REG
[0]);
436 stack_frame_head
= fra
.me
.prev
;
437 return fra
.me
.REG
[0];
439 void analysis___cha_analysis___ChaVisitor___visit_icode(val_t p0
, val_t p1
){
440 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
444 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
445 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
447 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaVisitor___visit_icode
;
448 fra
.me
.has_broke
= 0;
450 fra
.me
.nitni_local_ref_head
= NULL
;
451 fra
.me
.REG
[0] = NIT_NULL
;
452 fra
.me
.REG
[1] = NIT_NULL
;
453 fra
.me
.REG
[2] = NIT_NULL
;
454 fra
.me
.REG
[3] = NIT_NULL
;
455 fra
.me
.REG
[4] = NIT_NULL
;
456 fra
.me
.REG
[5] = NIT_NULL
;
457 fra
.me
.REG
[6] = NIT_NULL
;
460 /* ./analysis//cha_analysis.nit:94 */
461 fra
.me
.REG
[2] = fra
.me
.REG
[0];
462 fra
.me
.REG
[3] = fra
.me
.REG
[1];
463 /* ./analysis//cha_analysis.nit:96 */
464 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*/;
465 if (UNTAG_Bool(REGB0
)) {
466 /* ./analysis//cha_analysis.nit:98 */
467 fra
.me
.REG
[4] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
468 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
469 if (UNTAG_Bool(REGB0
)) {
470 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 98);
472 fra
.me
.REG
[5] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
473 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
474 if (UNTAG_Bool(REGB0
)) {
475 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 98);
477 fra
.me
.REG
[6] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
478 fra
.me
.REG
[6] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
479 REGB0
= TAG_Bool(true);
480 REGB1
= TAG_Bool(false);
481 CALL_analysis___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5], fra
.me
.REG
[6], REGB0
, REGB1
);
483 /* ./analysis//cha_analysis.nit:99 */
484 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*/;
485 if (UNTAG_Bool(REGB1
)) {
486 /* ./analysis//cha_analysis.nit:101 */
487 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
488 if (UNTAG_Bool(REGB1
)) {
489 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 101);
491 fra
.me
.REG
[6] = CALL_icode___icode_base___INew___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
492 /* ./analysis//cha_analysis.nit:102 */
493 fra
.me
.REG
[5] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
494 fra
.me
.REG
[5] = CALL_analysis___cha_analysis___ChaBuilder___program(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
495 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
496 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
497 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
498 /* ./analysis//cha_analysis.nit:103 */
499 fra
.me
.REG
[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
500 REGB1
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
501 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
502 if (UNTAG_Bool(REGB1
)) {
503 /* ./analysis//cha_analysis.nit:104 */
504 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
505 if (UNTAG_Bool(REGB1
)) {
506 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 104);
508 fra
.me
.REG
[6] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
509 fra
.me
.REG
[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
510 fra
.me
.REG
[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[6]);
511 REGB1
= TAG_Bool(VAL_ISA(fra
.me
.REG
[6], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
512 if (UNTAG_Bool(REGB1
)) {
514 nit_abort("Cast failed", NULL
, LOCATE_analysis___cha_analysis
, 104);
516 /* ./analysis//cha_analysis.nit:105 */
517 fra
.me
.REG
[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
518 fra
.me
.REG
[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[6]);
519 /* ./analysis//cha_analysis.nit:106 */
520 fra
.me
.REG
[5] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
521 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
522 if (UNTAG_Bool(REGB1
)) {
523 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 106);
525 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
526 REGB1
= TAG_Bool(false);
527 REGB0
= TAG_Bool(false);
528 CALL_analysis___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4], fra
.me
.REG
[6], REGB1
, REGB0
);
531 /* ./analysis//cha_analysis.nit:108 */
532 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*/;
533 if (UNTAG_Bool(REGB0
)) {
534 /* ./analysis//cha_analysis.nit:109 */
535 fra
.me
.REG
[6] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
536 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
537 if (UNTAG_Bool(REGB0
)) {
538 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 109);
540 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
541 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
542 if (UNTAG_Bool(REGB0
)) {
543 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 109);
545 fra
.me
.REG
[5] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
546 fra
.me
.REG
[5] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
547 REGB0
= TAG_Bool(false);
548 REGB1
= TAG_Bool(true);
549 CALL_analysis___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[4], fra
.me
.REG
[5], REGB0
, REGB1
);
551 /* ./analysis//cha_analysis.nit:110 */
552 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*/;
553 if (UNTAG_Bool(REGB1
)) {
554 /* ./analysis//cha_analysis.nit:111 */
555 fra
.me
.REG
[5] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
556 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
557 if (UNTAG_Bool(REGB1
)) {
558 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 111);
560 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
561 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
562 if (UNTAG_Bool(REGB1
)) {
563 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 111);
565 fra
.me
.REG
[6] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
566 fra
.me
.REG
[6] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
567 REGB1
= TAG_Bool(false);
568 REGB0
= TAG_Bool(false);
569 CALL_analysis___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4], fra
.me
.REG
[6], REGB1
, REGB0
);
571 /* ./analysis//cha_analysis.nit:112 */
572 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*/;
573 if (UNTAG_Bool(REGB0
)) {
574 /* ./analysis//cha_analysis.nit:113 */
575 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
576 if (UNTAG_Bool(REGB0
)) {
577 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 113);
579 fra
.me
.REG
[6] = CALL_icode___icode_base___ICheckInstance___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
580 /* ./analysis//cha_analysis.nit:114 */
581 fra
.me
.REG
[4] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
582 fra
.me
.REG
[4] = CALL_analysis___cha_analysis___ChaBuilder___program(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
583 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
584 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[4]);
585 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
586 /* ./analysis//cha_analysis.nit:115 */
587 fra
.me
.REG
[4] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
588 /* ./analysis//cha_analysis.nit:116 */
589 fra
.me
.REG
[6] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
590 REGB0
= TAG_Bool(true);
591 REGB1
= TAG_Bool(false);
592 CALL_analysis___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[6])(fra
.me
.REG
[6], NIT_NULL
, fra
.me
.REG
[4], REGB0
, REGB1
);
594 /* ./analysis//cha_analysis.nit:117 */
595 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*/;
596 if (UNTAG_Bool(REGB1
)) {
597 /* ./analysis//cha_analysis.nit:118 */
598 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
599 if (UNTAG_Bool(REGB1
)) {
600 nit_abort("Reciever is null", NULL
, LOCATE_analysis___cha_analysis
, 118);
602 fra
.me
.REG
[3] = CALL_icode___icode_base___IInitAttributes___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
603 /* ./analysis//cha_analysis.nit:119 */
604 fra
.me
.REG
[4] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
605 fra
.me
.REG
[4] = CALL_analysis___cha_analysis___ChaBuilder___program(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
606 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
607 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
608 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
609 /* ./analysis//cha_analysis.nit:120 */
610 fra
.me
.REG
[4] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
611 /* ./analysis//cha_analysis.nit:121 */
612 fra
.me
.REG
[2] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
613 REGB1
= TAG_Bool(true);
614 REGB0
= TAG_Bool(false);
615 CALL_analysis___cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
, fra
.me
.REG
[4], REGB1
, REGB0
);
622 /* ./analysis//cha_analysis.nit:123 */
623 CALL_SUPER_analysis___cha_analysis___ChaVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
624 stack_frame_head
= fra
.me
.prev
;
627 void analysis___cha_analysis___ChaVisitor___init(val_t p0
, val_t p1
, int* init_table
){
628 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_analysis___cha_analysis___ChaVisitor
].i
;
629 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
631 if (init_table
[itpos1
]) return;
632 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
633 fra
.me
.file
= LOCATE_analysis___cha_analysis
;
635 fra
.me
.meth
= LOCATE_analysis___cha_analysis___ChaVisitor___init
;
636 fra
.me
.has_broke
= 0;
638 fra
.me
.nitni_local_ref_head
= NULL
;
639 fra
.me
.REG
[0] = NIT_NULL
;
640 fra
.me
.REG
[1] = NIT_NULL
;
641 fra
.me
.REG
[2] = NIT_NULL
;
644 /* ./analysis//cha_analysis.nit:126 */
645 fra
.me
.REG
[2] = fra
.me
.REG
[0];
646 CALL_icode___icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
647 /* ./analysis//cha_analysis.nit:128 */
648 ATTR_analysis___cha_analysis___ChaVisitor____builder(fra
.me
.REG
[2]) = fra
.me
.REG
[1];
649 stack_frame_head
= fra
.me
.prev
;
650 init_table
[itpos1
] = 1;