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
.REG
[0] = NIT_NULL
;
15 /* ./program.nit:26 */
16 REGB0
= TAG_Bool(ATTR_program___ToolContext____global(fra
.me
.REG
[0])!=NIT_NULL
);
17 if (UNTAG_Bool(REGB0
)) {
19 nit_abort("Uninitialized attribute %s", "_global", LOCATE_program
, 26);
21 REGB0
= ATTR_program___ToolContext____global(fra
.me
.REG
[0]);
22 stack_frame_head
= fra
.me
.prev
;
25 void program___ToolContext___global__eq(val_t p0
, val_t p1
){
26 struct {struct stack_frame_t me
;} fra
;
29 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
30 fra
.me
.file
= LOCATE_program
;
32 fra
.me
.meth
= LOCATE_program___ToolContext___global__eq
;
35 fra
.me
.REG
[0] = NIT_NULL
;
38 /* ./program.nit:26 */
39 ATTR_program___ToolContext____global(fra
.me
.REG
[0]) = REGB0
;
40 stack_frame_head
= fra
.me
.prev
;
43 void program___ToolContext___use_SFT_optimization__eq(val_t p0
, val_t p1
){
44 struct {struct stack_frame_t me
;} fra
;
47 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
48 fra
.me
.file
= LOCATE_program
;
50 fra
.me
.meth
= LOCATE_program___ToolContext___use_SFT_optimization__eq
;
53 fra
.me
.REG
[0] = NIT_NULL
;
56 /* ./program.nit:27 */
57 ATTR_program___ToolContext____use_SFT_optimization(fra
.me
.REG
[0]) = REGB0
;
58 stack_frame_head
= fra
.me
.prev
;
61 val_t
program___ToolContext___use_SFT_optimization(val_t p0
){
62 struct {struct stack_frame_t me
;} fra
;
66 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
67 fra
.me
.file
= LOCATE_program
;
69 fra
.me
.meth
= LOCATE_program___ToolContext___use_SFT_optimization
;
72 fra
.me
.REG
[0] = NIT_NULL
;
74 /* ./program.nit:31 */
75 REGB0
= CALL_program___ToolContext___global(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
76 if (UNTAG_Bool(REGB0
)) {
77 REGB0
= TAG_Bool(ATTR_program___ToolContext____use_SFT_optimization(fra
.me
.REG
[0])!=NIT_NULL
);
78 if (UNTAG_Bool(REGB0
)) {
80 nit_abort("Uninitialized attribute %s", "_use_SFT_optimization", LOCATE_program
, 31);
82 REGB0
= ATTR_program___ToolContext____use_SFT_optimization(fra
.me
.REG
[0]);
84 REGB1
= TAG_Bool(false);
89 stack_frame_head
= fra
.me
.prev
;
92 val_t
program___Program___tc(val_t p0
){
93 struct {struct stack_frame_t me
;} fra
;
96 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
97 fra
.me
.file
= LOCATE_program
;
99 fra
.me
.meth
= LOCATE_program___Program___tc
;
100 fra
.me
.has_broke
= 0;
102 fra
.me
.REG
[0] = NIT_NULL
;
104 /* ./program.nit:37 */
105 REGB0
= TAG_Bool(ATTR_program___Program____tc(fra
.me
.REG
[0])!=NIT_NULL
);
106 if (UNTAG_Bool(REGB0
)) {
108 nit_abort("Uninitialized attribute %s", "_tc", LOCATE_program
, 37);
110 fra
.me
.REG
[0] = ATTR_program___Program____tc(fra
.me
.REG
[0]);
111 stack_frame_head
= fra
.me
.prev
;
112 return fra
.me
.REG
[0];
114 val_t
program___Program___main_module(val_t p0
){
115 struct {struct stack_frame_t me
;} fra
;
118 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
119 fra
.me
.file
= LOCATE_program
;
121 fra
.me
.meth
= LOCATE_program___Program___main_module
;
122 fra
.me
.has_broke
= 0;
124 fra
.me
.REG
[0] = NIT_NULL
;
126 /* ./program.nit:41 */
127 REGB0
= TAG_Bool(ATTR_program___Program____main_module(fra
.me
.REG
[0])!=NIT_NULL
);
128 if (UNTAG_Bool(REGB0
)) {
130 nit_abort("Uninitialized attribute %s", "_main_module", LOCATE_program
, 41);
132 fra
.me
.REG
[0] = ATTR_program___Program____main_module(fra
.me
.REG
[0]);
133 stack_frame_head
= fra
.me
.prev
;
134 return fra
.me
.REG
[0];
136 val_t
program___Program___main_method(val_t p0
){
137 struct {struct stack_frame_t me
;} fra
;
139 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
140 fra
.me
.file
= LOCATE_program
;
142 fra
.me
.meth
= LOCATE_program___Program___main_method
;
143 fra
.me
.has_broke
= 0;
145 fra
.me
.REG
[0] = NIT_NULL
;
147 /* ./program.nit:44 */
148 fra
.me
.REG
[0] = ATTR_program___Program____main_method(fra
.me
.REG
[0]);
149 stack_frame_head
= fra
.me
.prev
;
150 return fra
.me
.REG
[0];
152 val_t
program___Program___main_class(val_t p0
){
153 struct {struct stack_frame_t me
;} fra
;
155 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
156 fra
.me
.file
= LOCATE_program
;
158 fra
.me
.meth
= LOCATE_program___Program___main_class
;
159 fra
.me
.has_broke
= 0;
161 fra
.me
.REG
[0] = NIT_NULL
;
163 /* ./program.nit:48 */
164 fra
.me
.REG
[0] = ATTR_program___Program____main_class(fra
.me
.REG
[0]);
165 stack_frame_head
= fra
.me
.prev
;
166 return fra
.me
.REG
[0];
168 void program___Program___finish_processing_classes(val_t p0
){
169 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
174 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
175 fra
.me
.file
= LOCATE_program
;
177 fra
.me
.meth
= LOCATE_program___Program___finish_processing_classes
;
178 fra
.me
.has_broke
= 0;
180 fra
.me
.REG
[0] = NIT_NULL
;
181 fra
.me
.REG
[1] = NIT_NULL
;
182 fra
.me
.REG
[2] = NIT_NULL
;
184 /* ./program.nit:55 */
185 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___init();
186 /* ./program.nit:56 */
187 fra
.me
.REG
[0] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
188 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
189 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
));
190 /* ./../lib/standard//collection//array.nit:232 */
192 /* ./../lib/standard//collection//array.nit:233 */
193 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
194 if (UNTAG_Bool(REGB1
)) {
196 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 233);
198 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1]);
199 /* ./../lib/standard//collection//array.nit:234 */
200 fra
.me
.REG
[0] = ATTR_standard___collection___array___Array____items(fra
.me
.REG
[1]);
201 /* ./../lib/standard//collection//array.nit:235 */
203 /* ./../lib/standard//collection//array.nit:23 */
204 REGB1
= TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
205 if (UNTAG_Bool(REGB1
)) {
207 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array
, 23);
209 REGB1
= ATTR_standard___collection___array___AbstractArrayRead____length(fra
.me
.REG
[1]);
210 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
211 if (UNTAG_Bool(REGB2
)) {
213 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
215 /* ./../lib/standard//kernel.nit:215 */
216 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
217 /* ./../lib/standard//collection//array.nit:235 */
218 if (UNTAG_Bool(REGB1
)) {
219 /* ./../lib/standard//collection//array.nit:236 */
220 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
221 if (UNTAG_Bool(REGB1
)) {
222 nit_abort("Reciever is null", NULL
, LOCATE_standard___collection___array
, 236);
224 /* ./../lib/standard//collection//array.nit:652 */
225 fra
.me
.REG
[2] = ((Nit_NativeArray
)fra
.me
.REG
[0])->val
[UNTAG_Int(REGB0
)];
226 /* ./program.nit:62 */
227 CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
228 /* ./../lib/standard//collection//array.nit:237 */
230 /* ./../lib/standard//kernel.nit:218 */
231 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
232 /* ./../lib/standard//collection//array.nit:237 */
235 /* ./../lib/standard//collection//array.nit:235 */
240 stack_frame_head
= fra
.me
.prev
;
243 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
){
244 struct {struct stack_frame_t me
;} fra
;
247 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
248 fra
.me
.file
= LOCATE_program
;
250 fra
.me
.meth
= LOCATE_program___Program___finish_processing_classes
;
251 fra
.me
.has_broke
= 0;
253 fra
.me
.REG
[0] = NIT_NULL
;
254 fra
.me
.closure_ctx
= closctx_param
;
255 fra
.me
.closure_funs
= CREG
;
258 /* ./program.nit:57 */
259 CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
260 /* ./program.nit:58 */
261 CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
262 stack_frame_head
= fra
.me
.prev
;
265 void program___Program___compute_main_method(val_t p0
){
266 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
269 static val_t once_value_1
; /* Once value */
270 static val_t once_value_2
; /* Once value */
271 static val_t once_value_4
; /* Once value */
272 static val_t once_value_5
; /* Once value */
273 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
274 fra
.me
.file
= LOCATE_program
;
276 fra
.me
.meth
= LOCATE_program___Program___compute_main_method
;
277 fra
.me
.has_broke
= 0;
279 fra
.me
.REG
[0] = NIT_NULL
;
280 fra
.me
.REG
[1] = NIT_NULL
;
281 fra
.me
.REG
[2] = NIT_NULL
;
283 /* ./program.nit:68 */
286 fra
.me
.REG
[1] = BOX_NativeString("Sys");
288 fra
.me
.REG
[1] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[1], REGB0
);
289 once_value_2
= fra
.me
.REG
[1];
290 register_static_object(&once_value_2
);
291 } else fra
.me
.REG
[1] = once_value_2
;
292 fra
.me
.REG
[1] = fra
.me
.REG
[1];
293 fra
.me
.REG
[1] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
294 once_value_1
= fra
.me
.REG
[1];
295 register_static_object(&once_value_1
);
296 } else fra
.me
.REG
[1] = once_value_1
;
297 fra
.me
.REG
[1] = fra
.me
.REG
[1];
298 /* ./program.nit:69 */
299 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
300 REGB0
= CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
301 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
302 if (UNTAG_Bool(REGB0
)) {
305 /* ./program.nit:70 */
306 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
307 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
308 /* ./program.nit:73 */
311 fra
.me
.REG
[2] = BOX_NativeString("main");
313 fra
.me
.REG
[2] = NEW_String_standard___string___String___with_native(fra
.me
.REG
[2], REGB0
);
314 once_value_5
= fra
.me
.REG
[2];
315 register_static_object(&once_value_5
);
316 } else fra
.me
.REG
[2] = once_value_5
;
317 fra
.me
.REG
[2] = fra
.me
.REG
[2];
318 fra
.me
.REG
[2] = CALL_standard___symbol___String___to_symbol(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
319 once_value_4
= fra
.me
.REG
[2];
320 register_static_object(&once_value_4
);
321 } else fra
.me
.REG
[2] = once_value_4
;
322 fra
.me
.REG
[2] = fra
.me
.REG
[2];
323 /* ./program.nit:74 */
324 REGB0
= CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
325 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
326 if (UNTAG_Bool(REGB0
)) {
329 /* ./program.nit:76 */
330 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
331 ATTR_program___Program____main_method(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
332 /* ./program.nit:77 */
333 ATTR_program___Program____main_class(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
335 stack_frame_head
= fra
.me
.prev
;
338 void program___Program___generate_allocation_iroutines(val_t p0
){
339 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
341 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
342 fra
.me
.file
= LOCATE_program
;
344 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
345 fra
.me
.has_broke
= 0;
347 fra
.me
.REG
[0] = NIT_NULL
;
348 fra
.me
.REG
[1] = NIT_NULL
;
349 fra
.me
.REG
[2] = NIT_NULL
;
350 fra
.me
.REG
[3] = NIT_NULL
;
351 fra
.me
.REG
[4] = NIT_NULL
;
352 fra
.me
.REG
[5] = NIT_NULL
;
354 /* ./program.nit:80 */
355 fra
.me
.REG
[1] = fra
.me
.REG
[0];
356 /* ./program.nit:83 */
357 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
358 fra
.me
.REG
[2] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
359 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
));
360 stack_frame_head
= fra
.me
.prev
;
363 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
){
364 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
369 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
370 fra
.me
.file
= LOCATE_program
;
372 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
373 fra
.me
.has_broke
= 0;
375 fra
.me
.REG
[0] = NIT_NULL
;
376 fra
.me
.REG
[1] = NIT_NULL
;
377 fra
.me
.closure_ctx
= closctx_param
;
378 fra
.me
.closure_funs
= CREG
;
381 closctx
->REG
[2] = fra
.me
.REG
[0];
382 /* ./program.nit:84 */
383 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx
->REG
[2])(closctx
->REG
[2]);
384 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
385 if (UNTAG_Bool(REGB0
)) {
386 REGB0
= TAG_Bool(true);
388 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx
->REG
[2])(closctx
->REG
[2]);
389 REGB1
= CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
392 if (UNTAG_Bool(REGB0
)) {
395 /* ./program.nit:85 */
396 fra
.me
.REG
[0] = CALL_primitive_info___MMLocalClass___primitive_info(closctx
->REG
[2])(closctx
->REG
[2]);
397 /* ./program.nit:86 */
398 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
399 if (UNTAG_Bool(REGB0
)) {
401 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
402 if (UNTAG_Bool(REGB1
)) {
403 REGB1
= TAG_Bool(false);
406 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
410 if (UNTAG_Bool(REGB0
)) {
411 /* ./program.nit:89 */
412 fra
.me
.REG
[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
413 fra
.me
.REG
[0] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[0]);
414 closctx
->REG
[3] = fra
.me
.REG
[0];
415 /* ./program.nit:90 */
417 fra
.me
.REG
[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
418 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[3]);
419 closctx
->REG
[4] = fra
.me
.REG
[0];
420 /* ./program.nit:91 */
421 fra
.me
.REG
[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(closctx
->REG
[4], NIT_NULL
);
422 /* ./program.nit:92 */
423 fra
.me
.REG
[1] = CALL_program___Program___main_module(closctx
->REG
[1])(closctx
->REG
[1]);
424 fra
.me
.REG
[1] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
425 closctx
->REG
[5] = fra
.me
.REG
[1];
426 /* ./program.nit:94 */
427 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[2])(closctx
->REG
[2]);
428 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
));
429 /* ./program.nit:107 */
430 CALL_program___MMLocalClass___init_var_iroutine__eq(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
431 /* ./program.nit:111 */
432 fra
.me
.REG
[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
433 fra
.me
.REG
[0] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[0]);
434 closctx
->REG
[5] = fra
.me
.REG
[0];
435 /* ./program.nit:112 */
437 fra
.me
.REG
[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
438 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[5]);
439 /* ./program.nit:113 */
440 fra
.me
.REG
[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra
.me
.REG
[0], NIT_NULL
);
441 /* ./program.nit:114 */
442 fra
.me
.REG
[1] = CALL_program___Program___main_module(closctx
->REG
[1])(closctx
->REG
[1]);
443 fra
.me
.REG
[1] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
444 closctx
->REG
[3] = fra
.me
.REG
[1];
445 /* ./program.nit:115 */
446 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[2])(closctx
->REG
[2]);
447 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
));
448 /* ./program.nit:124 */
449 CALL_program___MMLocalClass___checknew_iroutine__eq(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
450 /* ./program.nit:127 */
451 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[2])(closctx
->REG
[2]);
452 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
));
455 stack_frame_head
= fra
.me
.prev
;
458 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
){
459 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
464 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
465 fra
.me
.file
= LOCATE_program
;
467 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
468 fra
.me
.has_broke
= 0;
470 fra
.me
.REG
[0] = NIT_NULL
;
471 fra
.me
.REG
[1] = NIT_NULL
;
472 fra
.me
.closure_ctx
= closctx_param
;
473 fra
.me
.closure_funs
= CREG
;
476 /* ./program.nit:95 */
477 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
478 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_metamodel___abstractmetamodel___MMAttribute
, ID_metamodel___abstractmetamodel___MMAttribute
)) /*cast MMAttribute*/;
479 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
480 if (UNTAG_Bool(REGB0
)) {
483 /* ./program.nit:96 */
484 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
485 /* ./program.nit:97 */
486 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
487 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
488 if (UNTAG_Bool(REGB0
)) {
489 nit_abort("Reciever is null", NULL
, LOCATE_program
, 97);
491 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
492 /* ./program.nit:98 */
493 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMAttribute
, ID_metamodel___abstractmetamodel___MMAttribute
)) /*cast MMAttribute*/;
494 if (UNTAG_Bool(REGB0
)) {
495 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
496 if (UNTAG_Bool(REGB0
)) {
498 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
499 if (UNTAG_Bool(REGB1
)) {
500 REGB1
= TAG_Bool(false);
503 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
507 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
509 REGB1
= TAG_Bool(false);
512 if (UNTAG_Bool(REGB0
)) {
513 /* ./program.nit:99 */
514 fra
.me
.REG
[1] = CALL_icode___icode_base___MMAttribute___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
515 /* ./program.nit:100 */
516 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
517 if (UNTAG_Bool(REGB0
)) {
519 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
520 if (UNTAG_Bool(REGB1
)) {
521 REGB1
= TAG_Bool(false);
524 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
528 if (UNTAG_Bool(REGB0
)) {
531 /* ./program.nit:102 */
532 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
);
533 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*/;
534 if (UNTAG_Bool(REGB0
)) {
536 nit_abort("Cast failed", NULL
, LOCATE_program
, 102);
538 /* ./program.nit:103 */
539 fra
.me
.REG
[1] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra
.me
.REG
[0], closctx
->REG
[3], fra
.me
.REG
[1]);
540 CALL_icode___icode_builder___ICodeBuilder___stmt(closctx
->REG
[5])(closctx
->REG
[5], fra
.me
.REG
[1]);
543 stack_frame_head
= fra
.me
.prev
;
546 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
){
547 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
552 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
553 fra
.me
.file
= LOCATE_program
;
555 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
556 fra
.me
.has_broke
= 0;
558 fra
.me
.REG
[0] = NIT_NULL
;
559 fra
.me
.REG
[1] = NIT_NULL
;
560 fra
.me
.closure_ctx
= closctx_param
;
561 fra
.me
.closure_funs
= CREG
;
564 /* ./program.nit:116 */
565 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
566 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_metamodel___abstractmetamodel___MMAttribute
, ID_metamodel___abstractmetamodel___MMAttribute
)) /*cast MMAttribute*/;
567 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
568 if (UNTAG_Bool(REGB0
)) {
571 /* ./program.nit:117 */
572 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
573 /* ./program.nit:118 */
574 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
575 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
576 if (UNTAG_Bool(REGB0
)) {
577 nit_abort("Reciever is null", NULL
, LOCATE_program
, 118);
579 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
580 /* ./program.nit:119 */
581 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMAttribute
, ID_metamodel___abstractmetamodel___MMAttribute
)) /*cast MMAttribute*/;
582 if (UNTAG_Bool(REGB0
)) {
583 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
584 if (UNTAG_Bool(REGB0
)) {
586 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
587 if (UNTAG_Bool(REGB1
)) {
588 REGB1
= TAG_Bool(false);
591 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
595 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
597 REGB1
= TAG_Bool(false);
600 if (UNTAG_Bool(REGB0
)) {
601 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
602 if (UNTAG_Bool(REGB0
)) {
603 nit_abort("Reciever is null", NULL
, LOCATE_program
, 119);
605 REGB0
= CALL_metamodel___static_type___MMType___is_nullable(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
606 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
608 REGB1
= TAG_Bool(false);
611 if (UNTAG_Bool(REGB0
)) {
612 /* ./program.nit:120 */
613 CALL_icode___icode_builder___ICodeBuilder___add_attr_check(closctx
->REG
[3])(closctx
->REG
[3], fra
.me
.REG
[0], closctx
->REG
[5]);
616 stack_frame_head
= fra
.me
.prev
;
619 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
){
620 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
627 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
628 fra
.me
.file
= LOCATE_program
;
630 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
631 fra
.me
.has_broke
= 0;
633 fra
.me
.REG
[0] = NIT_NULL
;
634 fra
.me
.REG
[1] = NIT_NULL
;
635 fra
.me
.REG
[2] = NIT_NULL
;
636 fra
.me
.REG
[3] = NIT_NULL
;
637 fra
.me
.REG
[4] = NIT_NULL
;
638 fra
.me
.REG
[5] = NIT_NULL
;
639 fra
.me
.closure_ctx
= closctx_param
;
640 fra
.me
.closure_funs
= CREG
;
643 /* ./program.nit:129 */
644 REGB0
= CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[2]);
645 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
646 if (UNTAG_Bool(REGB0
)) {
649 /* ./program.nit:130 */
650 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0]);
651 /* ./program.nit:131 */
652 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
653 if (UNTAG_Bool(REGB0
)) {
655 nit_abort("Assert failed", NULL
, LOCATE_program
, 131);
657 /* ./program.nit:133 */
658 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
659 fra
.me
.REG
[1] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[1]);
660 /* ./program.nit:134 */
661 fra
.me
.REG
[2] = NEW_Array_standard___collection___array___Array___init();
662 /* ./program.nit:135 */
664 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
665 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
666 if (UNTAG_Bool(REGB1
)) {
667 nit_abort("Reciever is null", NULL
, LOCATE_program
, 135);
669 REGB1
= CALL_metamodel___static_type___MMSignature___arity(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
670 /* ./../lib/standard//kernel.nit:335 */
672 REGB2
= TAG_Bool(VAL_ISA(REGB1
, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0
), VTID_standard___kernel___Comparable___OTHER(REGB0
))) /*cast OTHER*/;
673 if (UNTAG_Bool(REGB2
)) {
675 nit_abort("Cast failed", NULL
, LOCATE_standard___kernel
, 0);
677 /* ./../lib/standard//kernel.nit:215 */
678 REGB2
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
679 /* ./../lib/standard//kernel.nit:335 */
680 if (UNTAG_Bool(REGB2
)) {
681 /* ./program.nit:135 */
683 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
684 REGB3
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
685 if (UNTAG_Bool(REGB3
)) {
686 nit_abort("Reciever is null", NULL
, LOCATE_program
, 135);
688 fra
.me
.REG
[3] = CALL_metamodel___static_type___MMSignature_____bra(fra
.me
.REG
[3])(fra
.me
.REG
[3], REGB2
);
689 fra
.me
.REG
[3] = NEW_IRegister_icode___icode_base___IRegister___init(fra
.me
.REG
[3]);
690 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
691 /* ./../lib/standard//kernel.nit:337 */
693 /* ./../lib/standard//kernel.nit:218 */
694 REGB2
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB2
));
695 /* ./../lib/standard//kernel.nit:337 */
698 /* ./../lib/standard//kernel.nit:335 */
703 /* ./program.nit:136 */
704 fra
.me
.REG
[3] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra
.me
.REG
[2], fra
.me
.REG
[1]);
705 /* ./program.nit:137 */
706 fra
.me
.REG
[4] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
707 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
708 if (UNTAG_Bool(REGB0
)) {
709 nit_abort("Reciever is null", NULL
, LOCATE_program
, 137);
711 fra
.me
.REG
[4] = CALL_icode___icode_base___IRoutine___location(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
712 CALL_icode___icode_base___IRoutine___location__eq(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
713 /* ./program.nit:138 */
714 fra
.me
.REG
[4] = CALL_program___Program___main_module(closctx
->REG
[1])(closctx
->REG
[1]);
715 fra
.me
.REG
[4] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra
.me
.REG
[4], fra
.me
.REG
[3]);
716 /* ./program.nit:140 */
717 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
718 fra
.me
.REG
[5] = NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(fra
.me
.REG
[5]);
719 /* ./program.nit:141 */
720 CALL_icode___icode_base___ICode___result__eq(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[1]);
721 /* ./program.nit:142 */
722 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
723 /* ./program.nit:143 */
725 fra
.me
.REG
[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
726 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[1]);
727 /* ./program.nit:144 */
728 CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[2]);
729 /* ./program.nit:146 */
730 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
731 fra
.me
.REG
[2] = NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(fra
.me
.REG
[2], fra
.me
.REG
[1]);
732 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[2]);
733 /* ./program.nit:147 */
734 fra
.me
.REG
[5] = NEW_IStaticCall_icode___icode_base___IStaticCall___init(fra
.me
.REG
[0], fra
.me
.REG
[5]);
735 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
736 /* ./program.nit:148 */
737 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx
->REG
[2])(closctx
->REG
[2]);
738 fra
.me
.REG
[1] = NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(fra
.me
.REG
[5], fra
.me
.REG
[1]);
739 CALL_icode___icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[1]);
740 /* ./program.nit:150 */
741 fra
.me
.REG
[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx
->REG
[2])(closctx
->REG
[2]);
742 CALL_standard___collection___abstract_collection___Map_____braeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0], fra
.me
.REG
[3]);
744 stack_frame_head
= fra
.me
.prev
;
747 void program___Program___with_each_iroutines(val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
748 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
752 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
753 fra
.me
.file
= LOCATE_program
;
755 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
756 fra
.me
.has_broke
= 0;
758 fra
.me
.REG
[0] = NIT_NULL
;
759 fra
.me
.REG
[1] = NIT_NULL
;
760 fra
.me
.REG
[2] = NIT_NULL
;
761 fra
.me
.closure_ctx
= closctx_param
;
762 fra
.me
.closure_funs
= CREG
;
765 /* ./program.nit:161 */
766 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
767 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
768 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
769 if (UNTAG_Bool(REGB0
)) {
770 nit_abort("Reciever is null", NULL
, LOCATE_program
, 161);
772 fra
.me
.REG
[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
773 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
));
774 switch ((&(fra
.me
))->has_broke
) {
776 case 1: (&(fra
.me
))->has_broke
= 0; goto label9
;
779 stack_frame_head
= fra
.me
.prev
;
782 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
){
783 struct {struct stack_frame_t me
;} fra
;
786 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
787 fra
.me
.file
= LOCATE_program
;
789 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
790 fra
.me
.has_broke
= 0;
792 fra
.me
.REG
[0] = NIT_NULL
;
793 fra
.me
.closure_ctx
= closctx_param
;
794 fra
.me
.closure_funs
= CREG
;
797 closctx
->REG
[1] = fra
.me
.REG
[0];
798 /* ./program.nit:162 */
799 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(closctx
->REG
[1])(closctx
->REG
[1]);
800 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
));
801 switch (closctx
->has_broke
) {
803 default: goto label8
;
806 stack_frame_head
= fra
.me
.prev
;
809 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
){
810 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} 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
.REG
[0] = NIT_NULL
;
822 fra
.me
.REG
[1] = NIT_NULL
;
823 fra
.me
.closure_ctx
= closctx_param
;
824 fra
.me
.closure_funs
= CREG
;
827 /* ./program.nit:163 */
828 closctx
->REG
[2] = NIT_NULL
;
829 /* ./program.nit:166 */
830 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
831 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
));
832 switch (closctx
->has_broke
) {
834 default: goto label5
;
836 /* ./program.nit:177 */
837 fra
.me
.REG
[1] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
838 closctx
->REG
[2] = fra
.me
.REG
[1];
839 /* ./program.nit:178 */
840 REGB0
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
841 if (UNTAG_Bool(REGB0
)) {
843 REGB1
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
844 if (UNTAG_Bool(REGB1
)) {
845 REGB1
= TAG_Bool(false);
848 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[2])(closctx
->REG
[2], NIT_NULL
);
852 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
853 if (UNTAG_Bool(REGB0
)) {
854 /* ./program.nit:179 */
855 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, closctx
->REG
[2], closctx
->REG
[1]);
856 if (closctx
->closure_ctx
->has_broke
) {
857 closctx
->has_broke
= 1;
861 /* ./program.nit:181 */
862 fra
.me
.REG
[1] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
863 closctx
->REG
[2] = fra
.me
.REG
[1];
864 /* ./program.nit:182 */
865 REGB0
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
866 if (UNTAG_Bool(REGB0
)) {
868 REGB1
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
869 if (UNTAG_Bool(REGB1
)) {
870 REGB1
= TAG_Bool(false);
873 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[2])(closctx
->REG
[2], NIT_NULL
);
877 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
878 if (UNTAG_Bool(REGB0
)) {
879 /* ./program.nit:183 */
880 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, closctx
->REG
[2], closctx
->REG
[1]);
881 if (closctx
->closure_ctx
->has_broke
) {
882 closctx
->has_broke
= 1;
886 /* ./program.nit:185 */
887 fra
.me
.REG
[0] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
888 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
));
889 switch (closctx
->has_broke
) {
891 default: goto label5
;
894 stack_frame_head
= fra
.me
.prev
;
897 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
){
898 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
903 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
904 fra
.me
.file
= LOCATE_program
;
906 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
907 fra
.me
.has_broke
= 0;
909 fra
.me
.REG
[0] = NIT_NULL
;
910 fra
.me
.REG
[1] = NIT_NULL
;
911 fra
.me
.closure_ctx
= closctx_param
;
912 fra
.me
.closure_funs
= CREG
;
915 /* ./program.nit:167 */
916 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMAttribute
, ID_metamodel___abstractmetamodel___MMAttribute
)) /*cast MMAttribute*/;
917 if (UNTAG_Bool(REGB0
)) {
918 /* ./program.nit:168 */
919 fra
.me
.REG
[1] = CALL_icode___icode_base___MMAttribute___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
920 closctx
->REG
[2] = fra
.me
.REG
[1];
922 /* ./program.nit:169 */
923 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
924 if (UNTAG_Bool(REGB0
)) {
925 /* ./program.nit:170 */
926 fra
.me
.REG
[0] = CALL_icode___icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
927 closctx
->REG
[2] = fra
.me
.REG
[0];
930 /* ./program.nit:172 */
931 REGB0
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
932 if (UNTAG_Bool(REGB0
)) {
934 REGB1
= TAG_Bool(closctx
->REG
[2]==NIT_NULL
);
935 if (UNTAG_Bool(REGB1
)) {
936 REGB1
= TAG_Bool(false);
939 REGB1
= CALL_standard___kernel___Object_____eqeq(closctx
->REG
[2])(closctx
->REG
[2], NIT_NULL
);
943 if (UNTAG_Bool(REGB0
)) {
946 /* ./program.nit:173 */
947 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, closctx
->REG
[2], closctx
->REG
[1]);
948 if (closctx
->closure_ctx
->has_broke
) {
949 closctx
->has_broke
= 1;
953 stack_frame_head
= fra
.me
.prev
;
956 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
){
957 struct {struct stack_frame_t me
;} fra
;
960 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
961 fra
.me
.file
= LOCATE_program
;
963 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
964 fra
.me
.has_broke
= 0;
966 fra
.me
.REG
[0] = NIT_NULL
;
967 fra
.me
.closure_ctx
= closctx_param
;
968 fra
.me
.closure_funs
= CREG
;
971 /* ./program.nit:186 */
972 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, fra
.me
.REG
[0], closctx
->REG
[1]);
973 if (closctx
->closure_ctx
->has_broke
) {
974 closctx
->has_broke
= 1;
978 stack_frame_head
= fra
.me
.prev
;
981 void program___Program___with_each_methods(val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
982 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
986 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
987 fra
.me
.file
= LOCATE_program
;
989 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
990 fra
.me
.has_broke
= 0;
992 fra
.me
.REG
[0] = NIT_NULL
;
993 fra
.me
.REG
[1] = NIT_NULL
;
994 fra
.me
.closure_ctx
= closctx_param
;
995 fra
.me
.closure_funs
= CREG
;
998 /* ./program.nit:197 */
999 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1000 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1001 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
1002 if (UNTAG_Bool(REGB0
)) {
1003 nit_abort("Reciever is null", NULL
, LOCATE_program
, 197);
1005 fra
.me
.REG
[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
1006 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
));
1007 switch ((&(fra
.me
))->has_broke
) {
1009 case 1: (&(fra
.me
))->has_broke
= 0; goto label7
;
1012 stack_frame_head
= fra
.me
.prev
;
1015 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
){
1016 struct {struct stack_frame_t me
;} fra
;
1019 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1020 fra
.me
.file
= LOCATE_program
;
1022 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
1023 fra
.me
.has_broke
= 0;
1024 fra
.me
.REG_size
= 1;
1025 fra
.me
.REG
[0] = NIT_NULL
;
1026 fra
.me
.closure_ctx
= closctx_param
;
1027 fra
.me
.closure_funs
= CREG
;
1029 CREG
[0] = clos_fun0
;
1030 /* ./program.nit:198 */
1031 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1032 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
));
1033 switch (closctx
->has_broke
) {
1035 default: goto label6
;
1038 stack_frame_head
= fra
.me
.prev
;
1041 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
){
1042 struct {struct stack_frame_t me
;} fra
;
1045 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1046 fra
.me
.file
= LOCATE_program
;
1048 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
1049 fra
.me
.has_broke
= 0;
1050 fra
.me
.REG_size
= 1;
1051 fra
.me
.REG
[0] = NIT_NULL
;
1052 fra
.me
.closure_ctx
= closctx_param
;
1053 fra
.me
.closure_funs
= CREG
;
1055 CREG
[0] = clos_fun0
;
1056 /* ./program.nit:200 */
1057 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1058 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
));
1059 switch (closctx
->has_broke
) {
1061 default: goto label5
;
1064 stack_frame_head
= fra
.me
.prev
;
1067 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
){
1068 struct {struct stack_frame_t me
;} fra
;
1072 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1073 fra
.me
.file
= LOCATE_program
;
1075 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
1076 fra
.me
.has_broke
= 0;
1077 fra
.me
.REG_size
= 1;
1078 fra
.me
.REG
[0] = NIT_NULL
;
1079 fra
.me
.closure_ctx
= closctx_param
;
1080 fra
.me
.closure_funs
= CREG
;
1082 CREG
[0] = clos_fun0
;
1083 /* ./program.nit:201 */
1084 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_metamodel___abstractmetamodel___MMMethod
, ID_metamodel___abstractmetamodel___MMMethod
)) /*cast MMMethod*/;
1085 if (UNTAG_Bool(REGB0
)) {
1086 /* ./program.nit:202 */
1087 ((void (*)(struct stack_frame_t
*, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, fra
.me
.REG
[0]);
1088 if (closctx
->closure_ctx
->has_broke
) {
1089 closctx
->has_broke
= 1;
1094 stack_frame_head
= fra
.me
.prev
;
1097 void program___Program___with_each_live_local_classes(val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
1098 struct {struct stack_frame_t me
;} fra
;
1101 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1102 fra
.me
.file
= LOCATE_program
;
1104 fra
.me
.meth
= LOCATE_program___Program___with_each_live_local_classes
;
1105 fra
.me
.has_broke
= 0;
1106 fra
.me
.REG_size
= 1;
1107 fra
.me
.REG
[0] = NIT_NULL
;
1108 fra
.me
.closure_ctx
= closctx_param
;
1109 fra
.me
.closure_funs
= CREG
;
1111 CREG
[0] = clos_fun0
;
1112 /* ./program.nit:214 */
1113 fra
.me
.REG
[0] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1114 fra
.me
.REG
[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1115 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
));
1116 switch ((&(fra
.me
))->has_broke
) {
1118 case 1: (&(fra
.me
))->has_broke
= 0; goto label3
;
1121 stack_frame_head
= fra
.me
.prev
;
1124 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
){
1125 struct {struct stack_frame_t me
;} fra
;
1128 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1129 fra
.me
.file
= LOCATE_program
;
1131 fra
.me
.meth
= LOCATE_program___Program___with_each_live_local_classes
;
1132 fra
.me
.has_broke
= 0;
1133 fra
.me
.REG_size
= 1;
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:215 */
1140 ((void (*)(struct stack_frame_t
*, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, fra
.me
.REG
[0]);
1141 if (closctx
->closure_ctx
->has_broke
) {
1142 closctx
->has_broke
= 1;
1146 stack_frame_head
= fra
.me
.prev
;
1149 void program___Program___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
1150 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_program___Program
].i
;
1151 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1153 if (init_table
[itpos0
]) return;
1154 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1155 fra
.me
.file
= LOCATE_program
;
1157 fra
.me
.meth
= LOCATE_program___Program___init
;
1158 fra
.me
.has_broke
= 0;
1159 fra
.me
.REG_size
= 3;
1160 fra
.me
.REG
[0] = NIT_NULL
;
1161 fra
.me
.REG
[1] = NIT_NULL
;
1162 fra
.me
.REG
[2] = NIT_NULL
;
1166 /* ./program.nit:220 */
1167 ATTR_program___Program____main_module(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1168 /* ./program.nit:221 */
1169 ATTR_program___Program____tc(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
1170 /* ./program.nit:222 */
1171 CALL_program___Program___finish_processing_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1172 stack_frame_head
= fra
.me
.prev
;
1173 init_table
[itpos0
] = 1;
1176 val_t
program___MMLocalClass___init_var_iroutine(val_t p0
){
1177 struct {struct stack_frame_t me
;} fra
;
1179 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1180 fra
.me
.file
= LOCATE_program
;
1182 fra
.me
.meth
= LOCATE_program___MMLocalClass___init_var_iroutine
;
1183 fra
.me
.has_broke
= 0;
1184 fra
.me
.REG_size
= 1;
1185 fra
.me
.REG
[0] = NIT_NULL
;
1187 /* ./program.nit:227 */
1188 fra
.me
.REG
[0] = ATTR_program___MMLocalClass____init_var_iroutine(fra
.me
.REG
[0]);
1189 stack_frame_head
= fra
.me
.prev
;
1190 return fra
.me
.REG
[0];
1192 void program___MMLocalClass___init_var_iroutine__eq(val_t p0
, val_t p1
){
1193 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1195 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1196 fra
.me
.file
= LOCATE_program
;
1198 fra
.me
.meth
= LOCATE_program___MMLocalClass___init_var_iroutine__eq
;
1199 fra
.me
.has_broke
= 0;
1200 fra
.me
.REG_size
= 2;
1201 fra
.me
.REG
[0] = NIT_NULL
;
1202 fra
.me
.REG
[1] = NIT_NULL
;
1205 /* ./program.nit:227 */
1206 ATTR_program___MMLocalClass____init_var_iroutine(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1207 stack_frame_head
= fra
.me
.prev
;
1210 val_t
program___MMLocalClass___checknew_iroutine(val_t p0
){
1211 struct {struct stack_frame_t me
;} fra
;
1213 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1214 fra
.me
.file
= LOCATE_program
;
1216 fra
.me
.meth
= LOCATE_program___MMLocalClass___checknew_iroutine
;
1217 fra
.me
.has_broke
= 0;
1218 fra
.me
.REG_size
= 1;
1219 fra
.me
.REG
[0] = NIT_NULL
;
1221 /* ./program.nit:229 */
1222 fra
.me
.REG
[0] = ATTR_program___MMLocalClass____checknew_iroutine(fra
.me
.REG
[0]);
1223 stack_frame_head
= fra
.me
.prev
;
1224 return fra
.me
.REG
[0];
1226 void program___MMLocalClass___checknew_iroutine__eq(val_t p0
, val_t p1
){
1227 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
1229 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1230 fra
.me
.file
= LOCATE_program
;
1232 fra
.me
.meth
= LOCATE_program___MMLocalClass___checknew_iroutine__eq
;
1233 fra
.me
.has_broke
= 0;
1234 fra
.me
.REG_size
= 2;
1235 fra
.me
.REG
[0] = NIT_NULL
;
1236 fra
.me
.REG
[1] = NIT_NULL
;
1239 /* ./program.nit:229 */
1240 ATTR_program___MMLocalClass____checknew_iroutine(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1241 stack_frame_head
= fra
.me
.prev
;
1244 val_t
program___MMLocalClass___new_instance_iroutine(val_t p0
){
1245 struct {struct stack_frame_t me
;} fra
;
1248 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1249 fra
.me
.file
= LOCATE_program
;
1251 fra
.me
.meth
= LOCATE_program___MMLocalClass___new_instance_iroutine
;
1252 fra
.me
.has_broke
= 0;
1253 fra
.me
.REG_size
= 1;
1254 fra
.me
.REG
[0] = NIT_NULL
;
1256 /* ./program.nit:231 */
1257 REGB0
= TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra
.me
.REG
[0])!=NIT_NULL
);
1258 if (UNTAG_Bool(REGB0
)) {
1260 nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_program
, 231);
1262 fra
.me
.REG
[0] = ATTR_program___MMLocalClass____new_instance_iroutine(fra
.me
.REG
[0]);
1263 stack_frame_head
= fra
.me
.prev
;
1264 return fra
.me
.REG
[0];