1 /* This C file is generated by NIT to compile module cha_analysis. */
2 #include "cha_analysis._sep.h"
3 val_t
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_cha_analysis
;
10 fra
.me
.meth
= LOCATE_cha_analysis___ChaContext___reachable_iroutines
;
13 fra
.me
.REG
[0] = NIT_NULL
;
15 /* ./analysis//cha_analysis.nit:26 */
16 REGB0
= TAG_Bool(ATTR_cha_analysis___ChaContext____reachable_iroutines(fra
.me
.REG
[0])!=NIT_NULL
);
17 if (UNTAG_Bool(REGB0
)) {
19 nit_abort("Uninitialized attribute %s", "_reachable_iroutines", LOCATE_cha_analysis
, 26);
21 fra
.me
.REG
[0] = ATTR_cha_analysis___ChaContext____reachable_iroutines(fra
.me
.REG
[0]);
22 stack_frame_head
= fra
.me
.prev
;
25 val_t
cha_analysis___ChaContext___is_iroutine_reachable(val_t p0
, val_t p1
){
26 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
30 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
31 fra
.me
.file
= LOCATE_cha_analysis
;
33 fra
.me
.meth
= LOCATE_cha_analysis___ChaContext___is_iroutine_reachable
;
36 fra
.me
.REG
[0] = NIT_NULL
;
37 fra
.me
.REG
[1] = NIT_NULL
;
40 /* ./analysis//cha_analysis.nit:29 */
41 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
42 if (UNTAG_Bool(REGB0
)) {
44 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
45 if (UNTAG_Bool(REGB1
)) {
46 REGB1
= TAG_Bool(false);
49 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
53 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
54 if (UNTAG_Bool(REGB0
)) {
55 fra
.me
.REG
[0] = CALL_cha_analysis___ChaContext___reachable_iroutines(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
56 REGB0
= CALL_abstract_collection___Collection___has(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
58 REGB1
= TAG_Bool(false);
63 stack_frame_head
= fra
.me
.prev
;
66 val_t
cha_analysis___ChaContext___is_method_reachable(val_t p0
, val_t p1
){
67 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
70 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
71 fra
.me
.file
= LOCATE_cha_analysis
;
73 fra
.me
.meth
= LOCATE_cha_analysis___ChaContext___is_method_reachable
;
76 fra
.me
.REG
[0] = NIT_NULL
;
77 fra
.me
.REG
[1] = NIT_NULL
;
80 /* ./analysis//cha_analysis.nit:33 */
81 fra
.me
.REG
[1] = CALL_icode_base___MMMethod___iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
82 REGB0
= CALL_reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
85 stack_frame_head
= fra
.me
.prev
;
88 val_t
cha_analysis___ChaBuilder___iroutine_to_search(val_t p0
){
89 struct {struct stack_frame_t me
;} fra
;
92 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
93 fra
.me
.file
= LOCATE_cha_analysis
;
95 fra
.me
.meth
= LOCATE_cha_analysis___ChaBuilder___iroutine_to_search
;
98 fra
.me
.REG
[0] = NIT_NULL
;
100 /* ./analysis//cha_analysis.nit:38 */
101 REGB0
= TAG_Bool(ATTR_cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0])!=NIT_NULL
);
102 if (UNTAG_Bool(REGB0
)) {
104 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_cha_analysis
, 38);
106 fra
.me
.REG
[0] = ATTR_cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0]);
107 stack_frame_head
= fra
.me
.prev
;
108 return fra
.me
.REG
[0];
110 val_t
cha_analysis___ChaBuilder___context(val_t p0
){
111 struct {struct stack_frame_t me
;} fra
;
114 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
115 fra
.me
.file
= LOCATE_cha_analysis
;
117 fra
.me
.meth
= LOCATE_cha_analysis___ChaBuilder___context
;
118 fra
.me
.has_broke
= 0;
120 fra
.me
.REG
[0] = NIT_NULL
;
122 /* ./analysis//cha_analysis.nit:39 */
123 REGB0
= TAG_Bool(ATTR_cha_analysis___ChaBuilder____context(fra
.me
.REG
[0])!=NIT_NULL
);
124 if (UNTAG_Bool(REGB0
)) {
126 nit_abort("Uninitialized attribute %s", "_context", LOCATE_cha_analysis
, 39);
128 fra
.me
.REG
[0] = ATTR_cha_analysis___ChaBuilder____context(fra
.me
.REG
[0]);
129 stack_frame_head
= fra
.me
.prev
;
130 return fra
.me
.REG
[0];
132 val_t
cha_analysis___ChaBuilder___program(val_t p0
){
133 struct {struct stack_frame_t me
;} fra
;
136 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
137 fra
.me
.file
= LOCATE_cha_analysis
;
139 fra
.me
.meth
= LOCATE_cha_analysis___ChaBuilder___program
;
140 fra
.me
.has_broke
= 0;
142 fra
.me
.REG
[0] = NIT_NULL
;
144 /* ./analysis//cha_analysis.nit:40 */
145 REGB0
= TAG_Bool(ATTR_cha_analysis___ChaBuilder____program(fra
.me
.REG
[0])!=NIT_NULL
);
146 if (UNTAG_Bool(REGB0
)) {
148 nit_abort("Uninitialized attribute %s", "_program", LOCATE_cha_analysis
, 40);
150 fra
.me
.REG
[0] = ATTR_cha_analysis___ChaBuilder____program(fra
.me
.REG
[0]);
151 stack_frame_head
= fra
.me
.prev
;
152 return fra
.me
.REG
[0];
154 void cha_analysis___ChaBuilder___init(val_t p0
, val_t p1
, int* init_table
){
155 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_ChaBuilder
].i
;
156 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
158 if (init_table
[itpos0
]) return;
159 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
160 fra
.me
.file
= LOCATE_cha_analysis
;
162 fra
.me
.meth
= LOCATE_cha_analysis___ChaBuilder___init
;
163 fra
.me
.has_broke
= 0;
165 fra
.me
.REG
[0] = NIT_NULL
;
166 fra
.me
.REG
[1] = NIT_NULL
;
169 /* ./analysis//cha_analysis.nit:43 */
170 ATTR_cha_analysis___ChaBuilder____program(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
171 /* ./analysis//cha_analysis.nit:44 */
172 fra
.me
.REG
[1] = NEW_ChaContext_reachable_method_analysis___ReachableMethodAnalysis___init();
173 ATTR_cha_analysis___ChaBuilder____context(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
174 stack_frame_head
= fra
.me
.prev
;
175 init_table
[itpos0
] = 1;
178 void cha_analysis___ChaBuilder___add_search(val_t p0
, val_t p1
, val_t p2
, val_t p3
, val_t p4
){
179 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
185 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
186 fra
.me
.file
= LOCATE_cha_analysis
;
188 fra
.me
.meth
= LOCATE_cha_analysis___ChaBuilder___add_search
;
189 fra
.me
.has_broke
= 0;
191 fra
.me
.REG
[0] = NIT_NULL
;
192 fra
.me
.REG
[1] = NIT_NULL
;
193 fra
.me
.REG
[2] = NIT_NULL
;
194 fra
.me
.REG
[3] = NIT_NULL
;
200 /* ./analysis//cha_analysis.nit:49 */
201 REGB2
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
202 if (UNTAG_Bool(REGB2
)) {
204 REGB3
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
205 if (UNTAG_Bool(REGB3
)) {
206 REGB3
= TAG_Bool(false);
209 REGB3
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
213 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
214 if (UNTAG_Bool(REGB2
)) {
215 fra
.me
.REG
[3] = CALL_cha_analysis___ChaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
216 REGB2
= CALL_reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
217 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
219 REGB3
= TAG_Bool(false);
222 if (UNTAG_Bool(REGB2
)) {
223 /* ./analysis//cha_analysis.nit:50 */
224 fra
.me
.REG
[3] = CALL_cha_analysis___ChaBuilder___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
225 fra
.me
.REG
[3] = CALL_cha_analysis___ChaContext___reachable_iroutines(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
226 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
227 /* ./analysis//cha_analysis.nit:51 */
228 REGB2
= TAG_Bool(ATTR_cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0])!=NIT_NULL
);
229 if (UNTAG_Bool(REGB2
)) {
231 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_cha_analysis
, 51);
233 fra
.me
.REG
[3] = ATTR_cha_analysis___ChaBuilder____iroutine_to_search(fra
.me
.REG
[0]);
234 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
236 /* ./analysis//cha_analysis.nit:54 */
237 REGB2
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
238 if (UNTAG_Bool(REGB2
)) {
240 REGB3
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
241 if (UNTAG_Bool(REGB3
)) {
242 REGB3
= TAG_Bool(false);
245 REGB3
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
249 REGB2
= TAG_Bool(!UNTAG_Bool(REGB2
));
250 if (UNTAG_Bool(REGB2
)) {
251 /* ./analysis//cha_analysis.nit:56 */
252 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
253 if (UNTAG_Bool(REGB0
)) {
254 /* ./analysis//cha_analysis.nit:57 */
255 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
256 if (UNTAG_Bool(REGB0
)) {
257 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 57);
259 fra
.me
.REG
[2] = CALL_abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
260 fra
.me
.REG
[2] = CALL_partial_order___PartialOrderElement___smallers(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
261 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_cha_analysis___ChaBuilder___add_search_1
));
263 /* ./analysis//cha_analysis.nit:65 */
264 if (UNTAG_Bool(REGB1
)) {
265 /* ./analysis//cha_analysis.nit:66 */
266 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
267 if (UNTAG_Bool(REGB1
)) {
268 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 66);
270 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
271 fra
.me
.REG
[1] = CALL_partial_order___PartialOrderElement___greaters(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
272 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], (&(fra
.me
)), ((fun_t
)OC_cha_analysis___ChaBuilder___add_search_2
));
275 stack_frame_head
= fra
.me
.prev
;
278 void OC_cha_analysis___ChaBuilder___add_search_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
279 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
284 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
285 fra
.me
.file
= LOCATE_cha_analysis
;
287 fra
.me
.meth
= LOCATE_cha_analysis___ChaBuilder___add_search
;
288 fra
.me
.has_broke
= 0;
290 fra
.me
.REG
[0] = NIT_NULL
;
291 fra
.me
.REG
[1] = NIT_NULL
;
292 fra
.me
.closure_ctx
= closctx_param
;
293 fra
.me
.closure_funs
= CREG
;
296 /* ./analysis//cha_analysis.nit:58 */
297 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMMethod
, ID_MMMethod
)) /*cast MMMethod*/;
298 if (UNTAG_Bool(REGB0
)) {
299 /* ./analysis//cha_analysis.nit:59 */
300 fra
.me
.REG
[1] = CALL_icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
301 REGB0
= TAG_Bool(true);
302 REGB1
= TAG_Bool(false);
303 CALL_cha_analysis___ChaBuilder___add_search(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0], fra
.me
.REG
[1], REGB0
, REGB1
);
305 stack_frame_head
= fra
.me
.prev
;
308 void OC_cha_analysis___ChaBuilder___add_search_2(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
309 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
314 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
315 fra
.me
.file
= LOCATE_cha_analysis
;
317 fra
.me
.meth
= LOCATE_cha_analysis___ChaBuilder___add_search
;
318 fra
.me
.has_broke
= 0;
320 fra
.me
.REG
[0] = NIT_NULL
;
321 fra
.me
.REG
[1] = NIT_NULL
;
322 fra
.me
.closure_ctx
= closctx_param
;
323 fra
.me
.closure_funs
= CREG
;
326 /* ./analysis//cha_analysis.nit:67 */
327 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMMethod
, ID_MMMethod
)) /*cast MMMethod*/;
328 if (UNTAG_Bool(REGB0
)) {
329 /* ./analysis//cha_analysis.nit:68 */
330 fra
.me
.REG
[1] = CALL_icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
331 REGB0
= TAG_Bool(true);
332 REGB1
= TAG_Bool(false);
333 CALL_cha_analysis___ChaBuilder___add_search(closctx
->REG
[0])(closctx
->REG
[0], fra
.me
.REG
[0], fra
.me
.REG
[1], REGB0
, REGB1
);
335 stack_frame_head
= fra
.me
.prev
;
338 void cha_analysis___ChaBuilder___work(val_t p0
){
339 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
343 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
344 fra
.me
.file
= LOCATE_cha_analysis
;
346 fra
.me
.meth
= LOCATE_cha_analysis___ChaBuilder___work
;
347 fra
.me
.has_broke
= 0;
349 fra
.me
.REG
[0] = NIT_NULL
;
350 fra
.me
.REG
[1] = NIT_NULL
;
351 fra
.me
.REG
[2] = NIT_NULL
;
353 /* ./analysis//cha_analysis.nit:77 */
354 fra
.me
.REG
[1] = CALL_cha_analysis___ChaBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
355 fra
.me
.REG
[1] = CALL_program___Program___main_method(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
356 /* ./analysis//cha_analysis.nit:78 */
357 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
358 if (UNTAG_Bool(REGB0
)) {
360 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
361 if (UNTAG_Bool(REGB1
)) {
362 REGB1
= TAG_Bool(false);
365 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
369 if (UNTAG_Bool(REGB0
)) {
372 /* ./analysis//cha_analysis.nit:80 */
373 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
374 if (UNTAG_Bool(REGB0
)) {
375 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 80);
377 fra
.me
.REG
[2] = CALL_icode_base___MMMethod___iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
378 REGB0
= TAG_Bool(true);
379 REGB1
= TAG_Bool(false);
380 CALL_cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[2], REGB0
, REGB1
);
381 /* ./analysis//cha_analysis.nit:82 */
383 fra
.me
.REG
[2] = CALL_cha_analysis___ChaBuilder___iroutine_to_search(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
384 REGB1
= CALL_abstract_collection___Collection___is_empty(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
385 REGB1
= TAG_Bool(!UNTAG_Bool(REGB1
));
386 if (UNTAG_Bool(REGB1
)) {
387 /* ./analysis//cha_analysis.nit:83 */
388 fra
.me
.REG
[2] = NEW_ChaVisitor_cha_analysis___ChaVisitor___init(fra
.me
.REG
[0]);
389 /* ./analysis//cha_analysis.nit:84 */
390 fra
.me
.REG
[1] = CALL_cha_analysis___ChaBuilder___iroutine_to_search(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
391 fra
.me
.REG
[1] = CALL_abstract_collection___Sequence___pop(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
392 /* ./analysis//cha_analysis.nit:85 */
393 fra
.me
.REG
[1] = CALL_icode_base___IRoutine___body(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
394 CALL_icode_tools___ICodeVisitor___visit_icode(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
396 /* ./analysis//cha_analysis.nit:82 */
402 stack_frame_head
= fra
.me
.prev
;
405 val_t
cha_analysis___ChaVisitor___builder(val_t p0
){
406 struct {struct stack_frame_t me
;} fra
;
409 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
410 fra
.me
.file
= LOCATE_cha_analysis
;
412 fra
.me
.meth
= LOCATE_cha_analysis___ChaVisitor___builder
;
413 fra
.me
.has_broke
= 0;
415 fra
.me
.REG
[0] = NIT_NULL
;
417 /* ./analysis//cha_analysis.nit:92 */
418 REGB0
= TAG_Bool(ATTR_cha_analysis___ChaVisitor____builder(fra
.me
.REG
[0])!=NIT_NULL
);
419 if (UNTAG_Bool(REGB0
)) {
421 nit_abort("Uninitialized attribute %s", "_builder", LOCATE_cha_analysis
, 92);
423 fra
.me
.REG
[0] = ATTR_cha_analysis___ChaVisitor____builder(fra
.me
.REG
[0]);
424 stack_frame_head
= fra
.me
.prev
;
425 return fra
.me
.REG
[0];
427 void cha_analysis___ChaVisitor___visit_icode(val_t p0
, val_t p1
){
428 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
432 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
433 fra
.me
.file
= LOCATE_cha_analysis
;
435 fra
.me
.meth
= LOCATE_cha_analysis___ChaVisitor___visit_icode
;
436 fra
.me
.has_broke
= 0;
438 fra
.me
.REG
[0] = NIT_NULL
;
439 fra
.me
.REG
[1] = NIT_NULL
;
440 fra
.me
.REG
[2] = NIT_NULL
;
441 fra
.me
.REG
[3] = NIT_NULL
;
442 fra
.me
.REG
[4] = NIT_NULL
;
443 fra
.me
.REG
[5] = NIT_NULL
;
444 fra
.me
.REG
[6] = NIT_NULL
;
447 /* ./analysis//cha_analysis.nit:94 */
448 fra
.me
.REG
[2] = fra
.me
.REG
[0];
449 fra
.me
.REG
[3] = fra
.me
.REG
[1];
450 /* ./analysis//cha_analysis.nit:96 */
451 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_IStaticCall
, ID_IStaticCall
)) /*cast IStaticCall*/;
452 if (UNTAG_Bool(REGB0
)) {
453 /* ./analysis//cha_analysis.nit:98 */
454 fra
.me
.REG
[4] = CALL_cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
455 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
456 if (UNTAG_Bool(REGB0
)) {
457 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 98);
459 fra
.me
.REG
[5] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
460 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
461 if (UNTAG_Bool(REGB0
)) {
462 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 98);
464 fra
.me
.REG
[6] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
465 fra
.me
.REG
[6] = CALL_icode_base___MMMethod___iroutine(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
466 REGB0
= TAG_Bool(true);
467 REGB1
= TAG_Bool(false);
468 CALL_cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5], fra
.me
.REG
[6], REGB0
, REGB1
);
470 /* ./analysis//cha_analysis.nit:99 */
471 REGB1
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_INew
, ID_INew
)) /*cast INew*/;
472 if (UNTAG_Bool(REGB1
)) {
473 /* ./analysis//cha_analysis.nit:101 */
474 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
475 if (UNTAG_Bool(REGB1
)) {
476 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 101);
478 fra
.me
.REG
[6] = CALL_icode_base___INew___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
479 /* ./analysis//cha_analysis.nit:102 */
480 fra
.me
.REG
[5] = CALL_cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
481 fra
.me
.REG
[5] = CALL_cha_analysis___ChaBuilder___program(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
482 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
483 fra
.me
.REG
[5] = CALL_static_type___MMType___for_module(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
484 fra
.me
.REG
[5] = CALL_static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
485 /* ./analysis//cha_analysis.nit:103 */
486 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
487 if (UNTAG_Bool(REGB1
)) {
488 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 103);
490 fra
.me
.REG
[6] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
491 fra
.me
.REG
[6] = CALL_abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
492 fra
.me
.REG
[6] = CALL_abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[6]);
493 REGB1
= TAG_Bool(VAL_ISA(fra
.me
.REG
[6], COLOR_MMMethod
, ID_MMMethod
)) /*cast MMMethod*/;
494 if (UNTAG_Bool(REGB1
)) {
496 nit_abort("Cast failed", NULL
, LOCATE_cha_analysis
, 103);
498 /* ./analysis//cha_analysis.nit:104 */
499 fra
.me
.REG
[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
500 fra
.me
.REG
[6] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[6]);
501 /* ./analysis//cha_analysis.nit:105 */
502 fra
.me
.REG
[5] = CALL_cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
503 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
504 if (UNTAG_Bool(REGB1
)) {
505 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 105);
507 fra
.me
.REG
[4] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
508 REGB1
= TAG_Bool(false);
509 REGB0
= TAG_Bool(false);
510 CALL_cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4], fra
.me
.REG
[6], REGB1
, REGB0
);
512 /* ./analysis//cha_analysis.nit:106 */
513 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_ISuper
, ID_ISuper
)) /*cast ISuper*/;
514 if (UNTAG_Bool(REGB0
)) {
515 /* ./analysis//cha_analysis.nit:107 */
516 fra
.me
.REG
[6] = CALL_cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
517 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
518 if (UNTAG_Bool(REGB0
)) {
519 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 107);
521 fra
.me
.REG
[4] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
522 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
523 if (UNTAG_Bool(REGB0
)) {
524 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 107);
526 fra
.me
.REG
[5] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
527 fra
.me
.REG
[5] = CALL_icode_base___MMMethod___iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
528 REGB0
= TAG_Bool(false);
529 REGB1
= TAG_Bool(true);
530 CALL_cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[4], fra
.me
.REG
[5], REGB0
, REGB1
);
532 /* ./analysis//cha_analysis.nit:108 */
533 REGB1
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_ICall
, ID_ICall
)) /*cast ICall*/;
534 if (UNTAG_Bool(REGB1
)) {
535 /* ./analysis//cha_analysis.nit:109 */
536 fra
.me
.REG
[5] = CALL_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_cha_analysis
, 109);
541 fra
.me
.REG
[4] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
542 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
543 if (UNTAG_Bool(REGB1
)) {
544 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 109);
546 fra
.me
.REG
[6] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
547 fra
.me
.REG
[6] = CALL_icode_base___MMMethod___iroutine(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
548 REGB1
= TAG_Bool(false);
549 REGB0
= TAG_Bool(false);
550 CALL_cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4], fra
.me
.REG
[6], REGB1
, REGB0
);
552 /* ./analysis//cha_analysis.nit:110 */
553 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_ICheckInstance
, ID_ICheckInstance
)) /*cast ICheckInstance*/;
554 if (UNTAG_Bool(REGB0
)) {
555 /* ./analysis//cha_analysis.nit:111 */
556 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
557 if (UNTAG_Bool(REGB0
)) {
558 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 111);
560 fra
.me
.REG
[6] = CALL_icode_base___ICheckInstance___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
561 /* ./analysis//cha_analysis.nit:112 */
562 fra
.me
.REG
[4] = CALL_cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
563 fra
.me
.REG
[4] = CALL_cha_analysis___ChaBuilder___program(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
564 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
565 fra
.me
.REG
[4] = CALL_static_type___MMType___for_module(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[4]);
566 fra
.me
.REG
[4] = CALL_static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
567 /* ./analysis//cha_analysis.nit:113 */
568 fra
.me
.REG
[4] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
569 /* ./analysis//cha_analysis.nit:114 */
570 fra
.me
.REG
[6] = CALL_cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
571 REGB0
= TAG_Bool(true);
572 REGB1
= TAG_Bool(false);
573 CALL_cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[6])(fra
.me
.REG
[6], NIT_NULL
, fra
.me
.REG
[4], REGB0
, REGB1
);
575 /* ./analysis//cha_analysis.nit:115 */
576 REGB1
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_IInitAttributes
, ID_IInitAttributes
)) /*cast IInitAttributes*/;
577 if (UNTAG_Bool(REGB1
)) {
578 /* ./analysis//cha_analysis.nit:116 */
579 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
580 if (UNTAG_Bool(REGB1
)) {
581 nit_abort("Reciever is null", NULL
, LOCATE_cha_analysis
, 116);
583 fra
.me
.REG
[3] = CALL_icode_base___IInitAttributes___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
584 /* ./analysis//cha_analysis.nit:117 */
585 fra
.me
.REG
[4] = CALL_cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
586 fra
.me
.REG
[4] = CALL_cha_analysis___ChaBuilder___program(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
587 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
588 fra
.me
.REG
[4] = CALL_static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
589 fra
.me
.REG
[4] = CALL_static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
590 /* ./analysis//cha_analysis.nit:118 */
591 fra
.me
.REG
[4] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
592 /* ./analysis//cha_analysis.nit:119 */
593 fra
.me
.REG
[2] = CALL_cha_analysis___ChaVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
594 REGB1
= TAG_Bool(true);
595 REGB0
= TAG_Bool(false);
596 CALL_cha_analysis___ChaBuilder___add_search(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
, fra
.me
.REG
[4], REGB1
, REGB0
);
603 /* ./analysis//cha_analysis.nit:121 */
604 CALL_SUPER_cha_analysis___ChaVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
605 stack_frame_head
= fra
.me
.prev
;
608 void cha_analysis___ChaVisitor___init(val_t p0
, val_t p1
, int* init_table
){
609 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_ChaVisitor
].i
;
610 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
612 if (init_table
[itpos1
]) return;
613 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
614 fra
.me
.file
= LOCATE_cha_analysis
;
616 fra
.me
.meth
= LOCATE_cha_analysis___ChaVisitor___init
;
617 fra
.me
.has_broke
= 0;
619 fra
.me
.REG
[0] = NIT_NULL
;
620 fra
.me
.REG
[1] = NIT_NULL
;
621 fra
.me
.REG
[2] = NIT_NULL
;
624 /* ./analysis//cha_analysis.nit:124 */
625 fra
.me
.REG
[2] = fra
.me
.REG
[0];
626 CALL_icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
627 /* ./analysis//cha_analysis.nit:126 */
628 ATTR_cha_analysis___ChaVisitor____builder(fra
.me
.REG
[2]) = fra
.me
.REG
[1];
629 stack_frame_head
= fra
.me
.prev
;
630 init_table
[itpos1
] = 1;