layout_builders: merged CLTypeLayoutBuilder and CLClassLayoutBuilder into CLTypingLay...
[nit.git] / c_src / global___reachable_as_init._sep.c
1 /* This C file is generated by NIT to compile module global___reachable_as_init. */
2 #include "global___reachable_as_init._sep.h"
3 val_t global___reachable_as_init___Program___rai(val_t p0){
4 struct {struct stack_frame_t me;} fra;
5 val_t tmp;
6 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
7 fra.me.file = LOCATE_global___reachable_as_init;
8 fra.me.line = 24;
9 fra.me.meth = LOCATE_global___reachable_as_init___Program___rai;
10 fra.me.has_broke = 0;
11 fra.me.REG_size = 1;
12 fra.me.nitni_local_ref_head = NULL;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[0] = p0;
15 /* global/reachable_as_init.nit:24 */
16 fra.me.REG[0] = ATTR_global___reachable_as_init___Program____rai(fra.me.REG[0]);
17 stack_frame_head = fra.me.prev;
18 return fra.me.REG[0];
19 }
20 void global___reachable_as_init___Program___rai__eq(val_t p0, val_t p1){
21 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
22 val_t tmp;
23 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
24 fra.me.file = LOCATE_global___reachable_as_init;
25 fra.me.line = 24;
26 fra.me.meth = LOCATE_global___reachable_as_init___Program___rai__eq;
27 fra.me.has_broke = 0;
28 fra.me.REG_size = 2;
29 fra.me.nitni_local_ref_head = NULL;
30 fra.me.REG[0] = NIT_NULL;
31 fra.me.REG[1] = NIT_NULL;
32 fra.me.REG[0] = p0;
33 fra.me.REG[1] = p1;
34 /* global/reachable_as_init.nit:24 */
35 ATTR_global___reachable_as_init___Program____rai(fra.me.REG[0]) = fra.me.REG[1];
36 stack_frame_head = fra.me.prev;
37 return;
38 }
39 void global___reachable_as_init___Program___dump_reachable_as_init_methods(val_t p0, val_t p1){
40 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
41 val_t REGB0;
42 val_t tmp;
43 static val_t once_value_1; /* Once value */
44 static val_t once_value_2; /* Once value */
45 static val_t once_value_3; /* Once value */
46 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
47 fra.me.file = LOCATE_global___reachable_as_init;
48 fra.me.line = 27;
49 fra.me.meth = LOCATE_global___reachable_as_init___Program___dump_reachable_as_init_methods;
50 fra.me.has_broke = 0;
51 fra.me.REG_size = 4;
52 fra.me.nitni_local_ref_head = NULL;
53 fra.me.REG[0] = NIT_NULL;
54 fra.me.REG[1] = NIT_NULL;
55 fra.me.REG[2] = NIT_NULL;
56 fra.me.REG[3] = NIT_NULL;
57 fra.me.REG[0] = p0;
58 fra.me.REG[1] = p1;
59 /* global/reachable_as_init.nit:29 */
60 REGB0 = TAG_Int(5);
61 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
62 if (!once_value_1) {
63 fra.me.REG[3] = BOX_NativeString("");
64 REGB0 = TAG_Int(0);
65 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
66 once_value_1 = fra.me.REG[3];
67 register_static_object(&once_value_1);
68 } else fra.me.REG[3] = once_value_1;
69 fra.me.REG[3] = fra.me.REG[3];
70 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
71 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
72 if (!once_value_2) {
73 fra.me.REG[1] = BOX_NativeString("/");
74 REGB0 = TAG_Int(1);
75 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
76 once_value_2 = fra.me.REG[1];
77 register_static_object(&once_value_2);
78 } else fra.me.REG[1] = once_value_2;
79 fra.me.REG[1] = fra.me.REG[1];
80 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
81 fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
82 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[1])(fra.me.REG[1]);
83 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
84 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
85 if (!once_value_3) {
86 fra.me.REG[1] = BOX_NativeString(".reachable_methods_as_init.log");
87 REGB0 = TAG_Int(30);
88 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
89 once_value_3 = fra.me.REG[1];
90 register_static_object(&once_value_3);
91 } else fra.me.REG[1] = once_value_3;
92 fra.me.REG[1] = fra.me.REG[1];
93 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
94 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
95 fra.me.REG[2] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[2]);
96 CALL_program___Program___with_each_live_local_classes(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_global___reachable_as_init___Program___dump_reachable_as_init_methods_4));
97 /* global/reachable_as_init.nit:40 */
98 CALL_standard___stream___IOS___close(fra.me.REG[2])(fra.me.REG[2]);
99 stack_frame_head = fra.me.prev;
100 return;
101 }
102 void OC_global___reachable_as_init___Program___dump_reachable_as_init_methods_4(struct stack_frame_t *closctx, val_t p0){
103 struct {struct stack_frame_t me;} fra;
104 val_t tmp;
105 /* global/reachable_as_init.nit:30 */
106 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
107 fra.me.file = LOCATE_global___reachable_as_init;
108 fra.me.line = 30;
109 fra.me.meth = LOCATE_global___reachable_as_init___Program___dump_reachable_as_init_methods;
110 fra.me.has_broke = 0;
111 fra.me.REG_size = 1;
112 fra.me.nitni_local_ref_head = NULL;
113 fra.me.REG[0] = NIT_NULL;
114 fra.me.REG[0] = p0;
115 closctx->REG[1] = fra.me.REG[0];
116 /* global/reachable_as_init.nit:31 */
117 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[1])(closctx->REG[1]);
118 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_global___reachable_as_init___Program___dump_reachable_as_init_methods_5));
119 stack_frame_head = fra.me.prev;
120 return;
121 }
122 void OC_global___reachable_as_init___Program___dump_reachable_as_init_methods_5(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
123 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
124 val_t REGB0;
125 fun_t CREG[1];
126 val_t tmp;
127 static val_t once_value_7; /* Once value */
128 static val_t once_value_8; /* Once value */
129 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
130 fra.me.file = LOCATE_global___reachable_as_init;
131 fra.me.line = 0;
132 fra.me.meth = LOCATE_global___reachable_as_init___Program___dump_reachable_as_init_methods;
133 fra.me.has_broke = 0;
134 fra.me.REG_size = 3;
135 fra.me.nitni_local_ref_head = NULL;
136 fra.me.REG[0] = NIT_NULL;
137 fra.me.REG[1] = NIT_NULL;
138 fra.me.REG[2] = NIT_NULL;
139 fra.me.closure_ctx = closctx_param;
140 fra.me.closure_funs = CREG;
141 fra.me.REG[0] = p0;
142 CREG[0] = clos_fun0;
143 /* global/reachable_as_init.nit:32 */
144 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
145 /* global/reachable_as_init.nit:33 */
146 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
147 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[1])(fra.me.REG[1], closctx->REG[1]);
148 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
149 if (UNTAG_Bool(REGB0)) {
150 goto label6;
151 }
152 /* global/reachable_as_init.nit:34 */
153 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
154 if (UNTAG_Bool(REGB0)) {
155 } else {
156 nit_abort("Assert failed", NULL, LOCATE_global___reachable_as_init, 34);
157 }
158 /* global/reachable_as_init.nit:35 */
159 fra.me.REG[1] = CALL_global___reachable_as_init___Program___rai(closctx->REG[0])(closctx->REG[0]);
160 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
161 if (UNTAG_Bool(REGB0)) {
162 nit_abort("Reciever is null", NULL, LOCATE_global___reachable_as_init, 35);
163 }
164 REGB0 = CALL_global___reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], closctx->REG[1]);
165 if (UNTAG_Bool(REGB0)) {
166 /* global/reachable_as_init.nit:36 */
167 REGB0 = TAG_Int(3);
168 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
169 if (!once_value_7) {
170 fra.me.REG[2] = BOX_NativeString("");
171 REGB0 = TAG_Int(0);
172 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
173 once_value_7 = fra.me.REG[2];
174 register_static_object(&once_value_7);
175 } else fra.me.REG[2] = once_value_7;
176 fra.me.REG[2] = fra.me.REG[2];
177 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
178 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[0])(fra.me.REG[0]);
179 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
180 if (!once_value_8) {
181 fra.me.REG[0] = BOX_NativeString("\n");
182 REGB0 = TAG_Int(1);
183 fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
184 once_value_8 = fra.me.REG[0];
185 register_static_object(&once_value_8);
186 } else fra.me.REG[0] = once_value_8;
187 fra.me.REG[0] = fra.me.REG[0];
188 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
189 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
190 CALL_standard___stream___OStream___write(closctx->REG[2])(closctx->REG[2], fra.me.REG[1]);
191 }
192 label6: while(0);
193 stack_frame_head = fra.me.prev;
194 return;
195 }
196 val_t global___reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init(val_t p0, val_t p1, val_t p2){
197 struct {struct stack_frame_t me;} fra;
198 val_t tmp;
199 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
200 fra.me.file = LOCATE_global___reachable_as_init;
201 fra.me.line = 49;
202 fra.me.meth = LOCATE_global___reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init;
203 fra.me.has_broke = 0;
204 fra.me.REG_size = 0;
205 fra.me.nitni_local_ref_head = NULL;
206 /* global/reachable_as_init.nit:49 */
207 nit_abort("Deferred method called", NULL, LOCATE_global___reachable_as_init, 49);
208 stack_frame_head = fra.me.prev;
209 return NIT_NULL;
210 }
211 val_t global___reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init(val_t p0, val_t p1, val_t p2){
212 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
213 val_t REGB0;
214 val_t REGB1;
215 val_t tmp;
216 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
217 fra.me.file = LOCATE_global___reachable_as_init;
218 fra.me.line = 55;
219 fra.me.meth = LOCATE_global___reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init;
220 fra.me.has_broke = 0;
221 fra.me.REG_size = 3;
222 fra.me.nitni_local_ref_head = NULL;
223 fra.me.REG[0] = NIT_NULL;
224 fra.me.REG[1] = NIT_NULL;
225 fra.me.REG[2] = NIT_NULL;
226 fra.me.REG[0] = p0;
227 fra.me.REG[1] = p1;
228 fra.me.REG[2] = p2;
229 /* global/reachable_as_init.nit:56 */
230 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
231 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
232 if (UNTAG_Bool(REGB0)) {
233 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
234 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
235 } else {
236 REGB1 = TAG_Bool(false);
237 REGB0 = REGB1;
238 }
239 if (UNTAG_Bool(REGB0)) {
240 REGB0 = TAG_Bool(true);
241 goto label1;
242 }
243 /* global/reachable_as_init.nit:57 */
244 REGB1 = TAG_Bool(false);
245 REGB0 = REGB1;
246 goto label1;
247 label1: while(0);
248 stack_frame_head = fra.me.prev;
249 return REGB0;
250 }
251 void global___reachable_as_init___DefaultReachableAsInitAnalysis___init(val_t p0, int* init_table){
252 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_global___reachable_as_init___DefaultReachableAsInitAnalysis].i;
253 struct {struct stack_frame_t me;} fra;
254 val_t tmp;
255 if (init_table[itpos0]) return;
256 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
257 fra.me.file = LOCATE_global___reachable_as_init;
258 fra.me.line = 60;
259 fra.me.meth = LOCATE_global___reachable_as_init___DefaultReachableAsInitAnalysis___init;
260 fra.me.has_broke = 0;
261 fra.me.REG_size = 1;
262 fra.me.nitni_local_ref_head = NULL;
263 fra.me.REG[0] = NIT_NULL;
264 fra.me.REG[0] = p0;
265 stack_frame_head = fra.me.prev;
266 init_table[itpos0] = 1;
267 return;
268 }