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 val_t
global___reachable_from_init_method_analysis_impl___RFIMABuilder___program(val_t p0
){
4 struct {struct stack_frame_t me
;} fra
;
7 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
8 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
10 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___program
;
13 fra
.me
.nitni_local_ref_head
= NULL
;
14 fra
.me
.REG
[0] = NIT_NULL
;
16 /* global/reachable_from_init_method_analysis_impl.nit:25 */
17 REGB0
= TAG_Bool(ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra
.me
.REG
[0])!=NIT_NULL
);
18 if (UNTAG_Bool(REGB0
)) {
20 nit_abort("Uninitialized attribute %s", "_program", LOCATE_global___reachable_from_init_method_analysis_impl
, 25);
22 fra
.me
.REG
[0] = ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra
.me
.REG
[0]);
23 stack_frame_head
= fra
.me
.prev
;
26 val_t
global___reachable_from_init_method_analysis_impl___RFIMABuilder___context(val_t p0
){
27 struct {struct stack_frame_t me
;} fra
;
30 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
31 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
33 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___context
;
36 fra
.me
.nitni_local_ref_head
= NULL
;
37 fra
.me
.REG
[0] = NIT_NULL
;
39 /* global/reachable_from_init_method_analysis_impl.nit:26 */
40 REGB0
= TAG_Bool(ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra
.me
.REG
[0])!=NIT_NULL
);
41 if (UNTAG_Bool(REGB0
)) {
43 nit_abort("Uninitialized attribute %s", "_context", LOCATE_global___reachable_from_init_method_analysis_impl
, 26);
45 fra
.me
.REG
[0] = ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra
.me
.REG
[0]);
46 stack_frame_head
= fra
.me
.prev
;
49 void global___reachable_from_init_method_analysis_impl___RFIMABuilder___init(val_t p0
, val_t p1
, int* init_table
){
50 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___reachable_from_init_method_analysis_impl___RFIMABuilder
].i
;
51 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
53 if (init_table
[itpos0
]) return;
54 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
55 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
57 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___init
;
60 fra
.me
.nitni_local_ref_head
= NULL
;
61 fra
.me
.REG
[0] = NIT_NULL
;
62 fra
.me
.REG
[1] = NIT_NULL
;
65 /* global/reachable_from_init_method_analysis_impl.nit:29 */
66 ATTR_global___reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
67 stack_frame_head
= fra
.me
.prev
;
68 init_table
[itpos0
] = 1;
71 void global___reachable_from_init_method_analysis_impl___RFIMABuilder___work(val_t p0
){
72 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
74 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
75 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
77 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work
;
80 fra
.me
.nitni_local_ref_head
= NULL
;
81 fra
.me
.REG
[0] = NIT_NULL
;
82 fra
.me
.REG
[1] = NIT_NULL
;
83 fra
.me
.REG
[2] = NIT_NULL
;
85 /* global/reachable_from_init_method_analysis_impl.nit:32 */
86 fra
.me
.REG
[1] = fra
.me
.REG
[0];
87 /* global/reachable_from_init_method_analysis_impl.nit:33 */
88 fra
.me
.REG
[2] = CALL_global___reachable_from_init_method_analysis_impl___RFIMABuilder___program(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
89 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
));
90 stack_frame_head
= fra
.me
.prev
;
93 void OC_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work_1(struct stack_frame_t
*closctx
, val_t p0
){
94 struct {struct stack_frame_t me
;} fra
;
96 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
97 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
99 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work
;
100 fra
.me
.has_broke
= 0;
102 fra
.me
.nitni_local_ref_head
= NULL
;
103 fra
.me
.REG
[0] = NIT_NULL
;
105 closctx
->REG
[2] = fra
.me
.REG
[0];
106 /* global/reachable_from_init_method_analysis_impl.nit:35 */
107 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[2])(closctx
->REG
[2]);
108 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
));
109 stack_frame_head
= fra
.me
.prev
;
112 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
){
113 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
117 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
118 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
120 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMABuilder___work
;
121 fra
.me
.has_broke
= 0;
123 fra
.me
.nitni_local_ref_head
= NULL
;
124 fra
.me
.REG
[0] = NIT_NULL
;
125 fra
.me
.REG
[1] = NIT_NULL
;
126 fra
.me
.REG
[2] = NIT_NULL
;
127 fra
.me
.closure_ctx
= closctx_param
;
128 fra
.me
.closure_funs
= CREG
;
131 /* global/reachable_from_init_method_analysis_impl.nit:36 */
132 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
133 /* global/reachable_from_init_method_analysis_impl.nit:37 */
134 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
135 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
->REG
[2]);
136 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
137 if (UNTAG_Bool(REGB0
)) {
140 /* global/reachable_from_init_method_analysis_impl.nit:38 */
141 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
142 if (UNTAG_Bool(REGB0
)) {
144 nit_abort("Assert failed", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 38);
146 /* global/reachable_from_init_method_analysis_impl.nit:39 */
147 fra
.me
.REG
[1] = CALL_global___reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx
->REG
[1])(closctx
->REG
[1]);
148 fra
.me
.REG
[1] = CALL_global___reachable_method_analysis___Program___rma(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
149 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*/;
150 if (UNTAG_Bool(REGB0
)) {
152 nit_abort("Cast failed", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 39);
154 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
155 if (UNTAG_Bool(REGB0
)) {
156 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 39);
158 REGB0
= CALL_global___reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
159 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
160 if (UNTAG_Bool(REGB0
)) {
163 /* global/reachable_from_init_method_analysis_impl.nit:40 */
164 fra
.me
.REG
[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx
->REG
[2])(closctx
->REG
[2]);
165 REGB0
= CALL_standard___collection___abstract_collection___MapRead___has_key(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
166 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
167 if (UNTAG_Bool(REGB0
)) {
170 /* global/reachable_from_init_method_analysis_impl.nit:41 */
171 fra
.me
.REG
[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx
->REG
[2])(closctx
->REG
[2]);
172 fra
.me
.REG
[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
173 /* global/reachable_from_init_method_analysis_impl.nit:44 */
174 fra
.me
.REG
[1] = CALL_global___reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx
->REG
[1])(closctx
->REG
[1]);
175 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]);
176 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
177 /* global/reachable_from_init_method_analysis_impl.nit:45 */
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
[2] = CALL_global___reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx
->REG
[1])(closctx
->REG
[1]);
180 fra
.me
.REG
[2] = NEW_RFIMAVisitor_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init(fra
.me
.REG
[1], fra
.me
.REG
[2]);
181 CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[0]);
183 stack_frame_head
= fra
.me
.prev
;
186 val_t
global___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(val_t p0
){
187 struct {struct stack_frame_t me
;} fra
;
190 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
191 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
193 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines
;
194 fra
.me
.has_broke
= 0;
196 fra
.me
.nitni_local_ref_head
= NULL
;
197 fra
.me
.REG
[0] = NIT_NULL
;
199 /* global/reachable_from_init_method_analysis_impl.nit:53 */
200 REGB0
= TAG_Bool(ATTR_global___reachable_from_init_method_analysis_impl___RFIMAContext____reachable_from_init_iroutines(fra
.me
.REG
[0])!=NIT_NULL
);
201 if (UNTAG_Bool(REGB0
)) {
203 nit_abort("Uninitialized attribute %s", "_reachable_from_init_iroutines", LOCATE_global___reachable_from_init_method_analysis_impl
, 53);
205 fra
.me
.REG
[0] = ATTR_global___reachable_from_init_method_analysis_impl___RFIMAContext____reachable_from_init_iroutines(fra
.me
.REG
[0]);
206 stack_frame_head
= fra
.me
.prev
;
207 return fra
.me
.REG
[0];
209 val_t
global___reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init(val_t p0
, val_t p1
){
210 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
214 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
215 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
217 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init
;
218 fra
.me
.has_broke
= 0;
220 fra
.me
.nitni_local_ref_head
= NULL
;
221 fra
.me
.REG
[0] = NIT_NULL
;
222 fra
.me
.REG
[1] = NIT_NULL
;
225 /* global/reachable_from_init_method_analysis_impl.nit:56 */
226 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
227 if (UNTAG_Bool(REGB0
)) {
229 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
230 if (UNTAG_Bool(REGB1
)) {
231 REGB1
= TAG_Bool(false);
234 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
238 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
239 if (UNTAG_Bool(REGB0
)) {
240 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]);
241 REGB0
= CALL_standard___collection___abstract_collection___Collection___has(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
243 REGB1
= TAG_Bool(false);
248 stack_frame_head
= fra
.me
.prev
;
251 val_t
global___reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init(val_t p0
, val_t p1
){
252 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
255 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
256 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
258 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init
;
259 fra
.me
.has_broke
= 0;
261 fra
.me
.nitni_local_ref_head
= NULL
;
262 fra
.me
.REG
[0] = NIT_NULL
;
263 fra
.me
.REG
[1] = NIT_NULL
;
266 /* global/reachable_from_init_method_analysis_impl.nit:60 */
267 fra
.me
.REG
[1] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
268 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]);
271 stack_frame_head
= fra
.me
.prev
;
274 void global___reachable_from_init_method_analysis_impl___RFIMAContext___init(val_t p0
, int* init_table
){
275 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___reachable_from_init_method_analysis_impl___RFIMAContext
].i
;
276 struct {struct stack_frame_t me
;} fra
;
278 if (init_table
[itpos1
]) return;
279 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
280 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
282 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAContext___init
;
283 fra
.me
.has_broke
= 0;
285 fra
.me
.nitni_local_ref_head
= NULL
;
286 stack_frame_head
= fra
.me
.prev
;
287 init_table
[itpos1
] = 1;
290 val_t
global___reachable_from_init_method_analysis_impl___RFIMAVisitor___context(val_t p0
){
291 struct {struct stack_frame_t me
;} fra
;
294 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
295 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
297 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___context
;
298 fra
.me
.has_broke
= 0;
300 fra
.me
.nitni_local_ref_head
= NULL
;
301 fra
.me
.REG
[0] = NIT_NULL
;
303 /* global/reachable_from_init_method_analysis_impl.nit:66 */
304 REGB0
= TAG_Bool(ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra
.me
.REG
[0])!=NIT_NULL
);
305 if (UNTAG_Bool(REGB0
)) {
307 nit_abort("Uninitialized attribute %s", "_context", LOCATE_global___reachable_from_init_method_analysis_impl
, 66);
309 fra
.me
.REG
[0] = ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra
.me
.REG
[0]);
310 stack_frame_head
= fra
.me
.prev
;
311 return fra
.me
.REG
[0];
313 val_t
global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(val_t p0
){
314 struct {struct stack_frame_t me
;} fra
;
317 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
318 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
320 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program
;
321 fra
.me
.has_broke
= 0;
323 fra
.me
.nitni_local_ref_head
= NULL
;
324 fra
.me
.REG
[0] = NIT_NULL
;
326 /* global/reachable_from_init_method_analysis_impl.nit:67 */
327 REGB0
= TAG_Bool(ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra
.me
.REG
[0])!=NIT_NULL
);
328 if (UNTAG_Bool(REGB0
)) {
330 nit_abort("Uninitialized attribute %s", "_program", LOCATE_global___reachable_from_init_method_analysis_impl
, 67);
332 fra
.me
.REG
[0] = ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra
.me
.REG
[0]);
333 stack_frame_head
= fra
.me
.prev
;
334 return fra
.me
.REG
[0];
336 void global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
337 int itpos2
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_global___reachable_from_init_method_analysis_impl___RFIMAVisitor
].i
;
338 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
340 if (init_table
[itpos2
]) return;
341 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
342 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
344 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___init
;
345 fra
.me
.has_broke
= 0;
347 fra
.me
.nitni_local_ref_head
= NULL
;
348 fra
.me
.REG
[0] = NIT_NULL
;
349 fra
.me
.REG
[1] = NIT_NULL
;
350 fra
.me
.REG
[2] = NIT_NULL
;
351 fra
.me
.REG
[3] = NIT_NULL
;
355 /* global/reachable_from_init_method_analysis_impl.nit:69 */
356 fra
.me
.REG
[3] = fra
.me
.REG
[0];
357 CALL_icode___icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
358 /* global/reachable_from_init_method_analysis_impl.nit:70 */
359 ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra
.me
.REG
[3]) = fra
.me
.REG
[1];
360 /* global/reachable_from_init_method_analysis_impl.nit:71 */
361 ATTR_global___reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra
.me
.REG
[3]) = fra
.me
.REG
[2];
362 stack_frame_head
= fra
.me
.prev
;
363 init_table
[itpos2
] = 1;
366 void global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(val_t p0
, val_t p1
){
367 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
370 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
371 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
373 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call
;
374 fra
.me
.has_broke
= 0;
376 fra
.me
.nitni_local_ref_head
= NULL
;
377 fra
.me
.REG
[0] = NIT_NULL
;
378 fra
.me
.REG
[1] = NIT_NULL
;
379 fra
.me
.REG
[2] = NIT_NULL
;
382 /* global/reachable_from_init_method_analysis_impl.nit:75 */
383 fra
.me
.REG
[2] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
384 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]);
385 if (UNTAG_Bool(REGB0
)) {
388 /* global/reachable_from_init_method_analysis_impl.nit:76 */
389 fra
.me
.REG
[2] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
390 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]);
391 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
392 /* global/reachable_from_init_method_analysis_impl.nit:77 */
393 CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
395 stack_frame_head
= fra
.me
.prev
;
398 void global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode(val_t p0
, val_t p1
){
399 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
403 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
404 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
406 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode
;
407 fra
.me
.has_broke
= 0;
409 fra
.me
.nitni_local_ref_head
= NULL
;
410 fra
.me
.REG
[0] = NIT_NULL
;
411 fra
.me
.REG
[1] = NIT_NULL
;
412 fra
.me
.REG
[2] = NIT_NULL
;
413 fra
.me
.REG
[3] = NIT_NULL
;
414 fra
.me
.REG
[4] = NIT_NULL
;
415 fra
.me
.REG
[5] = NIT_NULL
;
418 /* global/reachable_from_init_method_analysis_impl.nit:80 */
419 fra
.me
.REG
[2] = fra
.me
.REG
[0];
420 fra
.me
.REG
[3] = fra
.me
.REG
[1];
421 /* global/reachable_from_init_method_analysis_impl.nit:82 */
422 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*/;
423 if (UNTAG_Bool(REGB0
)) {
424 /* global/reachable_from_init_method_analysis_impl.nit:84 */
425 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
426 if (UNTAG_Bool(REGB0
)) {
427 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 84);
429 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
430 fra
.me
.REG
[4] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
431 /* global/reachable_from_init_method_analysis_impl.nit:85 */
432 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
433 if (UNTAG_Bool(REGB0
)) {
435 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
436 if (UNTAG_Bool(REGB1
)) {
437 REGB1
= TAG_Bool(false);
440 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
444 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
445 if (UNTAG_Bool(REGB0
)) {
446 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[4]);
449 /* global/reachable_from_init_method_analysis_impl.nit:86 */
450 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*/;
451 if (UNTAG_Bool(REGB0
)) {
452 /* global/reachable_from_init_method_analysis_impl.nit:88 */
453 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
454 if (UNTAG_Bool(REGB0
)) {
455 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 88);
457 fra
.me
.REG
[4] = CALL_icode___icode_base___INew___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
458 /* global/reachable_from_init_method_analysis_impl.nit:89 */
459 fra
.me
.REG
[5] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
460 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
461 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
462 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
463 /* global/reachable_from_init_method_analysis_impl.nit:90 */
464 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
465 if (UNTAG_Bool(REGB0
)) {
466 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 90);
468 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
469 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
470 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
471 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[4], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
472 if (UNTAG_Bool(REGB0
)) {
474 nit_abort("Cast failed", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 90);
476 /* global/reachable_from_init_method_analysis_impl.nit:91 */
477 REGB0
= CALL_metamodel___abstractmetamodel___MMMethod___is_extern(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
478 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
479 if (UNTAG_Bool(REGB0
)) {
480 /* global/reachable_from_init_method_analysis_impl.nit:92 */
481 fra
.me
.REG
[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
482 fra
.me
.REG
[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
483 /* global/reachable_from_init_method_analysis_impl.nit:93 */
484 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[4]);
487 /* global/reachable_from_init_method_analysis_impl.nit:95 */
488 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*/;
489 if (UNTAG_Bool(REGB0
)) {
490 /* global/reachable_from_init_method_analysis_impl.nit:97 */
491 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
492 if (UNTAG_Bool(REGB0
)) {
493 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 97);
495 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
496 /* global/reachable_from_init_method_analysis_impl.nit:98 */
497 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
498 fra
.me
.REG
[4] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
499 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
));
501 /* global/reachable_from_init_method_analysis_impl.nit:104 */
502 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*/;
503 if (UNTAG_Bool(REGB0
)) {
504 /* global/reachable_from_init_method_analysis_impl.nit:106 */
505 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
506 if (UNTAG_Bool(REGB0
)) {
507 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 106);
509 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
510 /* global/reachable_from_init_method_analysis_impl.nit:107 */
511 fra
.me
.REG
[5] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
512 /* global/reachable_from_init_method_analysis_impl.nit:108 */
513 REGB0
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
514 if (UNTAG_Bool(REGB0
)) {
516 REGB1
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
517 if (UNTAG_Bool(REGB1
)) {
518 REGB1
= TAG_Bool(false);
521 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[5])(fra
.me
.REG
[5], NIT_NULL
);
525 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
526 if (UNTAG_Bool(REGB0
)) {
527 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[5]);
529 /* global/reachable_from_init_method_analysis_impl.nit:109 */
530 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
531 fra
.me
.REG
[4] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
532 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
));
534 /* global/reachable_from_init_method_analysis_impl.nit:115 */
535 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*/;
536 if (UNTAG_Bool(REGB0
)) {
537 /* global/reachable_from_init_method_analysis_impl.nit:116 */
538 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
539 if (UNTAG_Bool(REGB0
)) {
540 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 116);
542 fra
.me
.REG
[5] = CALL_icode___icode_base___ICheckInstance___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
543 /* global/reachable_from_init_method_analysis_impl.nit:117 */
544 fra
.me
.REG
[4] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
545 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
546 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
547 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
548 /* global/reachable_from_init_method_analysis_impl.nit:118 */
549 fra
.me
.REG
[4] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
550 /* global/reachable_from_init_method_analysis_impl.nit:119 */
551 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
552 if (UNTAG_Bool(REGB0
)) {
554 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
555 if (UNTAG_Bool(REGB1
)) {
556 REGB1
= TAG_Bool(false);
559 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
563 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
564 if (UNTAG_Bool(REGB0
)) {
565 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[4]);
568 /* global/reachable_from_init_method_analysis_impl.nit:120 */
569 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*/;
570 if (UNTAG_Bool(REGB0
)) {
571 /* global/reachable_from_init_method_analysis_impl.nit:121 */
572 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
573 if (UNTAG_Bool(REGB0
)) {
574 nit_abort("Reciever is null", NULL
, LOCATE_global___reachable_from_init_method_analysis_impl
, 121);
576 fra
.me
.REG
[3] = CALL_icode___icode_base___IInitAttributes___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
577 /* global/reachable_from_init_method_analysis_impl.nit:122 */
578 fra
.me
.REG
[4] = CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
579 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
580 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
581 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
582 /* global/reachable_from_init_method_analysis_impl.nit:123 */
583 fra
.me
.REG
[4] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
584 /* global/reachable_from_init_method_analysis_impl.nit:124 */
585 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
586 if (UNTAG_Bool(REGB0
)) {
588 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
589 if (UNTAG_Bool(REGB1
)) {
590 REGB1
= TAG_Bool(false);
593 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
597 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
598 if (UNTAG_Bool(REGB0
)) {
599 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[4]);
607 /* global/reachable_from_init_method_analysis_impl.nit:126 */
608 CALL_SUPER_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
609 stack_frame_head
= fra
.me
.prev
;
612 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
){
613 struct {struct stack_frame_t me
;} fra
;
618 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
619 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
621 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode
;
622 fra
.me
.has_broke
= 0;
624 fra
.me
.nitni_local_ref_head
= NULL
;
625 fra
.me
.REG
[0] = NIT_NULL
;
626 fra
.me
.closure_ctx
= closctx_param
;
627 fra
.me
.closure_funs
= CREG
;
630 /* global/reachable_from_init_method_analysis_impl.nit:99 */
631 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
632 if (UNTAG_Bool(REGB0
)) {
633 /* global/reachable_from_init_method_analysis_impl.nit:100 */
634 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
635 /* global/reachable_from_init_method_analysis_impl.nit:101 */
636 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
637 if (UNTAG_Bool(REGB0
)) {
639 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
640 if (UNTAG_Bool(REGB1
)) {
641 REGB1
= TAG_Bool(false);
644 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
648 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
649 if (UNTAG_Bool(REGB0
)) {
650 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
653 stack_frame_head
= fra
.me
.prev
;
656 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
){
657 struct {struct stack_frame_t me
;} fra
;
662 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
663 fra
.me
.file
= LOCATE_global___reachable_from_init_method_analysis_impl
;
665 fra
.me
.meth
= LOCATE_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode
;
666 fra
.me
.has_broke
= 0;
668 fra
.me
.nitni_local_ref_head
= NULL
;
669 fra
.me
.REG
[0] = NIT_NULL
;
670 fra
.me
.closure_ctx
= closctx_param
;
671 fra
.me
.closure_funs
= CREG
;
674 /* global/reachable_from_init_method_analysis_impl.nit:110 */
675 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
676 if (UNTAG_Bool(REGB0
)) {
677 /* global/reachable_from_init_method_analysis_impl.nit:111 */
678 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
679 closctx
->REG
[5] = fra
.me
.REG
[0];
680 /* global/reachable_from_init_method_analysis_impl.nit:112 */
681 REGB0
= TAG_Bool(closctx
->REG
[5]==NIT_NULL
);
682 if (UNTAG_Bool(REGB0
)) {
684 REGB1
= TAG_Bool(closctx
->REG
[5]==NIT_NULL
);
685 if (UNTAG_Bool(REGB1
)) {
686 REGB1
= TAG_Bool(false);
689 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[5])(closctx
->REG
[5], NIT_NULL
);
693 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
694 if (UNTAG_Bool(REGB0
)) {
695 CALL_global___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(closctx
->REG
[2])(closctx
->REG
[2], closctx
->REG
[5]);
698 stack_frame_head
= fra
.me
.prev
;