1 /* This C file is generated by NIT to compile module analysis___reachable_from_init_method_analysis_impl. */
2 #include "analysis___reachable_from_init_method_analysis_impl._sep.h"
3 val_t
analysis___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_analysis___reachable_from_init_method_analysis_impl
;
10 fra
.me
.meth
= LOCATE_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program
;
13 fra
.me
.nitni_local_ref_head
= NULL
;
14 fra
.me
.REG
[0] = NIT_NULL
;
16 /* ./analysis//reachable_from_init_method_analysis_impl.nit:25 */
17 REGB0
= TAG_Bool(ATTR_analysis___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_analysis___reachable_from_init_method_analysis_impl
, 25);
22 fra
.me
.REG
[0] = ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra
.me
.REG
[0]);
23 stack_frame_head
= fra
.me
.prev
;
26 val_t
analysis___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_analysis___reachable_from_init_method_analysis_impl
;
33 fra
.me
.meth
= LOCATE_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___context
;
36 fra
.me
.nitni_local_ref_head
= NULL
;
37 fra
.me
.REG
[0] = NIT_NULL
;
39 /* ./analysis//reachable_from_init_method_analysis_impl.nit:26 */
40 REGB0
= TAG_Bool(ATTR_analysis___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_analysis___reachable_from_init_method_analysis_impl
, 26);
45 fra
.me
.REG
[0] = ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra
.me
.REG
[0]);
46 stack_frame_head
= fra
.me
.prev
;
49 void analysis___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_analysis___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_analysis___reachable_from_init_method_analysis_impl
;
57 fra
.me
.meth
= LOCATE_analysis___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 /* ./analysis//reachable_from_init_method_analysis_impl.nit:29 */
66 ATTR_analysis___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 analysis___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_analysis___reachable_from_init_method_analysis_impl
;
77 fra
.me
.meth
= LOCATE_analysis___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 /* ./analysis//reachable_from_init_method_analysis_impl.nit:32 */
86 fra
.me
.REG
[1] = fra
.me
.REG
[0];
87 /* ./analysis//reachable_from_init_method_analysis_impl.nit:33 */
88 fra
.me
.REG
[2] = CALL_analysis___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_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work_1
));
90 stack_frame_head
= fra
.me
.prev
;
93 void OC_analysis___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_analysis___reachable_from_init_method_analysis_impl
;
99 fra
.me
.meth
= LOCATE_analysis___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 /* ./analysis//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_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work_2
));
109 stack_frame_head
= fra
.me
.prev
;
112 void OC_analysis___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_analysis___reachable_from_init_method_analysis_impl
;
120 fra
.me
.meth
= LOCATE_analysis___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 /* ./analysis//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 /* ./analysis//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 /* ./analysis//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_analysis___reachable_from_init_method_analysis_impl
, 38);
146 /* ./analysis//reachable_from_init_method_analysis_impl.nit:39 */
147 fra
.me
.REG
[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx
->REG
[1])(closctx
->REG
[1]);
148 fra
.me
.REG
[1] = CALL_analysis___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_analysis___reachable_method_analysis___ReachableMethodAnalysis
, ID_analysis___reachable_method_analysis___ReachableMethodAnalysis
)) /*cast ReachableMethodAnalysis*/;
150 if (UNTAG_Bool(REGB0
)) {
152 nit_abort("Cast failed", NULL
, LOCATE_analysis___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_analysis___reachable_from_init_method_analysis_impl
, 39);
158 REGB0
= CALL_analysis___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 /* ./analysis//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 /* ./analysis//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 /* ./analysis//reachable_from_init_method_analysis_impl.nit:44 */
174 fra
.me
.REG
[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx
->REG
[1])(closctx
->REG
[1]);
175 fra
.me
.REG
[1] = CALL_analysis___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 /* ./analysis//reachable_from_init_method_analysis_impl.nit:45 */
178 fra
.me
.REG
[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx
->REG
[1])(closctx
->REG
[1]);
179 fra
.me
.REG
[2] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx
->REG
[1])(closctx
->REG
[1]);
180 fra
.me
.REG
[2] = NEW_RFIMAVisitor_analysis___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
analysis___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_analysis___reachable_from_init_method_analysis_impl
;
193 fra
.me
.meth
= LOCATE_analysis___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 /* ./analysis//reachable_from_init_method_analysis_impl.nit:53 */
200 REGB0
= TAG_Bool(ATTR_analysis___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_analysis___reachable_from_init_method_analysis_impl
, 53);
205 fra
.me
.REG
[0] = ATTR_analysis___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
analysis___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_analysis___reachable_from_init_method_analysis_impl
;
217 fra
.me
.meth
= LOCATE_analysis___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 /* ./analysis//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_analysis___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
analysis___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_analysis___reachable_from_init_method_analysis_impl
;
258 fra
.me
.meth
= LOCATE_analysis___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 /* ./analysis//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_analysis___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 val_t
analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___context(val_t p0
){
275 struct {struct stack_frame_t me
;} fra
;
278 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
279 fra
.me
.file
= LOCATE_analysis___reachable_from_init_method_analysis_impl
;
281 fra
.me
.meth
= LOCATE_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___context
;
282 fra
.me
.has_broke
= 0;
284 fra
.me
.nitni_local_ref_head
= NULL
;
285 fra
.me
.REG
[0] = NIT_NULL
;
287 /* ./analysis//reachable_from_init_method_analysis_impl.nit:66 */
288 REGB0
= TAG_Bool(ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra
.me
.REG
[0])!=NIT_NULL
);
289 if (UNTAG_Bool(REGB0
)) {
291 nit_abort("Uninitialized attribute %s", "_context", LOCATE_analysis___reachable_from_init_method_analysis_impl
, 66);
293 fra
.me
.REG
[0] = ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra
.me
.REG
[0]);
294 stack_frame_head
= fra
.me
.prev
;
295 return fra
.me
.REG
[0];
297 val_t
analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(val_t p0
){
298 struct {struct stack_frame_t me
;} fra
;
301 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
302 fra
.me
.file
= LOCATE_analysis___reachable_from_init_method_analysis_impl
;
304 fra
.me
.meth
= LOCATE_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___program
;
305 fra
.me
.has_broke
= 0;
307 fra
.me
.nitni_local_ref_head
= NULL
;
308 fra
.me
.REG
[0] = NIT_NULL
;
310 /* ./analysis//reachable_from_init_method_analysis_impl.nit:67 */
311 REGB0
= TAG_Bool(ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra
.me
.REG
[0])!=NIT_NULL
);
312 if (UNTAG_Bool(REGB0
)) {
314 nit_abort("Uninitialized attribute %s", "_program", LOCATE_analysis___reachable_from_init_method_analysis_impl
, 67);
316 fra
.me
.REG
[0] = ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra
.me
.REG
[0]);
317 stack_frame_head
= fra
.me
.prev
;
318 return fra
.me
.REG
[0];
320 void analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
321 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor
].i
;
322 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
324 if (init_table
[itpos1
]) return;
325 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
326 fra
.me
.file
= LOCATE_analysis___reachable_from_init_method_analysis_impl
;
328 fra
.me
.meth
= LOCATE_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___init
;
329 fra
.me
.has_broke
= 0;
331 fra
.me
.nitni_local_ref_head
= NULL
;
332 fra
.me
.REG
[0] = NIT_NULL
;
333 fra
.me
.REG
[1] = NIT_NULL
;
334 fra
.me
.REG
[2] = NIT_NULL
;
335 fra
.me
.REG
[3] = NIT_NULL
;
339 /* ./analysis//reachable_from_init_method_analysis_impl.nit:69 */
340 fra
.me
.REG
[3] = fra
.me
.REG
[0];
341 CALL_icode___icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
342 /* ./analysis//reachable_from_init_method_analysis_impl.nit:70 */
343 ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra
.me
.REG
[3]) = fra
.me
.REG
[1];
344 /* ./analysis//reachable_from_init_method_analysis_impl.nit:71 */
345 ATTR_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra
.me
.REG
[3]) = fra
.me
.REG
[2];
346 stack_frame_head
= fra
.me
.prev
;
347 init_table
[itpos1
] = 1;
350 void analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(val_t p0
, val_t p1
){
351 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
354 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
355 fra
.me
.file
= LOCATE_analysis___reachable_from_init_method_analysis_impl
;
357 fra
.me
.meth
= LOCATE_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call
;
358 fra
.me
.has_broke
= 0;
360 fra
.me
.nitni_local_ref_head
= NULL
;
361 fra
.me
.REG
[0] = NIT_NULL
;
362 fra
.me
.REG
[1] = NIT_NULL
;
363 fra
.me
.REG
[2] = NIT_NULL
;
366 /* ./analysis//reachable_from_init_method_analysis_impl.nit:75 */
367 fra
.me
.REG
[2] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
368 REGB0
= CALL_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
369 if (UNTAG_Bool(REGB0
)) {
372 /* ./analysis//reachable_from_init_method_analysis_impl.nit:76 */
373 fra
.me
.REG
[2] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___context(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
374 fra
.me
.REG
[2] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
375 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
376 /* ./analysis//reachable_from_init_method_analysis_impl.nit:77 */
377 CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
379 stack_frame_head
= fra
.me
.prev
;
382 void analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode(val_t p0
, val_t p1
){
383 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
387 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
388 fra
.me
.file
= LOCATE_analysis___reachable_from_init_method_analysis_impl
;
390 fra
.me
.meth
= LOCATE_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode
;
391 fra
.me
.has_broke
= 0;
393 fra
.me
.nitni_local_ref_head
= NULL
;
394 fra
.me
.REG
[0] = NIT_NULL
;
395 fra
.me
.REG
[1] = NIT_NULL
;
396 fra
.me
.REG
[2] = NIT_NULL
;
397 fra
.me
.REG
[3] = NIT_NULL
;
398 fra
.me
.REG
[4] = NIT_NULL
;
399 fra
.me
.REG
[5] = NIT_NULL
;
402 /* ./analysis//reachable_from_init_method_analysis_impl.nit:80 */
403 fra
.me
.REG
[2] = fra
.me
.REG
[0];
404 fra
.me
.REG
[3] = fra
.me
.REG
[1];
405 /* ./analysis//reachable_from_init_method_analysis_impl.nit:82 */
406 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*/;
407 if (UNTAG_Bool(REGB0
)) {
408 /* ./analysis//reachable_from_init_method_analysis_impl.nit:84 */
409 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
410 if (UNTAG_Bool(REGB0
)) {
411 nit_abort("Reciever is null", NULL
, LOCATE_analysis___reachable_from_init_method_analysis_impl
, 84);
413 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
414 fra
.me
.REG
[4] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
415 /* ./analysis//reachable_from_init_method_analysis_impl.nit:85 */
416 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
417 if (UNTAG_Bool(REGB0
)) {
419 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
420 if (UNTAG_Bool(REGB1
)) {
421 REGB1
= TAG_Bool(false);
424 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
428 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
429 if (UNTAG_Bool(REGB0
)) {
430 CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[4]);
433 /* ./analysis//reachable_from_init_method_analysis_impl.nit:86 */
434 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*/;
435 if (UNTAG_Bool(REGB0
)) {
436 /* ./analysis//reachable_from_init_method_analysis_impl.nit:88 */
437 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
438 if (UNTAG_Bool(REGB0
)) {
439 nit_abort("Reciever is null", NULL
, LOCATE_analysis___reachable_from_init_method_analysis_impl
, 88);
441 fra
.me
.REG
[4] = CALL_icode___icode_base___INew___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
442 /* ./analysis//reachable_from_init_method_analysis_impl.nit:89 */
443 fra
.me
.REG
[5] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
444 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
445 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
446 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
447 /* ./analysis//reachable_from_init_method_analysis_impl.nit:90 */
448 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
449 if (UNTAG_Bool(REGB0
)) {
450 nit_abort("Reciever is null", NULL
, LOCATE_analysis___reachable_from_init_method_analysis_impl
, 90);
452 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
453 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
454 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
455 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[4], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
456 if (UNTAG_Bool(REGB0
)) {
458 nit_abort("Cast failed", NULL
, LOCATE_analysis___reachable_from_init_method_analysis_impl
, 90);
460 /* ./analysis//reachable_from_init_method_analysis_impl.nit:91 */
461 REGB0
= CALL_metamodel___abstractmetamodel___MMMethod___is_extern(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
462 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
463 if (UNTAG_Bool(REGB0
)) {
464 /* ./analysis//reachable_from_init_method_analysis_impl.nit:92 */
465 fra
.me
.REG
[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
466 fra
.me
.REG
[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
467 /* ./analysis//reachable_from_init_method_analysis_impl.nit:93 */
468 CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[4]);
471 /* ./analysis//reachable_from_init_method_analysis_impl.nit:95 */
472 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*/;
473 if (UNTAG_Bool(REGB0
)) {
474 /* ./analysis//reachable_from_init_method_analysis_impl.nit:97 */
475 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
476 if (UNTAG_Bool(REGB0
)) {
477 nit_abort("Reciever is null", NULL
, LOCATE_analysis___reachable_from_init_method_analysis_impl
, 97);
479 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
480 /* ./analysis//reachable_from_init_method_analysis_impl.nit:98 */
481 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
482 fra
.me
.REG
[4] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
483 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[4])(fra
.me
.REG
[4], (&(fra
.me
)), ((fun_t
)OC_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode_1
));
485 /* ./analysis//reachable_from_init_method_analysis_impl.nit:104 */
486 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*/;
487 if (UNTAG_Bool(REGB0
)) {
488 /* ./analysis//reachable_from_init_method_analysis_impl.nit:106 */
489 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
490 if (UNTAG_Bool(REGB0
)) {
491 nit_abort("Reciever is null", NULL
, LOCATE_analysis___reachable_from_init_method_analysis_impl
, 106);
493 fra
.me
.REG
[4] = CALL_icode___icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
494 /* ./analysis//reachable_from_init_method_analysis_impl.nit:107 */
495 fra
.me
.REG
[5] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
496 /* ./analysis//reachable_from_init_method_analysis_impl.nit:108 */
497 REGB0
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
498 if (UNTAG_Bool(REGB0
)) {
500 REGB1
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
501 if (UNTAG_Bool(REGB1
)) {
502 REGB1
= TAG_Bool(false);
505 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[5])(fra
.me
.REG
[5], NIT_NULL
);
509 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
510 if (UNTAG_Bool(REGB0
)) {
511 CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[5]);
513 /* ./analysis//reachable_from_init_method_analysis_impl.nit:109 */
514 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
515 fra
.me
.REG
[4] = CALL_metamodel___partial_order___PartialOrderElement___smallers(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
516 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[4])(fra
.me
.REG
[4], (&(fra
.me
)), ((fun_t
)OC_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode_2
));
518 /* ./analysis//reachable_from_init_method_analysis_impl.nit:115 */
519 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*/;
520 if (UNTAG_Bool(REGB0
)) {
521 /* ./analysis//reachable_from_init_method_analysis_impl.nit:116 */
522 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
523 if (UNTAG_Bool(REGB0
)) {
524 nit_abort("Reciever is null", NULL
, LOCATE_analysis___reachable_from_init_method_analysis_impl
, 116);
526 fra
.me
.REG
[5] = CALL_icode___icode_base___ICheckInstance___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
527 /* ./analysis//reachable_from_init_method_analysis_impl.nit:117 */
528 fra
.me
.REG
[4] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
529 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
530 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[4]);
531 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
532 /* ./analysis//reachable_from_init_method_analysis_impl.nit:118 */
533 fra
.me
.REG
[4] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
534 /* ./analysis//reachable_from_init_method_analysis_impl.nit:119 */
535 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
536 if (UNTAG_Bool(REGB0
)) {
538 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
539 if (UNTAG_Bool(REGB1
)) {
540 REGB1
= TAG_Bool(false);
543 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
547 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
548 if (UNTAG_Bool(REGB0
)) {
549 CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[4]);
552 /* ./analysis//reachable_from_init_method_analysis_impl.nit:120 */
553 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*/;
554 if (UNTAG_Bool(REGB0
)) {
555 /* ./analysis//reachable_from_init_method_analysis_impl.nit:121 */
556 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
557 if (UNTAG_Bool(REGB0
)) {
558 nit_abort("Reciever is null", NULL
, LOCATE_analysis___reachable_from_init_method_analysis_impl
, 121);
560 fra
.me
.REG
[3] = CALL_icode___icode_base___IInitAttributes___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
561 /* ./analysis//reachable_from_init_method_analysis_impl.nit:122 */
562 fra
.me
.REG
[4] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___program(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
563 fra
.me
.REG
[4] = CALL_program___Program___main_module(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
564 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
565 fra
.me
.REG
[4] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
566 /* ./analysis//reachable_from_init_method_analysis_impl.nit:123 */
567 fra
.me
.REG
[4] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
568 /* ./analysis//reachable_from_init_method_analysis_impl.nit:124 */
569 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
570 if (UNTAG_Bool(REGB0
)) {
572 REGB1
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
573 if (UNTAG_Bool(REGB1
)) {
574 REGB1
= TAG_Bool(false);
577 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], NIT_NULL
);
581 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
582 if (UNTAG_Bool(REGB0
)) {
583 CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[4]);
591 /* ./analysis//reachable_from_init_method_analysis_impl.nit:126 */
592 CALL_SUPER_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
593 stack_frame_head
= fra
.me
.prev
;
596 void OC_analysis___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
){
597 struct {struct stack_frame_t me
;} fra
;
602 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
603 fra
.me
.file
= LOCATE_analysis___reachable_from_init_method_analysis_impl
;
605 fra
.me
.meth
= LOCATE_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode
;
606 fra
.me
.has_broke
= 0;
608 fra
.me
.nitni_local_ref_head
= NULL
;
609 fra
.me
.REG
[0] = NIT_NULL
;
610 fra
.me
.closure_ctx
= closctx_param
;
611 fra
.me
.closure_funs
= CREG
;
614 /* ./analysis//reachable_from_init_method_analysis_impl.nit:99 */
615 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
616 if (UNTAG_Bool(REGB0
)) {
617 /* ./analysis//reachable_from_init_method_analysis_impl.nit:100 */
618 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
619 /* ./analysis//reachable_from_init_method_analysis_impl.nit:101 */
620 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
621 if (UNTAG_Bool(REGB0
)) {
623 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
624 if (UNTAG_Bool(REGB1
)) {
625 REGB1
= TAG_Bool(false);
628 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
632 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
633 if (UNTAG_Bool(REGB0
)) {
634 CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
637 stack_frame_head
= fra
.me
.prev
;
640 void OC_analysis___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
){
641 struct {struct stack_frame_t me
;} fra
;
646 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
647 fra
.me
.file
= LOCATE_analysis___reachable_from_init_method_analysis_impl
;
649 fra
.me
.meth
= LOCATE_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode
;
650 fra
.me
.has_broke
= 0;
652 fra
.me
.nitni_local_ref_head
= NULL
;
653 fra
.me
.REG
[0] = NIT_NULL
;
654 fra
.me
.closure_ctx
= closctx_param
;
655 fra
.me
.closure_funs
= CREG
;
658 /* ./analysis//reachable_from_init_method_analysis_impl.nit:110 */
659 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
660 if (UNTAG_Bool(REGB0
)) {
661 /* ./analysis//reachable_from_init_method_analysis_impl.nit:111 */
662 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
663 closctx
->REG
[5] = fra
.me
.REG
[0];
664 /* ./analysis//reachable_from_init_method_analysis_impl.nit:112 */
665 REGB0
= TAG_Bool(closctx
->REG
[5]==NIT_NULL
);
666 if (UNTAG_Bool(REGB0
)) {
668 REGB1
= TAG_Bool(closctx
->REG
[5]==NIT_NULL
);
669 if (UNTAG_Bool(REGB1
)) {
670 REGB1
= TAG_Bool(false);
673 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[5])(closctx
->REG
[5], NIT_NULL
);
677 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
678 if (UNTAG_Bool(REGB0
)) {
679 CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call(closctx
->REG
[2])(closctx
->REG
[2], closctx
->REG
[5]);
682 stack_frame_head
= fra
.me
.prev
;