modelbuilder: get the management of opt_only_metamodel and opt_only_parse
[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:718 */
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[5];} 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 = 6;
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[0] = p0;
377 /* program.nit:80 */
378 fra.me.REG[1] = fra.me.REG[0];
379 /* program.nit:83 */
380 fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[1])(fra.me.REG[1]);
381 fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[2])(fra.me.REG[2]);
382 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));
383 stack_frame_head = fra.me.prev;
384 return;
385 }
386 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){
387 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
388 val_t REGB0;
389 val_t REGB1;
390 fun_t CREG[1];
391 val_t tmp;
392 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
393 fra.me.file = LOCATE_program;
394 fra.me.line = 0;
395 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
396 fra.me.has_broke = 0;
397 fra.me.REG_size = 2;
398 fra.me.nitni_local_ref_head = NULL;
399 fra.me.REG[0] = NIT_NULL;
400 fra.me.REG[1] = NIT_NULL;
401 fra.me.closure_ctx = closctx_param;
402 fra.me.closure_funs = CREG;
403 fra.me.REG[0] = p0;
404 CREG[0] = clos_fun0;
405 closctx->REG[2] = fra.me.REG[0];
406 /* program.nit:84 */
407 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx->REG[2])(closctx->REG[2]);
408 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[0])(fra.me.REG[0]);
409 if (UNTAG_Bool(REGB0)) {
410 REGB0 = TAG_Bool(1);
411 } else {
412 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx->REG[2])(closctx->REG[2]);
413 REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[0])(fra.me.REG[0]);
414 REGB0 = REGB1;
415 }
416 if (UNTAG_Bool(REGB0)) {
417 goto label2;
418 }
419 /* program.nit:85 */
420 fra.me.REG[0] = CALL_primitive_info___MMLocalClass___primitive_info(closctx->REG[2])(closctx->REG[2]);
421 /* program.nit:86 */
422 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
423 if (UNTAG_Bool(REGB0)) {
424 } else {
425 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
426 if (UNTAG_Bool(REGB1)) {
427 REGB1 = TAG_Bool(0);
428 REGB0 = REGB1;
429 } else {
430 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
431 REGB0 = REGB1;
432 }
433 }
434 if (UNTAG_Bool(REGB0)) {
435 /* program.nit:89 */
436 fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
437 fra.me.REG[0] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[0]);
438 closctx->REG[3] = fra.me.REG[0];
439 /* program.nit:90 */
440 REGB0 = TAG_Int(1);
441 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
442 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], closctx->REG[3]);
443 closctx->REG[4] = fra.me.REG[0];
444 /* program.nit:91 */
445 fra.me.REG[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(closctx->REG[4], NIT_NULL);
446 /* program.nit:92 */
447 fra.me.REG[1] = CALL_program___Program___main_module(closctx->REG[1])(closctx->REG[1]);
448 fra.me.REG[1] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[1], fra.me.REG[0]);
449 closctx->REG[5] = fra.me.REG[1];
450 /* program.nit:94 */
451 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[2])(closctx->REG[2]);
452 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));
453 /* program.nit:107 */
454 CALL_program___MMLocalClass___init_var_iroutine__eq(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
455 /* program.nit:111 */
456 fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
457 fra.me.REG[0] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[0]);
458 closctx->REG[5] = fra.me.REG[0];
459 /* program.nit:112 */
460 REGB0 = TAG_Int(1);
461 fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
462 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
463 /* program.nit:113 */
464 fra.me.REG[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra.me.REG[0], NIT_NULL);
465 /* program.nit:114 */
466 fra.me.REG[1] = CALL_program___Program___main_module(closctx->REG[1])(closctx->REG[1]);
467 fra.me.REG[1] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[1], fra.me.REG[0]);
468 closctx->REG[3] = fra.me.REG[1];
469 /* program.nit:115 */
470 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[2])(closctx->REG[2]);
471 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));
472 /* program.nit:124 */
473 CALL_program___MMLocalClass___checknew_iroutine__eq(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
474 /* program.nit:127 */
475 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[2])(closctx->REG[2]);
476 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));
477 }
478 label2: while(0);
479 stack_frame_head = fra.me.prev;
480 return;
481 }
482 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){
483 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
484 val_t REGB0;
485 val_t REGB1;
486 fun_t CREG[1];
487 val_t tmp;
488 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
489 fra.me.file = LOCATE_program;
490 fra.me.line = 0;
491 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
492 fra.me.has_broke = 0;
493 fra.me.REG_size = 2;
494 fra.me.nitni_local_ref_head = NULL;
495 fra.me.REG[0] = NIT_NULL;
496 fra.me.REG[1] = NIT_NULL;
497 fra.me.closure_ctx = closctx_param;
498 fra.me.closure_funs = CREG;
499 fra.me.REG[0] = p0;
500 CREG[0] = clos_fun0;
501 /* program.nit:95 */
502 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
503 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
504 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
505 if (UNTAG_Bool(REGB0)) {
506 goto label4;
507 }
508 /* program.nit:96 */
509 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
510 /* program.nit:97 */
511 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
512 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
513 if (UNTAG_Bool(REGB0)) {
514 nit_abort("Reciever is null", NULL, LOCATE_program, 97);
515 }
516 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
517 /* program.nit:98 */
518 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
519 if (UNTAG_Bool(REGB0)) {
520 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
521 if (UNTAG_Bool(REGB0)) {
522 } else {
523 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
524 if (UNTAG_Bool(REGB1)) {
525 REGB1 = TAG_Bool(0);
526 REGB0 = REGB1;
527 } else {
528 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
529 REGB0 = REGB1;
530 }
531 }
532 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
533 } else {
534 REGB1 = TAG_Bool(0);
535 REGB0 = REGB1;
536 }
537 if (UNTAG_Bool(REGB0)) {
538 /* program.nit:99 */
539 fra.me.REG[1] = CALL_icode___icode_base___MMAttribute___iroutine(fra.me.REG[0])(fra.me.REG[0]);
540 /* program.nit:100 */
541 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
542 if (UNTAG_Bool(REGB0)) {
543 } else {
544 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
545 if (UNTAG_Bool(REGB1)) {
546 REGB1 = TAG_Bool(0);
547 REGB0 = REGB1;
548 } else {
549 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
550 REGB0 = REGB1;
551 }
552 }
553 if (UNTAG_Bool(REGB0)) {
554 goto label4;
555 }
556 /* program.nit:102 */
557 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);
558 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*/;
559 if (UNTAG_Bool(REGB0)) {
560 } else {
561 nit_abort("Cast failed", NULL, LOCATE_program, 102);
562 }
563 /* program.nit:103 */
564 fra.me.REG[1] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[0], closctx->REG[3], fra.me.REG[1]);
565 CALL_icode___icode_builder___ICodeBuilder___stmt(closctx->REG[5])(closctx->REG[5], fra.me.REG[1]);
566 }
567 label4: while(0);
568 stack_frame_head = fra.me.prev;
569 return;
570 }
571 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){
572 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
573 val_t REGB0;
574 val_t REGB1;
575 fun_t CREG[1];
576 val_t tmp;
577 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
578 fra.me.file = LOCATE_program;
579 fra.me.line = 0;
580 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
581 fra.me.has_broke = 0;
582 fra.me.REG_size = 2;
583 fra.me.nitni_local_ref_head = NULL;
584 fra.me.REG[0] = NIT_NULL;
585 fra.me.REG[1] = NIT_NULL;
586 fra.me.closure_ctx = closctx_param;
587 fra.me.closure_funs = CREG;
588 fra.me.REG[0] = p0;
589 CREG[0] = clos_fun0;
590 /* program.nit:116 */
591 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
592 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
593 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
594 if (UNTAG_Bool(REGB0)) {
595 goto label6;
596 }
597 /* program.nit:117 */
598 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
599 /* program.nit:118 */
600 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
601 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
602 if (UNTAG_Bool(REGB0)) {
603 nit_abort("Reciever is null", NULL, LOCATE_program, 118);
604 }
605 fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
606 /* program.nit:119 */
607 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
608 if (UNTAG_Bool(REGB0)) {
609 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
610 if (UNTAG_Bool(REGB0)) {
611 } else {
612 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
613 if (UNTAG_Bool(REGB1)) {
614 REGB1 = TAG_Bool(0);
615 REGB0 = REGB1;
616 } else {
617 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
618 REGB0 = REGB1;
619 }
620 }
621 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
622 } else {
623 REGB1 = TAG_Bool(0);
624 REGB0 = REGB1;
625 }
626 if (UNTAG_Bool(REGB0)) {
627 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
628 if (UNTAG_Bool(REGB0)) {
629 nit_abort("Reciever is null", NULL, LOCATE_program, 119);
630 }
631 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
632 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
633 } else {
634 REGB1 = TAG_Bool(0);
635 REGB0 = REGB1;
636 }
637 if (UNTAG_Bool(REGB0)) {
638 /* program.nit:120 */
639 CALL_icode___icode_builder___ICodeBuilder___add_attr_check(closctx->REG[3])(closctx->REG[3], fra.me.REG[0], closctx->REG[5]);
640 }
641 label6: while(0);
642 stack_frame_head = fra.me.prev;
643 return;
644 }
645 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){
646 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
647 val_t REGB0;
648 val_t REGB1;
649 val_t REGB2;
650 val_t REGB3;
651 fun_t CREG[1];
652 val_t tmp;
653 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
654 fra.me.file = LOCATE_program;
655 fra.me.line = 0;
656 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
657 fra.me.has_broke = 0;
658 fra.me.REG_size = 6;
659 fra.me.nitni_local_ref_head = NULL;
660 fra.me.REG[0] = NIT_NULL;
661 fra.me.REG[1] = NIT_NULL;
662 fra.me.REG[2] = NIT_NULL;
663 fra.me.REG[3] = NIT_NULL;
664 fra.me.REG[4] = NIT_NULL;
665 fra.me.REG[5] = NIT_NULL;
666 fra.me.closure_ctx = closctx_param;
667 fra.me.closure_funs = CREG;
668 fra.me.REG[0] = p0;
669 CREG[0] = clos_fun0;
670 /* program.nit:129 */
671 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
672 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
673 if (UNTAG_Bool(REGB0)) {
674 goto label8;
675 }
676 /* program.nit:130 */
677 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
678 /* program.nit:131 */
679 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
680 if (UNTAG_Bool(REGB0)) {
681 } else {
682 nit_abort("Assert failed", NULL, LOCATE_program, 131);
683 }
684 /* program.nit:133 */
685 fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
686 fra.me.REG[1] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[1]);
687 /* program.nit:134 */
688 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
689 /* program.nit:135 */
690 REGB0 = TAG_Int(0);
691 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
692 REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
693 if (UNTAG_Bool(REGB1)) {
694 nit_abort("Reciever is null", NULL, LOCATE_program, 135);
695 }
696 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
697 /* ../lib/standard/kernel.nit:355 */
698 while(1) {
699 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
700 if (UNTAG_Bool(REGB2)) {
701 } else {
702 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
703 }
704 /* ../lib/standard/kernel.nit:235 */
705 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
706 /* ../lib/standard/kernel.nit:355 */
707 if (UNTAG_Bool(REGB2)) {
708 /* program.nit:135 */
709 REGB2 = REGB0;
710 fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
711 REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
712 if (UNTAG_Bool(REGB3)) {
713 nit_abort("Reciever is null", NULL, LOCATE_program, 135);
714 }
715 fra.me.REG[3] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
716 fra.me.REG[3] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[3]);
717 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
718 /* ../lib/standard/kernel.nit:357 */
719 REGB2 = TAG_Int(1);
720 /* ../lib/standard/kernel.nit:238 */
721 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
722 /* ../lib/standard/kernel.nit:357 */
723 REGB0 = REGB2;
724 } else {
725 /* ../lib/standard/kernel.nit:355 */
726 goto label9;
727 }
728 }
729 label9: while(0);
730 /* program.nit:136 */
731 fra.me.REG[3] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra.me.REG[2], fra.me.REG[1]);
732 /* program.nit:137 */
733 fra.me.REG[4] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
734 REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
735 if (UNTAG_Bool(REGB0)) {
736 nit_abort("Reciever is null", NULL, LOCATE_program, 137);
737 }
738 fra.me.REG[4] = CALL_icode___icode_base___IRoutine___location(fra.me.REG[4])(fra.me.REG[4]);
739 CALL_icode___icode_base___IRoutine___location__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
740 /* program.nit:138 */
741 fra.me.REG[4] = CALL_program___Program___main_module(closctx->REG[1])(closctx->REG[1]);
742 fra.me.REG[4] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[4], fra.me.REG[3]);
743 /* program.nit:140 */
744 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
745 fra.me.REG[5] = NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(fra.me.REG[5]);
746 /* program.nit:141 */
747 CALL_icode___icode_base___ICode___result__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
748 /* program.nit:142 */
749 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
750 /* program.nit:143 */
751 REGB0 = TAG_Int(1);
752 fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
753 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
754 /* program.nit:144 */
755 CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
756 /* program.nit:146 */
757 fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
758 fra.me.REG[2] = NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(fra.me.REG[2], fra.me.REG[1]);
759 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
760 /* program.nit:147 */
761 fra.me.REG[5] = NEW_IStaticCall_icode___icode_base___IStaticCall___init(fra.me.REG[0], fra.me.REG[5]);
762 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
763 /* program.nit:148 */
764 fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
765 fra.me.REG[1] = NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(fra.me.REG[5], fra.me.REG[1]);
766 CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
767 /* program.nit:150 */
768 fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[2])(closctx->REG[2]);
769 CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
770 label8: while(0);
771 stack_frame_head = fra.me.prev;
772 return;
773 }
774 static const char LOCATE_program___Program___with_each_iroutines[] = "program::Program::with_each_iroutines";
775 void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
776 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
777 val_t REGB0;
778 fun_t CREG[1];
779 val_t tmp;
780 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
781 fra.me.file = LOCATE_program;
782 fra.me.line = 156;
783 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
784 fra.me.has_broke = 0;
785 fra.me.REG_size = 3;
786 fra.me.nitni_local_ref_head = NULL;
787 fra.me.REG[0] = NIT_NULL;
788 fra.me.REG[1] = NIT_NULL;
789 fra.me.REG[2] = NIT_NULL;
790 fra.me.closure_ctx = closctx_param;
791 fra.me.closure_funs = CREG;
792 fra.me.REG[0] = p0;
793 CREG[0] = clos_fun0;
794 /* program.nit:161 */
795 fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
796 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[1])(fra.me.REG[1]);
797 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
798 if (UNTAG_Bool(REGB0)) {
799 nit_abort("Reciever is null", NULL, LOCATE_program, 161);
800 }
801 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[1])(fra.me.REG[1]);
802 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));
803 switch ((&(fra.me))->has_broke) {
804 case 0: break;
805 case 1: (&(fra.me))->has_broke = 0; goto label9;
806 }
807 label9: while(0);
808 stack_frame_head = fra.me.prev;
809 return;
810 }
811 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){
812 struct {struct stack_frame_t me;} fra;
813 fun_t CREG[1];
814 val_t tmp;
815 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
816 fra.me.file = LOCATE_program;
817 fra.me.line = 0;
818 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
819 fra.me.has_broke = 0;
820 fra.me.REG_size = 1;
821 fra.me.nitni_local_ref_head = NULL;
822 fra.me.REG[0] = NIT_NULL;
823 fra.me.closure_ctx = closctx_param;
824 fra.me.closure_funs = CREG;
825 fra.me.REG[0] = p0;
826 CREG[0] = clos_fun0;
827 closctx->REG[1] = fra.me.REG[0];
828 /* program.nit:162 */
829 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(closctx->REG[1])(closctx->REG[1]);
830 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));
831 switch (closctx->has_broke) {
832 case 0: break;
833 default: goto label8;
834 }
835 label8: while(0);
836 stack_frame_head = fra.me.prev;
837 return;
838 }
839 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){
840 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
841 val_t REGB0;
842 val_t REGB1;
843 fun_t CREG[1];
844 val_t tmp;
845 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
846 fra.me.file = LOCATE_program;
847 fra.me.line = 0;
848 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
849 fra.me.has_broke = 0;
850 fra.me.REG_size = 2;
851 fra.me.nitni_local_ref_head = NULL;
852 fra.me.REG[0] = NIT_NULL;
853 fra.me.REG[1] = NIT_NULL;
854 fra.me.closure_ctx = closctx_param;
855 fra.me.closure_funs = CREG;
856 fra.me.REG[0] = p0;
857 CREG[0] = clos_fun0;
858 /* program.nit:163 */
859 closctx->REG[2] = NIT_NULL;
860 /* program.nit:166 */
861 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra.me.REG[0])(fra.me.REG[0]);
862 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));
863 switch (closctx->has_broke) {
864 case 0: break;
865 default: goto label5;
866 }
867 /* program.nit:177 */
868 fra.me.REG[1] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[0])(fra.me.REG[0]);
869 closctx->REG[2] = fra.me.REG[1];
870 /* program.nit:178 */
871 REGB0 = TAG_Bool(closctx->REG[2]==NIT_NULL);
872 if (UNTAG_Bool(REGB0)) {
873 } else {
874 REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
875 if (UNTAG_Bool(REGB1)) {
876 REGB1 = TAG_Bool(0);
877 REGB0 = REGB1;
878 } else {
879 REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
880 REGB0 = REGB1;
881 }
882 }
883 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
884 if (UNTAG_Bool(REGB0)) {
885 /* program.nit:179 */
886 ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[2], closctx->REG[1]);
887 if (closctx->closure_ctx->has_broke) {
888 closctx->has_broke = 1;
889 goto label5;
890 }
891 }
892 /* program.nit:181 */
893 fra.me.REG[1] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[0])(fra.me.REG[0]);
894 closctx->REG[2] = fra.me.REG[1];
895 /* program.nit:182 */
896 REGB0 = TAG_Bool(closctx->REG[2]==NIT_NULL);
897 if (UNTAG_Bool(REGB0)) {
898 } else {
899 REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
900 if (UNTAG_Bool(REGB1)) {
901 REGB1 = TAG_Bool(0);
902 REGB0 = REGB1;
903 } else {
904 REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
905 REGB0 = REGB1;
906 }
907 }
908 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
909 if (UNTAG_Bool(REGB0)) {
910 /* program.nit:183 */
911 ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[2], closctx->REG[1]);
912 if (closctx->closure_ctx->has_broke) {
913 closctx->has_broke = 1;
914 goto label5;
915 }
916 }
917 /* program.nit:185 */
918 fra.me.REG[0] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[0])(fra.me.REG[0]);
919 fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
920 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));
921 switch (closctx->has_broke) {
922 case 0: break;
923 default: goto label5;
924 }
925 label5: while(0);
926 stack_frame_head = fra.me.prev;
927 return;
928 }
929 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){
930 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
931 val_t REGB0;
932 val_t REGB1;
933 fun_t CREG[1];
934 val_t tmp;
935 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
936 fra.me.file = LOCATE_program;
937 fra.me.line = 0;
938 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
939 fra.me.has_broke = 0;
940 fra.me.REG_size = 2;
941 fra.me.nitni_local_ref_head = NULL;
942 fra.me.REG[0] = NIT_NULL;
943 fra.me.REG[1] = NIT_NULL;
944 fra.me.closure_ctx = closctx_param;
945 fra.me.closure_funs = CREG;
946 fra.me.REG[0] = p0;
947 CREG[0] = clos_fun0;
948 /* program.nit:167 */
949 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
950 if (UNTAG_Bool(REGB0)) {
951 /* program.nit:168 */
952 fra.me.REG[1] = CALL_icode___icode_base___MMAttribute___iroutine(fra.me.REG[0])(fra.me.REG[0]);
953 closctx->REG[2] = fra.me.REG[1];
954 } else {
955 /* program.nit:169 */
956 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
957 if (UNTAG_Bool(REGB0)) {
958 /* program.nit:170 */
959 fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
960 closctx->REG[2] = fra.me.REG[0];
961 }
962 }
963 /* program.nit:172 */
964 REGB0 = TAG_Bool(closctx->REG[2]==NIT_NULL);
965 if (UNTAG_Bool(REGB0)) {
966 } else {
967 REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
968 if (UNTAG_Bool(REGB1)) {
969 REGB1 = TAG_Bool(0);
970 REGB0 = REGB1;
971 } else {
972 REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
973 REGB0 = REGB1;
974 }
975 }
976 if (UNTAG_Bool(REGB0)) {
977 goto label4;
978 }
979 /* program.nit:173 */
980 ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[2], closctx->REG[1]);
981 if (closctx->closure_ctx->has_broke) {
982 closctx->has_broke = 1;
983 goto label4;
984 }
985 label4: while(0);
986 stack_frame_head = fra.me.prev;
987 return;
988 }
989 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){
990 struct {struct stack_frame_t me;} fra;
991 fun_t CREG[1];
992 val_t tmp;
993 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
994 fra.me.file = LOCATE_program;
995 fra.me.line = 0;
996 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
997 fra.me.has_broke = 0;
998 fra.me.REG_size = 1;
999 fra.me.nitni_local_ref_head = NULL;
1000 fra.me.REG[0] = NIT_NULL;
1001 fra.me.closure_ctx = closctx_param;
1002 fra.me.closure_funs = CREG;
1003 fra.me.REG[0] = p0;
1004 CREG[0] = clos_fun0;
1005 /* program.nit:186 */
1006 ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0], closctx->REG[1]);
1007 if (closctx->closure_ctx->has_broke) {
1008 closctx->has_broke = 1;
1009 goto label7;
1010 }
1011 label7: while(0);
1012 stack_frame_head = fra.me.prev;
1013 return;
1014 }
1015 static const char LOCATE_program___Program___with_each_methods[] = "program::Program::with_each_methods";
1016 void program___Program___with_each_methods(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1017 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1018 val_t REGB0;
1019 fun_t CREG[1];
1020 val_t tmp;
1021 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1022 fra.me.file = LOCATE_program;
1023 fra.me.line = 192;
1024 fra.me.meth = LOCATE_program___Program___with_each_methods;
1025 fra.me.has_broke = 0;
1026 fra.me.REG_size = 2;
1027 fra.me.nitni_local_ref_head = NULL;
1028 fra.me.REG[0] = NIT_NULL;
1029 fra.me.REG[1] = NIT_NULL;
1030 fra.me.closure_ctx = closctx_param;
1031 fra.me.closure_funs = CREG;
1032 fra.me.REG[0] = p0;
1033 CREG[0] = clos_fun0;
1034 /* program.nit:197 */
1035 fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
1036 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[1])(fra.me.REG[1]);
1037 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1038 if (UNTAG_Bool(REGB0)) {
1039 nit_abort("Reciever is null", NULL, LOCATE_program, 197);
1040 }
1041 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[1])(fra.me.REG[1]);
1042 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));
1043 switch ((&(fra.me))->has_broke) {
1044 case 0: break;
1045 case 1: (&(fra.me))->has_broke = 0; goto label7;
1046 }
1047 label7: while(0);
1048 stack_frame_head = fra.me.prev;
1049 return;
1050 }
1051 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){
1052 struct {struct stack_frame_t me;} fra;
1053 fun_t CREG[1];
1054 val_t tmp;
1055 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1056 fra.me.file = LOCATE_program;
1057 fra.me.line = 0;
1058 fra.me.meth = LOCATE_program___Program___with_each_methods;
1059 fra.me.has_broke = 0;
1060 fra.me.REG_size = 1;
1061 fra.me.nitni_local_ref_head = NULL;
1062 fra.me.REG[0] = NIT_NULL;
1063 fra.me.closure_ctx = closctx_param;
1064 fra.me.closure_funs = CREG;
1065 fra.me.REG[0] = p0;
1066 CREG[0] = clos_fun0;
1067 /* program.nit:198 */
1068 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
1069 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));
1070 switch (closctx->has_broke) {
1071 case 0: break;
1072 default: goto label6;
1073 }
1074 label6: while(0);
1075 stack_frame_head = fra.me.prev;
1076 return;
1077 }
1078 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){
1079 struct {struct stack_frame_t me;} fra;
1080 fun_t CREG[1];
1081 val_t tmp;
1082 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1083 fra.me.file = LOCATE_program;
1084 fra.me.line = 0;
1085 fra.me.meth = LOCATE_program___Program___with_each_methods;
1086 fra.me.has_broke = 0;
1087 fra.me.REG_size = 1;
1088 fra.me.nitni_local_ref_head = NULL;
1089 fra.me.REG[0] = NIT_NULL;
1090 fra.me.closure_ctx = closctx_param;
1091 fra.me.closure_funs = CREG;
1092 fra.me.REG[0] = p0;
1093 CREG[0] = clos_fun0;
1094 /* program.nit:200 */
1095 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra.me.REG[0])(fra.me.REG[0]);
1096 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));
1097 switch (closctx->has_broke) {
1098 case 0: break;
1099 default: goto label5;
1100 }
1101 label5: while(0);
1102 stack_frame_head = fra.me.prev;
1103 return;
1104 }
1105 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){
1106 struct {struct stack_frame_t me;} fra;
1107 val_t REGB0;
1108 fun_t CREG[1];
1109 val_t tmp;
1110 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1111 fra.me.file = LOCATE_program;
1112 fra.me.line = 0;
1113 fra.me.meth = LOCATE_program___Program___with_each_methods;
1114 fra.me.has_broke = 0;
1115 fra.me.REG_size = 1;
1116 fra.me.nitni_local_ref_head = NULL;
1117 fra.me.REG[0] = NIT_NULL;
1118 fra.me.closure_ctx = closctx_param;
1119 fra.me.closure_funs = CREG;
1120 fra.me.REG[0] = p0;
1121 CREG[0] = clos_fun0;
1122 /* program.nit:201 */
1123 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
1124 if (UNTAG_Bool(REGB0)) {
1125 /* program.nit:202 */
1126 ((void (*)(struct stack_frame_t *, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0]);
1127 if (closctx->closure_ctx->has_broke) {
1128 closctx->has_broke = 1;
1129 goto label4;
1130 }
1131 }
1132 label4: while(0);
1133 stack_frame_head = fra.me.prev;
1134 return;
1135 }
1136 static const char LOCATE_program___Program___with_each_live_local_classes[] = "program::Program::with_each_live_local_classes";
1137 void program___Program___with_each_live_local_classes(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1138 struct {struct stack_frame_t me;} fra;
1139 fun_t CREG[1];
1140 val_t tmp;
1141 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1142 fra.me.file = LOCATE_program;
1143 fra.me.line = 209;
1144 fra.me.meth = LOCATE_program___Program___with_each_live_local_classes;
1145 fra.me.has_broke = 0;
1146 fra.me.REG_size = 1;
1147 fra.me.nitni_local_ref_head = NULL;
1148 fra.me.REG[0] = NIT_NULL;
1149 fra.me.closure_ctx = closctx_param;
1150 fra.me.closure_funs = CREG;
1151 fra.me.REG[0] = p0;
1152 CREG[0] = clos_fun0;
1153 /* program.nit:214 */
1154 fra.me.REG[0] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
1155 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
1156 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));
1157 switch ((&(fra.me))->has_broke) {
1158 case 0: break;
1159 case 1: (&(fra.me))->has_broke = 0; goto label3;
1160 }
1161 label3: while(0);
1162 stack_frame_head = fra.me.prev;
1163 return;
1164 }
1165 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){
1166 struct {struct stack_frame_t me;} fra;
1167 fun_t CREG[1];
1168 val_t tmp;
1169 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1170 fra.me.file = LOCATE_program;
1171 fra.me.line = 0;
1172 fra.me.meth = LOCATE_program___Program___with_each_live_local_classes;
1173 fra.me.has_broke = 0;
1174 fra.me.REG_size = 1;
1175 fra.me.nitni_local_ref_head = NULL;
1176 fra.me.REG[0] = NIT_NULL;
1177 fra.me.closure_ctx = closctx_param;
1178 fra.me.closure_funs = CREG;
1179 fra.me.REG[0] = p0;
1180 CREG[0] = clos_fun0;
1181 /* program.nit:215 */
1182 ((void (*)(struct stack_frame_t *, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0]);
1183 if (closctx->closure_ctx->has_broke) {
1184 closctx->has_broke = 1;
1185 goto label2;
1186 }
1187 label2: while(0);
1188 stack_frame_head = fra.me.prev;
1189 return;
1190 }
1191 static const char LOCATE_program___Program___init[] = "program::Program::init";
1192 void program___Program___init(val_t p0, val_t p1, val_t p2, int* init_table){
1193 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_program___Program].i;
1194 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1195 val_t tmp;
1196 if (init_table[itpos0]) return;
1197 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1198 fra.me.file = LOCATE_program;
1199 fra.me.line = 219;
1200 fra.me.meth = LOCATE_program___Program___init;
1201 fra.me.has_broke = 0;
1202 fra.me.REG_size = 3;
1203 fra.me.nitni_local_ref_head = NULL;
1204 fra.me.REG[0] = NIT_NULL;
1205 fra.me.REG[1] = NIT_NULL;
1206 fra.me.REG[2] = NIT_NULL;
1207 fra.me.REG[0] = p0;
1208 fra.me.REG[1] = p1;
1209 fra.me.REG[2] = p2;
1210 /* program.nit:220 */
1211 ATTR_program___Program____main_module(fra.me.REG[0]) = fra.me.REG[1];
1212 /* program.nit:221 */
1213 ATTR_program___Program____tc(fra.me.REG[0]) = fra.me.REG[2];
1214 /* program.nit:222 */
1215 CALL_program___Program___finish_processing_classes(fra.me.REG[0])(fra.me.REG[0]);
1216 stack_frame_head = fra.me.prev;
1217 init_table[itpos0] = 1;
1218 return;
1219 }
1220 static const char LOCATE_program___MMLocalClass___init_var_iroutine[] = "program::MMLocalClass::init_var_iroutine";
1221 val_t program___MMLocalClass___init_var_iroutine(val_t p0){
1222 struct {struct stack_frame_t me;} fra;
1223 val_t tmp;
1224 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1225 fra.me.file = LOCATE_program;
1226 fra.me.line = 227;
1227 fra.me.meth = LOCATE_program___MMLocalClass___init_var_iroutine;
1228 fra.me.has_broke = 0;
1229 fra.me.REG_size = 1;
1230 fra.me.nitni_local_ref_head = NULL;
1231 fra.me.REG[0] = NIT_NULL;
1232 fra.me.REG[0] = p0;
1233 /* program.nit:227 */
1234 fra.me.REG[0] = ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]);
1235 stack_frame_head = fra.me.prev;
1236 return fra.me.REG[0];
1237 }
1238 static const char LOCATE_program___MMLocalClass___init_var_iroutine__eq[] = "program::MMLocalClass::init_var_iroutine=";
1239 void program___MMLocalClass___init_var_iroutine__eq(val_t p0, val_t p1){
1240 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1241 val_t tmp;
1242 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1243 fra.me.file = LOCATE_program;
1244 fra.me.line = 227;
1245 fra.me.meth = LOCATE_program___MMLocalClass___init_var_iroutine__eq;
1246 fra.me.has_broke = 0;
1247 fra.me.REG_size = 2;
1248 fra.me.nitni_local_ref_head = NULL;
1249 fra.me.REG[0] = NIT_NULL;
1250 fra.me.REG[1] = NIT_NULL;
1251 fra.me.REG[0] = p0;
1252 fra.me.REG[1] = p1;
1253 /* program.nit:227 */
1254 ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
1255 stack_frame_head = fra.me.prev;
1256 return;
1257 }
1258 static const char LOCATE_program___MMLocalClass___checknew_iroutine[] = "program::MMLocalClass::checknew_iroutine";
1259 val_t program___MMLocalClass___checknew_iroutine(val_t p0){
1260 struct {struct stack_frame_t me;} fra;
1261 val_t tmp;
1262 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1263 fra.me.file = LOCATE_program;
1264 fra.me.line = 229;
1265 fra.me.meth = LOCATE_program___MMLocalClass___checknew_iroutine;
1266 fra.me.has_broke = 0;
1267 fra.me.REG_size = 1;
1268 fra.me.nitni_local_ref_head = NULL;
1269 fra.me.REG[0] = NIT_NULL;
1270 fra.me.REG[0] = p0;
1271 /* program.nit:229 */
1272 fra.me.REG[0] = ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]);
1273 stack_frame_head = fra.me.prev;
1274 return fra.me.REG[0];
1275 }
1276 static const char LOCATE_program___MMLocalClass___checknew_iroutine__eq[] = "program::MMLocalClass::checknew_iroutine=";
1277 void program___MMLocalClass___checknew_iroutine__eq(val_t p0, val_t p1){
1278 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1279 val_t tmp;
1280 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1281 fra.me.file = LOCATE_program;
1282 fra.me.line = 229;
1283 fra.me.meth = LOCATE_program___MMLocalClass___checknew_iroutine__eq;
1284 fra.me.has_broke = 0;
1285 fra.me.REG_size = 2;
1286 fra.me.nitni_local_ref_head = NULL;
1287 fra.me.REG[0] = NIT_NULL;
1288 fra.me.REG[1] = NIT_NULL;
1289 fra.me.REG[0] = p0;
1290 fra.me.REG[1] = p1;
1291 /* program.nit:229 */
1292 ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]) = fra.me.REG[1];
1293 stack_frame_head = fra.me.prev;
1294 return;
1295 }
1296 static const char LOCATE_program___MMLocalClass___new_instance_iroutine[] = "program::MMLocalClass::new_instance_iroutine";
1297 val_t program___MMLocalClass___new_instance_iroutine(val_t p0){
1298 struct {struct stack_frame_t me;} fra;
1299 val_t REGB0;
1300 val_t tmp;
1301 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1302 fra.me.file = LOCATE_program;
1303 fra.me.line = 231;
1304 fra.me.meth = LOCATE_program___MMLocalClass___new_instance_iroutine;
1305 fra.me.has_broke = 0;
1306 fra.me.REG_size = 1;
1307 fra.me.nitni_local_ref_head = NULL;
1308 fra.me.REG[0] = NIT_NULL;
1309 fra.me.REG[0] = p0;
1310 /* program.nit:231 */
1311 REGB0 = TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0])!=NIT_NULL);
1312 if (UNTAG_Bool(REGB0)) {
1313 } else {
1314 nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_program, 231);
1315 }
1316 fra.me.REG[0] = ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]);
1317 stack_frame_head = fra.me.prev;
1318 return fra.me.REG[0];
1319 }