1 /* This C file is generated by NIT to compile module program. */
2 #include "program._sep.h"
3 val_t
program___ToolContext___global(val_t p0
){
4 struct {struct stack_frame_t me
;} fra
;
7 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
8 fra
.me
.file
= LOCATE_program
;
10 fra
.me
.meth
= LOCATE_program___ToolContext___global
;
13 fra
.me
.nitni_local_ref_head
= NULL
;
14 fra
.me
.REG
[0] = NIT_NULL
;
17 REGB0
= TAG_Bool(ATTR_program___ToolContext____global(fra
.me
.REG
[0])!=NIT_NULL
);
18 if (UNTAG_Bool(REGB0
)) {
20 nit_abort("Uninitialized attribute %s", "_global", LOCATE_program
, 26);
22 REGB0
= ATTR_program___ToolContext____global(fra
.me
.REG
[0]);
23 stack_frame_head
= fra
.me
.prev
;
26 void program___ToolContext___global__eq(val_t p0
, val_t p1
){
27 struct {struct stack_frame_t me
;} fra
;
30 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
31 fra
.me
.file
= LOCATE_program
;
33 fra
.me
.meth
= LOCATE_program___ToolContext___global__eq
;
36 fra
.me
.nitni_local_ref_head
= NULL
;
37 fra
.me
.REG
[0] = NIT_NULL
;
41 ATTR_program___ToolContext____global(fra
.me
.REG
[0]) = REGB0
;
42 stack_frame_head
= fra
.me
.prev
;
45 void program___ToolContext___use_SFT_optimization__eq(val_t p0
, val_t p1
){
46 struct {struct stack_frame_t me
;} fra
;
49 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
50 fra
.me
.file
= LOCATE_program
;
52 fra
.me
.meth
= LOCATE_program___ToolContext___use_SFT_optimization__eq
;
55 fra
.me
.nitni_local_ref_head
= NULL
;
56 fra
.me
.REG
[0] = NIT_NULL
;
60 ATTR_program___ToolContext____use_SFT_optimization(fra
.me
.REG
[0]) = REGB0
;
61 stack_frame_head
= fra
.me
.prev
;
64 val_t
program___ToolContext___use_SFT_optimization(val_t p0
){
65 struct {struct stack_frame_t me
;} fra
;
69 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
70 fra
.me
.file
= LOCATE_program
;
72 fra
.me
.meth
= LOCATE_program___ToolContext___use_SFT_optimization
;
75 fra
.me
.nitni_local_ref_head
= NULL
;
76 fra
.me
.REG
[0] = NIT_NULL
;
79 REGB0
= CALL_program___ToolContext___global(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
80 if (UNTAG_Bool(REGB0
)) {
81 REGB0
= TAG_Bool(ATTR_program___ToolContext____use_SFT_optimization(fra
.me
.REG
[0])!=NIT_NULL
);
82 if (UNTAG_Bool(REGB0
)) {
84 nit_abort("Uninitialized attribute %s", "_use_SFT_optimization", LOCATE_program
, 31);
86 REGB0
= ATTR_program___ToolContext____use_SFT_optimization(fra
.me
.REG
[0]);
88 REGB1
= TAG_Bool(false);
93 stack_frame_head
= fra
.me
.prev
;
96 val_t
program___Program___tc(val_t p0
){
97 struct {struct stack_frame_t me
;} fra
;
100 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
101 fra
.me
.file
= LOCATE_program
;
103 fra
.me
.meth
= LOCATE_program___Program___tc
;
104 fra
.me
.has_broke
= 0;
106 fra
.me
.nitni_local_ref_head
= NULL
;
107 fra
.me
.REG
[0] = NIT_NULL
;
110 REGB0
= TAG_Bool(ATTR_program___Program____tc(fra
.me
.REG
[0])!=NIT_NULL
);
111 if (UNTAG_Bool(REGB0
)) {
113 nit_abort("Uninitialized attribute %s", "_tc", LOCATE_program
, 37);
115 fra
.me
.REG
[0] = ATTR_program___Program____tc(fra
.me
.REG
[0]);
116 stack_frame_head
= fra
.me
.prev
;
117 return fra
.me
.REG
[0];
119 val_t
program___Program___main_module(val_t p0
){
120 struct {struct stack_frame_t me
;} fra
;
123 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
124 fra
.me
.file
= LOCATE_program
;
126 fra
.me
.meth
= LOCATE_program___Program___main_module
;
127 fra
.me
.has_broke
= 0;
129 fra
.me
.nitni_local_ref_head
= NULL
;
130 fra
.me
.REG
[0] = NIT_NULL
;
133 REGB0
= TAG_Bool(ATTR_program___Program____main_module(fra
.me
.REG
[0])!=NIT_NULL
);
134 if (UNTAG_Bool(REGB0
)) {
136 nit_abort("Uninitialized attribute %s", "_main_module", LOCATE_program
, 41);
138 fra
.me
.REG
[0] = ATTR_program___Program____main_module(fra
.me
.REG
[0]);
139 stack_frame_head
= fra
.me
.prev
;
140 return fra
.me
.REG
[0];
142 val_t
program___Program___main_method(val_t p0
){
143 struct {struct stack_frame_t me
;} fra
;
145 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
146 fra
.me
.file
= LOCATE_program
;
148 fra
.me
.meth
= LOCATE_program___Program___main_method
;
149 fra
.me
.has_broke
= 0;
151 fra
.me
.nitni_local_ref_head
= NULL
;
152 fra
.me
.REG
[0] = NIT_NULL
;
155 fra
.me
.REG
[0] = ATTR_program___Program____main_method(fra
.me
.REG
[0]);
156 stack_frame_head
= fra
.me
.prev
;
157 return fra
.me
.REG
[0];
159 val_t
program___Program___main_class(val_t p0
){
160 struct {struct stack_frame_t me
;} fra
;
162 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
163 fra
.me
.file
= LOCATE_program
;
165 fra
.me
.meth
= LOCATE_program___Program___main_class
;
166 fra
.me
.has_broke
= 0;
168 fra
.me
.nitni_local_ref_head
= NULL
;
169 fra
.me
.REG
[0] = NIT_NULL
;
172 fra
.me
.REG
[0] = ATTR_program___Program____main_class(fra
.me
.REG
[0]);
173 stack_frame_head
= fra
.me
.prev
;
174 return fra
.me
.REG
[0];
176 void program___Program___finish_processing_classes(val_t p0
){
177 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
182 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
183 fra
.me
.file
= LOCATE_program
;
185 fra
.me
.meth
= LOCATE_program___Program___finish_processing_classes
;
186 fra
.me
.has_broke
= 0;
188 fra
.me
.nitni_local_ref_head
= NULL
;
189 fra
.me
.REG
[0] = NIT_NULL
;
190 fra
.me
.REG
[1] = NIT_NULL
;
191 fra
.me
.REG
[2] = NIT_NULL
;
194 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___init();
196 fra
.me
.REG
[0] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
197 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
198 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_program___Program___finish_processing_classes_1
));
199 /* ../lib/standard/collection/array.nit:269 */
201 /* ../lib/standard/collection/array.nit:270 */
202 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
203 if (UNTAG_Bool(REGB1
)) {
205 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 270);
207 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1]);
208 /* ../lib/standard/collection/array.nit:271 */
209 fra
.me
.REG
[0] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[1]);
210 /* ../lib/standard/collection/array.nit:272 */
212 /* ../lib/standard/collection/array.nit:24 */
213 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
214 if (UNTAG_Bool(REGB1
)) {
216 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 24);
218 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1]);
219 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
220 if (UNTAG_Bool(REGB2
)) {
222 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
224 /* ../lib/standard/kernel.nit:232 */
225 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
226 /* ../lib/standard/collection/array.nit:272 */
227 if (UNTAG_Bool(REGB1
)) {
228 /* ../lib/standard/collection/array.nit:273 */
229 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
230 if (UNTAG_Bool(REGB1
)) {
231 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 273);
233 /* ../lib/standard/collection/array.nit:718 */
234 fra
.me
.REG
[2] = ((Nit_NativeArray
)fra
.me
.REG
[0])->val
[UNTAG_Int(REGB0
)];
236 CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
237 /* ../lib/standard/collection/array.nit:274 */
239 /* ../lib/standard/kernel.nit:235 */
240 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
241 /* ../lib/standard/collection/array.nit:274 */
244 /* ../lib/standard/collection/array.nit:272 */
249 stack_frame_head
= fra
.me
.prev
;
252 void OC_program___Program___finish_processing_classes_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
253 struct {struct stack_frame_t me
;} fra
;
256 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
257 fra
.me
.file
= LOCATE_program
;
259 fra
.me
.meth
= LOCATE_program___Program___finish_processing_classes
;
260 fra
.me
.has_broke
= 0;
262 fra
.me
.nitni_local_ref_head
= NULL
;
263 fra
.me
.REG
[0] = NIT_NULL
;
264 fra
.me
.closure_ctx
= closctx_param
;
265 fra
.me
.closure_funs
= CREG
;
269 CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
271 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
272 stack_frame_head
= fra
.me
.prev
;
275 void program___Program___compute_main_method(val_t p0
){
276 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
279 static val_t once_value_1
; /* Once value */
280 static val_t once_value_2
; /* Once value */
281 static val_t once_value_4
; /* Once value */
282 static val_t once_value_5
; /* Once value */
283 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
284 fra
.me
.file
= LOCATE_program
;
286 fra
.me
.meth
= LOCATE_program___Program___compute_main_method
;
287 fra
.me
.has_broke
= 0;
289 fra
.me
.nitni_local_ref_head
= NULL
;
290 fra
.me
.REG
[0] = NIT_NULL
;
291 fra
.me
.REG
[1] = NIT_NULL
;
292 fra
.me
.REG
[2] = NIT_NULL
;
297 fra
.me
.REG
[1] = BOX_NativeString("Sys");
299 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
300 once_value_2
= fra
.me
.REG
[1];
301 register_static_object(&once_value_2
);
302 } else fra
.me
.REG
[1] = once_value_2
;
303 fra
.me
.REG
[1] = fra
.me
.REG
[1];
304 fra
.me
.REG
[1] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
305 once_value_1
= fra
.me
.REG
[1];
306 register_static_object(&once_value_1
);
307 } else fra
.me
.REG
[1] = once_value_1
;
308 fra
.me
.REG
[1] = fra
.me
.REG
[1];
310 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
311 REGB0
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
312 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
313 if (UNTAG_Bool(REGB0
)) {
317 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
318 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
322 fra
.me
.REG
[2] = BOX_NativeString("main");
324 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
325 once_value_5
= fra
.me
.REG
[2];
326 register_static_object(&once_value_5
);
327 } else fra
.me
.REG
[2] = once_value_5
;
328 fra
.me
.REG
[2] = fra
.me
.REG
[2];
329 fra
.me
.REG
[2] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
330 once_value_4
= fra
.me
.REG
[2];
331 register_static_object(&once_value_4
);
332 } else fra
.me
.REG
[2] = once_value_4
;
333 fra
.me
.REG
[2] = fra
.me
.REG
[2];
335 REGB0
= CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
336 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
337 if (UNTAG_Bool(REGB0
)) {
341 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
342 ATTR_program___Program____main_method(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
344 ATTR_program___Program____main_class(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
346 stack_frame_head
= fra
.me
.prev
;
349 void program___Program___generate_allocation_iroutines(val_t p0
){
350 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
352 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
353 fra
.me
.file
= LOCATE_program
;
355 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
356 fra
.me
.has_broke
= 0;
358 fra
.me
.nitni_local_ref_head
= NULL
;
359 fra
.me
.REG
[0] = NIT_NULL
;
360 fra
.me
.REG
[1] = NIT_NULL
;
361 fra
.me
.REG
[2] = NIT_NULL
;
362 fra
.me
.REG
[3] = NIT_NULL
;
363 fra
.me
.REG
[4] = NIT_NULL
;
364 fra
.me
.REG
[5] = NIT_NULL
;
367 fra
.me
.REG
[1] = fra
.me
.REG
[0];
369 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
370 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
371 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[2])(fra
.me
.REG
[2], (&(fra
.me
)), ((fun_t
)OC_program___Program___generate_allocation_iroutines_1
));
372 stack_frame_head
= fra
.me
.prev
;
375 void OC_program___Program___generate_allocation_iroutines_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
376 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
381 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
382 fra
.me
.file
= LOCATE_program
;
384 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
385 fra
.me
.has_broke
= 0;
387 fra
.me
.nitni_local_ref_head
= NULL
;
388 fra
.me
.REG
[0] = NIT_NULL
;
389 fra
.me
.REG
[1] = NIT_NULL
;
390 fra
.me
.closure_ctx
= closctx_param
;
391 fra
.me
.closure_funs
= CREG
;
394 closctx
->REG
[2] = fra
.me
.REG
[0];
396 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx
->REG
[2])(closctx
->REG
[2]);
397 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
398 if (UNTAG_Bool(REGB0
)) {
399 REGB0
= TAG_Bool(true);
401 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx
->REG
[2])(closctx
->REG
[2]);
402 REGB1
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
405 if (UNTAG_Bool(REGB0
)) {
409 fra
.me
.REG
[0] = CALL_primitive_info___MMLocalClass___primitive_info(closctx
->REG
[2])(closctx
->REG
[2]);
411 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
412 if (UNTAG_Bool(REGB0
)) {
414 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
415 if (UNTAG_Bool(REGB1
)) {
416 REGB1
= TAG_Bool(false);
419 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
423 if (UNTAG_Bool(REGB0
)) {
425 fra
.me
.REG
[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
426 fra
.me
.REG
[0] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[0]);
427 closctx
->REG
[3] = fra
.me
.REG
[0];
430 fra
.me
.REG
[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
431 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[3]);
432 closctx
->REG
[4] = fra
.me
.REG
[0];
434 fra
.me
.REG
[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(closctx
->REG
[4], NIT_NULL
);
436 fra
.me
.REG
[1] = CALL_program___Program___main_module(closctx
->REG
[1])(closctx
->REG
[1]);
437 fra
.me
.REG
[1] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
438 closctx
->REG
[5] = fra
.me
.REG
[1];
440 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[2])(closctx
->REG
[2]);
441 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
, ((fun_t
)OC_program___Program___generate_allocation_iroutines_3
));
442 /* program.nit:107 */
443 CALL_program___MMLocalClass___init_var_iroutine__eq(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
444 /* program.nit:111 */
445 fra
.me
.REG
[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
446 fra
.me
.REG
[0] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[0]);
447 closctx
->REG
[5] = fra
.me
.REG
[0];
448 /* program.nit:112 */
450 fra
.me
.REG
[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
451 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[5]);
452 /* program.nit:113 */
453 fra
.me
.REG
[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra
.me
.REG
[0], NIT_NULL
);
454 /* program.nit:114 */
455 fra
.me
.REG
[1] = CALL_program___Program___main_module(closctx
->REG
[1])(closctx
->REG
[1]);
456 fra
.me
.REG
[1] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
457 closctx
->REG
[3] = fra
.me
.REG
[1];
458 /* program.nit:115 */
459 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[2])(closctx
->REG
[2]);
460 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
, ((fun_t
)OC_program___Program___generate_allocation_iroutines_5
));
461 /* program.nit:124 */
462 CALL_program___MMLocalClass___checknew_iroutine__eq(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
463 /* program.nit:127 */
464 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[2])(closctx
->REG
[2]);
465 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_program___Program___generate_allocation_iroutines_7
));
468 stack_frame_head
= fra
.me
.prev
;
471 void OC_program___Program___generate_allocation_iroutines_3(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
472 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
477 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
478 fra
.me
.file
= LOCATE_program
;
480 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
481 fra
.me
.has_broke
= 0;
483 fra
.me
.nitni_local_ref_head
= NULL
;
484 fra
.me
.REG
[0] = NIT_NULL
;
485 fra
.me
.REG
[1] = NIT_NULL
;
486 fra
.me
.closure_ctx
= closctx_param
;
487 fra
.me
.closure_funs
= CREG
;
491 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
492 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_metamodel___abstractmetamodel___MMAttribute
, ID_metamodel___abstractmetamodel___MMAttribute
)) /*cast MMAttribute*/;
493 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
494 if (UNTAG_Bool(REGB0
)) {
498 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
500 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
501 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
502 if (UNTAG_Bool(REGB0
)) {
503 nit_abort("Reciever is null", NULL
, LOCATE_program
, 97);
505 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
507 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMAttribute
, ID_metamodel___abstractmetamodel___MMAttribute
)) /*cast MMAttribute*/;
508 if (UNTAG_Bool(REGB0
)) {
509 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
510 if (UNTAG_Bool(REGB0
)) {
512 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
513 if (UNTAG_Bool(REGB1
)) {
514 REGB1
= TAG_Bool(false);
517 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
521 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
523 REGB1
= TAG_Bool(false);
526 if (UNTAG_Bool(REGB0
)) {
528 fra
.me
.REG
[1] = CALL_icode___icode_base___MMAttribute___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
529 /* program.nit:100 */
530 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
531 if (UNTAG_Bool(REGB0
)) {
533 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
534 if (UNTAG_Bool(REGB1
)) {
535 REGB1
= TAG_Bool(false);
538 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
542 if (UNTAG_Bool(REGB0
)) {
545 /* program.nit:102 */
546 fra
.me
.REG
[1] = CALL_icode___icode_tools___ICodeBuilder___inline_routine(closctx
->REG
[5])(closctx
->REG
[5], fra
.me
.REG
[1], closctx
->REG
[4], NIT_NULL
);
547 REGB0
= TAG_Bool((fra
.me
.REG
[1]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[1], COLOR_icode___icode_base___IRegister
, ID_icode___icode_base___IRegister
)) /*cast IRegister*/;
548 if (UNTAG_Bool(REGB0
)) {
550 nit_abort("Cast failed", NULL
, LOCATE_program
, 102);
552 /* program.nit:103 */
553 fra
.me
.REG
[1] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra
.me
.REG
[0], closctx
->REG
[3], fra
.me
.REG
[1]);
554 CALL_icode___icode_builder___ICodeBuilder___stmt(closctx
->REG
[5])(closctx
->REG
[5], fra
.me
.REG
[1]);
557 stack_frame_head
= fra
.me
.prev
;
560 void OC_program___Program___generate_allocation_iroutines_5(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
561 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
566 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
567 fra
.me
.file
= LOCATE_program
;
569 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
570 fra
.me
.has_broke
= 0;
572 fra
.me
.nitni_local_ref_head
= NULL
;
573 fra
.me
.REG
[0] = NIT_NULL
;
574 fra
.me
.REG
[1] = NIT_NULL
;
575 fra
.me
.closure_ctx
= closctx_param
;
576 fra
.me
.closure_funs
= CREG
;
579 /* program.nit:116 */
580 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
581 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_metamodel___abstractmetamodel___MMAttribute
, ID_metamodel___abstractmetamodel___MMAttribute
)) /*cast MMAttribute*/;
582 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
583 if (UNTAG_Bool(REGB0
)) {
586 /* program.nit:117 */
587 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
588 /* program.nit:118 */
589 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
590 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
591 if (UNTAG_Bool(REGB0
)) {
592 nit_abort("Reciever is null", NULL
, LOCATE_program
, 118);
594 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
595 /* program.nit:119 */
596 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMAttribute
, ID_metamodel___abstractmetamodel___MMAttribute
)) /*cast MMAttribute*/;
597 if (UNTAG_Bool(REGB0
)) {
598 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
599 if (UNTAG_Bool(REGB0
)) {
601 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
602 if (UNTAG_Bool(REGB1
)) {
603 REGB1
= TAG_Bool(false);
606 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
610 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
612 REGB1
= TAG_Bool(false);
615 if (UNTAG_Bool(REGB0
)) {
616 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
617 if (UNTAG_Bool(REGB0
)) {
618 nit_abort("Reciever is null", NULL
, LOCATE_program
, 119);
620 REGB0
= CALL_metamodel___static_type___MMType___is_nullable(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
621 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
623 REGB1
= TAG_Bool(false);
626 if (UNTAG_Bool(REGB0
)) {
627 /* program.nit:120 */
628 CALL_icode___icode_builder___ICodeBuilder___add_attr_check(closctx
->REG
[3])(closctx
->REG
[3], fra
.me
.REG
[0], closctx
->REG
[5]);
631 stack_frame_head
= fra
.me
.prev
;
634 void OC_program___Program___generate_allocation_iroutines_7(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
635 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
642 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
643 fra
.me
.file
= LOCATE_program
;
645 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
646 fra
.me
.has_broke
= 0;
648 fra
.me
.nitni_local_ref_head
= NULL
;
649 fra
.me
.REG
[0] = NIT_NULL
;
650 fra
.me
.REG
[1] = NIT_NULL
;
651 fra
.me
.REG
[2] = NIT_NULL
;
652 fra
.me
.REG
[3] = NIT_NULL
;
653 fra
.me
.REG
[4] = NIT_NULL
;
654 fra
.me
.REG
[5] = NIT_NULL
;
655 fra
.me
.closure_ctx
= closctx_param
;
656 fra
.me
.closure_funs
= CREG
;
659 /* program.nit:129 */
660 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[2]);
661 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
662 if (UNTAG_Bool(REGB0
)) {
665 /* program.nit:130 */
666 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
667 /* program.nit:131 */
668 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
669 if (UNTAG_Bool(REGB0
)) {
671 nit_abort("Assert failed", NULL
, LOCATE_program
, 131);
673 /* program.nit:133 */
674 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
675 fra
.me
.REG
[1] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[1]);
676 /* program.nit:134 */
677 fra
.me
.REG
[2] = NEW_Array_standard___collection___array___Array___init();
678 /* program.nit:135 */
680 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
681 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
682 if (UNTAG_Bool(REGB1
)) {
683 nit_abort("Reciever is null", NULL
, LOCATE_program
, 135);
685 REGB1
= CALL_metamodel___static_type___MMSignature___arity(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
686 /* ../lib/standard/kernel.nit:352 */
688 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
689 if (UNTAG_Bool(REGB2
)) {
691 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
693 /* ../lib/standard/kernel.nit:232 */
694 REGB2
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
695 /* ../lib/standard/kernel.nit:352 */
696 if (UNTAG_Bool(REGB2
)) {
697 /* program.nit:135 */
699 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
700 REGB3
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
701 if (UNTAG_Bool(REGB3
)) {
702 nit_abort("Reciever is null", NULL
, LOCATE_program
, 135);
704 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMSignature_____bra(fra
.me
.REG
[3])(fra
.me
.REG
[3], REGB2
);
705 fra
.me
.REG
[3] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[3]);
706 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
707 /* ../lib/standard/kernel.nit:354 */
709 /* ../lib/standard/kernel.nit:235 */
710 REGB2
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB2
));
711 /* ../lib/standard/kernel.nit:354 */
714 /* ../lib/standard/kernel.nit:352 */
719 /* program.nit:136 */
720 fra
.me
.REG
[3] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra
.me
.REG
[2], fra
.me
.REG
[1]);
721 /* program.nit:137 */
722 fra
.me
.REG
[4] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
723 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
724 if (UNTAG_Bool(REGB0
)) {
725 nit_abort("Reciever is null", NULL
, LOCATE_program
, 137);
727 fra
.me
.REG
[4] = CALL_icode___icode_base___IRoutine___location(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
728 CALL_icode___icode_base___IRoutine___location__eq(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
729 /* program.nit:138 */
730 fra
.me
.REG
[4] = CALL_program___Program___main_module(closctx
->REG
[1])(closctx
->REG
[1]);
731 fra
.me
.REG
[4] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra
.me
.REG
[4], fra
.me
.REG
[3]);
732 /* program.nit:140 */
733 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
734 fra
.me
.REG
[5] = NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(fra
.me
.REG
[5]);
735 /* program.nit:141 */
736 CALL_icode___icode_base___ICode___result__eq(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[1]);
737 /* program.nit:142 */
738 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
739 /* program.nit:143 */
741 fra
.me
.REG
[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
742 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[1]);
743 /* program.nit:144 */
744 CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[2]);
745 /* program.nit:146 */
746 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
747 fra
.me
.REG
[2] = NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(fra
.me
.REG
[2], fra
.me
.REG
[1]);
748 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[2]);
749 /* program.nit:147 */
750 fra
.me
.REG
[5] = NEW_IStaticCall_icode___icode_base___IStaticCall___init(fra
.me
.REG
[0], fra
.me
.REG
[5]);
751 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
752 /* program.nit:148 */
753 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
754 fra
.me
.REG
[1] = NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(fra
.me
.REG
[5], fra
.me
.REG
[1]);
755 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[1]);
756 /* program.nit:150 */
757 fra
.me
.REG
[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx
->REG
[2])(closctx
->REG
[2]);
758 CALL_standard___collection___abstract_collection___Map_____braeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0], fra
.me
.REG
[3]);
760 stack_frame_head
= fra
.me
.prev
;
763 void program___Program___with_each_iroutines(val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
764 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
768 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
769 fra
.me
.file
= LOCATE_program
;
771 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
772 fra
.me
.has_broke
= 0;
774 fra
.me
.nitni_local_ref_head
= NULL
;
775 fra
.me
.REG
[0] = NIT_NULL
;
776 fra
.me
.REG
[1] = NIT_NULL
;
777 fra
.me
.REG
[2] = NIT_NULL
;
778 fra
.me
.closure_ctx
= closctx_param
;
779 fra
.me
.closure_funs
= CREG
;
782 /* program.nit:161 */
783 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
784 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
785 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
786 if (UNTAG_Bool(REGB0
)) {
787 nit_abort("Reciever is null", NULL
, LOCATE_program
, 161);
789 fra
.me
.REG
[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
790 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], (&(fra
.me
)), ((fun_t
)OC_program___Program___with_each_iroutines_1
));
791 switch ((&(fra
.me
))->has_broke
) {
793 case 1: (&(fra
.me
))->has_broke
= 0; goto label9
;
796 stack_frame_head
= fra
.me
.prev
;
799 void OC_program___Program___with_each_iroutines_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
800 struct {struct stack_frame_t me
;} fra
;
803 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
804 fra
.me
.file
= LOCATE_program
;
806 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
807 fra
.me
.has_broke
= 0;
809 fra
.me
.nitni_local_ref_head
= NULL
;
810 fra
.me
.REG
[0] = NIT_NULL
;
811 fra
.me
.closure_ctx
= closctx_param
;
812 fra
.me
.closure_funs
= CREG
;
815 closctx
->REG
[1] = fra
.me
.REG
[0];
816 /* program.nit:162 */
817 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(closctx
->REG
[1])(closctx
->REG
[1]);
818 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_program___Program___with_each_iroutines_2
));
819 switch (closctx
->has_broke
) {
821 default: goto label8
;
824 stack_frame_head
= fra
.me
.prev
;
827 void OC_program___Program___with_each_iroutines_2(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
828 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
833 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
834 fra
.me
.file
= LOCATE_program
;
836 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
837 fra
.me
.has_broke
= 0;
839 fra
.me
.nitni_local_ref_head
= NULL
;
840 fra
.me
.REG
[0] = NIT_NULL
;
841 fra
.me
.REG
[1] = NIT_NULL
;
842 fra
.me
.closure_ctx
= closctx_param
;
843 fra
.me
.closure_funs
= CREG
;
846 /* program.nit:163 */
847 closctx
->REG
[2] = NIT_NULL
;
848 /* program.nit:166 */
849 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
850 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
, ((fun_t
)OC_program___Program___with_each_iroutines_3
));
851 switch (closctx
->has_broke
) {
853 default: goto label5
;
855 /* program.nit:177 */
856 fra
.me
.REG
[1] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
857 closctx
->REG
[2] = fra
.me
.REG
[1];
858 /* program.nit:178 */
859 REGB0
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
860 if (UNTAG_Bool(REGB0
)) {
862 REGB1
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
863 if (UNTAG_Bool(REGB1
)) {
864 REGB1
= TAG_Bool(false);
867 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[2])(closctx
->REG
[2], NIT_NULL
);
871 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
872 if (UNTAG_Bool(REGB0
)) {
873 /* program.nit:179 */
874 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, closctx
->REG
[2], closctx
->REG
[1]);
875 if (closctx
->closure_ctx
->has_broke
) {
876 closctx
->has_broke
= 1;
880 /* program.nit:181 */
881 fra
.me
.REG
[1] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
882 closctx
->REG
[2] = fra
.me
.REG
[1];
883 /* program.nit:182 */
884 REGB0
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
885 if (UNTAG_Bool(REGB0
)) {
887 REGB1
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
888 if (UNTAG_Bool(REGB1
)) {
889 REGB1
= TAG_Bool(false);
892 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[2])(closctx
->REG
[2], NIT_NULL
);
896 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
897 if (UNTAG_Bool(REGB0
)) {
898 /* program.nit:183 */
899 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, closctx
->REG
[2], closctx
->REG
[1]);
900 if (closctx
->closure_ctx
->has_broke
) {
901 closctx
->has_broke
= 1;
905 /* program.nit:185 */
906 fra
.me
.REG
[0] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
907 fra
.me
.REG
[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
908 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_program___Program___with_each_iroutines_6
));
909 switch (closctx
->has_broke
) {
911 default: goto label5
;
914 stack_frame_head
= fra
.me
.prev
;
917 void OC_program___Program___with_each_iroutines_3(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
918 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
923 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
924 fra
.me
.file
= LOCATE_program
;
926 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
927 fra
.me
.has_broke
= 0;
929 fra
.me
.nitni_local_ref_head
= NULL
;
930 fra
.me
.REG
[0] = NIT_NULL
;
931 fra
.me
.REG
[1] = NIT_NULL
;
932 fra
.me
.closure_ctx
= closctx_param
;
933 fra
.me
.closure_funs
= CREG
;
936 /* program.nit:167 */
937 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMAttribute
, ID_metamodel___abstractmetamodel___MMAttribute
)) /*cast MMAttribute*/;
938 if (UNTAG_Bool(REGB0
)) {
939 /* program.nit:168 */
940 fra
.me
.REG
[1] = CALL_icode___icode_base___MMAttribute___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
941 closctx
->REG
[2] = fra
.me
.REG
[1];
943 /* program.nit:169 */
944 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
945 if (UNTAG_Bool(REGB0
)) {
946 /* program.nit:170 */
947 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
948 closctx
->REG
[2] = fra
.me
.REG
[0];
951 /* program.nit:172 */
952 REGB0
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
953 if (UNTAG_Bool(REGB0
)) {
955 REGB1
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
956 if (UNTAG_Bool(REGB1
)) {
957 REGB1
= TAG_Bool(false);
960 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[2])(closctx
->REG
[2], NIT_NULL
);
964 if (UNTAG_Bool(REGB0
)) {
967 /* program.nit:173 */
968 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, closctx
->REG
[2], closctx
->REG
[1]);
969 if (closctx
->closure_ctx
->has_broke
) {
970 closctx
->has_broke
= 1;
974 stack_frame_head
= fra
.me
.prev
;
977 void OC_program___Program___with_each_iroutines_6(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
978 struct {struct stack_frame_t me
;} fra
;
981 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
982 fra
.me
.file
= LOCATE_program
;
984 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
985 fra
.me
.has_broke
= 0;
987 fra
.me
.nitni_local_ref_head
= NULL
;
988 fra
.me
.REG
[0] = NIT_NULL
;
989 fra
.me
.closure_ctx
= closctx_param
;
990 fra
.me
.closure_funs
= CREG
;
993 /* program.nit:186 */
994 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, fra
.me
.REG
[0], closctx
->REG
[1]);
995 if (closctx
->closure_ctx
->has_broke
) {
996 closctx
->has_broke
= 1;
1000 stack_frame_head
= fra
.me
.prev
;
1003 void program___Program___with_each_methods(val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
1004 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1008 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1009 fra
.me
.file
= LOCATE_program
;
1011 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
1012 fra
.me
.has_broke
= 0;
1013 fra
.me
.REG_size
= 2;
1014 fra
.me
.nitni_local_ref_head
= NULL
;
1015 fra
.me
.REG
[0] = NIT_NULL
;
1016 fra
.me
.REG
[1] = NIT_NULL
;
1017 fra
.me
.closure_ctx
= closctx_param
;
1018 fra
.me
.closure_funs
= CREG
;
1020 CREG
[0] = clos_fun0
;
1021 /* program.nit:197 */
1022 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1023 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1024 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
1025 if (UNTAG_Bool(REGB0
)) {
1026 nit_abort("Reciever is null", NULL
, LOCATE_program
, 197);
1028 fra
.me
.REG
[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1029 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], (&(fra
.me
)), ((fun_t
)OC_program___Program___with_each_methods_1
));
1030 switch ((&(fra
.me
))->has_broke
) {
1032 case 1: (&(fra
.me
))->has_broke
= 0; goto label7
;
1035 stack_frame_head
= fra
.me
.prev
;
1038 void OC_program___Program___with_each_methods_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
1039 struct {struct stack_frame_t me
;} fra
;
1042 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1043 fra
.me
.file
= LOCATE_program
;
1045 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
1046 fra
.me
.has_broke
= 0;
1047 fra
.me
.REG_size
= 1;
1048 fra
.me
.nitni_local_ref_head
= NULL
;
1049 fra
.me
.REG
[0] = NIT_NULL
;
1050 fra
.me
.closure_ctx
= closctx_param
;
1051 fra
.me
.closure_funs
= CREG
;
1053 CREG
[0] = clos_fun0
;
1054 /* program.nit:198 */
1055 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1056 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_program___Program___with_each_methods_2
));
1057 switch (closctx
->has_broke
) {
1059 default: goto label6
;
1062 stack_frame_head
= fra
.me
.prev
;
1065 void OC_program___Program___with_each_methods_2(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
1066 struct {struct stack_frame_t me
;} fra
;
1069 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1070 fra
.me
.file
= LOCATE_program
;
1072 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
1073 fra
.me
.has_broke
= 0;
1074 fra
.me
.REG_size
= 1;
1075 fra
.me
.nitni_local_ref_head
= NULL
;
1076 fra
.me
.REG
[0] = NIT_NULL
;
1077 fra
.me
.closure_ctx
= closctx_param
;
1078 fra
.me
.closure_funs
= CREG
;
1080 CREG
[0] = clos_fun0
;
1081 /* program.nit:200 */
1082 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1083 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_program___Program___with_each_methods_3
));
1084 switch (closctx
->has_broke
) {
1086 default: goto label5
;
1089 stack_frame_head
= fra
.me
.prev
;
1092 void OC_program___Program___with_each_methods_3(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
1093 struct {struct stack_frame_t me
;} fra
;
1097 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1098 fra
.me
.file
= LOCATE_program
;
1100 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
1101 fra
.me
.has_broke
= 0;
1102 fra
.me
.REG_size
= 1;
1103 fra
.me
.nitni_local_ref_head
= NULL
;
1104 fra
.me
.REG
[0] = NIT_NULL
;
1105 fra
.me
.closure_ctx
= closctx_param
;
1106 fra
.me
.closure_funs
= CREG
;
1108 CREG
[0] = clos_fun0
;
1109 /* program.nit:201 */
1110 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
1111 if (UNTAG_Bool(REGB0
)) {
1112 /* program.nit:202 */
1113 ((void (*)(struct stack_frame_t
*, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, fra
.me
.REG
[0]);
1114 if (closctx
->closure_ctx
->has_broke
) {
1115 closctx
->has_broke
= 1;
1120 stack_frame_head
= fra
.me
.prev
;
1123 void program___Program___with_each_live_local_classes(val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
1124 struct {struct stack_frame_t me
;} fra
;
1127 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1128 fra
.me
.file
= LOCATE_program
;
1130 fra
.me
.meth
= LOCATE_program___Program___with_each_live_local_classes
;
1131 fra
.me
.has_broke
= 0;
1132 fra
.me
.REG_size
= 1;
1133 fra
.me
.nitni_local_ref_head
= NULL
;
1134 fra
.me
.REG
[0] = NIT_NULL
;
1135 fra
.me
.closure_ctx
= closctx_param
;
1136 fra
.me
.closure_funs
= CREG
;
1138 CREG
[0] = clos_fun0
;
1139 /* program.nit:214 */
1140 fra
.me
.REG
[0] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1141 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1142 CALL_standard___collection___abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_program___Program___with_each_live_local_classes_1
));
1143 switch ((&(fra
.me
))->has_broke
) {
1145 case 1: (&(fra
.me
))->has_broke
= 0; goto label3
;
1148 stack_frame_head
= fra
.me
.prev
;
1151 void OC_program___Program___with_each_live_local_classes_1(struct stack_frame_t
*closctx
, val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
1152 struct {struct stack_frame_t me
;} fra
;
1155 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1156 fra
.me
.file
= LOCATE_program
;
1158 fra
.me
.meth
= LOCATE_program___Program___with_each_live_local_classes
;
1159 fra
.me
.has_broke
= 0;
1160 fra
.me
.REG_size
= 1;
1161 fra
.me
.nitni_local_ref_head
= NULL
;
1162 fra
.me
.REG
[0] = NIT_NULL
;
1163 fra
.me
.closure_ctx
= closctx_param
;
1164 fra
.me
.closure_funs
= CREG
;
1166 CREG
[0] = clos_fun0
;
1167 /* program.nit:215 */
1168 ((void (*)(struct stack_frame_t
*, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, fra
.me
.REG
[0]);
1169 if (closctx
->closure_ctx
->has_broke
) {
1170 closctx
->has_broke
= 1;
1174 stack_frame_head
= fra
.me
.prev
;
1177 void program___Program___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
1178 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_program___Program
].i
;
1179 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1181 if (init_table
[itpos0
]) return;
1182 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1183 fra
.me
.file
= LOCATE_program
;
1185 fra
.me
.meth
= LOCATE_program___Program___init
;
1186 fra
.me
.has_broke
= 0;
1187 fra
.me
.REG_size
= 3;
1188 fra
.me
.nitni_local_ref_head
= NULL
;
1189 fra
.me
.REG
[0] = NIT_NULL
;
1190 fra
.me
.REG
[1] = NIT_NULL
;
1191 fra
.me
.REG
[2] = NIT_NULL
;
1195 /* program.nit:220 */
1196 ATTR_program___Program____main_module(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1197 /* program.nit:221 */
1198 ATTR_program___Program____tc(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
1199 /* program.nit:222 */
1200 CALL_program___Program___finish_processing_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1201 stack_frame_head
= fra
.me
.prev
;
1202 init_table
[itpos0
] = 1;
1205 val_t
program___MMLocalClass___init_var_iroutine(val_t p0
){
1206 struct {struct stack_frame_t me
;} fra
;
1208 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1209 fra
.me
.file
= LOCATE_program
;
1211 fra
.me
.meth
= LOCATE_program___MMLocalClass___init_var_iroutine
;
1212 fra
.me
.has_broke
= 0;
1213 fra
.me
.REG_size
= 1;
1214 fra
.me
.nitni_local_ref_head
= NULL
;
1215 fra
.me
.REG
[0] = NIT_NULL
;
1217 /* program.nit:227 */
1218 fra
.me
.REG
[0] = ATTR_program___MMLocalClass____init_var_iroutine(fra
.me
.REG
[0]);
1219 stack_frame_head
= fra
.me
.prev
;
1220 return fra
.me
.REG
[0];
1222 void program___MMLocalClass___init_var_iroutine__eq(val_t p0
, val_t p1
){
1223 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1225 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1226 fra
.me
.file
= LOCATE_program
;
1228 fra
.me
.meth
= LOCATE_program___MMLocalClass___init_var_iroutine__eq
;
1229 fra
.me
.has_broke
= 0;
1230 fra
.me
.REG_size
= 2;
1231 fra
.me
.nitni_local_ref_head
= NULL
;
1232 fra
.me
.REG
[0] = NIT_NULL
;
1233 fra
.me
.REG
[1] = NIT_NULL
;
1236 /* program.nit:227 */
1237 ATTR_program___MMLocalClass____init_var_iroutine(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1238 stack_frame_head
= fra
.me
.prev
;
1241 val_t
program___MMLocalClass___checknew_iroutine(val_t p0
){
1242 struct {struct stack_frame_t me
;} fra
;
1244 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1245 fra
.me
.file
= LOCATE_program
;
1247 fra
.me
.meth
= LOCATE_program___MMLocalClass___checknew_iroutine
;
1248 fra
.me
.has_broke
= 0;
1249 fra
.me
.REG_size
= 1;
1250 fra
.me
.nitni_local_ref_head
= NULL
;
1251 fra
.me
.REG
[0] = NIT_NULL
;
1253 /* program.nit:229 */
1254 fra
.me
.REG
[0] = ATTR_program___MMLocalClass____checknew_iroutine(fra
.me
.REG
[0]);
1255 stack_frame_head
= fra
.me
.prev
;
1256 return fra
.me
.REG
[0];
1258 void program___MMLocalClass___checknew_iroutine__eq(val_t p0
, val_t p1
){
1259 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1261 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1262 fra
.me
.file
= LOCATE_program
;
1264 fra
.me
.meth
= LOCATE_program___MMLocalClass___checknew_iroutine__eq
;
1265 fra
.me
.has_broke
= 0;
1266 fra
.me
.REG_size
= 2;
1267 fra
.me
.nitni_local_ref_head
= NULL
;
1268 fra
.me
.REG
[0] = NIT_NULL
;
1269 fra
.me
.REG
[1] = NIT_NULL
;
1272 /* program.nit:229 */
1273 ATTR_program___MMLocalClass____checknew_iroutine(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1274 stack_frame_head
= fra
.me
.prev
;
1277 val_t
program___MMLocalClass___new_instance_iroutine(val_t p0
){
1278 struct {struct stack_frame_t me
;} fra
;
1281 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1282 fra
.me
.file
= LOCATE_program
;
1284 fra
.me
.meth
= LOCATE_program___MMLocalClass___new_instance_iroutine
;
1285 fra
.me
.has_broke
= 0;
1286 fra
.me
.REG_size
= 1;
1287 fra
.me
.nitni_local_ref_head
= NULL
;
1288 fra
.me
.REG
[0] = NIT_NULL
;
1290 /* program.nit:231 */
1291 REGB0
= TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra
.me
.REG
[0])!=NIT_NULL
);
1292 if (UNTAG_Bool(REGB0
)) {
1294 nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_program
, 231);
1296 fra
.me
.REG
[0] = ATTR_program___MMLocalClass____new_instance_iroutine(fra
.me
.REG
[0]);
1297 stack_frame_head
= fra
.me
.prev
;
1298 return fra
.me
.REG
[0];