update NOTICE and LICENSE
[nit.git] / c_src / cha_analysis._sep.c
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;
5 val_t REGB0;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_cha_analysis;
9 fra.me.line = 26;
10 fra.me.meth = LOCATE_cha_analysis___ChaContext___reachable_iroutines;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 1;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[0] = p0;
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)) {
18 } else {
19 nit_abort("Uninitialized attribute %s", "_reachable_iroutines", LOCATE_cha_analysis, 26);
20 }
21 fra.me.REG[0] = ATTR_cha_analysis___ChaContext____reachable_iroutines(fra.me.REG[0]);
22 stack_frame_head = fra.me.prev;
23 return fra.me.REG[0];
24 }
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;
27 val_t REGB0;
28 val_t REGB1;
29 val_t tmp;
30 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
31 fra.me.file = LOCATE_cha_analysis;
32 fra.me.line = 28;
33 fra.me.meth = LOCATE_cha_analysis___ChaContext___is_iroutine_reachable;
34 fra.me.has_broke = 0;
35 fra.me.REG_size = 2;
36 fra.me.REG[0] = NIT_NULL;
37 fra.me.REG[1] = NIT_NULL;
38 fra.me.REG[0] = p0;
39 fra.me.REG[1] = p1;
40 /* ./analysis//cha_analysis.nit:29 */
41 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
42 if (UNTAG_Bool(REGB0)) {
43 } else {
44 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
45 if (UNTAG_Bool(REGB1)) {
46 REGB1 = TAG_Bool(false);
47 REGB0 = REGB1;
48 } else {
49 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
50 REGB0 = REGB1;
51 }
52 }
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]);
57 } else {
58 REGB1 = TAG_Bool(false);
59 REGB0 = REGB1;
60 }
61 goto label1;
62 label1: while(0);
63 stack_frame_head = fra.me.prev;
64 return REGB0;
65 }
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;
68 val_t REGB0;
69 val_t tmp;
70 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
71 fra.me.file = LOCATE_cha_analysis;
72 fra.me.line = 32;
73 fra.me.meth = LOCATE_cha_analysis___ChaContext___is_method_reachable;
74 fra.me.has_broke = 0;
75 fra.me.REG_size = 2;
76 fra.me.REG[0] = NIT_NULL;
77 fra.me.REG[1] = NIT_NULL;
78 fra.me.REG[0] = p0;
79 fra.me.REG[1] = p1;
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]);
83 goto label1;
84 label1: while(0);
85 stack_frame_head = fra.me.prev;
86 return REGB0;
87 }
88 val_t cha_analysis___ChaBuilder___iroutine_to_search(val_t p0){
89 struct {struct stack_frame_t me;} fra;
90 val_t REGB0;
91 val_t tmp;
92 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
93 fra.me.file = LOCATE_cha_analysis;
94 fra.me.line = 38;
95 fra.me.meth = LOCATE_cha_analysis___ChaBuilder___iroutine_to_search;
96 fra.me.has_broke = 0;
97 fra.me.REG_size = 1;
98 fra.me.REG[0] = NIT_NULL;
99 fra.me.REG[0] = p0;
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)) {
103 } else {
104 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_cha_analysis, 38);
105 }
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];
109 }
110 val_t cha_analysis___ChaBuilder___context(val_t p0){
111 struct {struct stack_frame_t me;} fra;
112 val_t REGB0;
113 val_t tmp;
114 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
115 fra.me.file = LOCATE_cha_analysis;
116 fra.me.line = 39;
117 fra.me.meth = LOCATE_cha_analysis___ChaBuilder___context;
118 fra.me.has_broke = 0;
119 fra.me.REG_size = 1;
120 fra.me.REG[0] = NIT_NULL;
121 fra.me.REG[0] = p0;
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)) {
125 } else {
126 nit_abort("Uninitialized attribute %s", "_context", LOCATE_cha_analysis, 39);
127 }
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];
131 }
132 val_t cha_analysis___ChaBuilder___program(val_t p0){
133 struct {struct stack_frame_t me;} fra;
134 val_t REGB0;
135 val_t tmp;
136 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
137 fra.me.file = LOCATE_cha_analysis;
138 fra.me.line = 40;
139 fra.me.meth = LOCATE_cha_analysis___ChaBuilder___program;
140 fra.me.has_broke = 0;
141 fra.me.REG_size = 1;
142 fra.me.REG[0] = NIT_NULL;
143 fra.me.REG[0] = p0;
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)) {
147 } else {
148 nit_abort("Uninitialized attribute %s", "_program", LOCATE_cha_analysis, 40);
149 }
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];
153 }
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;
157 val_t tmp;
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;
161 fra.me.line = 42;
162 fra.me.meth = LOCATE_cha_analysis___ChaBuilder___init;
163 fra.me.has_broke = 0;
164 fra.me.REG_size = 2;
165 fra.me.REG[0] = NIT_NULL;
166 fra.me.REG[1] = NIT_NULL;
167 fra.me.REG[0] = p0;
168 fra.me.REG[1] = p1;
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;
176 return;
177 }
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;
180 val_t REGB0;
181 val_t REGB1;
182 val_t REGB2;
183 val_t REGB3;
184 val_t tmp;
185 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
186 fra.me.file = LOCATE_cha_analysis;
187 fra.me.line = 47;
188 fra.me.meth = LOCATE_cha_analysis___ChaBuilder___add_search;
189 fra.me.has_broke = 0;
190 fra.me.REG_size = 4;
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;
195 fra.me.REG[0] = p0;
196 fra.me.REG[1] = p1;
197 fra.me.REG[2] = p2;
198 REGB0 = p3;
199 REGB1 = p4;
200 /* ./analysis//cha_analysis.nit:49 */
201 REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
202 if (UNTAG_Bool(REGB2)) {
203 } else {
204 REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
205 if (UNTAG_Bool(REGB3)) {
206 REGB3 = TAG_Bool(false);
207 REGB2 = REGB3;
208 } else {
209 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
210 REGB2 = REGB3;
211 }
212 }
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));
218 } else {
219 REGB3 = TAG_Bool(false);
220 REGB2 = REGB3;
221 }
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)) {
230 } else {
231 nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_cha_analysis, 51);
232 }
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]);
235 }
236 /* ./analysis//cha_analysis.nit:54 */
237 REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
238 if (UNTAG_Bool(REGB2)) {
239 } else {
240 REGB3 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
241 if (UNTAG_Bool(REGB3)) {
242 REGB3 = TAG_Bool(false);
243 REGB2 = REGB3;
244 } else {
245 REGB3 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
246 REGB2 = REGB3;
247 }
248 }
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);
258 }
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));
262 }
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);
269 }
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));
273 }
274 }
275 stack_frame_head = fra.me.prev;
276 return;
277 }
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;
280 val_t REGB0;
281 val_t REGB1;
282 fun_t CREG[1];
283 val_t tmp;
284 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
285 fra.me.file = LOCATE_cha_analysis;
286 fra.me.line = 0;
287 fra.me.meth = LOCATE_cha_analysis___ChaBuilder___add_search;
288 fra.me.has_broke = 0;
289 fra.me.REG_size = 2;
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;
294 fra.me.REG[0] = p0;
295 CREG[0] = clos_fun0;
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);
304 }
305 stack_frame_head = fra.me.prev;
306 return;
307 }
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;
310 val_t REGB0;
311 val_t REGB1;
312 fun_t CREG[1];
313 val_t tmp;
314 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
315 fra.me.file = LOCATE_cha_analysis;
316 fra.me.line = 0;
317 fra.me.meth = LOCATE_cha_analysis___ChaBuilder___add_search;
318 fra.me.has_broke = 0;
319 fra.me.REG_size = 2;
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;
324 fra.me.REG[0] = p0;
325 CREG[0] = clos_fun0;
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);
334 }
335 stack_frame_head = fra.me.prev;
336 return;
337 }
338 void cha_analysis___ChaBuilder___work(val_t p0){
339 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
340 val_t REGB0;
341 val_t REGB1;
342 val_t tmp;
343 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
344 fra.me.file = LOCATE_cha_analysis;
345 fra.me.line = 75;
346 fra.me.meth = LOCATE_cha_analysis___ChaBuilder___work;
347 fra.me.has_broke = 0;
348 fra.me.REG_size = 3;
349 fra.me.REG[0] = NIT_NULL;
350 fra.me.REG[1] = NIT_NULL;
351 fra.me.REG[2] = NIT_NULL;
352 fra.me.REG[0] = p0;
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)) {
359 } else {
360 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
361 if (UNTAG_Bool(REGB1)) {
362 REGB1 = TAG_Bool(false);
363 REGB0 = REGB1;
364 } else {
365 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
366 REGB0 = REGB1;
367 }
368 }
369 if (UNTAG_Bool(REGB0)) {
370 goto label1;
371 }
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);
376 }
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 */
382 while(1) {
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]);
395 } else {
396 /* ./analysis//cha_analysis.nit:82 */
397 goto label2;
398 }
399 }
400 label2: while(0);
401 label1: while(0);
402 stack_frame_head = fra.me.prev;
403 return;
404 }
405 val_t cha_analysis___ChaVisitor___builder(val_t p0){
406 struct {struct stack_frame_t me;} fra;
407 val_t REGB0;
408 val_t tmp;
409 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
410 fra.me.file = LOCATE_cha_analysis;
411 fra.me.line = 92;
412 fra.me.meth = LOCATE_cha_analysis___ChaVisitor___builder;
413 fra.me.has_broke = 0;
414 fra.me.REG_size = 1;
415 fra.me.REG[0] = NIT_NULL;
416 fra.me.REG[0] = p0;
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)) {
420 } else {
421 nit_abort("Uninitialized attribute %s", "_builder", LOCATE_cha_analysis, 92);
422 }
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];
426 }
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;
429 val_t REGB0;
430 val_t REGB1;
431 val_t tmp;
432 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
433 fra.me.file = LOCATE_cha_analysis;
434 fra.me.line = 94;
435 fra.me.meth = LOCATE_cha_analysis___ChaVisitor___visit_icode;
436 fra.me.has_broke = 0;
437 fra.me.REG_size = 7;
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;
445 fra.me.REG[0] = p0;
446 fra.me.REG[1] = p1;
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);
458 }
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);
463 }
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);
469 } else {
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);
477 }
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);
489 }
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)) {
495 } else {
496 nit_abort("Cast failed", NULL, LOCATE_cha_analysis, 103);
497 }
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);
506 }
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);
511 } else {
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);
520 }
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);
525 }
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);
531 } else {
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);
540 }
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);
545 }
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);
551 } else {
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);
559 }
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);
574 } else {
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);
582 }
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);
597 }
598 }
599 }
600 }
601 }
602 }
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;
606 return;
607 }
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;
611 val_t tmp;
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;
615 fra.me.line = 124;
616 fra.me.meth = LOCATE_cha_analysis___ChaVisitor___init;
617 fra.me.has_broke = 0;
618 fra.me.REG_size = 3;
619 fra.me.REG[0] = NIT_NULL;
620 fra.me.REG[1] = NIT_NULL;
621 fra.me.REG[2] = NIT_NULL;
622 fra.me.REG[0] = p0;
623 fra.me.REG[1] = p1;
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;
631 return;
632 }