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
;
8 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
9 fra
.me
.file
= LOCATE_program
;
11 fra
.me
.meth
= LOCATE_program___ToolContext___global
;
14 fra
.me
.nitni_local_ref_head
= NULL
;
15 fra
.me
.REG
[0] = NIT_NULL
;
18 REGB0
= TAG_Bool(ATTR_program___ToolContext____global(fra
.me
.REG
[0])!=NIT_NULL
);
19 if (UNTAG_Bool(REGB0
)) {
21 nit_abort("Uninitialized attribute %s", "_global", LOCATE_program
, 26);
23 REGB0
= ATTR_program___ToolContext____global(fra
.me
.REG
[0]);
24 stack_frame_head
= fra
.me
.prev
;
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
;
32 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
33 fra
.me
.file
= LOCATE_program
;
35 fra
.me
.meth
= LOCATE_program___ToolContext___global__eq
;
38 fra
.me
.nitni_local_ref_head
= NULL
;
39 fra
.me
.REG
[0] = NIT_NULL
;
43 ATTR_program___ToolContext____global(fra
.me
.REG
[0]) = REGB0
;
44 stack_frame_head
= fra
.me
.prev
;
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
;
52 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
53 fra
.me
.file
= LOCATE_program
;
55 fra
.me
.meth
= LOCATE_program___ToolContext___use_SFT_optimization__eq
;
58 fra
.me
.nitni_local_ref_head
= NULL
;
59 fra
.me
.REG
[0] = NIT_NULL
;
63 ATTR_program___ToolContext____use_SFT_optimization(fra
.me
.REG
[0]) = REGB0
;
64 stack_frame_head
= fra
.me
.prev
;
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
;
73 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
74 fra
.me
.file
= LOCATE_program
;
76 fra
.me
.meth
= LOCATE_program___ToolContext___use_SFT_optimization
;
79 fra
.me
.nitni_local_ref_head
= NULL
;
80 fra
.me
.REG
[0] = NIT_NULL
;
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
)) {
88 nit_abort("Uninitialized attribute %s", "_use_SFT_optimization", LOCATE_program
, 31);
90 REGB0
= ATTR_program___ToolContext____use_SFT_optimization(fra
.me
.REG
[0]);
97 stack_frame_head
= fra
.me
.prev
;
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
;
105 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
106 fra
.me
.file
= LOCATE_program
;
108 fra
.me
.meth
= LOCATE_program___Program___tc
;
109 fra
.me
.has_broke
= 0;
111 fra
.me
.nitni_local_ref_head
= NULL
;
112 fra
.me
.REG
[0] = NIT_NULL
;
115 REGB0
= TAG_Bool(ATTR_program___Program____tc(fra
.me
.REG
[0])!=NIT_NULL
);
116 if (UNTAG_Bool(REGB0
)) {
118 nit_abort("Uninitialized attribute %s", "_tc", LOCATE_program
, 37);
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];
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
;
129 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
130 fra
.me
.file
= LOCATE_program
;
132 fra
.me
.meth
= LOCATE_program___Program___main_module
;
133 fra
.me
.has_broke
= 0;
135 fra
.me
.nitni_local_ref_head
= NULL
;
136 fra
.me
.REG
[0] = NIT_NULL
;
139 REGB0
= TAG_Bool(ATTR_program___Program____main_module(fra
.me
.REG
[0])!=NIT_NULL
);
140 if (UNTAG_Bool(REGB0
)) {
142 nit_abort("Uninitialized attribute %s", "_main_module", LOCATE_program
, 41);
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];
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
;
152 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
153 fra
.me
.file
= LOCATE_program
;
155 fra
.me
.meth
= LOCATE_program___Program___main_method
;
156 fra
.me
.has_broke
= 0;
158 fra
.me
.nitni_local_ref_head
= NULL
;
159 fra
.me
.REG
[0] = NIT_NULL
;
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];
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
;
170 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
171 fra
.me
.file
= LOCATE_program
;
173 fra
.me
.meth
= LOCATE_program___Program___main_class
;
174 fra
.me
.has_broke
= 0;
176 fra
.me
.nitni_local_ref_head
= NULL
;
177 fra
.me
.REG
[0] = NIT_NULL
;
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];
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
;
191 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
192 fra
.me
.file
= LOCATE_program
;
194 fra
.me
.meth
= LOCATE_program___Program___finish_processing_classes
;
195 fra
.me
.has_broke
= 0;
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
;
203 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___init();
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 */
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
)) {
214 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 270);
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 */
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
)) {
225 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
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
)) {
231 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
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);
242 /* ../lib/standard/collection/array.nit:718 */
243 fra
.me
.REG
[2] = ((Nit_NativeArray
)fra
.me
.REG
[0])->val
[UNTAG_Int(REGB0
)];
245 CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
246 /* ../lib/standard/collection/array.nit:274 */
248 /* ../lib/standard/kernel.nit:238 */
249 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
250 /* ../lib/standard/collection/array.nit:274 */
253 /* ../lib/standard/collection/array.nit:272 */
258 stack_frame_head
= fra
.me
.prev
;
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
;
265 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
266 fra
.me
.file
= LOCATE_program
;
268 fra
.me
.meth
= LOCATE_program___Program___finish_processing_classes
;
269 fra
.me
.has_broke
= 0;
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
;
278 CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
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
;
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
;
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
;
296 fra
.me
.meth
= LOCATE_program___Program___compute_main_method
;
297 fra
.me
.has_broke
= 0;
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
;
307 fra
.me
.REG
[1] = BOX_NativeString("Sys");
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];
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
)) {
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]);
332 fra
.me
.REG
[2] = BOX_NativeString("main");
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];
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
)) {
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];
354 ATTR_program___Program____main_class(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
356 stack_frame_head
= fra
.me
.prev
;
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
;
363 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
364 fra
.me
.file
= LOCATE_program
;
366 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
367 fra
.me
.has_broke
= 0;
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
;
378 fra
.me
.REG
[1] = fra
.me
.REG
[0];
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
;
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
;
392 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
393 fra
.me
.file
= LOCATE_program
;
395 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
396 fra
.me
.has_broke
= 0;
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
;
405 closctx
->REG
[2] = fra
.me
.REG
[0];
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
)) {
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]);
416 if (UNTAG_Bool(REGB0
)) {
420 fra
.me
.REG
[0] = CALL_primitive_info___MMLocalClass___primitive_info(closctx
->REG
[2])(closctx
->REG
[2]);
422 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
423 if (UNTAG_Bool(REGB0
)) {
425 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
426 if (UNTAG_Bool(REGB1
)) {
430 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
434 if (UNTAG_Bool(REGB0
)) {
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];
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];
445 fra
.me
.REG
[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(closctx
->REG
[4], NIT_NULL
);
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];
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 */
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
));
479 stack_frame_head
= fra
.me
.prev
;
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
;
488 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
489 fra
.me
.file
= LOCATE_program
;
491 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
492 fra
.me
.has_broke
= 0;
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
;
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
)) {
509 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
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);
516 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
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
)) {
523 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
524 if (UNTAG_Bool(REGB1
)) {
528 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
532 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
537 if (UNTAG_Bool(REGB0
)) {
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
)) {
544 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
545 if (UNTAG_Bool(REGB1
)) {
549 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
553 if (UNTAG_Bool(REGB0
)) {
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
)) {
561 nit_abort("Cast failed", NULL
, LOCATE_program
, 102);
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]);
568 stack_frame_head
= fra
.me
.prev
;
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
;
577 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
578 fra
.me
.file
= LOCATE_program
;
580 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
581 fra
.me
.has_broke
= 0;
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
;
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
)) {
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);
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
)) {
612 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
613 if (UNTAG_Bool(REGB1
)) {
617 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
621 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
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);
631 REGB0
= CALL_metamodel___static_type___MMType___is_nullable(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
632 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
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]);
642 stack_frame_head
= fra
.me
.prev
;
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
;
653 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
654 fra
.me
.file
= LOCATE_program
;
656 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
657 fra
.me
.has_broke
= 0;
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
;
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
)) {
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
)) {
682 nit_abort("Assert failed", NULL
, LOCATE_program
, 131);
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 */
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);
696 REGB1
= CALL_metamodel___static_type___MMSignature___arity(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
697 /* ../lib/standard/kernel.nit:355 */
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
)) {
702 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
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 */
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);
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 */
720 /* ../lib/standard/kernel.nit:238 */
721 REGB2
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB2
));
722 /* ../lib/standard/kernel.nit:357 */
725 /* ../lib/standard/kernel.nit:355 */
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);
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 */
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]);
771 stack_frame_head
= fra
.me
.prev
;
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
;
780 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
781 fra
.me
.file
= LOCATE_program
;
783 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
784 fra
.me
.has_broke
= 0;
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
;
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);
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
) {
805 case 1: (&(fra
.me
))->has_broke
= 0; goto label9
;
808 stack_frame_head
= fra
.me
.prev
;
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
;
815 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
816 fra
.me
.file
= LOCATE_program
;
818 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
819 fra
.me
.has_broke
= 0;
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
;
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
) {
833 default: goto label8
;
836 stack_frame_head
= fra
.me
.prev
;
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
;
845 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
846 fra
.me
.file
= LOCATE_program
;
848 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
849 fra
.me
.has_broke
= 0;
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
;
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
) {
865 default: goto label5
;
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
)) {
874 REGB1
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
875 if (UNTAG_Bool(REGB1
)) {
879 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[2])(closctx
->REG
[2], NIT_NULL
);
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;
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
)) {
899 REGB1
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
900 if (UNTAG_Bool(REGB1
)) {
904 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[2])(closctx
->REG
[2], NIT_NULL
);
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;
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
) {
923 default: goto label5
;
926 stack_frame_head
= fra
.me
.prev
;
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
;
935 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
936 fra
.me
.file
= LOCATE_program
;
938 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
939 fra
.me
.has_broke
= 0;
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
;
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];
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];
963 /* program.nit:172 */
964 REGB0
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
965 if (UNTAG_Bool(REGB0
)) {
967 REGB1
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
968 if (UNTAG_Bool(REGB1
)) {
972 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[2])(closctx
->REG
[2], NIT_NULL
);
976 if (UNTAG_Bool(REGB0
)) {
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;
986 stack_frame_head
= fra
.me
.prev
;
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
;
993 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
994 fra
.me
.file
= LOCATE_program
;
996 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
997 fra
.me
.has_broke
= 0;
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
;
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;
1012 stack_frame_head
= fra
.me
.prev
;
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
;
1021 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1022 fra
.me
.file
= LOCATE_program
;
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
;
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);
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
) {
1045 case 1: (&(fra
.me
))->has_broke
= 0; goto label7
;
1048 stack_frame_head
= fra
.me
.prev
;
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
;
1055 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1056 fra
.me
.file
= LOCATE_program
;
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
;
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
) {
1072 default: goto label6
;
1075 stack_frame_head
= fra
.me
.prev
;
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
;
1082 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1083 fra
.me
.file
= LOCATE_program
;
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
;
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
) {
1099 default: goto label5
;
1102 stack_frame_head
= fra
.me
.prev
;
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
;
1110 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1111 fra
.me
.file
= LOCATE_program
;
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
;
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;
1133 stack_frame_head
= fra
.me
.prev
;
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
;
1141 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1142 fra
.me
.file
= LOCATE_program
;
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
;
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
) {
1159 case 1: (&(fra
.me
))->has_broke
= 0; goto label3
;
1162 stack_frame_head
= fra
.me
.prev
;
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
;
1169 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1170 fra
.me
.file
= LOCATE_program
;
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
;
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;
1188 stack_frame_head
= fra
.me
.prev
;
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
;
1196 if (init_table
[itpos0
]) return;
1197 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1198 fra
.me
.file
= LOCATE_program
;
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
;
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;
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
;
1224 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1225 fra
.me
.file
= LOCATE_program
;
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
;
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];
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
;
1242 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1243 fra
.me
.file
= LOCATE_program
;
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
;
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
;
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
;
1262 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1263 fra
.me
.file
= LOCATE_program
;
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
;
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];
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
;
1280 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1281 fra
.me
.file
= LOCATE_program
;
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
;
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
;
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
;
1301 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1302 fra
.me
.file
= LOCATE_program
;
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
;
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
)) {
1314 nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_program
, 231);
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];