update c_src (now with ffi)
[nit.git] / c_src / global___reachable_from_init_method_analysis_impl._sep.c
1 /* This C file is generated by NIT to compile module global___reachable_from_init_method_analysis_impl. */
2 #include "global___reachable_from_init_method_analysis_impl._sep.h"
3 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___program[] = "reachable_from_init_method_analysis_impl::RFIMABuilder::program";
4 val_t global___reachable_from_init_method_analysis_impl___RFIMABuilder___program(val_t p0){
5 struct {struct stack_frame_t me;} fra;
6 val_t REGB0;
7 val_t tmp;
8 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
10 fra.me.line = 25;
11 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___program;
12 fra.me.has_broke = 0;
13 fra.me.REG_size = 1;
14 fra.me.nitni_local_ref_head = NULL;
15 fra.me.REG[0] = NIT_NULL;
16 fra.me.REG[0] = p0;
17 /* global/reachable_from_init_method_analysis_impl.nit:25 */
18 REGB0 = TAG_Bool(ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra.me.REG[0])!=NIT_NULL);
19 if (UNTAG_Bool(REGB0)) {
20 } else {
21 nit_abort("Uninitialized attribute %s", "_program", LOCATE_global___reachable_from_init_method_analysis_impl, 25);
22 }
23 fra.me.REG[0] = ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra.me.REG[0]);
24 stack_frame_head = fra.me.prev;
25 return fra.me.REG[0];
26 }
27 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___context[] = "reachable_from_init_method_analysis_impl::RFIMABuilder::context";
28 val_t global___reachable_from_init_method_analysis_impl___RFIMABuilder___context(val_t p0){
29 struct {struct stack_frame_t me;} fra;
30 val_t REGB0;
31 val_t tmp;
32 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
33 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
34 fra.me.line = 26;
35 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___context;
36 fra.me.has_broke = 0;
37 fra.me.REG_size = 1;
38 fra.me.nitni_local_ref_head = NULL;
39 fra.me.REG[0] = NIT_NULL;
40 fra.me.REG[0] = p0;
41 /* global/reachable_from_init_method_analysis_impl.nit:26 */
42 REGB0 = TAG_Bool(ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra.me.REG[0])!=NIT_NULL);
43 if (UNTAG_Bool(REGB0)) {
44 } else {
45 nit_abort("Uninitialized attribute %s", "_context", LOCATE_global___reachable_from_init_method_analysis_impl, 26);
46 }
47 fra.me.REG[0] = ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra.me.REG[0]);
48 stack_frame_head = fra.me.prev;
49 return fra.me.REG[0];
50 }
51 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___init[] = "reachable_from_init_method_analysis_impl::RFIMABuilder::init";
52 void global___reachable_from_init_method_analysis_impl___RFIMABuilder___init(val_t p0, val_t p1, int* init_table){
53 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_global___reachable_from_init_method_analysis_impl___RFIMABuilder].i;
54 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
55 val_t tmp;
56 if (init_table[itpos0]) return;
57 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
58 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
59 fra.me.line = 28;
60 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___init;
61 fra.me.has_broke = 0;
62 fra.me.REG_size = 2;
63 fra.me.nitni_local_ref_head = NULL;
64 fra.me.REG[0] = NIT_NULL;
65 fra.me.REG[1] = NIT_NULL;
66 fra.me.REG[0] = p0;
67 fra.me.REG[1] = p1;
68 /* global/reachable_from_init_method_analysis_impl.nit:29 */
69 ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra.me.REG[0]) = fra.me.REG[1];
70 stack_frame_head = fra.me.prev;
71 init_table[itpos0] = 1;
72 return;
73 }
74 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work[] = "reachable_from_init_method_analysis_impl::RFIMABuilder::work";
75 void global___reachable_from_init_method_analysis_impl___RFIMABuilder___work(val_t p0){
76 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
77 val_t tmp;
78 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
79 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
80 fra.me.line = 32;
81 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work;
82 fra.me.has_broke = 0;
83 fra.me.REG_size = 3;
84 fra.me.nitni_local_ref_head = NULL;
85 fra.me.REG[0] = NIT_NULL;
86 fra.me.REG[1] = NIT_NULL;
87 fra.me.REG[2] = NIT_NULL;
88 fra.me.REG[0] = p0;
89 /* global/reachable_from_init_method_analysis_impl.nit:32 */
90 fra.me.REG[1] = fra.me.REG[0];
91 /* global/reachable_from_init_method_analysis_impl.nit:33 */
92 fra.me.REG[2] = CALL_global___reachable_from_init_method_analysis_impl___RFIMABuilder___program(fra.me.REG[1])(fra.me.REG[1]);
93 CALL_program___Program___with_each_live_local_classes(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work_1));
94 stack_frame_head = fra.me.prev;
95 return;
96 }
97 void OC_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work_1(struct stack_frame_t *closctx, val_t p0){
98 struct {struct stack_frame_t me;} fra;
99 val_t tmp;
100 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
101 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
102 fra.me.line = 33;
103 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work;
104 fra.me.has_broke = 0;
105 fra.me.REG_size = 1;
106 fra.me.nitni_local_ref_head = NULL;
107 fra.me.REG[0] = NIT_NULL;
108 fra.me.REG[0] = p0;
109 closctx->REG[2] = fra.me.REG[0];
110 /* global/reachable_from_init_method_analysis_impl.nit:35 */
111 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[2])(closctx->REG[2]);
112 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work_2));
113 stack_frame_head = fra.me.prev;
114 return;
115 }
116 void OC_global___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){
117 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
118 val_t REGB0;
119 fun_t CREG[1];
120 val_t tmp;
121 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
122 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
123 fra.me.line = 0;
124 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work;
125 fra.me.has_broke = 0;
126 fra.me.REG_size = 3;
127 fra.me.nitni_local_ref_head = NULL;
128 fra.me.REG[0] = NIT_NULL;
129 fra.me.REG[1] = NIT_NULL;
130 fra.me.REG[2] = NIT_NULL;
131 fra.me.closure_ctx = closctx_param;
132 fra.me.closure_funs = CREG;
133 fra.me.REG[0] = p0;
134 CREG[0] = clos_fun0;
135 /* global/reachable_from_init_method_analysis_impl.nit:36 */
136 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
137 /* global/reachable_from_init_method_analysis_impl.nit:37 */
138 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
139 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[1])(fra.me.REG[1], closctx->REG[2]);
140 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
141 if (UNTAG_Bool(REGB0)) {
142 goto label3;
143 }
144 /* global/reachable_from_init_method_analysis_impl.nit:38 */
145 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
146 if (UNTAG_Bool(REGB0)) {
147 } else {
148 nit_abort("Assert failed", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 38);
149 }
150 /* global/reachable_from_init_method_analysis_impl.nit:39 */
151 fra.me.REG[1] = CALL_global___reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx->REG[1])(closctx->REG[1]);
152 fra.me.REG[1] = CALL_global___reachable_method_analysis___Program___rma(fra.me.REG[1])(fra.me.REG[1]);
153 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_global___reachable_method_analysis___ReachableMethodAnalysis, ID_global___reachable_method_analysis___ReachableMethodAnalysis)) /*cast ReachableMethodAnalysis*/;
154 if (UNTAG_Bool(REGB0)) {
155 } else {
156 nit_abort("Cast failed", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 39);
157 }
158 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
159 if (UNTAG_Bool(REGB0)) {
160 nit_abort("Reciever is null", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 39);
161 }
162 REGB0 = CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
163 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
164 if (UNTAG_Bool(REGB0)) {
165 goto label3;
166 }
167 /* global/reachable_from_init_method_analysis_impl.nit:40 */
168 fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[2])(closctx->REG[2]);
169 REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
170 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
171 if (UNTAG_Bool(REGB0)) {
172 goto label3;
173 }
174 /* global/reachable_from_init_method_analysis_impl.nit:41 */
175 fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[2])(closctx->REG[2]);
176 fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
177 /* global/reachable_from_init_method_analysis_impl.nit:44 */
178 fra.me.REG[1] = CALL_global___reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx->REG[1])(closctx->REG[1]);
179 fra.me.REG[1] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(fra.me.REG[1])(fra.me.REG[1]);
180 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
181 /* global/reachable_from_init_method_analysis_impl.nit:45 */
182 fra.me.REG[1] = CALL_global___reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx->REG[1])(closctx->REG[1]);
183 fra.me.REG[2] = CALL_global___reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx->REG[1])(closctx->REG[1]);
184 fra.me.REG[2] = NEW_RFIMAVisitor_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init(fra.me.REG[1], fra.me.REG[2]);
185 CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
186 label3: while(0);
187 stack_frame_head = fra.me.prev;
188 return;
189 }
190 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines[] = "reachable_from_init_method_analysis_impl::RFIMAContext::reachable_from_init_iroutines";
191 val_t global___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(val_t p0){
192 struct {struct stack_frame_t me;} fra;
193 val_t REGB0;
194 val_t tmp;
195 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
196 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
197 fra.me.line = 53;
198 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines;
199 fra.me.has_broke = 0;
200 fra.me.REG_size = 1;
201 fra.me.nitni_local_ref_head = NULL;
202 fra.me.REG[0] = NIT_NULL;
203 fra.me.REG[0] = p0;
204 /* global/reachable_from_init_method_analysis_impl.nit:53 */
205 REGB0 = TAG_Bool(ATTR_global___reachable_from_init_method_analysis_impl___RFIMAContext____reachable_from_init_iroutines(fra.me.REG[0])!=NIT_NULL);
206 if (UNTAG_Bool(REGB0)) {
207 } else {
208 nit_abort("Uninitialized attribute %s", "_reachable_from_init_iroutines", LOCATE_global___reachable_from_init_method_analysis_impl, 53);
209 }
210 fra.me.REG[0] = ATTR_global___reachable_from_init_method_analysis_impl___RFIMAContext____reachable_from_init_iroutines(fra.me.REG[0]);
211 stack_frame_head = fra.me.prev;
212 return fra.me.REG[0];
213 }
214 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init[] = "reachable_from_init_method_analysis_impl::RFIMAContext::(reachable_from_init_method_analysis::ReachableFromInitMethodAnalysis::is_iroutine_reachable_from_init)";
215 val_t global___reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init(val_t p0, val_t p1){
216 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
217 val_t REGB0;
218 val_t REGB1;
219 val_t tmp;
220 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
221 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
222 fra.me.line = 55;
223 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init;
224 fra.me.has_broke = 0;
225 fra.me.REG_size = 2;
226 fra.me.nitni_local_ref_head = NULL;
227 fra.me.REG[0] = NIT_NULL;
228 fra.me.REG[1] = NIT_NULL;
229 fra.me.REG[0] = p0;
230 fra.me.REG[1] = p1;
231 /* global/reachable_from_init_method_analysis_impl.nit:56 */
232 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
233 if (UNTAG_Bool(REGB0)) {
234 } else {
235 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
236 if (UNTAG_Bool(REGB1)) {
237 REGB1 = TAG_Bool(0);
238 REGB0 = REGB1;
239 } else {
240 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
241 REGB0 = REGB1;
242 }
243 }
244 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
245 if (UNTAG_Bool(REGB0)) {
246 fra.me.REG[0] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(fra.me.REG[0])(fra.me.REG[0]);
247 REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
248 } else {
249 REGB1 = TAG_Bool(0);
250 REGB0 = REGB1;
251 }
252 goto label1;
253 label1: while(0);
254 stack_frame_head = fra.me.prev;
255 return REGB0;
256 }
257 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init[] = "reachable_from_init_method_analysis_impl::RFIMAContext::(reachable_from_init_method_analysis::ReachableFromInitMethodAnalysis::is_method_reachable_from_init)";
258 val_t global___reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init(val_t p0, val_t p1){
259 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
260 val_t REGB0;
261 val_t tmp;
262 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
263 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
264 fra.me.line = 59;
265 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init;
266 fra.me.has_broke = 0;
267 fra.me.REG_size = 2;
268 fra.me.nitni_local_ref_head = NULL;
269 fra.me.REG[0] = NIT_NULL;
270 fra.me.REG[1] = NIT_NULL;
271 fra.me.REG[0] = p0;
272 fra.me.REG[1] = p1;
273 /* global/reachable_from_init_method_analysis_impl.nit:60 */
274 fra.me.REG[1] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[1])(fra.me.REG[1]);
275 REGB0 = CALL_global___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
276 goto label1;
277 label1: while(0);
278 stack_frame_head = fra.me.prev;
279 return REGB0;
280 }
281 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___init[] = "reachable_from_init_method_analysis_impl::RFIMAContext::init";
282 void global___reachable_from_init_method_analysis_impl___RFIMAContext___init(val_t p0, int* init_table){
283 int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_global___reachable_from_init_method_analysis_impl___RFIMAContext].i;
284 struct {struct stack_frame_t me;} fra;
285 val_t tmp;
286 if (init_table[itpos1]) return;
287 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
288 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
289 fra.me.line = 0;
290 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___init;
291 fra.me.has_broke = 0;
292 fra.me.REG_size = 0;
293 fra.me.nitni_local_ref_head = NULL;
294 stack_frame_head = fra.me.prev;
295 init_table[itpos1] = 1;
296 return;
297 }
298 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___context[] = "reachable_from_init_method_analysis_impl::RFIMAVisitor::context";
299 val_t global___reachable_from_init_method_analysis_impl___RFIMAVisitor___context(val_t p0){
300 struct {struct stack_frame_t me;} fra;
301 val_t REGB0;
302 val_t tmp;
303 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
304 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
305 fra.me.line = 66;
306 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___context;
307 fra.me.has_broke = 0;
308 fra.me.REG_size = 1;
309 fra.me.nitni_local_ref_head = NULL;
310 fra.me.REG[0] = NIT_NULL;
311 fra.me.REG[0] = p0;
312 /* global/reachable_from_init_method_analysis_impl.nit:66 */
313 REGB0 = TAG_Bool(ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra.me.REG[0])!=NIT_NULL);
314 if (UNTAG_Bool(REGB0)) {
315 } else {
316 nit_abort("Uninitialized attribute %s", "_context", LOCATE_global___reachable_from_init_method_analysis_impl, 66);
317 }
318 fra.me.REG[0] = ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra.me.REG[0]);
319 stack_frame_head = fra.me.prev;
320 return fra.me.REG[0];
321 }
322 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program[] = "reachable_from_init_method_analysis_impl::RFIMAVisitor::program";
323 val_t global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(val_t p0){
324 struct {struct stack_frame_t me;} fra;
325 val_t REGB0;
326 val_t tmp;
327 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
328 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
329 fra.me.line = 67;
330 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program;
331 fra.me.has_broke = 0;
332 fra.me.REG_size = 1;
333 fra.me.nitni_local_ref_head = NULL;
334 fra.me.REG[0] = NIT_NULL;
335 fra.me.REG[0] = p0;
336 /* global/reachable_from_init_method_analysis_impl.nit:67 */
337 REGB0 = TAG_Bool(ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra.me.REG[0])!=NIT_NULL);
338 if (UNTAG_Bool(REGB0)) {
339 } else {
340 nit_abort("Uninitialized attribute %s", "_program", LOCATE_global___reachable_from_init_method_analysis_impl, 67);
341 }
342 fra.me.REG[0] = ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra.me.REG[0]);
343 stack_frame_head = fra.me.prev;
344 return fra.me.REG[0];
345 }
346 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init[] = "reachable_from_init_method_analysis_impl::RFIMAVisitor::init";
347 void global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
348 int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_global___reachable_from_init_method_analysis_impl___RFIMAVisitor].i;
349 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
350 val_t tmp;
351 if (init_table[itpos2]) return;
352 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
353 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
354 fra.me.line = 69;
355 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init;
356 fra.me.has_broke = 0;
357 fra.me.REG_size = 4;
358 fra.me.nitni_local_ref_head = NULL;
359 fra.me.REG[0] = NIT_NULL;
360 fra.me.REG[1] = NIT_NULL;
361 fra.me.REG[2] = NIT_NULL;
362 fra.me.REG[3] = NIT_NULL;
363 fra.me.REG[0] = p0;
364 fra.me.REG[1] = p1;
365 fra.me.REG[2] = p2;
366 /* global/reachable_from_init_method_analysis_impl.nit:69 */
367 fra.me.REG[3] = fra.me.REG[0];
368 CALL_icode___icode_tools___ICodeVisitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
369 /* global/reachable_from_init_method_analysis_impl.nit:70 */
370 ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra.me.REG[3]) = fra.me.REG[1];
371 /* global/reachable_from_init_method_analysis_impl.nit:71 */
372 ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra.me.REG[3]) = fra.me.REG[2];
373 stack_frame_head = fra.me.prev;
374 init_table[itpos2] = 1;
375 return;
376 }
377 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call[] = "reachable_from_init_method_analysis_impl::RFIMAVisitor::process_call";
378 void global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(val_t p0, val_t p1){
379 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
380 val_t REGB0;
381 val_t tmp;
382 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
383 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
384 fra.me.line = 74;
385 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call;
386 fra.me.has_broke = 0;
387 fra.me.REG_size = 3;
388 fra.me.nitni_local_ref_head = NULL;
389 fra.me.REG[0] = NIT_NULL;
390 fra.me.REG[1] = NIT_NULL;
391 fra.me.REG[2] = NIT_NULL;
392 fra.me.REG[0] = p0;
393 fra.me.REG[1] = p1;
394 /* global/reachable_from_init_method_analysis_impl.nit:75 */
395 fra.me.REG[2] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___context(fra.me.REG[0])(fra.me.REG[0]);
396 REGB0 = CALL_global___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
397 if (UNTAG_Bool(REGB0)) {
398 goto label1;
399 }
400 /* global/reachable_from_init_method_analysis_impl.nit:76 */
401 fra.me.REG[2] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___context(fra.me.REG[0])(fra.me.REG[0]);
402 fra.me.REG[2] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(fra.me.REG[2])(fra.me.REG[2]);
403 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
404 /* global/reachable_from_init_method_analysis_impl.nit:77 */
405 CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
406 label1: while(0);
407 stack_frame_head = fra.me.prev;
408 return;
409 }
410 static const char LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode[] = "reachable_from_init_method_analysis_impl::RFIMAVisitor::(icode_tools::ICodeVisitor::visit_icode)";
411 void global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode(val_t p0, val_t p1){
412 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
413 val_t REGB0;
414 val_t REGB1;
415 val_t tmp;
416 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
417 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
418 fra.me.line = 80;
419 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode;
420 fra.me.has_broke = 0;
421 fra.me.REG_size = 6;
422 fra.me.nitni_local_ref_head = NULL;
423 fra.me.REG[0] = NIT_NULL;
424 fra.me.REG[1] = NIT_NULL;
425 fra.me.REG[2] = NIT_NULL;
426 fra.me.REG[3] = NIT_NULL;
427 fra.me.REG[4] = NIT_NULL;
428 fra.me.REG[5] = NIT_NULL;
429 fra.me.REG[0] = p0;
430 fra.me.REG[1] = p1;
431 /* global/reachable_from_init_method_analysis_impl.nit:80 */
432 fra.me.REG[2] = fra.me.REG[0];
433 fra.me.REG[3] = fra.me.REG[1];
434 /* global/reachable_from_init_method_analysis_impl.nit:82 */
435 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*/;
436 if (UNTAG_Bool(REGB0)) {
437 /* global/reachable_from_init_method_analysis_impl.nit:84 */
438 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
439 if (UNTAG_Bool(REGB0)) {
440 nit_abort("Reciever is null", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 84);
441 }
442 fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
443 fra.me.REG[4] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[4])(fra.me.REG[4]);
444 /* global/reachable_from_init_method_analysis_impl.nit:85 */
445 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
446 if (UNTAG_Bool(REGB0)) {
447 } else {
448 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
449 if (UNTAG_Bool(REGB1)) {
450 REGB1 = TAG_Bool(0);
451 REGB0 = REGB1;
452 } else {
453 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
454 REGB0 = REGB1;
455 }
456 }
457 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
458 if (UNTAG_Bool(REGB0)) {
459 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
460 }
461 } else {
462 /* global/reachable_from_init_method_analysis_impl.nit:86 */
463 REGB0 = 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*/;
464 if (UNTAG_Bool(REGB0)) {
465 /* global/reachable_from_init_method_analysis_impl.nit:88 */
466 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
467 if (UNTAG_Bool(REGB0)) {
468 nit_abort("Reciever is null", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 88);
469 }
470 fra.me.REG[4] = CALL_icode___icode_base___INew___stype(fra.me.REG[3])(fra.me.REG[3]);
471 /* global/reachable_from_init_method_analysis_impl.nit:89 */
472 fra.me.REG[5] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra.me.REG[2])(fra.me.REG[2]);
473 fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
474 fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
475 fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
476 /* global/reachable_from_init_method_analysis_impl.nit:90 */
477 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
478 if (UNTAG_Bool(REGB0)) {
479 nit_abort("Reciever is null", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 90);
480 }
481 fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
482 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
483 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
484 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
485 if (UNTAG_Bool(REGB0)) {
486 } else {
487 nit_abort("Cast failed", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 90);
488 }
489 /* global/reachable_from_init_method_analysis_impl.nit:91 */
490 REGB0 = CALL_metamodel___abstractmetamodel___MMMethod___is_extern(fra.me.REG[4])(fra.me.REG[4]);
491 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
492 if (UNTAG_Bool(REGB0)) {
493 /* global/reachable_from_init_method_analysis_impl.nit:92 */
494 fra.me.REG[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[5])(fra.me.REG[5]);
495 fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
496 /* global/reachable_from_init_method_analysis_impl.nit:93 */
497 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
498 }
499 } else {
500 /* global/reachable_from_init_method_analysis_impl.nit:95 */
501 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*/;
502 if (UNTAG_Bool(REGB0)) {
503 /* global/reachable_from_init_method_analysis_impl.nit:97 */
504 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
505 if (UNTAG_Bool(REGB0)) {
506 nit_abort("Reciever is null", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 97);
507 }
508 fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
509 /* global/reachable_from_init_method_analysis_impl.nit:98 */
510 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[4])(fra.me.REG[4]);
511 fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[4])(fra.me.REG[4]);
512 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode_1));
513 } else {
514 /* global/reachable_from_init_method_analysis_impl.nit:104 */
515 REGB0 = 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*/;
516 if (UNTAG_Bool(REGB0)) {
517 /* global/reachable_from_init_method_analysis_impl.nit:106 */
518 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
519 if (UNTAG_Bool(REGB0)) {
520 nit_abort("Reciever is null", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 106);
521 }
522 fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
523 /* global/reachable_from_init_method_analysis_impl.nit:107 */
524 fra.me.REG[5] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[4])(fra.me.REG[4]);
525 /* global/reachable_from_init_method_analysis_impl.nit:108 */
526 REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
527 if (UNTAG_Bool(REGB0)) {
528 } else {
529 REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
530 if (UNTAG_Bool(REGB1)) {
531 REGB1 = TAG_Bool(0);
532 REGB0 = REGB1;
533 } else {
534 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
535 REGB0 = REGB1;
536 }
537 }
538 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
539 if (UNTAG_Bool(REGB0)) {
540 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
541 }
542 /* global/reachable_from_init_method_analysis_impl.nit:109 */
543 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[4])(fra.me.REG[4]);
544 fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra.me.REG[4])(fra.me.REG[4]);
545 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode_2));
546 } else {
547 /* global/reachable_from_init_method_analysis_impl.nit:115 */
548 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*/;
549 if (UNTAG_Bool(REGB0)) {
550 /* global/reachable_from_init_method_analysis_impl.nit:116 */
551 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
552 if (UNTAG_Bool(REGB0)) {
553 nit_abort("Reciever is null", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 116);
554 }
555 fra.me.REG[5] = CALL_icode___icode_base___ICheckInstance___stype(fra.me.REG[3])(fra.me.REG[3]);
556 /* global/reachable_from_init_method_analysis_impl.nit:117 */
557 fra.me.REG[4] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra.me.REG[2])(fra.me.REG[2]);
558 fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
559 fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
560 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
561 /* global/reachable_from_init_method_analysis_impl.nit:118 */
562 fra.me.REG[4] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[4])(fra.me.REG[4]);
563 /* global/reachable_from_init_method_analysis_impl.nit:119 */
564 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
565 if (UNTAG_Bool(REGB0)) {
566 } else {
567 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
568 if (UNTAG_Bool(REGB1)) {
569 REGB1 = TAG_Bool(0);
570 REGB0 = REGB1;
571 } else {
572 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
573 REGB0 = REGB1;
574 }
575 }
576 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
577 if (UNTAG_Bool(REGB0)) {
578 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
579 }
580 } else {
581 /* global/reachable_from_init_method_analysis_impl.nit:120 */
582 REGB0 = 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*/;
583 if (UNTAG_Bool(REGB0)) {
584 /* global/reachable_from_init_method_analysis_impl.nit:121 */
585 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
586 if (UNTAG_Bool(REGB0)) {
587 nit_abort("Reciever is null", NULL, LOCATE_global___reachable_from_init_method_analysis_impl, 121);
588 }
589 fra.me.REG[3] = CALL_icode___icode_base___IInitAttributes___stype(fra.me.REG[3])(fra.me.REG[3]);
590 /* global/reachable_from_init_method_analysis_impl.nit:122 */
591 fra.me.REG[4] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra.me.REG[2])(fra.me.REG[2]);
592 fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
593 fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
594 fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
595 /* global/reachable_from_init_method_analysis_impl.nit:123 */
596 fra.me.REG[4] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[4])(fra.me.REG[4]);
597 /* global/reachable_from_init_method_analysis_impl.nit:124 */
598 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
599 if (UNTAG_Bool(REGB0)) {
600 } else {
601 REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
602 if (UNTAG_Bool(REGB1)) {
603 REGB1 = TAG_Bool(0);
604 REGB0 = REGB1;
605 } else {
606 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
607 REGB0 = REGB1;
608 }
609 }
610 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
611 if (UNTAG_Bool(REGB0)) {
612 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
613 }
614 }
615 }
616 }
617 }
618 }
619 }
620 /* global/reachable_from_init_method_analysis_impl.nit:126 */
621 CALL_SUPER_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
622 stack_frame_head = fra.me.prev;
623 return;
624 }
625 void OC_global___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){
626 struct {struct stack_frame_t me;} fra;
627 val_t REGB0;
628 val_t REGB1;
629 fun_t CREG[1];
630 val_t tmp;
631 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
632 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
633 fra.me.line = 0;
634 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode;
635 fra.me.has_broke = 0;
636 fra.me.REG_size = 1;
637 fra.me.nitni_local_ref_head = NULL;
638 fra.me.REG[0] = NIT_NULL;
639 fra.me.closure_ctx = closctx_param;
640 fra.me.closure_funs = CREG;
641 fra.me.REG[0] = p0;
642 CREG[0] = clos_fun0;
643 /* global/reachable_from_init_method_analysis_impl.nit:99 */
644 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
645 if (UNTAG_Bool(REGB0)) {
646 /* global/reachable_from_init_method_analysis_impl.nit:100 */
647 fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
648 /* global/reachable_from_init_method_analysis_impl.nit:101 */
649 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
650 if (UNTAG_Bool(REGB0)) {
651 } else {
652 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
653 if (UNTAG_Bool(REGB1)) {
654 REGB1 = TAG_Bool(0);
655 REGB0 = REGB1;
656 } else {
657 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
658 REGB0 = REGB1;
659 }
660 }
661 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
662 if (UNTAG_Bool(REGB0)) {
663 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
664 }
665 }
666 stack_frame_head = fra.me.prev;
667 return;
668 }
669 void OC_global___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){
670 struct {struct stack_frame_t me;} fra;
671 val_t REGB0;
672 val_t REGB1;
673 fun_t CREG[1];
674 val_t tmp;
675 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
676 fra.me.file = LOCATE_global___reachable_from_init_method_analysis_impl;
677 fra.me.line = 0;
678 fra.me.meth = LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode;
679 fra.me.has_broke = 0;
680 fra.me.REG_size = 1;
681 fra.me.nitni_local_ref_head = NULL;
682 fra.me.REG[0] = NIT_NULL;
683 fra.me.closure_ctx = closctx_param;
684 fra.me.closure_funs = CREG;
685 fra.me.REG[0] = p0;
686 CREG[0] = clos_fun0;
687 /* global/reachable_from_init_method_analysis_impl.nit:110 */
688 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
689 if (UNTAG_Bool(REGB0)) {
690 /* global/reachable_from_init_method_analysis_impl.nit:111 */
691 fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
692 closctx->REG[5] = fra.me.REG[0];
693 /* global/reachable_from_init_method_analysis_impl.nit:112 */
694 REGB0 = TAG_Bool(closctx->REG[5]==NIT_NULL);
695 if (UNTAG_Bool(REGB0)) {
696 } else {
697 REGB1 = TAG_Bool(closctx->REG[5]==NIT_NULL);
698 if (UNTAG_Bool(REGB1)) {
699 REGB1 = TAG_Bool(0);
700 REGB0 = REGB1;
701 } else {
702 REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[5])(closctx->REG[5], NIT_NULL);
703 REGB0 = REGB1;
704 }
705 }
706 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
707 if (UNTAG_Bool(REGB0)) {
708 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(closctx->REG[2])(closctx->REG[2], closctx->REG[5]);
709 }
710 }
711 stack_frame_head = fra.me.prev;
712 return;
713 }