1 /* This C file is generated by NIT to compile module reachable_as_init_impl. */
2 #include "reachable_as_init_impl._sep.h"
3 val_t
reachable_as_init_impl___ReachableAsInitBuilder___context(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_reachable_as_init_impl
;
10 fra
.me
.meth
= LOCATE_reachable_as_init_impl___ReachableAsInitBuilder___context
;
13 fra
.me
.REG
[0] = NIT_NULL
;
15 /* ./analysis//reachable_as_init_impl.nit:24 */
16 REGB0
= TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitBuilder____context(fra
.me
.REG
[0])!=NIT_NULL
);
17 if (UNTAG_Bool(REGB0
)) {
19 nit_abort("Uninitialized attribute %s", "_context", LOCATE_reachable_as_init_impl
, 24);
21 fra
.me
.REG
[0] = ATTR_reachable_as_init_impl___ReachableAsInitBuilder____context(fra
.me
.REG
[0]);
22 stack_frame_head
= fra
.me
.prev
;
25 val_t
reachable_as_init_impl___ReachableAsInitBuilder___program(val_t p0
){
26 struct {struct stack_frame_t me
;} fra
;
29 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
30 fra
.me
.file
= LOCATE_reachable_as_init_impl
;
32 fra
.me
.meth
= LOCATE_reachable_as_init_impl___ReachableAsInitBuilder___program
;
35 fra
.me
.REG
[0] = NIT_NULL
;
37 /* ./analysis//reachable_as_init_impl.nit:25 */
38 REGB0
= TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitBuilder____program(fra
.me
.REG
[0])!=NIT_NULL
);
39 if (UNTAG_Bool(REGB0
)) {
41 nit_abort("Uninitialized attribute %s", "_program", LOCATE_reachable_as_init_impl
, 25);
43 fra
.me
.REG
[0] = ATTR_reachable_as_init_impl___ReachableAsInitBuilder____program(fra
.me
.REG
[0]);
44 stack_frame_head
= fra
.me
.prev
;
47 void reachable_as_init_impl___ReachableAsInitBuilder___work(val_t p0
){
48 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
50 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
51 fra
.me
.file
= LOCATE_reachable_as_init_impl
;
53 fra
.me
.meth
= LOCATE_reachable_as_init_impl___ReachableAsInitBuilder___work
;
56 fra
.me
.REG
[0] = NIT_NULL
;
57 fra
.me
.REG
[1] = NIT_NULL
;
59 /* ./analysis//reachable_as_init_impl.nit:28 */
60 fra
.me
.REG
[1] = CALL_reachable_as_init_impl___ReachableAsInitBuilder___program(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
61 CALL_program___Program___with_each_iroutines(fra
.me
.REG
[1])(fra
.me
.REG
[1], (&(fra
.me
)), ((fun_t
)OC_reachable_as_init_impl___ReachableAsInitBuilder___work_1
));
62 stack_frame_head
= fra
.me
.prev
;
65 void OC_reachable_as_init_impl___ReachableAsInitBuilder___work_1(struct stack_frame_t
*closctx
, val_t p0
, val_t p1
){
66 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
69 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
70 fra
.me
.file
= LOCATE_reachable_as_init_impl
;
72 fra
.me
.meth
= LOCATE_reachable_as_init_impl___ReachableAsInitBuilder___work
;
75 fra
.me
.REG
[0] = NIT_NULL
;
76 fra
.me
.REG
[1] = NIT_NULL
;
79 /* ./analysis//reachable_as_init_impl.nit:29 */
80 fra
.me
.REG
[1] = CALL_reachable_as_init_impl___ReachableAsInitBuilder___program(closctx
->REG
[0])(closctx
->REG
[0]);
81 fra
.me
.REG
[1] = CALL_reachable_method_analysis___Program___rma(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
82 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
83 if (UNTAG_Bool(REGB0
)) {
84 nit_abort("Reciever is null", NULL
, LOCATE_reachable_as_init_impl
, 29);
86 REGB0
= CALL_reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
87 if (UNTAG_Bool(REGB0
)) {
88 /* ./analysis//reachable_as_init_impl.nit:30 */
89 fra
.me
.REG
[1] = NEW_RAIVisitor_reachable_as_init_impl___RAIVisitor___init(closctx
->REG
[0]);
90 /* ./analysis//reachable_as_init_impl.nit:31 */
91 CALL_icode_tools___ICodeVisitor___visit_iroutine(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
93 stack_frame_head
= fra
.me
.prev
;
96 void reachable_as_init_impl___ReachableAsInitBuilder___init(val_t p0
, val_t p1
, int* init_table
){
97 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_ReachableAsInitBuilder
].i
;
98 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
100 if (init_table
[itpos0
]) return;
101 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
102 fra
.me
.file
= LOCATE_reachable_as_init_impl
;
104 fra
.me
.meth
= LOCATE_reachable_as_init_impl___ReachableAsInitBuilder___init
;
105 fra
.me
.has_broke
= 0;
107 fra
.me
.REG
[0] = NIT_NULL
;
108 fra
.me
.REG
[1] = NIT_NULL
;
111 /* ./analysis//reachable_as_init_impl.nit:37 */
112 ATTR_reachable_as_init_impl___ReachableAsInitBuilder____program(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
113 stack_frame_head
= fra
.me
.prev
;
114 init_table
[itpos0
] = 1;
117 val_t
reachable_as_init_impl___ReachableAsInitAnalysisImpl___is_method_reachable_as_init(val_t p0
, val_t p1
, val_t p2
){
118 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
122 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
123 fra
.me
.file
= LOCATE_reachable_as_init_impl
;
125 fra
.me
.meth
= LOCATE_reachable_as_init_impl___ReachableAsInitAnalysisImpl___is_method_reachable_as_init
;
126 fra
.me
.has_broke
= 0;
128 fra
.me
.REG
[0] = NIT_NULL
;
129 fra
.me
.REG
[1] = NIT_NULL
;
130 fra
.me
.REG
[2] = NIT_NULL
;
131 fra
.me
.REG
[3] = NIT_NULL
;
135 /* ./analysis//reachable_as_init_impl.nit:48 */
136 REGB0
= TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[0])!=NIT_NULL
);
137 if (UNTAG_Bool(REGB0
)) {
139 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl
, 48);
141 fra
.me
.REG
[3] = ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[0]);
142 REGB0
= CALL_abstract_collection___MapRead___has_key(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[2]);
143 if (UNTAG_Bool(REGB0
)) {
144 REGB0
= TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[0])!=NIT_NULL
);
145 if (UNTAG_Bool(REGB0
)) {
147 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl
, 48);
149 fra
.me
.REG
[0] = ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[0]);
150 fra
.me
.REG
[2] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
151 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
152 if (UNTAG_Bool(REGB0
)) {
153 nit_abort("Reciever is null", NULL
, LOCATE_reachable_as_init_impl
, 48);
155 REGB0
= CALL_abstract_collection___Collection___has(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
158 /* ./analysis//reachable_as_init_impl.nit:49 */
159 REGB1
= TAG_Bool(false);
163 stack_frame_head
= fra
.me
.prev
;
166 void reachable_as_init_impl___ReachableAsInitAnalysisImpl___init(val_t p0
, int* init_table
){
167 int itpos1
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_ReachableAsInitAnalysisImpl
].i
;
168 struct {struct stack_frame_t me
;} fra
;
170 if (init_table
[itpos1
]) return;
171 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
172 fra
.me
.file
= LOCATE_reachable_as_init_impl
;
174 fra
.me
.meth
= LOCATE_reachable_as_init_impl___ReachableAsInitAnalysisImpl___init
;
175 fra
.me
.has_broke
= 0;
177 fra
.me
.REG
[0] = NIT_NULL
;
179 /* ./analysis//reachable_as_init_impl.nit:52 */
180 CALL_reachable_as_init___ReachableAsInitAnalysis___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
181 stack_frame_head
= fra
.me
.prev
;
182 init_table
[itpos1
] = 1;
185 val_t
reachable_as_init_impl___RAIVisitor___builder(val_t p0
){
186 struct {struct stack_frame_t me
;} fra
;
189 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
190 fra
.me
.file
= LOCATE_reachable_as_init_impl
;
192 fra
.me
.meth
= LOCATE_reachable_as_init_impl___RAIVisitor___builder
;
193 fra
.me
.has_broke
= 0;
195 fra
.me
.REG
[0] = NIT_NULL
;
197 /* ./analysis//reachable_as_init_impl.nit:57 */
198 REGB0
= TAG_Bool(ATTR_reachable_as_init_impl___RAIVisitor____builder(fra
.me
.REG
[0])!=NIT_NULL
);
199 if (UNTAG_Bool(REGB0
)) {
201 nit_abort("Uninitialized attribute %s", "_builder", LOCATE_reachable_as_init_impl
, 57);
203 fra
.me
.REG
[0] = ATTR_reachable_as_init_impl___RAIVisitor____builder(fra
.me
.REG
[0]);
204 stack_frame_head
= fra
.me
.prev
;
205 return fra
.me
.REG
[0];
207 void reachable_as_init_impl___RAIVisitor___visit_icode(val_t p0
, val_t p1
){
208 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
211 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
212 fra
.me
.file
= LOCATE_reachable_as_init_impl
;
214 fra
.me
.meth
= LOCATE_reachable_as_init_impl___RAIVisitor___visit_icode
;
215 fra
.me
.has_broke
= 0;
217 fra
.me
.REG
[0] = NIT_NULL
;
218 fra
.me
.REG
[1] = NIT_NULL
;
219 fra
.me
.REG
[2] = NIT_NULL
;
220 fra
.me
.REG
[3] = NIT_NULL
;
221 fra
.me
.REG
[4] = NIT_NULL
;
222 fra
.me
.REG
[5] = NIT_NULL
;
223 fra
.me
.REG
[6] = NIT_NULL
;
226 /* ./analysis//reachable_as_init_impl.nit:59 */
227 fra
.me
.REG
[2] = fra
.me
.REG
[0];
228 fra
.me
.REG
[3] = fra
.me
.REG
[1];
229 /* ./analysis//reachable_as_init_impl.nit:61 */
230 REGB0
= TAG_Bool((fra
.me
.REG
[3]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[3], COLOR_INew
, ID_INew
)) /*cast INew*/;
231 if (UNTAG_Bool(REGB0
)) {
232 /* ./analysis//reachable_as_init_impl.nit:63 */
233 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
234 if (UNTAG_Bool(REGB0
)) {
235 nit_abort("Reciever is null", NULL
, LOCATE_reachable_as_init_impl
, 63);
237 fra
.me
.REG
[4] = CALL_icode_base___INew___stype(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
238 /* ./analysis//reachable_as_init_impl.nit:64 */
239 fra
.me
.REG
[5] = CALL_reachable_as_init_impl___RAIVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
240 fra
.me
.REG
[5] = CALL_reachable_as_init_impl___ReachableAsInitBuilder___program(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
241 fra
.me
.REG
[5] = CALL_program___Program___main_module(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
242 fra
.me
.REG
[5] = CALL_static_type___MMType___for_module(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
243 fra
.me
.REG
[5] = CALL_static_type___MMType___local_class(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
244 /* ./analysis//reachable_as_init_impl.nit:65 */
245 REGB0
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
246 if (UNTAG_Bool(REGB0
)) {
247 nit_abort("Reciever is null", NULL
, LOCATE_reachable_as_init_impl
, 65);
249 fra
.me
.REG
[3] = CALL_icode_base___IAbsCall___property(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
250 fra
.me
.REG
[3] = CALL_abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
251 fra
.me
.REG
[3] = CALL_abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[3]);
252 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[3], COLOR_MMMethod
, ID_MMMethod
)) /*cast MMMethod*/;
253 if (UNTAG_Bool(REGB0
)) {
255 nit_abort("Cast failed", NULL
, LOCATE_reachable_as_init_impl
, 65);
257 /* ./analysis//reachable_as_init_impl.nit:66 */
258 fra
.me
.REG
[4] = CALL_abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
259 REGB0
= CALL_abstractmetamodel___MMGlobalProperty___is_init(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
260 if (UNTAG_Bool(REGB0
)) {
262 nit_abort("Assert failed", NULL
, LOCATE_reachable_as_init_impl
, 66);
264 /* ./analysis//reachable_as_init_impl.nit:67 */
265 fra
.me
.REG
[4] = CALL_reachable_as_init_impl___RAIVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
266 fra
.me
.REG
[4] = CALL_reachable_as_init_impl___ReachableAsInitBuilder___context(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
267 REGB0
= TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[4])!=NIT_NULL
);
268 if (UNTAG_Bool(REGB0
)) {
270 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl
, 67);
272 fra
.me
.REG
[4] = ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[4]);
273 REGB0
= CALL_abstract_collection___MapRead___has_key(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
274 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
275 if (UNTAG_Bool(REGB0
)) {
276 fra
.me
.REG
[4] = CALL_reachable_as_init_impl___RAIVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
277 fra
.me
.REG
[4] = CALL_reachable_as_init_impl___ReachableAsInitBuilder___context(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
278 REGB0
= TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[4])!=NIT_NULL
);
279 if (UNTAG_Bool(REGB0
)) {
281 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl
, 67);
283 fra
.me
.REG
[4] = ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[4]);
284 fra
.me
.REG
[6] = NEW_List_list___List___init();
285 CALL_abstract_collection___Map_____braeq(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5], fra
.me
.REG
[6]);
287 /* ./analysis//reachable_as_init_impl.nit:68 */
288 fra
.me
.REG
[6] = CALL_reachable_as_init_impl___RAIVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
289 fra
.me
.REG
[6] = CALL_reachable_as_init_impl___ReachableAsInitBuilder___context(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
290 REGB0
= TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[6])!=NIT_NULL
);
291 if (UNTAG_Bool(REGB0
)) {
293 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl
, 68);
295 fra
.me
.REG
[6] = ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[6]);
296 fra
.me
.REG
[6] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[5]);
297 REGB0
= TAG_Bool(fra
.me
.REG
[6]==NIT_NULL
);
298 if (UNTAG_Bool(REGB0
)) {
299 nit_abort("Reciever is null", NULL
, LOCATE_reachable_as_init_impl
, 68);
301 REGB0
= CALL_abstract_collection___Collection___has(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[3]);
302 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
303 if (UNTAG_Bool(REGB0
)) {
304 fra
.me
.REG
[2] = CALL_reachable_as_init_impl___RAIVisitor___builder(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
305 fra
.me
.REG
[2] = CALL_reachable_as_init_impl___ReachableAsInitBuilder___context(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
306 REGB0
= TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[2])!=NIT_NULL
);
307 if (UNTAG_Bool(REGB0
)) {
309 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl
, 68);
311 fra
.me
.REG
[2] = ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra
.me
.REG
[2]);
312 fra
.me
.REG
[5] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[5]);
313 REGB0
= TAG_Bool(fra
.me
.REG
[5]==NIT_NULL
);
314 if (UNTAG_Bool(REGB0
)) {
315 nit_abort("Reciever is null", NULL
, LOCATE_reachable_as_init_impl
, 68);
317 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[3]);
320 /* ./analysis//reachable_as_init_impl.nit:70 */
321 CALL_SUPER_reachable_as_init_impl___RAIVisitor___visit_icode(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
322 stack_frame_head
= fra
.me
.prev
;
325 void reachable_as_init_impl___RAIVisitor___init(val_t p0
, val_t p1
, int* init_table
){
326 int itpos2
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_RAIVisitor
].i
;
327 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
329 if (init_table
[itpos2
]) return;
330 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
331 fra
.me
.file
= LOCATE_reachable_as_init_impl
;
333 fra
.me
.meth
= LOCATE_reachable_as_init_impl___RAIVisitor___init
;
334 fra
.me
.has_broke
= 0;
336 fra
.me
.REG
[0] = NIT_NULL
;
337 fra
.me
.REG
[1] = NIT_NULL
;
338 fra
.me
.REG
[2] = NIT_NULL
;
341 /* ./analysis//reachable_as_init_impl.nit:73 */
342 fra
.me
.REG
[2] = fra
.me
.REG
[0];
343 CALL_icode_tools___ICodeVisitor___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], init_table
);
344 /* ./analysis//reachable_as_init_impl.nit:75 */
345 ATTR_reachable_as_init_impl___RAIVisitor____builder(fra
.me
.REG
[2]) = fra
.me
.REG
[1];
346 stack_frame_head
= fra
.me
.prev
;
347 init_table
[itpos2
] = 1;