update NOTICE and LICENSE
[nit.git] / c_src / reachable_from_init_method_analysis_impl._sep.c
1 /* This C file is generated by NIT to compile module reachable_from_init_method_analysis_impl. */
2 #include "reachable_from_init_method_analysis_impl._sep.h"
3 val_t reachable_from_init_method_analysis_impl___RFIMABuilder___program(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_reachable_from_init_method_analysis_impl;
9 fra.me.line = 25;
10 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMABuilder___program;
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//reachable_from_init_method_analysis_impl.nit:25 */
16 REGB0 = TAG_Bool(ATTR_reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra.me.REG[0])!=NIT_NULL);
17 if (UNTAG_Bool(REGB0)) {
18 } else {
19 nit_abort("Uninitialized attribute %s", "_program", LOCATE_reachable_from_init_method_analysis_impl, 25);
20 }
21 fra.me.REG[0] = ATTR_reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra.me.REG[0]);
22 stack_frame_head = fra.me.prev;
23 return fra.me.REG[0];
24 }
25 val_t reachable_from_init_method_analysis_impl___RFIMABuilder___context(val_t p0){
26 struct {struct stack_frame_t me;} fra;
27 val_t REGB0;
28 val_t tmp;
29 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
30 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
31 fra.me.line = 26;
32 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMABuilder___context;
33 fra.me.has_broke = 0;
34 fra.me.REG_size = 1;
35 fra.me.REG[0] = NIT_NULL;
36 fra.me.REG[0] = p0;
37 /* ./analysis//reachable_from_init_method_analysis_impl.nit:26 */
38 REGB0 = TAG_Bool(ATTR_reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra.me.REG[0])!=NIT_NULL);
39 if (UNTAG_Bool(REGB0)) {
40 } else {
41 nit_abort("Uninitialized attribute %s", "_context", LOCATE_reachable_from_init_method_analysis_impl, 26);
42 }
43 fra.me.REG[0] = ATTR_reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra.me.REG[0]);
44 stack_frame_head = fra.me.prev;
45 return fra.me.REG[0];
46 }
47 void reachable_from_init_method_analysis_impl___RFIMABuilder___init(val_t p0, val_t p1, int* init_table){
48 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_RFIMABuilder].i;
49 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
50 val_t tmp;
51 if (init_table[itpos0]) return;
52 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
53 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
54 fra.me.line = 28;
55 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMABuilder___init;
56 fra.me.has_broke = 0;
57 fra.me.REG_size = 2;
58 fra.me.REG[0] = NIT_NULL;
59 fra.me.REG[1] = NIT_NULL;
60 fra.me.REG[0] = p0;
61 fra.me.REG[1] = p1;
62 /* ./analysis//reachable_from_init_method_analysis_impl.nit:29 */
63 ATTR_reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra.me.REG[0]) = fra.me.REG[1];
64 stack_frame_head = fra.me.prev;
65 init_table[itpos0] = 1;
66 return;
67 }
68 void reachable_from_init_method_analysis_impl___RFIMABuilder___work(val_t p0){
69 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
70 val_t tmp;
71 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
72 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
73 fra.me.line = 32;
74 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMABuilder___work;
75 fra.me.has_broke = 0;
76 fra.me.REG_size = 2;
77 fra.me.REG[0] = NIT_NULL;
78 fra.me.REG[1] = NIT_NULL;
79 fra.me.REG[0] = p0;
80 /* ./analysis//reachable_from_init_method_analysis_impl.nit:33 */
81 fra.me.REG[1] = CALL_reachable_from_init_method_analysis_impl___RFIMABuilder___program(fra.me.REG[0])(fra.me.REG[0]);
82 CALL_program___Program___with_each_live_local_classes(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_reachable_from_init_method_analysis_impl___RFIMABuilder___work_1));
83 stack_frame_head = fra.me.prev;
84 return;
85 }
86 void OC_reachable_from_init_method_analysis_impl___RFIMABuilder___work_1(struct stack_frame_t *closctx, val_t p0){
87 struct {struct stack_frame_t me;} fra;
88 val_t tmp;
89 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
90 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
91 fra.me.line = 33;
92 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMABuilder___work;
93 fra.me.has_broke = 0;
94 fra.me.REG_size = 1;
95 fra.me.REG[0] = NIT_NULL;
96 fra.me.REG[0] = p0;
97 closctx->REG[1] = fra.me.REG[0];
98 /* ./analysis//reachable_from_init_method_analysis_impl.nit:35 */
99 fra.me.REG[0] = CALL_abstractmetamodel___MMLocalClass___global_properties(closctx->REG[1])(closctx->REG[1]);
100 CALL_abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_reachable_from_init_method_analysis_impl___RFIMABuilder___work_2));
101 stack_frame_head = fra.me.prev;
102 return;
103 }
104 void OC_reachable_from_init_method_analysis_impl___RFIMABuilder___work_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
105 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
106 val_t REGB0;
107 fun_t CREG[1];
108 val_t tmp;
109 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
110 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
111 fra.me.line = 0;
112 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMABuilder___work;
113 fra.me.has_broke = 0;
114 fra.me.REG_size = 3;
115 fra.me.REG[0] = NIT_NULL;
116 fra.me.REG[1] = NIT_NULL;
117 fra.me.REG[2] = NIT_NULL;
118 fra.me.closure_ctx = closctx_param;
119 fra.me.closure_funs = CREG;
120 fra.me.REG[0] = p0;
121 CREG[0] = clos_fun0;
122 /* ./analysis//reachable_from_init_method_analysis_impl.nit:36 */
123 fra.me.REG[0] = CALL_abstractmetamodel___MMLocalClass_____bra(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
124 /* ./analysis//reachable_from_init_method_analysis_impl.nit:37 */
125 fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
126 REGB0 = CALL_abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[1])(fra.me.REG[1], closctx->REG[1]);
127 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
128 if (UNTAG_Bool(REGB0)) {
129 goto label3;
130 }
131 /* ./analysis//reachable_from_init_method_analysis_impl.nit:38 */
132 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
133 if (UNTAG_Bool(REGB0)) {
134 } else {
135 nit_abort("Assert failed", NULL, LOCATE_reachable_from_init_method_analysis_impl, 38);
136 }
137 /* ./analysis//reachable_from_init_method_analysis_impl.nit:39 */
138 fra.me.REG[1] = CALL_reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx->REG[0])(closctx->REG[0]);
139 fra.me.REG[1] = CALL_reachable_method_analysis___Program___rma(fra.me.REG[1])(fra.me.REG[1]);
140 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_ReachableMethodAnalysis, ID_ReachableMethodAnalysis)) /*cast ReachableMethodAnalysis*/;
141 if (UNTAG_Bool(REGB0)) {
142 } else {
143 nit_abort("Cast failed", NULL, LOCATE_reachable_from_init_method_analysis_impl, 39);
144 }
145 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
146 if (UNTAG_Bool(REGB0)) {
147 nit_abort("Reciever is null", NULL, LOCATE_reachable_from_init_method_analysis_impl, 39);
148 }
149 REGB0 = CALL_reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
150 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
151 if (UNTAG_Bool(REGB0)) {
152 goto label3;
153 }
154 /* ./analysis//reachable_from_init_method_analysis_impl.nit:40 */
155 fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[1])(closctx->REG[1]);
156 REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
157 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
158 if (UNTAG_Bool(REGB0)) {
159 goto label3;
160 }
161 /* ./analysis//reachable_from_init_method_analysis_impl.nit:41 */
162 fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[1])(closctx->REG[1]);
163 fra.me.REG[0] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
164 /* ./analysis//reachable_from_init_method_analysis_impl.nit:44 */
165 fra.me.REG[1] = CALL_reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx->REG[0])(closctx->REG[0]);
166 fra.me.REG[1] = CALL_reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(fra.me.REG[1])(fra.me.REG[1]);
167 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
168 /* ./analysis//reachable_from_init_method_analysis_impl.nit:45 */
169 fra.me.REG[1] = CALL_reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx->REG[0])(closctx->REG[0]);
170 fra.me.REG[2] = CALL_reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx->REG[0])(closctx->REG[0]);
171 fra.me.REG[2] = NEW_RFIMAVisitor_reachable_from_init_method_analysis_impl___RFIMAVisitor___init(fra.me.REG[1], fra.me.REG[2]);
172 CALL_icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
173 label3: while(0);
174 stack_frame_head = fra.me.prev;
175 return;
176 }
177 val_t reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(val_t p0){
178 struct {struct stack_frame_t me;} fra;
179 val_t REGB0;
180 val_t tmp;
181 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
182 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
183 fra.me.line = 53;
184 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines;
185 fra.me.has_broke = 0;
186 fra.me.REG_size = 1;
187 fra.me.REG[0] = NIT_NULL;
188 fra.me.REG[0] = p0;
189 /* ./analysis//reachable_from_init_method_analysis_impl.nit:53 */
190 REGB0 = TAG_Bool(ATTR_reachable_from_init_method_analysis_impl___RFIMAContext____reachable_from_init_iroutines(fra.me.REG[0])!=NIT_NULL);
191 if (UNTAG_Bool(REGB0)) {
192 } else {
193 nit_abort("Uninitialized attribute %s", "_reachable_from_init_iroutines", LOCATE_reachable_from_init_method_analysis_impl, 53);
194 }
195 fra.me.REG[0] = ATTR_reachable_from_init_method_analysis_impl___RFIMAContext____reachable_from_init_iroutines(fra.me.REG[0]);
196 stack_frame_head = fra.me.prev;
197 return fra.me.REG[0];
198 }
199 val_t reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init(val_t p0, val_t p1){
200 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
201 val_t REGB0;
202 val_t REGB1;
203 val_t tmp;
204 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
205 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
206 fra.me.line = 55;
207 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init;
208 fra.me.has_broke = 0;
209 fra.me.REG_size = 2;
210 fra.me.REG[0] = NIT_NULL;
211 fra.me.REG[1] = NIT_NULL;
212 fra.me.REG[0] = p0;
213 fra.me.REG[1] = p1;
214 /* ./analysis//reachable_from_init_method_analysis_impl.nit:56 */
215 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
216 if (UNTAG_Bool(REGB0)) {
217 } else {
218 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
219 if (UNTAG_Bool(REGB1)) {
220 REGB1 = TAG_Bool(false);
221 REGB0 = REGB1;
222 } else {
223 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
224 REGB0 = REGB1;
225 }
226 }
227 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
228 if (UNTAG_Bool(REGB0)) {
229 fra.me.REG[0] = CALL_reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(fra.me.REG[0])(fra.me.REG[0]);
230 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
231 } else {
232 REGB1 = TAG_Bool(false);
233 REGB0 = REGB1;
234 }
235 goto label1;
236 label1: while(0);
237 stack_frame_head = fra.me.prev;
238 return REGB0;
239 }
240 val_t reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init(val_t p0, val_t p1){
241 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
242 val_t REGB0;
243 val_t tmp;
244 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
245 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
246 fra.me.line = 59;
247 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init;
248 fra.me.has_broke = 0;
249 fra.me.REG_size = 2;
250 fra.me.REG[0] = NIT_NULL;
251 fra.me.REG[1] = NIT_NULL;
252 fra.me.REG[0] = p0;
253 fra.me.REG[1] = p1;
254 /* ./analysis//reachable_from_init_method_analysis_impl.nit:60 */
255 fra.me.REG[1] = CALL_icode_base___MMMethod___iroutine(fra.me.REG[1])(fra.me.REG[1]);
256 REGB0 = CALL_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
257 goto label1;
258 label1: while(0);
259 stack_frame_head = fra.me.prev;
260 return REGB0;
261 }
262 val_t reachable_from_init_method_analysis_impl___RFIMAVisitor___context(val_t p0){
263 struct {struct stack_frame_t me;} fra;
264 val_t REGB0;
265 val_t tmp;
266 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
267 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
268 fra.me.line = 66;
269 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMAVisitor___context;
270 fra.me.has_broke = 0;
271 fra.me.REG_size = 1;
272 fra.me.REG[0] = NIT_NULL;
273 fra.me.REG[0] = p0;
274 /* ./analysis//reachable_from_init_method_analysis_impl.nit:66 */
275 REGB0 = TAG_Bool(ATTR_reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra.me.REG[0])!=NIT_NULL);
276 if (UNTAG_Bool(REGB0)) {
277 } else {
278 nit_abort("Uninitialized attribute %s", "_context", LOCATE_reachable_from_init_method_analysis_impl, 66);
279 }
280 fra.me.REG[0] = ATTR_reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra.me.REG[0]);
281 stack_frame_head = fra.me.prev;
282 return fra.me.REG[0];
283 }
284 val_t reachable_from_init_method_analysis_impl___RFIMAVisitor___program(val_t p0){
285 struct {struct stack_frame_t me;} fra;
286 val_t REGB0;
287 val_t tmp;
288 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
289 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
290 fra.me.line = 67;
291 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMAVisitor___program;
292 fra.me.has_broke = 0;
293 fra.me.REG_size = 1;
294 fra.me.REG[0] = NIT_NULL;
295 fra.me.REG[0] = p0;
296 /* ./analysis//reachable_from_init_method_analysis_impl.nit:67 */
297 REGB0 = TAG_Bool(ATTR_reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra.me.REG[0])!=NIT_NULL);
298 if (UNTAG_Bool(REGB0)) {
299 } else {
300 nit_abort("Uninitialized attribute %s", "_program", LOCATE_reachable_from_init_method_analysis_impl, 67);
301 }
302 fra.me.REG[0] = ATTR_reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra.me.REG[0]);
303 stack_frame_head = fra.me.prev;
304 return fra.me.REG[0];
305 }
306 void reachable_from_init_method_analysis_impl___RFIMAVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
307 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_RFIMAVisitor].i;
308 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
309 val_t tmp;
310 if (init_table[itpos1]) return;
311 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
312 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
313 fra.me.line = 69;
314 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMAVisitor___init;
315 fra.me.has_broke = 0;
316 fra.me.REG_size = 4;
317 fra.me.REG[0] = NIT_NULL;
318 fra.me.REG[1] = NIT_NULL;
319 fra.me.REG[2] = NIT_NULL;
320 fra.me.REG[3] = NIT_NULL;
321 fra.me.REG[0] = p0;
322 fra.me.REG[1] = p1;
323 fra.me.REG[2] = p2;
324 /* ./analysis//reachable_from_init_method_analysis_impl.nit:69 */
325 fra.me.REG[3] = fra.me.REG[0];
326 CALL_icode_tools___ICodeVisitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
327 /* ./analysis//reachable_from_init_method_analysis_impl.nit:70 */
328 ATTR_reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra.me.REG[3]) = fra.me.REG[1];
329 /* ./analysis//reachable_from_init_method_analysis_impl.nit:71 */
330 ATTR_reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra.me.REG[3]) = fra.me.REG[2];
331 stack_frame_head = fra.me.prev;
332 init_table[itpos1] = 1;
333 return;
334 }
335 void reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(val_t p0, val_t p1){
336 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
337 val_t REGB0;
338 val_t tmp;
339 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
340 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
341 fra.me.line = 74;
342 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call;
343 fra.me.has_broke = 0;
344 fra.me.REG_size = 3;
345 fra.me.REG[0] = NIT_NULL;
346 fra.me.REG[1] = NIT_NULL;
347 fra.me.REG[2] = NIT_NULL;
348 fra.me.REG[0] = p0;
349 fra.me.REG[1] = p1;
350 /* ./analysis//reachable_from_init_method_analysis_impl.nit:75 */
351 fra.me.REG[2] = CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___context(fra.me.REG[0])(fra.me.REG[0]);
352 REGB0 = CALL_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
353 if (UNTAG_Bool(REGB0)) {
354 goto label1;
355 }
356 /* ./analysis//reachable_from_init_method_analysis_impl.nit:76 */
357 fra.me.REG[2] = CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___context(fra.me.REG[0])(fra.me.REG[0]);
358 fra.me.REG[2] = CALL_reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(fra.me.REG[2])(fra.me.REG[2]);
359 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
360 /* ./analysis//reachable_from_init_method_analysis_impl.nit:77 */
361 CALL_icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
362 label1: while(0);
363 stack_frame_head = fra.me.prev;
364 return;
365 }
366 void reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode(val_t p0, val_t p1){
367 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
368 val_t REGB0;
369 val_t REGB1;
370 val_t tmp;
371 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
372 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
373 fra.me.line = 80;
374 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode;
375 fra.me.has_broke = 0;
376 fra.me.REG_size = 6;
377 fra.me.REG[0] = NIT_NULL;
378 fra.me.REG[1] = NIT_NULL;
379 fra.me.REG[2] = NIT_NULL;
380 fra.me.REG[3] = NIT_NULL;
381 fra.me.REG[4] = NIT_NULL;
382 fra.me.REG[5] = NIT_NULL;
383 fra.me.REG[0] = p0;
384 fra.me.REG[1] = p1;
385 /* ./analysis//reachable_from_init_method_analysis_impl.nit:80 */
386 fra.me.REG[2] = fra.me.REG[0];
387 fra.me.REG[3] = fra.me.REG[1];
388 /* ./analysis//reachable_from_init_method_analysis_impl.nit:82 */
389 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_IStaticCall, ID_IStaticCall)) /*cast IStaticCall*/;
390 if (UNTAG_Bool(REGB0)) {
391 /* ./analysis//reachable_from_init_method_analysis_impl.nit:84 */
392 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
393 if (UNTAG_Bool(REGB0)) {
394 nit_abort("Reciever is null", NULL, LOCATE_reachable_from_init_method_analysis_impl, 84);
395 }
396 fra.me.REG[4] = CALL_icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
397 fra.me.REG[4] = CALL_icode_base___MMMethod___iroutine(fra.me.REG[4])(fra.me.REG[4]);
398 /* ./analysis//reachable_from_init_method_analysis_impl.nit:85 */
399 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
400 if (UNTAG_Bool(REGB0)) {
401 } else {
402 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
403 if (UNTAG_Bool(REGB1)) {
404 REGB1 = TAG_Bool(false);
405 REGB0 = REGB1;
406 } else {
407 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
408 REGB0 = REGB1;
409 }
410 }
411 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
412 if (UNTAG_Bool(REGB0)) {
413 CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
414 }
415 } else {
416 /* ./analysis//reachable_from_init_method_analysis_impl.nit:86 */
417 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_INew, ID_INew)) /*cast INew*/;
418 if (UNTAG_Bool(REGB0)) {
419 /* ./analysis//reachable_from_init_method_analysis_impl.nit:88 */
420 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
421 if (UNTAG_Bool(REGB0)) {
422 nit_abort("Reciever is null", NULL, LOCATE_reachable_from_init_method_analysis_impl, 88);
423 }
424 fra.me.REG[4] = CALL_icode_base___INew___stype(fra.me.REG[3])(fra.me.REG[3]);
425 /* ./analysis//reachable_from_init_method_analysis_impl.nit:89 */
426 fra.me.REG[5] = CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra.me.REG[2])(fra.me.REG[2]);
427 fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
428 fra.me.REG[5] = CALL_static_type___MMType___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
429 fra.me.REG[5] = CALL_static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
430 /* ./analysis//reachable_from_init_method_analysis_impl.nit:90 */
431 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
432 if (UNTAG_Bool(REGB0)) {
433 nit_abort("Reciever is null", NULL, LOCATE_reachable_from_init_method_analysis_impl, 90);
434 }
435 fra.me.REG[4] = CALL_icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
436 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
437 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
438 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
439 if (UNTAG_Bool(REGB0)) {
440 } else {
441 nit_abort("Cast failed", NULL, LOCATE_reachable_from_init_method_analysis_impl, 90);
442 }
443 /* ./analysis//reachable_from_init_method_analysis_impl.nit:91 */
444 fra.me.REG[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[5])(fra.me.REG[5]);
445 fra.me.REG[4] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
446 /* ./analysis//reachable_from_init_method_analysis_impl.nit:92 */
447 CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
448 } else {
449 /* ./analysis//reachable_from_init_method_analysis_impl.nit:93 */
450 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_ISuper, ID_ISuper)) /*cast ISuper*/;
451 if (UNTAG_Bool(REGB0)) {
452 /* ./analysis//reachable_from_init_method_analysis_impl.nit:95 */
453 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
454 if (UNTAG_Bool(REGB0)) {
455 nit_abort("Reciever is null", NULL, LOCATE_reachable_from_init_method_analysis_impl, 95);
456 }
457 fra.me.REG[4] = CALL_icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
458 /* ./analysis//reachable_from_init_method_analysis_impl.nit:96 */
459 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[4])(fra.me.REG[4]);
460 fra.me.REG[4] = CALL_partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[4])(fra.me.REG[4]);
461 CALL_abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode_1));
462 } else {
463 /* ./analysis//reachable_from_init_method_analysis_impl.nit:102 */
464 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_ICall, ID_ICall)) /*cast ICall*/;
465 if (UNTAG_Bool(REGB0)) {
466 /* ./analysis//reachable_from_init_method_analysis_impl.nit:104 */
467 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
468 if (UNTAG_Bool(REGB0)) {
469 nit_abort("Reciever is null", NULL, LOCATE_reachable_from_init_method_analysis_impl, 104);
470 }
471 fra.me.REG[4] = CALL_icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
472 /* ./analysis//reachable_from_init_method_analysis_impl.nit:105 */
473 fra.me.REG[5] = CALL_icode_base___MMMethod___iroutine(fra.me.REG[4])(fra.me.REG[4]);
474 /* ./analysis//reachable_from_init_method_analysis_impl.nit:106 */
475 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
476 if (UNTAG_Bool(REGB0)) {
477 } else {
478 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
479 if (UNTAG_Bool(REGB1)) {
480 REGB1 = TAG_Bool(false);
481 REGB0 = REGB1;
482 } else {
483 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
484 REGB0 = REGB1;
485 }
486 }
487 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
488 if (UNTAG_Bool(REGB0)) {
489 CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
490 }
491 /* ./analysis//reachable_from_init_method_analysis_impl.nit:107 */
492 fra.me.REG[4] = CALL_abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[4])(fra.me.REG[4]);
493 fra.me.REG[4] = CALL_partial_order___PartialOrderElement___smallers(fra.me.REG[4])(fra.me.REG[4]);
494 CALL_abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode_2));
495 } else {
496 /* ./analysis//reachable_from_init_method_analysis_impl.nit:113 */
497 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_ICheckInstance, ID_ICheckInstance)) /*cast ICheckInstance*/;
498 if (UNTAG_Bool(REGB0)) {
499 /* ./analysis//reachable_from_init_method_analysis_impl.nit:114 */
500 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
501 if (UNTAG_Bool(REGB0)) {
502 nit_abort("Reciever is null", NULL, LOCATE_reachable_from_init_method_analysis_impl, 114);
503 }
504 fra.me.REG[5] = CALL_icode_base___ICheckInstance___stype(fra.me.REG[3])(fra.me.REG[3]);
505 /* ./analysis//reachable_from_init_method_analysis_impl.nit:115 */
506 fra.me.REG[4] = CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra.me.REG[2])(fra.me.REG[2]);
507 fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
508 fra.me.REG[4] = CALL_static_type___MMType___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
509 fra.me.REG[4] = CALL_static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
510 /* ./analysis//reachable_from_init_method_analysis_impl.nit:116 */
511 fra.me.REG[4] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[4])(fra.me.REG[4]);
512 /* ./analysis//reachable_from_init_method_analysis_impl.nit:117 */
513 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
514 if (UNTAG_Bool(REGB0)) {
515 } else {
516 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
517 if (UNTAG_Bool(REGB1)) {
518 REGB1 = TAG_Bool(false);
519 REGB0 = REGB1;
520 } else {
521 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
522 REGB0 = REGB1;
523 }
524 }
525 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
526 if (UNTAG_Bool(REGB0)) {
527 CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
528 }
529 } else {
530 /* ./analysis//reachable_from_init_method_analysis_impl.nit:118 */
531 REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_IInitAttributes, ID_IInitAttributes)) /*cast IInitAttributes*/;
532 if (UNTAG_Bool(REGB0)) {
533 /* ./analysis//reachable_from_init_method_analysis_impl.nit:119 */
534 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
535 if (UNTAG_Bool(REGB0)) {
536 nit_abort("Reciever is null", NULL, LOCATE_reachable_from_init_method_analysis_impl, 119);
537 }
538 fra.me.REG[3] = CALL_icode_base___IInitAttributes___stype(fra.me.REG[3])(fra.me.REG[3]);
539 /* ./analysis//reachable_from_init_method_analysis_impl.nit:120 */
540 fra.me.REG[4] = CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra.me.REG[2])(fra.me.REG[2]);
541 fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
542 fra.me.REG[4] = CALL_static_type___MMType___for_module(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
543 fra.me.REG[4] = CALL_static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
544 /* ./analysis//reachable_from_init_method_analysis_impl.nit:121 */
545 fra.me.REG[4] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[4])(fra.me.REG[4]);
546 /* ./analysis//reachable_from_init_method_analysis_impl.nit:122 */
547 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
548 if (UNTAG_Bool(REGB0)) {
549 } else {
550 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
551 if (UNTAG_Bool(REGB1)) {
552 REGB1 = TAG_Bool(false);
553 REGB0 = REGB1;
554 } else {
555 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
556 REGB0 = REGB1;
557 }
558 }
559 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
560 if (UNTAG_Bool(REGB0)) {
561 CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
562 }
563 }
564 }
565 }
566 }
567 }
568 }
569 /* ./analysis//reachable_from_init_method_analysis_impl.nit:124 */
570 CALL_SUPER_reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
571 stack_frame_head = fra.me.prev;
572 return;
573 }
574 void OC_reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
575 struct {struct stack_frame_t me;} fra;
576 val_t REGB0;
577 val_t REGB1;
578 fun_t CREG[1];
579 val_t tmp;
580 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
581 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
582 fra.me.line = 0;
583 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode;
584 fra.me.has_broke = 0;
585 fra.me.REG_size = 1;
586 fra.me.REG[0] = NIT_NULL;
587 fra.me.closure_ctx = closctx_param;
588 fra.me.closure_funs = CREG;
589 fra.me.REG[0] = p0;
590 CREG[0] = clos_fun0;
591 /* ./analysis//reachable_from_init_method_analysis_impl.nit:97 */
592 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
593 if (UNTAG_Bool(REGB0)) {
594 /* ./analysis//reachable_from_init_method_analysis_impl.nit:98 */
595 fra.me.REG[0] = CALL_icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
596 /* ./analysis//reachable_from_init_method_analysis_impl.nit:99 */
597 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
598 if (UNTAG_Bool(REGB0)) {
599 } else {
600 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
601 if (UNTAG_Bool(REGB1)) {
602 REGB1 = TAG_Bool(false);
603 REGB0 = REGB1;
604 } else {
605 REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
606 REGB0 = REGB1;
607 }
608 }
609 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
610 if (UNTAG_Bool(REGB0)) {
611 CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
612 }
613 }
614 stack_frame_head = fra.me.prev;
615 return;
616 }
617 void OC_reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
618 struct {struct stack_frame_t me;} fra;
619 val_t REGB0;
620 val_t REGB1;
621 fun_t CREG[1];
622 val_t tmp;
623 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
624 fra.me.file = LOCATE_reachable_from_init_method_analysis_impl;
625 fra.me.line = 0;
626 fra.me.meth = LOCATE_reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode;
627 fra.me.has_broke = 0;
628 fra.me.REG_size = 1;
629 fra.me.REG[0] = NIT_NULL;
630 fra.me.closure_ctx = closctx_param;
631 fra.me.closure_funs = CREG;
632 fra.me.REG[0] = p0;
633 CREG[0] = clos_fun0;
634 /* ./analysis//reachable_from_init_method_analysis_impl.nit:108 */
635 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_MMMethod, ID_MMMethod)) /*cast MMMethod*/;
636 if (UNTAG_Bool(REGB0)) {
637 /* ./analysis//reachable_from_init_method_analysis_impl.nit:109 */
638 fra.me.REG[0] = CALL_icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
639 closctx->REG[5] = fra.me.REG[0];
640 /* ./analysis//reachable_from_init_method_analysis_impl.nit:110 */
641 REGB0 = TAG_Bool(closctx->REG[5]==NIT_NULL);
642 if (UNTAG_Bool(REGB0)) {
643 } else {
644 REGB1 = TAG_Bool(closctx->REG[5]==NIT_NULL);
645 if (UNTAG_Bool(REGB1)) {
646 REGB1 = TAG_Bool(false);
647 REGB0 = REGB1;
648 } else {
649 REGB1 = CALL_kernel___Object_____eqeq(closctx->REG[5])(closctx->REG[5], NIT_NULL);
650 REGB0 = REGB1;
651 }
652 }
653 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
654 if (UNTAG_Bool(REGB0)) {
655 CALL_reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(closctx->REG[2])(closctx->REG[2], closctx->REG[5]);
656 }
657 }
658 stack_frame_head = fra.me.prev;
659 return;
660 }