c_src: update to have intern args
[nit.git] / c_src / program._sep.c
1 /* This C file is generated by NIT to compile module program. */
2 #include "program._sep.h"
3 static const char LOCATE_program___ToolContext___global[] = "program::ToolContext::global";
4 val_t program___ToolContext___global(val_t p0){
5 struct {struct stack_frame_t me;} fra;
6 val_t REGB0;
7 val_t tmp;
8 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
9 fra.me.file = LOCATE_program;
10 fra.me.line = 26;
11 fra.me.meth = LOCATE_program___ToolContext___global;
12 fra.me.has_broke = 0;
13 fra.me.REG_size = 1;
14 fra.me.nitni_local_ref_head = NULL;
15 fra.me.REG[0] = NIT_NULL;
16 fra.me.REG[0] = p0;
17 /* program.nit:26 */
18 REGB0 = TAG_Bool(ATTR_program___ToolContext____global(fra.me.REG[0])!=NIT_NULL);
19 if (UNTAG_Bool(REGB0)) {
20 } else {
21 nit_abort("Uninitialized attribute %s", "_global", LOCATE_program, 26);
22 }
23 REGB0 = ATTR_program___ToolContext____global(fra.me.REG[0]);
24 stack_frame_head = fra.me.prev;
25 return REGB0;
26 }
27 static const char LOCATE_program___ToolContext___global__eq[] = "program::ToolContext::global=";
28 void program___ToolContext___global__eq(val_t p0, val_t p1){
29 struct {struct stack_frame_t me;} fra;
30 val_t REGB0;
31 val_t tmp;
32 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
33 fra.me.file = LOCATE_program;
34 fra.me.line = 26;
35 fra.me.meth = LOCATE_program___ToolContext___global__eq;
36 fra.me.has_broke = 0;
37 fra.me.REG_size = 1;
38 fra.me.nitni_local_ref_head = NULL;
39 fra.me.REG[0] = NIT_NULL;
40 fra.me.REG[0] = p0;
41 REGB0 = p1;
42 /* program.nit:26 */
43 ATTR_program___ToolContext____global(fra.me.REG[0]) = REGB0;
44 stack_frame_head = fra.me.prev;
45 return;
46 }
47 static const char LOCATE_program___ToolContext___use_SFT_optimization__eq[] = "program::ToolContext::use_SFT_optimization=";
48 void program___ToolContext___use_SFT_optimization__eq(val_t p0, val_t p1){
49 struct {struct stack_frame_t me;} fra;
50 val_t REGB0;
51 val_t tmp;
52 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
53 fra.me.file = LOCATE_program;
54 fra.me.line = 27;
55 fra.me.meth = LOCATE_program___ToolContext___use_SFT_optimization__eq;
56 fra.me.has_broke = 0;
57 fra.me.REG_size = 1;
58 fra.me.nitni_local_ref_head = NULL;
59 fra.me.REG[0] = NIT_NULL;
60 fra.me.REG[0] = p0;
61 REGB0 = p1;
62 /* program.nit:27 */
63 ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0]) = REGB0;
64 stack_frame_head = fra.me.prev;
65 return;
66 }
67 static const char LOCATE_program___ToolContext___use_SFT_optimization[] = "program::ToolContext::use_SFT_optimization";
68 val_t program___ToolContext___use_SFT_optimization(val_t p0){
69 struct {struct stack_frame_t me;} fra;
70 val_t REGB0;
71 val_t REGB1;
72 val_t tmp;
73 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
74 fra.me.file = LOCATE_program;
75 fra.me.line = 29;
76 fra.me.meth = LOCATE_program___ToolContext___use_SFT_optimization;
77 fra.me.has_broke = 0;
78 fra.me.REG_size = 1;
79 fra.me.nitni_local_ref_head = NULL;
80 fra.me.REG[0] = NIT_NULL;
81 fra.me.REG[0] = p0;
82 /* program.nit:31 */
83 REGB0 = CALL_program___ToolContext___global(fra.me.REG[0])(fra.me.REG[0]);
84 if (UNTAG_Bool(REGB0)) {
85 REGB0 = TAG_Bool(ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0])!=NIT_NULL);
86 if (UNTAG_Bool(REGB0)) {
87 } else {
88 nit_abort("Uninitialized attribute %s", "_use_SFT_optimization", LOCATE_program, 31);
89 }
90 REGB0 = ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0]);
91 } else {
92 REGB1 = TAG_Bool(0);
93 REGB0 = REGB1;
94 }
95 goto label1;
96 label1: while(0);
97 stack_frame_head = fra.me.prev;
98 return REGB0;
99 }
100 static const char LOCATE_program___Program___tc[] = "program::Program::tc";
101 val_t program___Program___tc(val_t p0){
102 struct {struct stack_frame_t me;} fra;
103 val_t REGB0;
104 val_t tmp;
105 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
106 fra.me.file = LOCATE_program;
107 fra.me.line = 37;
108 fra.me.meth = LOCATE_program___Program___tc;
109 fra.me.has_broke = 0;
110 fra.me.REG_size = 1;
111 fra.me.nitni_local_ref_head = NULL;
112 fra.me.REG[0] = NIT_NULL;
113 fra.me.REG[0] = p0;
114 /* program.nit:37 */
115 REGB0 = TAG_Bool(ATTR_program___Program____tc(fra.me.REG[0])!=NIT_NULL);
116 if (UNTAG_Bool(REGB0)) {
117 } else {
118 nit_abort("Uninitialized attribute %s", "_tc", LOCATE_program, 37);
119 }
120 fra.me.REG[0] = ATTR_program___Program____tc(fra.me.REG[0]);
121 stack_frame_head = fra.me.prev;
122 return fra.me.REG[0];
123 }
124 static const char LOCATE_program___Program___main_module[] = "program::Program::main_module";
125 val_t program___Program___main_module(val_t p0){
126 struct {struct stack_frame_t me;} fra;
127 val_t REGB0;
128 val_t tmp;
129 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
130 fra.me.file = LOCATE_program;
131 fra.me.line = 41;
132 fra.me.meth = LOCATE_program___Program___main_module;
133 fra.me.has_broke = 0;
134 fra.me.REG_size = 1;
135 fra.me.nitni_local_ref_head = NULL;
136 fra.me.REG[0] = NIT_NULL;
137 fra.me.REG[0] = p0;
138 /* program.nit:41 */
139 REGB0 = TAG_Bool(ATTR_program___Program____main_module(fra.me.REG[0])!=NIT_NULL);
140 if (UNTAG_Bool(REGB0)) {
141 } else {
142 nit_abort("Uninitialized attribute %s", "_main_module", LOCATE_program, 41);
143 }
144 fra.me.REG[0] = ATTR_program___Program____main_module(fra.me.REG[0]);
145 stack_frame_head = fra.me.prev;
146 return fra.me.REG[0];
147 }
148 static const char LOCATE_program___Program___main_method[] = "program::Program::main_method";
149 val_t program___Program___main_method(val_t p0){
150 struct {struct stack_frame_t me;} fra;
151 val_t tmp;
152 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
153 fra.me.file = LOCATE_program;
154 fra.me.line = 44;
155 fra.me.meth = LOCATE_program___Program___main_method;
156 fra.me.has_broke = 0;
157 fra.me.REG_size = 1;
158 fra.me.nitni_local_ref_head = NULL;
159 fra.me.REG[0] = NIT_NULL;
160 fra.me.REG[0] = p0;
161 /* program.nit:44 */
162 fra.me.REG[0] = ATTR_program___Program____main_method(fra.me.REG[0]);
163 stack_frame_head = fra.me.prev;
164 return fra.me.REG[0];
165 }
166 static const char LOCATE_program___Program___main_class[] = "program::Program::main_class";
167 val_t program___Program___main_class(val_t p0){
168 struct {struct stack_frame_t me;} fra;
169 val_t tmp;
170 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
171 fra.me.file = LOCATE_program;
172 fra.me.line = 48;
173 fra.me.meth = LOCATE_program___Program___main_class;
174 fra.me.has_broke = 0;
175 fra.me.REG_size = 1;
176 fra.me.nitni_local_ref_head = NULL;
177 fra.me.REG[0] = NIT_NULL;
178 fra.me.REG[0] = p0;
179 /* program.nit:48 */
180 fra.me.REG[0] = ATTR_program___Program____main_class(fra.me.REG[0]);
181 stack_frame_head = fra.me.prev;
182 return fra.me.REG[0];
183 }
184 static const char LOCATE_program___Program___finish_processing_classes[] = "program::Program::finish_processing_classes";
185 void program___Program___finish_processing_classes(val_t p0){
186 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
187 val_t REGB0;
188 val_t REGB1;
189 val_t REGB2;
190 val_t tmp;
191 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
192 fra.me.file = LOCATE_program;
193 fra.me.line = 52;
194 fra.me.meth = LOCATE_program___Program___finish_processing_classes;
195 fra.me.has_broke = 0;
196 fra.me.REG_size = 3;
197 fra.me.nitni_local_ref_head = NULL;
198 fra.me.REG[0] = NIT_NULL;
199 fra.me.REG[1] = NIT_NULL;
200 fra.me.REG[2] = NIT_NULL;
201 fra.me.REG[0] = p0;
202 /* program.nit:55 */
203 fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
204 /* program.nit:56 */
205 fra.me.REG[0] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
206 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
207 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_program___Program___finish_processing_classes_1));
208 /* ../lib/standard/collection/array.nit:269 */
209 REGB0 = TAG_Int(0);
210 /* ../lib/standard/collection/array.nit:270 */
211 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
212 if (UNTAG_Bool(REGB1)) {
213 } else {
214 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
215 }
216 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
217 /* ../lib/standard/collection/array.nit:271 */
218 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
219 /* ../lib/standard/collection/array.nit:272 */
220 while(1) {
221 /* ../lib/standard/collection/array.nit:24 */
222 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
223 if (UNTAG_Bool(REGB1)) {
224 } else {
225 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
226 }
227 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
228 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
229 if (UNTAG_Bool(REGB2)) {
230 } else {
231 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
232 }
233 /* ../lib/standard/kernel.nit:235 */
234 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
235 /* ../lib/standard/collection/array.nit:272 */
236 if (UNTAG_Bool(REGB1)) {
237 /* ../lib/standard/collection/array.nit:273 */
238 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
239 if (UNTAG_Bool(REGB1)) {
240 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
241 }
242 /* ../lib/standard/collection/array.nit:724 */
243 fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
244 /* program.nit:62 */
245 CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra.me.REG[2])(fra.me.REG[2]);
246 /* ../lib/standard/collection/array.nit:274 */
247 REGB1 = TAG_Int(1);
248 /* ../lib/standard/kernel.nit:238 */
249 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
250 /* ../lib/standard/collection/array.nit:274 */
251 REGB0 = REGB1;
252 } else {
253 /* ../lib/standard/collection/array.nit:272 */
254 goto label2;
255 }
256 }
257 label2: while(0);
258 stack_frame_head = fra.me.prev;
259 return;
260 }
261 void OC_program___Program___finish_processing_classes_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
262 struct {struct stack_frame_t me;} fra;
263 fun_t CREG[1];
264 val_t tmp;
265 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
266 fra.me.file = LOCATE_program;
267 fra.me.line = 0;
268 fra.me.meth = LOCATE_program___Program___finish_processing_classes;
269 fra.me.has_broke = 0;
270 fra.me.REG_size = 1;
271 fra.me.nitni_local_ref_head = NULL;
272 fra.me.REG[0] = NIT_NULL;
273 fra.me.closure_ctx = closctx_param;
274 fra.me.closure_funs = CREG;
275 fra.me.REG[0] = p0;
276 CREG[0] = clos_fun0;
277 /* program.nit:57 */
278 CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[0])(fra.me.REG[0]);
279 /* program.nit:58 */
280 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
281 stack_frame_head = fra.me.prev;
282 return;
283 }
284 static const char LOCATE_program___Program___compute_main_method[] = "program::Program::compute_main_method";
285 void program___Program___compute_main_method(val_t p0){
286 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
287 val_t REGB0;
288 val_t tmp;
289 static val_t once_value_1; /* Once value */
290 static val_t once_value_2; /* Once value */
291 static val_t once_value_4; /* Once value */
292 static val_t once_value_5; /* Once value */
293 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
294 fra.me.file = LOCATE_program;
295 fra.me.line = 66;
296 fra.me.meth = LOCATE_program___Program___compute_main_method;
297 fra.me.has_broke = 0;
298 fra.me.REG_size = 3;
299 fra.me.nitni_local_ref_head = NULL;
300 fra.me.REG[0] = NIT_NULL;
301 fra.me.REG[1] = NIT_NULL;
302 fra.me.REG[2] = NIT_NULL;
303 fra.me.REG[0] = p0;
304 /* program.nit:68 */
305 if (!once_value_1) {
306 if (!once_value_2) {
307 fra.me.REG[1] = BOX_NativeString("Sys");
308 REGB0 = TAG_Int(3);
309 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
310 once_value_2 = fra.me.REG[1];
311 register_static_object(&once_value_2);
312 } else fra.me.REG[1] = once_value_2;
313 fra.me.REG[1] = fra.me.REG[1];
314 fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
315 once_value_1 = fra.me.REG[1];
316 register_static_object(&once_value_1);
317 } else fra.me.REG[1] = once_value_1;
318 fra.me.REG[1] = fra.me.REG[1];
319 /* program.nit:69 */
320 fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
321 REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
322 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
323 if (UNTAG_Bool(REGB0)) {
324 goto label3;
325 }
326 /* program.nit:70 */
327 fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
328 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
329 /* program.nit:73 */
330 if (!once_value_4) {
331 if (!once_value_5) {
332 fra.me.REG[2] = BOX_NativeString("main");
333 REGB0 = TAG_Int(4);
334 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
335 once_value_5 = fra.me.REG[2];
336 register_static_object(&once_value_5);
337 } else fra.me.REG[2] = once_value_5;
338 fra.me.REG[2] = fra.me.REG[2];
339 fra.me.REG[2] = CALL_symbol___String___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
340 once_value_4 = fra.me.REG[2];
341 register_static_object(&once_value_4);
342 } else fra.me.REG[2] = once_value_4;
343 fra.me.REG[2] = fra.me.REG[2];
344 /* program.nit:74 */
345 REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
346 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
347 if (UNTAG_Bool(REGB0)) {
348 goto label3;
349 }
350 /* program.nit:76 */
351 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
352 ATTR_program___Program____main_method(fra.me.REG[0]) = fra.me.REG[2];
353 /* program.nit:77 */
354 ATTR_program___Program____main_class(fra.me.REG[0]) = fra.me.REG[1];
355 label3: while(0);
356 stack_frame_head = fra.me.prev;
357 return;
358 }
359 static const char LOCATE_program___Program___generate_allocation_iroutines[] = "program::Program::generate_allocation_iroutines";
360 void program___Program___generate_allocation_iroutines(val_t p0){
361 struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
362 val_t tmp;
363 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
364 fra.me.file = LOCATE_program;
365 fra.me.line = 80;
366 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
367 fra.me.has_broke = 0;
368 fra.me.REG_size = 7;
369 fra.me.nitni_local_ref_head = NULL;
370 fra.me.REG[0] = NIT_NULL;
371 fra.me.REG[1] = NIT_NULL;
372 fra.me.REG[2] = NIT_NULL;
373 fra.me.REG[3] = NIT_NULL;
374 fra.me.REG[4] = NIT_NULL;
375 fra.me.REG[5] = NIT_NULL;
376 fra.me.REG[6] = NIT_NULL;
377 fra.me.REG[0] = p0;
378 /* program.nit:80 */
379 fra.me.REG[1] = fra.me.REG[0];
380 /* program.nit:83 */
381 fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[1])(fra.me.REG[1]);
382 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[2])(fra.me.REG[2]);
383 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_program___Program___generate_allocation_iroutines_1));
384 stack_frame_head = fra.me.prev;
385 return;
386 }
387 void OC_program___Program___generate_allocation_iroutines_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
388 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
389 val_t REGB0;
390 val_t REGB1;
391 val_t REGB2;
392 fun_t CREG[1];
393 val_t tmp;
394 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
395 fra.me.file = LOCATE_program;
396 fra.me.line = 0;
397 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
398 fra.me.has_broke = 0;
399 fra.me.REG_size = 4;
400 fra.me.nitni_local_ref_head = NULL;
401 fra.me.REG[0] = NIT_NULL;
402 fra.me.REG[1] = NIT_NULL;
403 fra.me.REG[2] = NIT_NULL;
404 fra.me.REG[3] = NIT_NULL;
405 fra.me.closure_ctx = closctx_param;
406 fra.me.closure_funs = CREG;
407 fra.me.REG[0] = p0;
408 CREG[0] = clos_fun0;
409 closctx->REG[2] = fra.me.REG[0];
410 /* program.nit:84 */
411 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx->REG[2])(closctx->REG[2]);
412 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[0])(fra.me.REG[0]);
413 if (UNTAG_Bool(REGB0)) {
414 REGB0 = TAG_Bool(1);
415 } else {
416 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx->REG[2])(closctx->REG[2]);
417 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[0])(fra.me.REG[0]);
418 REGB0 = REGB1;
419 }
420 if (UNTAG_Bool(REGB0)) {
421 goto label2;
422 }
423 /* program.nit:85 */
424 fra.me.REG[0] = CALL_primitive_info___MMLocalClass___primitive_info(closctx->REG[2])(closctx->REG[2]);
425 /* program.nit:86 */
426 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
427 if (UNTAG_Bool(REGB0)) {
428 } else {
429 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
430 if (UNTAG_Bool(REGB1)) {
431 REGB1 = TAG_Bool(0);
432 REGB0 = REGB1;
433 } else {
434 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
435 REGB0 = REGB1;
436 }
437 }
438 if (UNTAG_Bool(REGB0)) {
439 /* program.nit:89 */
440 fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
441 fra.me.REG[0] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[0]);
442 closctx->REG[3] = fra.me.REG[0];
443 /* program.nit:90 */
444 REGB0 = TAG_Int(1);
445 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
446 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], closctx->REG[3]);
447 closctx->REG[4] = fra.me.REG[0];
448 /* program.nit:91 */
449 fra.me.REG[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(closctx->REG[4], NIT_NULL);
450 /* program.nit:92 */
451 fra.me.REG[1] = CALL_program___Program___main_module(closctx->REG[1])(closctx->REG[1]);
452 fra.me.REG[1] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[1], fra.me.REG[0]);
453 closctx->REG[5] = fra.me.REG[1];
454 /* program.nit:94 */
455 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(closctx->REG[2])(closctx->REG[2]);
456 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___linear_extension(fra.me.REG[1])(fra.me.REG[1]);
457 fra.me.REG[1] = CALL_standard___collection___array___AbstractArrayRead___reversed(fra.me.REG[1])(fra.me.REG[1]);
458 /* ../lib/standard/collection/array.nit:269 */
459 REGB0 = TAG_Int(0);
460 /* ../lib/standard/collection/array.nit:270 */
461 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
462 if (UNTAG_Bool(REGB1)) {
463 } else {
464 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
465 }
466 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
467 /* ../lib/standard/collection/array.nit:271 */
468 fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
469 /* ../lib/standard/collection/array.nit:272 */
470 while(1) {
471 /* ../lib/standard/collection/array.nit:24 */
472 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
473 if (UNTAG_Bool(REGB1)) {
474 } else {
475 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
476 }
477 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
478 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
479 if (UNTAG_Bool(REGB2)) {
480 } else {
481 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
482 }
483 /* ../lib/standard/kernel.nit:235 */
484 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
485 /* ../lib/standard/collection/array.nit:272 */
486 if (UNTAG_Bool(REGB1)) {
487 /* ../lib/standard/collection/array.nit:273 */
488 REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
489 if (UNTAG_Bool(REGB1)) {
490 nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
491 }
492 /* ../lib/standard/collection/array.nit:724 */
493 fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
494 /* program.nit:94 */
495 closctx->REG[6] = fra.me.REG[3];
496 /* program.nit:95 */
497 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[6])(closctx->REG[6]);
498 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], closctx, ((fun_t)OC_program___Program___generate_allocation_iroutines_3));
499 /* ../lib/standard/collection/array.nit:274 */
500 REGB1 = TAG_Int(1);
501 /* ../lib/standard/kernel.nit:238 */
502 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
503 /* ../lib/standard/collection/array.nit:274 */
504 REGB0 = REGB1;
505 } else {
506 /* ../lib/standard/collection/array.nit:272 */
507 goto label5;
508 }
509 }
510 label5: while(0);
511 /* program.nit:110 */
512 CALL_program___MMLocalClass___init_var_iroutine__eq(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
513 /* program.nit:114 */
514 fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
515 fra.me.REG[0] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[0]);
516 closctx->REG[5] = fra.me.REG[0];
517 /* program.nit:115 */
518 REGB0 = TAG_Int(1);
519 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
520 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
521 /* program.nit:116 */
522 fra.me.REG[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra.me.REG[0], NIT_NULL);
523 /* program.nit:117 */
524 fra.me.REG[2] = CALL_program___Program___main_module(closctx->REG[1])(closctx->REG[1]);
525 fra.me.REG[2] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[2], fra.me.REG[0]);
526 closctx->REG[3] = fra.me.REG[2];
527 /* program.nit:118 */
528 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[2])(closctx->REG[2]);
529 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], closctx, ((fun_t)OC_program___Program___generate_allocation_iroutines_6));
530 /* program.nit:127 */
531 CALL_program___MMLocalClass___checknew_iroutine__eq(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
532 /* program.nit:130 */
533 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[2])(closctx->REG[2]);
534 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_program___Program___generate_allocation_iroutines_8));
535 }
536 label2: while(0);
537 stack_frame_head = fra.me.prev;
538 return;
539 }
540 void OC_program___Program___generate_allocation_iroutines_3(struct stack_frame_t *closctx, val_t p0){
541 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
542 val_t REGB0;
543 val_t REGB1;
544 val_t tmp;
545 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
546 fra.me.file = LOCATE_program;
547 fra.me.line = 0;
548 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
549 fra.me.has_broke = 0;
550 fra.me.REG_size = 2;
551 fra.me.nitni_local_ref_head = NULL;
552 fra.me.REG[0] = NIT_NULL;
553 fra.me.REG[1] = NIT_NULL;
554 fra.me.REG[0] = p0;
555 /* program.nit:96 */
556 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
557 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],closctx->REG[6]));
558 if (UNTAG_Bool(REGB0)) {
559 } else {
560 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[6]);
561 REGB0 = REGB1;
562 }
563 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
564 if (UNTAG_Bool(REGB0)) {
565 goto label4;
566 }
567 /* program.nit:97 */
568 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
569 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
570 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
571 if (UNTAG_Bool(REGB0)) {
572 goto label4;
573 }
574 /* program.nit:98 */
575 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
576 /* program.nit:99 */
577 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
578 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
579 if (UNTAG_Bool(REGB0)) {
580 nit_abort("Reciever is null", NULL, LOCATE_program, 99);
581 }
582 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
583 /* program.nit:100 */
584 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
585 if (UNTAG_Bool(REGB0)) {
586 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
587 if (UNTAG_Bool(REGB0)) {
588 } else {
589 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
590 if (UNTAG_Bool(REGB1)) {
591 REGB1 = TAG_Bool(0);
592 REGB0 = REGB1;
593 } else {
594 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
595 REGB0 = REGB1;
596 }
597 }
598 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
599 } else {
600 REGB1 = TAG_Bool(0);
601 REGB0 = REGB1;
602 }
603 if (UNTAG_Bool(REGB0)) {
604 /* program.nit:101 */
605 fra.me.REG[1] = CALL_icode___icode_base___MMAttribute___iroutine(fra.me.REG[0])(fra.me.REG[0]);
606 /* program.nit:102 */
607 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
608 if (UNTAG_Bool(REGB0)) {
609 } else {
610 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
611 if (UNTAG_Bool(REGB1)) {
612 REGB1 = TAG_Bool(0);
613 REGB0 = REGB1;
614 } else {
615 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
616 REGB0 = REGB1;
617 }
618 }
619 if (UNTAG_Bool(REGB0)) {
620 goto label4;
621 }
622 /* program.nit:104 */
623 fra.me.REG[1] = CALL_icode___icode_tools___ICodeBuilder___inline_routine(closctx->REG[5])(closctx->REG[5], fra.me.REG[1], closctx->REG[4], NIT_NULL);
624 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
625 if (UNTAG_Bool(REGB0)) {
626 } else {
627 nit_abort("Cast failed", NULL, LOCATE_program, 104);
628 }
629 /* program.nit:105 */
630 fra.me.REG[1] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[0], closctx->REG[3], fra.me.REG[1]);
631 CALL_icode___icode_builder___ICodeBuilder___stmt(closctx->REG[5])(closctx->REG[5], fra.me.REG[1]);
632 }
633 label4: while(0);
634 stack_frame_head = fra.me.prev;
635 return;
636 }
637 void OC_program___Program___generate_allocation_iroutines_6(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
638 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
639 val_t REGB0;
640 val_t REGB1;
641 fun_t CREG[1];
642 val_t tmp;
643 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
644 fra.me.file = LOCATE_program;
645 fra.me.line = 0;
646 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
647 fra.me.has_broke = 0;
648 fra.me.REG_size = 2;
649 fra.me.nitni_local_ref_head = NULL;
650 fra.me.REG[0] = NIT_NULL;
651 fra.me.REG[1] = NIT_NULL;
652 fra.me.closure_ctx = closctx_param;
653 fra.me.closure_funs = CREG;
654 fra.me.REG[0] = p0;
655 CREG[0] = clos_fun0;
656 /* program.nit:119 */
657 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
658 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
659 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
660 if (UNTAG_Bool(REGB0)) {
661 goto label7;
662 }
663 /* program.nit:120 */
664 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
665 /* program.nit:121 */
666 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
667 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
668 if (UNTAG_Bool(REGB0)) {
669 nit_abort("Reciever is null", NULL, LOCATE_program, 121);
670 }
671 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
672 /* program.nit:122 */
673 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
674 if (UNTAG_Bool(REGB0)) {
675 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
676 if (UNTAG_Bool(REGB0)) {
677 } else {
678 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
679 if (UNTAG_Bool(REGB1)) {
680 REGB1 = TAG_Bool(0);
681 REGB0 = REGB1;
682 } else {
683 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
684 REGB0 = REGB1;
685 }
686 }
687 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
688 } else {
689 REGB1 = TAG_Bool(0);
690 REGB0 = REGB1;
691 }
692 if (UNTAG_Bool(REGB0)) {
693 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
694 if (UNTAG_Bool(REGB0)) {
695 nit_abort("Reciever is null", NULL, LOCATE_program, 122);
696 }
697 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
698 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
699 } else {
700 REGB1 = TAG_Bool(0);
701 REGB0 = REGB1;
702 }
703 if (UNTAG_Bool(REGB0)) {
704 /* program.nit:123 */
705 CALL_icode___icode_builder___ICodeBuilder___add_attr_check(closctx->REG[3])(closctx->REG[3], fra.me.REG[0], closctx->REG[5]);
706 }
707 label7: while(0);
708 stack_frame_head = fra.me.prev;
709 return;
710 }
711 void OC_program___Program___generate_allocation_iroutines_8(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
712 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
713 val_t REGB0;
714 val_t REGB1;
715 val_t REGB2;
716 val_t REGB3;
717 fun_t CREG[1];
718 val_t tmp;
719 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
720 fra.me.file = LOCATE_program;
721 fra.me.line = 0;
722 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
723 fra.me.has_broke = 0;
724 fra.me.REG_size = 6;
725 fra.me.nitni_local_ref_head = NULL;
726 fra.me.REG[0] = NIT_NULL;
727 fra.me.REG[1] = NIT_NULL;
728 fra.me.REG[2] = NIT_NULL;
729 fra.me.REG[3] = NIT_NULL;
730 fra.me.REG[4] = NIT_NULL;
731 fra.me.REG[5] = NIT_NULL;
732 fra.me.closure_ctx = closctx_param;
733 fra.me.closure_funs = CREG;
734 fra.me.REG[0] = p0;
735 CREG[0] = clos_fun0;
736 /* program.nit:132 */
737 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
738 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
739 if (UNTAG_Bool(REGB0)) {
740 goto label9;
741 }
742 /* program.nit:133 */
743 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
744 /* program.nit:134 */
745 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
746 if (UNTAG_Bool(REGB0)) {
747 } else {
748 nit_abort("Assert failed", NULL, LOCATE_program, 134);
749 }
750 /* program.nit:136 */
751 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
752 fra.me.REG[1] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[1]);
753 /* program.nit:137 */
754 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
755 /* program.nit:138 */
756 REGB0 = TAG_Int(0);
757 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
758 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
759 if (UNTAG_Bool(REGB1)) {
760 nit_abort("Reciever is null", NULL, LOCATE_program, 138);
761 }
762 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
763 /* ../lib/standard/kernel.nit:355 */
764 while(1) {
765 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
766 if (UNTAG_Bool(REGB2)) {
767 } else {
768 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
769 }
770 /* ../lib/standard/kernel.nit:235 */
771 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
772 /* ../lib/standard/kernel.nit:355 */
773 if (UNTAG_Bool(REGB2)) {
774 /* program.nit:138 */
775 REGB2 = REGB0;
776 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
777 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
778 if (UNTAG_Bool(REGB3)) {
779 nit_abort("Reciever is null", NULL, LOCATE_program, 138);
780 }
781 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
782 fra.me.REG[3] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[3]);
783 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
784 /* ../lib/standard/kernel.nit:357 */
785 REGB2 = TAG_Int(1);
786 /* ../lib/standard/kernel.nit:238 */
787 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
788 /* ../lib/standard/kernel.nit:357 */
789 REGB0 = REGB2;
790 } else {
791 /* ../lib/standard/kernel.nit:355 */
792 goto label10;
793 }
794 }
795 label10: while(0);
796 /* program.nit:139 */
797 fra.me.REG[3] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra.me.REG[2], fra.me.REG[1]);
798 /* program.nit:140 */
799 fra.me.REG[4] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
800 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
801 if (UNTAG_Bool(REGB0)) {
802 nit_abort("Reciever is null", NULL, LOCATE_program, 140);
803 }
804 fra.me.REG[4] = CALL_icode___icode_base___IRoutine___location(fra.me.REG[4])(fra.me.REG[4]);
805 CALL_icode___icode_base___IRoutine___location__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
806 /* program.nit:141 */
807 fra.me.REG[4] = CALL_program___Program___main_module(closctx->REG[1])(closctx->REG[1]);
808 fra.me.REG[4] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[4], fra.me.REG[3]);
809 /* program.nit:143 */
810 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
811 fra.me.REG[5] = NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(fra.me.REG[5]);
812 /* program.nit:144 */
813 CALL_icode___icode_base___ICode___result__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
814 /* program.nit:145 */
815 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
816 /* program.nit:146 */
817 REGB0 = TAG_Int(1);
818 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
819 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
820 /* program.nit:147 */
821 CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
822 /* program.nit:149 */
823 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
824 fra.me.REG[2] = NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(fra.me.REG[2], fra.me.REG[1]);
825 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
826 /* program.nit:150 */
827 fra.me.REG[5] = NEW_IStaticCall_icode___icode_base___IStaticCall___init(fra.me.REG[0], fra.me.REG[5]);
828 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
829 /* program.nit:151 */
830 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
831 fra.me.REG[1] = NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(fra.me.REG[5], fra.me.REG[1]);
832 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
833 /* program.nit:153 */
834 fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[2])(closctx->REG[2]);
835 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
836 label9: while(0);
837 stack_frame_head = fra.me.prev;
838 return;
839 }
840 static const char LOCATE_program___Program___with_each_iroutines[] = "program::Program::with_each_iroutines";
841 void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
842 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
843 val_t REGB0;
844 fun_t CREG[1];
845 val_t tmp;
846 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
847 fra.me.file = LOCATE_program;
848 fra.me.line = 159;
849 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
850 fra.me.has_broke = 0;
851 fra.me.REG_size = 3;
852 fra.me.nitni_local_ref_head = NULL;
853 fra.me.REG[0] = NIT_NULL;
854 fra.me.REG[1] = NIT_NULL;
855 fra.me.REG[2] = NIT_NULL;
856 fra.me.closure_ctx = closctx_param;
857 fra.me.closure_funs = CREG;
858 fra.me.REG[0] = p0;
859 CREG[0] = clos_fun0;
860 /* program.nit:164 */
861 fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
862 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[1])(fra.me.REG[1]);
863 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
864 if (UNTAG_Bool(REGB0)) {
865 nit_abort("Reciever is null", NULL, LOCATE_program, 164);
866 }
867 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[1])(fra.me.REG[1]);
868 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_program___Program___with_each_iroutines_1));
869 switch ((&(fra.me))->has_broke) {
870 case 0: break;
871 case 1: (&(fra.me))->has_broke = 0; goto label9;
872 }
873 label9: while(0);
874 stack_frame_head = fra.me.prev;
875 return;
876 }
877 void OC_program___Program___with_each_iroutines_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
878 struct {struct stack_frame_t me;} fra;
879 fun_t CREG[1];
880 val_t tmp;
881 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
882 fra.me.file = LOCATE_program;
883 fra.me.line = 0;
884 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
885 fra.me.has_broke = 0;
886 fra.me.REG_size = 1;
887 fra.me.nitni_local_ref_head = NULL;
888 fra.me.REG[0] = NIT_NULL;
889 fra.me.closure_ctx = closctx_param;
890 fra.me.closure_funs = CREG;
891 fra.me.REG[0] = p0;
892 CREG[0] = clos_fun0;
893 closctx->REG[1] = fra.me.REG[0];
894 /* program.nit:165 */
895 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(closctx->REG[1])(closctx->REG[1]);
896 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_program___Program___with_each_iroutines_2));
897 switch (closctx->has_broke) {
898 case 0: break;
899 default: goto label8;
900 }
901 label8: while(0);
902 stack_frame_head = fra.me.prev;
903 return;
904 }
905 void OC_program___Program___with_each_iroutines_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
906 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
907 val_t REGB0;
908 val_t REGB1;
909 fun_t CREG[1];
910 val_t tmp;
911 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
912 fra.me.file = LOCATE_program;
913 fra.me.line = 0;
914 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
915 fra.me.has_broke = 0;
916 fra.me.REG_size = 2;
917 fra.me.nitni_local_ref_head = NULL;
918 fra.me.REG[0] = NIT_NULL;
919 fra.me.REG[1] = NIT_NULL;
920 fra.me.closure_ctx = closctx_param;
921 fra.me.closure_funs = CREG;
922 fra.me.REG[0] = p0;
923 CREG[0] = clos_fun0;
924 /* program.nit:166 */
925 closctx->REG[2] = NIT_NULL;
926 /* program.nit:169 */
927 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra.me.REG[0])(fra.me.REG[0]);
928 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], closctx, ((fun_t)OC_program___Program___with_each_iroutines_3));
929 switch (closctx->has_broke) {
930 case 0: break;
931 default: goto label5;
932 }
933 /* program.nit:180 */
934 fra.me.REG[1] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[0])(fra.me.REG[0]);
935 closctx->REG[2] = fra.me.REG[1];
936 /* program.nit:181 */
937 REGB0 = TAG_Bool(closctx->REG[2]==NIT_NULL);
938 if (UNTAG_Bool(REGB0)) {
939 } else {
940 REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
941 if (UNTAG_Bool(REGB1)) {
942 REGB1 = TAG_Bool(0);
943 REGB0 = REGB1;
944 } else {
945 REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
946 REGB0 = REGB1;
947 }
948 }
949 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
950 if (UNTAG_Bool(REGB0)) {
951 /* program.nit:182 */
952 ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[2], closctx->REG[1]);
953 if (closctx->closure_ctx->has_broke) {
954 closctx->has_broke = 1;
955 goto label5;
956 }
957 }
958 /* program.nit:184 */
959 fra.me.REG[1] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[0])(fra.me.REG[0]);
960 closctx->REG[2] = fra.me.REG[1];
961 /* program.nit:185 */
962 REGB0 = TAG_Bool(closctx->REG[2]==NIT_NULL);
963 if (UNTAG_Bool(REGB0)) {
964 } else {
965 REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
966 if (UNTAG_Bool(REGB1)) {
967 REGB1 = TAG_Bool(0);
968 REGB0 = REGB1;
969 } else {
970 REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
971 REGB0 = REGB1;
972 }
973 }
974 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
975 if (UNTAG_Bool(REGB0)) {
976 /* program.nit:186 */
977 ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[2], closctx->REG[1]);
978 if (closctx->closure_ctx->has_broke) {
979 closctx->has_broke = 1;
980 goto label5;
981 }
982 }
983 /* program.nit:188 */
984 fra.me.REG[0] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[0])(fra.me.REG[0]);
985 fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
986 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_program___Program___with_each_iroutines_6));
987 switch (closctx->has_broke) {
988 case 0: break;
989 default: goto label5;
990 }
991 label5: while(0);
992 stack_frame_head = fra.me.prev;
993 return;
994 }
995 void OC_program___Program___with_each_iroutines_3(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
996 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
997 val_t REGB0;
998 val_t REGB1;
999 fun_t CREG[1];
1000 val_t tmp;
1001 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1002 fra.me.file = LOCATE_program;
1003 fra.me.line = 0;
1004 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
1005 fra.me.has_broke = 0;
1006 fra.me.REG_size = 2;
1007 fra.me.nitni_local_ref_head = NULL;
1008 fra.me.REG[0] = NIT_NULL;
1009 fra.me.REG[1] = NIT_NULL;
1010 fra.me.closure_ctx = closctx_param;
1011 fra.me.closure_funs = CREG;
1012 fra.me.REG[0] = p0;
1013 CREG[0] = clos_fun0;
1014 /* program.nit:170 */
1015 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
1016 if (UNTAG_Bool(REGB0)) {
1017 /* program.nit:171 */
1018 fra.me.REG[1] = CALL_icode___icode_base___MMAttribute___iroutine(fra.me.REG[0])(fra.me.REG[0]);
1019 closctx->REG[2] = fra.me.REG[1];
1020 } else {
1021 /* program.nit:172 */
1022 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
1023 if (UNTAG_Bool(REGB0)) {
1024 /* program.nit:173 */
1025 fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
1026 closctx->REG[2] = fra.me.REG[0];
1027 }
1028 }
1029 /* program.nit:175 */
1030 REGB0 = TAG_Bool(closctx->REG[2]==NIT_NULL);
1031 if (UNTAG_Bool(REGB0)) {
1032 } else {
1033 REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
1034 if (UNTAG_Bool(REGB1)) {
1035 REGB1 = TAG_Bool(0);
1036 REGB0 = REGB1;
1037 } else {
1038 REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
1039 REGB0 = REGB1;
1040 }
1041 }
1042 if (UNTAG_Bool(REGB0)) {
1043 goto label4;
1044 }
1045 /* program.nit:176 */
1046 ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[2], closctx->REG[1]);
1047 if (closctx->closure_ctx->has_broke) {
1048 closctx->has_broke = 1;
1049 goto label4;
1050 }
1051 label4: while(0);
1052 stack_frame_head = fra.me.prev;
1053 return;
1054 }
1055 void OC_program___Program___with_each_iroutines_6(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1056 struct {struct stack_frame_t me;} fra;
1057 fun_t CREG[1];
1058 val_t tmp;
1059 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1060 fra.me.file = LOCATE_program;
1061 fra.me.line = 0;
1062 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
1063 fra.me.has_broke = 0;
1064 fra.me.REG_size = 1;
1065 fra.me.nitni_local_ref_head = NULL;
1066 fra.me.REG[0] = NIT_NULL;
1067 fra.me.closure_ctx = closctx_param;
1068 fra.me.closure_funs = CREG;
1069 fra.me.REG[0] = p0;
1070 CREG[0] = clos_fun0;
1071 /* program.nit:189 */
1072 ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0], closctx->REG[1]);
1073 if (closctx->closure_ctx->has_broke) {
1074 closctx->has_broke = 1;
1075 goto label7;
1076 }
1077 label7: while(0);
1078 stack_frame_head = fra.me.prev;
1079 return;
1080 }
1081 static const char LOCATE_program___Program___with_each_methods[] = "program::Program::with_each_methods";
1082 void program___Program___with_each_methods(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1083 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1084 val_t REGB0;
1085 fun_t CREG[1];
1086 val_t tmp;
1087 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1088 fra.me.file = LOCATE_program;
1089 fra.me.line = 195;
1090 fra.me.meth = LOCATE_program___Program___with_each_methods;
1091 fra.me.has_broke = 0;
1092 fra.me.REG_size = 2;
1093 fra.me.nitni_local_ref_head = NULL;
1094 fra.me.REG[0] = NIT_NULL;
1095 fra.me.REG[1] = NIT_NULL;
1096 fra.me.closure_ctx = closctx_param;
1097 fra.me.closure_funs = CREG;
1098 fra.me.REG[0] = p0;
1099 CREG[0] = clos_fun0;
1100 /* program.nit:200 */
1101 fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
1102 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[1])(fra.me.REG[1]);
1103 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1104 if (UNTAG_Bool(REGB0)) {
1105 nit_abort("Reciever is null", NULL, LOCATE_program, 200);
1106 }
1107 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[1])(fra.me.REG[1]);
1108 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_program___Program___with_each_methods_1));
1109 switch ((&(fra.me))->has_broke) {
1110 case 0: break;
1111 case 1: (&(fra.me))->has_broke = 0; goto label7;
1112 }
1113 label7: while(0);
1114 stack_frame_head = fra.me.prev;
1115 return;
1116 }
1117 void OC_program___Program___with_each_methods_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1118 struct {struct stack_frame_t me;} fra;
1119 fun_t CREG[1];
1120 val_t tmp;
1121 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1122 fra.me.file = LOCATE_program;
1123 fra.me.line = 0;
1124 fra.me.meth = LOCATE_program___Program___with_each_methods;
1125 fra.me.has_broke = 0;
1126 fra.me.REG_size = 1;
1127 fra.me.nitni_local_ref_head = NULL;
1128 fra.me.REG[0] = NIT_NULL;
1129 fra.me.closure_ctx = closctx_param;
1130 fra.me.closure_funs = CREG;
1131 fra.me.REG[0] = p0;
1132 CREG[0] = clos_fun0;
1133 /* program.nit:201 */
1134 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
1135 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_program___Program___with_each_methods_2));
1136 switch (closctx->has_broke) {
1137 case 0: break;
1138 default: goto label6;
1139 }
1140 label6: while(0);
1141 stack_frame_head = fra.me.prev;
1142 return;
1143 }
1144 void OC_program___Program___with_each_methods_2(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1145 struct {struct stack_frame_t me;} fra;
1146 fun_t CREG[1];
1147 val_t tmp;
1148 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1149 fra.me.file = LOCATE_program;
1150 fra.me.line = 0;
1151 fra.me.meth = LOCATE_program___Program___with_each_methods;
1152 fra.me.has_broke = 0;
1153 fra.me.REG_size = 1;
1154 fra.me.nitni_local_ref_head = NULL;
1155 fra.me.REG[0] = NIT_NULL;
1156 fra.me.closure_ctx = closctx_param;
1157 fra.me.closure_funs = CREG;
1158 fra.me.REG[0] = p0;
1159 CREG[0] = clos_fun0;
1160 /* program.nit:203 */
1161 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra.me.REG[0])(fra.me.REG[0]);
1162 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_program___Program___with_each_methods_3));
1163 switch (closctx->has_broke) {
1164 case 0: break;
1165 default: goto label5;
1166 }
1167 label5: while(0);
1168 stack_frame_head = fra.me.prev;
1169 return;
1170 }
1171 void OC_program___Program___with_each_methods_3(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1172 struct {struct stack_frame_t me;} fra;
1173 val_t REGB0;
1174 fun_t CREG[1];
1175 val_t tmp;
1176 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1177 fra.me.file = LOCATE_program;
1178 fra.me.line = 0;
1179 fra.me.meth = LOCATE_program___Program___with_each_methods;
1180 fra.me.has_broke = 0;
1181 fra.me.REG_size = 1;
1182 fra.me.nitni_local_ref_head = NULL;
1183 fra.me.REG[0] = NIT_NULL;
1184 fra.me.closure_ctx = closctx_param;
1185 fra.me.closure_funs = CREG;
1186 fra.me.REG[0] = p0;
1187 CREG[0] = clos_fun0;
1188 /* program.nit:204 */
1189 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
1190 if (UNTAG_Bool(REGB0)) {
1191 /* program.nit:205 */
1192 ((void (*)(struct stack_frame_t *, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0]);
1193 if (closctx->closure_ctx->has_broke) {
1194 closctx->has_broke = 1;
1195 goto label4;
1196 }
1197 }
1198 label4: while(0);
1199 stack_frame_head = fra.me.prev;
1200 return;
1201 }
1202 static const char LOCATE_program___Program___with_each_live_local_classes[] = "program::Program::with_each_live_local_classes";
1203 void program___Program___with_each_live_local_classes(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1204 struct {struct stack_frame_t me;} fra;
1205 fun_t CREG[1];
1206 val_t tmp;
1207 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1208 fra.me.file = LOCATE_program;
1209 fra.me.line = 212;
1210 fra.me.meth = LOCATE_program___Program___with_each_live_local_classes;
1211 fra.me.has_broke = 0;
1212 fra.me.REG_size = 1;
1213 fra.me.nitni_local_ref_head = NULL;
1214 fra.me.REG[0] = NIT_NULL;
1215 fra.me.closure_ctx = closctx_param;
1216 fra.me.closure_funs = CREG;
1217 fra.me.REG[0] = p0;
1218 CREG[0] = clos_fun0;
1219 /* program.nit:217 */
1220 fra.me.REG[0] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
1221 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
1222 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_program___Program___with_each_live_local_classes_1));
1223 switch ((&(fra.me))->has_broke) {
1224 case 0: break;
1225 case 1: (&(fra.me))->has_broke = 0; goto label3;
1226 }
1227 label3: while(0);
1228 stack_frame_head = fra.me.prev;
1229 return;
1230 }
1231 void OC_program___Program___with_each_live_local_classes_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1232 struct {struct stack_frame_t me;} fra;
1233 fun_t CREG[1];
1234 val_t tmp;
1235 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1236 fra.me.file = LOCATE_program;
1237 fra.me.line = 0;
1238 fra.me.meth = LOCATE_program___Program___with_each_live_local_classes;
1239 fra.me.has_broke = 0;
1240 fra.me.REG_size = 1;
1241 fra.me.nitni_local_ref_head = NULL;
1242 fra.me.REG[0] = NIT_NULL;
1243 fra.me.closure_ctx = closctx_param;
1244 fra.me.closure_funs = CREG;
1245 fra.me.REG[0] = p0;
1246 CREG[0] = clos_fun0;
1247 /* program.nit:218 */
1248 ((void (*)(struct stack_frame_t *, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0]);
1249 if (closctx->closure_ctx->has_broke) {
1250 closctx->has_broke = 1;
1251 goto label2;
1252 }
1253 label2: while(0);
1254 stack_frame_head = fra.me.prev;
1255 return;
1256 }
1257 static const char LOCATE_program___Program___init[] = "program::Program::init";
1258 void program___Program___init(val_t p0, val_t p1, val_t p2, int* init_table){
1259 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_program___Program].i;
1260 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1261 val_t tmp;
1262 if (init_table[itpos0]) return;
1263 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1264 fra.me.file = LOCATE_program;
1265 fra.me.line = 222;
1266 fra.me.meth = LOCATE_program___Program___init;
1267 fra.me.has_broke = 0;
1268 fra.me.REG_size = 3;
1269 fra.me.nitni_local_ref_head = NULL;
1270 fra.me.REG[0] = NIT_NULL;
1271 fra.me.REG[1] = NIT_NULL;
1272 fra.me.REG[2] = NIT_NULL;
1273 fra.me.REG[0] = p0;
1274 fra.me.REG[1] = p1;
1275 fra.me.REG[2] = p2;
1276 /* program.nit:223 */
1277 ATTR_program___Program____main_module(fra.me.REG[0]) = fra.me.REG[1];
1278 /* program.nit:224 */
1279 ATTR_program___Program____tc(fra.me.REG[0]) = fra.me.REG[2];
1280 /* program.nit:225 */
1281 CALL_program___Program___finish_processing_classes(fra.me.REG[0])(fra.me.REG[0]);
1282 stack_frame_head = fra.me.prev;
1283 init_table[itpos0] = 1;
1284 return;
1285 }
1286 static const char LOCATE_program___MMLocalClass___init_var_iroutine[] = "program::MMLocalClass::init_var_iroutine";
1287 val_t program___MMLocalClass___init_var_iroutine(val_t p0){
1288 struct {struct stack_frame_t me;} fra;
1289 val_t tmp;
1290 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1291 fra.me.file = LOCATE_program;
1292 fra.me.line = 230;
1293 fra.me.meth = LOCATE_program___MMLocalClass___init_var_iroutine;
1294 fra.me.has_broke = 0;
1295 fra.me.REG_size = 1;
1296 fra.me.nitni_local_ref_head = NULL;
1297 fra.me.REG[0] = NIT_NULL;
1298 fra.me.REG[0] = p0;
1299 /* program.nit:230 */
1300 fra.me.REG[0] = ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]);
1301 stack_frame_head = fra.me.prev;
1302 return fra.me.REG[0];
1303 }
1304 static const char LOCATE_program___MMLocalClass___init_var_iroutine__eq[] = "program::MMLocalClass::init_var_iroutine=";
1305 void program___MMLocalClass___init_var_iroutine__eq(val_t p0, val_t p1){
1306 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1307 val_t tmp;
1308 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1309 fra.me.file = LOCATE_program;
1310 fra.me.line = 230;
1311 fra.me.meth = LOCATE_program___MMLocalClass___init_var_iroutine__eq;
1312 fra.me.has_broke = 0;
1313 fra.me.REG_size = 2;
1314 fra.me.nitni_local_ref_head = NULL;
1315 fra.me.REG[0] = NIT_NULL;
1316 fra.me.REG[1] = NIT_NULL;
1317 fra.me.REG[0] = p0;
1318 fra.me.REG[1] = p1;
1319 /* program.nit:230 */
1320 ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
1321 stack_frame_head = fra.me.prev;
1322 return;
1323 }
1324 static const char LOCATE_program___MMLocalClass___checknew_iroutine[] = "program::MMLocalClass::checknew_iroutine";
1325 val_t program___MMLocalClass___checknew_iroutine(val_t p0){
1326 struct {struct stack_frame_t me;} fra;
1327 val_t tmp;
1328 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1329 fra.me.file = LOCATE_program;
1330 fra.me.line = 232;
1331 fra.me.meth = LOCATE_program___MMLocalClass___checknew_iroutine;
1332 fra.me.has_broke = 0;
1333 fra.me.REG_size = 1;
1334 fra.me.nitni_local_ref_head = NULL;
1335 fra.me.REG[0] = NIT_NULL;
1336 fra.me.REG[0] = p0;
1337 /* program.nit:232 */
1338 fra.me.REG[0] = ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]);
1339 stack_frame_head = fra.me.prev;
1340 return fra.me.REG[0];
1341 }
1342 static const char LOCATE_program___MMLocalClass___checknew_iroutine__eq[] = "program::MMLocalClass::checknew_iroutine=";
1343 void program___MMLocalClass___checknew_iroutine__eq(val_t p0, val_t p1){
1344 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1345 val_t tmp;
1346 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1347 fra.me.file = LOCATE_program;
1348 fra.me.line = 232;
1349 fra.me.meth = LOCATE_program___MMLocalClass___checknew_iroutine__eq;
1350 fra.me.has_broke = 0;
1351 fra.me.REG_size = 2;
1352 fra.me.nitni_local_ref_head = NULL;
1353 fra.me.REG[0] = NIT_NULL;
1354 fra.me.REG[1] = NIT_NULL;
1355 fra.me.REG[0] = p0;
1356 fra.me.REG[1] = p1;
1357 /* program.nit:232 */
1358 ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]) = fra.me.REG[1];
1359 stack_frame_head = fra.me.prev;
1360 return;
1361 }
1362 static const char LOCATE_program___MMLocalClass___new_instance_iroutine[] = "program::MMLocalClass::new_instance_iroutine";
1363 val_t program___MMLocalClass___new_instance_iroutine(val_t p0){
1364 struct {struct stack_frame_t me;} fra;
1365 val_t REGB0;
1366 val_t tmp;
1367 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1368 fra.me.file = LOCATE_program;
1369 fra.me.line = 234;
1370 fra.me.meth = LOCATE_program___MMLocalClass___new_instance_iroutine;
1371 fra.me.has_broke = 0;
1372 fra.me.REG_size = 1;
1373 fra.me.nitni_local_ref_head = NULL;
1374 fra.me.REG[0] = NIT_NULL;
1375 fra.me.REG[0] = p0;
1376 /* program.nit:234 */
1377 REGB0 = TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0])!=NIT_NULL);
1378 if (UNTAG_Bool(REGB0)) {
1379 } else {
1380 nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_program, 234);
1381 }
1382 fra.me.REG[0] = ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]);
1383 stack_frame_head = fra.me.prev;
1384 return fra.me.REG[0];
1385 }