update NOTICE and LICENSE
[nit.git] / c_src / reachable_as_init_impl._sep.c
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;
5 val_t REGB0;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_reachable_as_init_impl;
9 fra.me.line = 24;
10 fra.me.meth = LOCATE_reachable_as_init_impl___ReachableAsInitBuilder___context;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 1;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[0] = p0;
15 /* ./analysis//reachable_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)) {
18 } else {
19 nit_abort("Uninitialized attribute %s", "_context", LOCATE_reachable_as_init_impl, 24);
20 }
21 fra.me.REG[0] = ATTR_reachable_as_init_impl___ReachableAsInitBuilder____context(fra.me.REG[0]);
22 stack_frame_head = fra.me.prev;
23 return fra.me.REG[0];
24 }
25 val_t reachable_as_init_impl___ReachableAsInitBuilder___program(val_t p0){
26 struct {struct stack_frame_t me;} fra;
27 val_t REGB0;
28 val_t tmp;
29 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
30 fra.me.file = LOCATE_reachable_as_init_impl;
31 fra.me.line = 25;
32 fra.me.meth = LOCATE_reachable_as_init_impl___ReachableAsInitBuilder___program;
33 fra.me.has_broke = 0;
34 fra.me.REG_size = 1;
35 fra.me.REG[0] = NIT_NULL;
36 fra.me.REG[0] = p0;
37 /* ./analysis//reachable_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)) {
40 } else {
41 nit_abort("Uninitialized attribute %s", "_program", LOCATE_reachable_as_init_impl, 25);
42 }
43 fra.me.REG[0] = ATTR_reachable_as_init_impl___ReachableAsInitBuilder____program(fra.me.REG[0]);
44 stack_frame_head = fra.me.prev;
45 return fra.me.REG[0];
46 }
47 void reachable_as_init_impl___ReachableAsInitBuilder___work(val_t p0){
48 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
49 val_t tmp;
50 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
51 fra.me.file = LOCATE_reachable_as_init_impl;
52 fra.me.line = 27;
53 fra.me.meth = LOCATE_reachable_as_init_impl___ReachableAsInitBuilder___work;
54 fra.me.has_broke = 0;
55 fra.me.REG_size = 2;
56 fra.me.REG[0] = NIT_NULL;
57 fra.me.REG[1] = NIT_NULL;
58 fra.me.REG[0] = p0;
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;
63 return;
64 }
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;
67 val_t REGB0;
68 val_t tmp;
69 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
70 fra.me.file = LOCATE_reachable_as_init_impl;
71 fra.me.line = 28;
72 fra.me.meth = LOCATE_reachable_as_init_impl___ReachableAsInitBuilder___work;
73 fra.me.has_broke = 0;
74 fra.me.REG_size = 2;
75 fra.me.REG[0] = NIT_NULL;
76 fra.me.REG[1] = NIT_NULL;
77 fra.me.REG[0] = p0;
78 fra.me.REG[1] = p1;
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);
85 }
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]);
92 }
93 stack_frame_head = fra.me.prev;
94 return;
95 }
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;
99 val_t tmp;
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;
103 fra.me.line = 36;
104 fra.me.meth = LOCATE_reachable_as_init_impl___ReachableAsInitBuilder___init;
105 fra.me.has_broke = 0;
106 fra.me.REG_size = 2;
107 fra.me.REG[0] = NIT_NULL;
108 fra.me.REG[1] = NIT_NULL;
109 fra.me.REG[0] = p0;
110 fra.me.REG[1] = p1;
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;
115 return;
116 }
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;
119 val_t REGB0;
120 val_t REGB1;
121 val_t tmp;
122 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
123 fra.me.file = LOCATE_reachable_as_init_impl;
124 fra.me.line = 47;
125 fra.me.meth = LOCATE_reachable_as_init_impl___ReachableAsInitAnalysisImpl___is_method_reachable_as_init;
126 fra.me.has_broke = 0;
127 fra.me.REG_size = 4;
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;
132 fra.me.REG[0] = p0;
133 fra.me.REG[1] = p1;
134 fra.me.REG[2] = p2;
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)) {
138 } else {
139 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl, 48);
140 }
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)) {
146 } else {
147 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl, 48);
148 }
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);
154 }
155 REGB0 = CALL_abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
156 goto label1;
157 }
158 /* ./analysis//reachable_as_init_impl.nit:49 */
159 REGB1 = TAG_Bool(false);
160 REGB0 = REGB1;
161 goto label1;
162 label1: while(0);
163 stack_frame_head = fra.me.prev;
164 return REGB0;
165 }
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;
169 val_t tmp;
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;
173 fra.me.line = 52;
174 fra.me.meth = LOCATE_reachable_as_init_impl___ReachableAsInitAnalysisImpl___init;
175 fra.me.has_broke = 0;
176 fra.me.REG_size = 1;
177 fra.me.REG[0] = NIT_NULL;
178 fra.me.REG[0] = p0;
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;
183 return;
184 }
185 val_t reachable_as_init_impl___RAIVisitor___builder(val_t p0){
186 struct {struct stack_frame_t me;} fra;
187 val_t REGB0;
188 val_t tmp;
189 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
190 fra.me.file = LOCATE_reachable_as_init_impl;
191 fra.me.line = 57;
192 fra.me.meth = LOCATE_reachable_as_init_impl___RAIVisitor___builder;
193 fra.me.has_broke = 0;
194 fra.me.REG_size = 1;
195 fra.me.REG[0] = NIT_NULL;
196 fra.me.REG[0] = p0;
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)) {
200 } else {
201 nit_abort("Uninitialized attribute %s", "_builder", LOCATE_reachable_as_init_impl, 57);
202 }
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];
206 }
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;
209 val_t REGB0;
210 val_t tmp;
211 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
212 fra.me.file = LOCATE_reachable_as_init_impl;
213 fra.me.line = 59;
214 fra.me.meth = LOCATE_reachable_as_init_impl___RAIVisitor___visit_icode;
215 fra.me.has_broke = 0;
216 fra.me.REG_size = 7;
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;
224 fra.me.REG[0] = p0;
225 fra.me.REG[1] = p1;
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);
236 }
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);
248 }
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)) {
254 } else {
255 nit_abort("Cast failed", NULL, LOCATE_reachable_as_init_impl, 65);
256 }
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)) {
261 } else {
262 nit_abort("Assert failed", NULL, LOCATE_reachable_as_init_impl, 66);
263 }
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)) {
269 } else {
270 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl, 67);
271 }
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)) {
280 } else {
281 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl, 67);
282 }
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]);
286 }
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)) {
292 } else {
293 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl, 68);
294 }
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);
300 }
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)) {
308 } else {
309 nit_abort("Uninitialized attribute %s", "_methods", LOCATE_reachable_as_init_impl, 68);
310 }
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);
316 }
317 CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
318 }
319 }
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;
323 return;
324 }
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;
328 val_t tmp;
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;
332 fra.me.line = 73;
333 fra.me.meth = LOCATE_reachable_as_init_impl___RAIVisitor___init;
334 fra.me.has_broke = 0;
335 fra.me.REG_size = 3;
336 fra.me.REG[0] = NIT_NULL;
337 fra.me.REG[1] = NIT_NULL;
338 fra.me.REG[2] = NIT_NULL;
339 fra.me.REG[0] = p0;
340 fra.me.REG[1] = p1;
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;
348 return;
349 }