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