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
;
173 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
174 fra
.me
.file
= LOCATE_program
;
176 fra
.me
.meth
= LOCATE_program___Program___finish_processing_classes
;
177 fra
.me
.has_broke
= 0;
179 fra
.me
.REG
[0] = NIT_NULL
;
180 fra
.me
.REG
[1] = NIT_NULL
;
181 fra
.me
.REG
[2] = NIT_NULL
;
183 /* ./program.nit:55 */
184 fra
.me
.REG
[1] = NEW_Array_array___Array___init();
185 /* ./program.nit:56 */
186 fra
.me
.REG
[0] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
187 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
188 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_program___Program___finish_processing_classes_1
));
189 /* ./../lib/standard//collection//array.nit:234 */
191 /* ./../lib/standard//collection//array.nit:235 */
192 REGB1
= TAG_Bool(ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
193 if (UNTAG_Bool(REGB1
)) {
195 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array
, 235);
197 REGB1
= ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[1]);
198 /* ./../lib/standard//collection//array.nit:236 */
199 fra
.me
.REG
[0] = ATTR_array___Array____items(fra
.me
.REG
[1]);
200 /* ./../lib/standard//collection//array.nit:237 */
202 /* ./../lib/standard//collection//array.nit:23 */
203 REGB1
= TAG_Bool(ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[1])!=NIT_NULL
);
204 if (UNTAG_Bool(REGB1
)) {
206 nit_abort("Uninitialized attribute %s", "_length", LOCATE_array
, 23);
208 REGB1
= ATTR_array___AbstractArrayRead____length(fra
.me
.REG
[1]);
209 /* ./../lib/standard//kernel.nit:212 */
210 REGB1
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
211 /* ./../lib/standard//collection//array.nit:237 */
212 if (UNTAG_Bool(REGB1
)) {
213 /* ./../lib/standard//collection//array.nit:238 */
214 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
215 if (UNTAG_Bool(REGB1
)) {
216 nit_abort("Reciever is null", NULL
, LOCATE_array
, 238);
218 /* ./../lib/standard//collection//array.nit:654 */
219 fra
.me
.REG
[2] = ((Nit_NativeArray
)fra
.me
.REG
[0])->val
[UNTAG_Int(REGB0
)];
220 /* ./program.nit:62 */
221 CALL_inheritance___MMLocalClass___compute_ancestors(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
222 /* ./../lib/standard//collection//array.nit:239 */
224 /* ./../lib/standard//kernel.nit:215 */
225 REGB1
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB1
));
226 /* ./../lib/standard//collection//array.nit:239 */
229 /* ./../lib/standard//collection//array.nit:237 */
234 stack_frame_head
= fra
.me
.prev
;
237 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
){
238 struct {struct stack_frame_t me
;} fra
;
241 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
242 fra
.me
.file
= LOCATE_program
;
244 fra
.me
.meth
= LOCATE_program___Program___finish_processing_classes
;
245 fra
.me
.has_broke
= 0;
247 fra
.me
.REG
[0] = NIT_NULL
;
248 fra
.me
.closure_ctx
= closctx_param
;
249 fra
.me
.closure_funs
= CREG
;
252 /* ./program.nit:57 */
253 CALL_inheritance___MMLocalClass___compute_super_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
254 /* ./program.nit:58 */
255 CALL_abstract_collection___SimpleCollection___add(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
256 stack_frame_head
= fra
.me
.prev
;
259 void program___Program___compute_main_method(val_t p0
){
260 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
263 static val_t once_value_1
; /* Once value */
264 static val_t once_value_2
; /* Once value */
265 static val_t once_value_4
; /* Once value */
266 static val_t once_value_5
; /* Once value */
267 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
268 fra
.me
.file
= LOCATE_program
;
270 fra
.me
.meth
= LOCATE_program___Program___compute_main_method
;
271 fra
.me
.has_broke
= 0;
273 fra
.me
.REG
[0] = NIT_NULL
;
274 fra
.me
.REG
[1] = NIT_NULL
;
275 fra
.me
.REG
[2] = NIT_NULL
;
277 /* ./program.nit:68 */
280 fra
.me
.REG
[1] = BOX_NativeString("Sys");
282 fra
.me
.REG
[1] = NEW_String_string___String___with_native(fra
.me
.REG
[1], REGB0
);
283 once_value_2
= fra
.me
.REG
[1];
284 register_static_object(&once_value_2
);
285 } else fra
.me
.REG
[1] = once_value_2
;
286 fra
.me
.REG
[1] = fra
.me
.REG
[1];
287 fra
.me
.REG
[1] = CALL_symbol___String___to_symbol(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
288 once_value_1
= fra
.me
.REG
[1];
289 register_static_object(&once_value_1
);
290 } else fra
.me
.REG
[1] = once_value_1
;
291 fra
.me
.REG
[1] = fra
.me
.REG
[1];
292 /* ./program.nit:69 */
293 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
294 REGB0
= CALL_abstractmetamodel___MMModule___has_global_class_named(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
295 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
296 if (UNTAG_Bool(REGB0
)) {
299 /* ./program.nit:70 */
300 fra
.me
.REG
[2] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
301 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMModule___class_by_name(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
302 /* ./program.nit:73 */
305 fra
.me
.REG
[2] = BOX_NativeString("main");
307 fra
.me
.REG
[2] = NEW_String_string___String___with_native(fra
.me
.REG
[2], REGB0
);
308 once_value_5
= fra
.me
.REG
[2];
309 register_static_object(&once_value_5
);
310 } else fra
.me
.REG
[2] = once_value_5
;
311 fra
.me
.REG
[2] = fra
.me
.REG
[2];
312 fra
.me
.REG
[2] = CALL_symbol___String___to_symbol(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
313 once_value_4
= fra
.me
.REG
[2];
314 register_static_object(&once_value_4
);
315 } else fra
.me
.REG
[2] = once_value_4
;
316 fra
.me
.REG
[2] = fra
.me
.REG
[2];
317 /* ./program.nit:74 */
318 REGB0
= CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
319 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
320 if (UNTAG_Bool(REGB0
)) {
323 /* ./program.nit:76 */
324 fra
.me
.REG
[2] = CALL_abstractmetamodel___MMLocalClass___select_method(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
325 ATTR_program___Program____main_method(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
326 /* ./program.nit:77 */
327 ATTR_program___Program____main_class(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
329 stack_frame_head
= fra
.me
.prev
;
332 void program___Program___generate_allocation_iroutines(val_t p0
){
333 struct {struct stack_frame_t me
; val_t MORE_REG
[4];} fra
;
335 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
336 fra
.me
.file
= LOCATE_program
;
338 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
339 fra
.me
.has_broke
= 0;
341 fra
.me
.REG
[0] = NIT_NULL
;
342 fra
.me
.REG
[1] = NIT_NULL
;
343 fra
.me
.REG
[2] = NIT_NULL
;
344 fra
.me
.REG
[3] = NIT_NULL
;
345 fra
.me
.REG
[4] = NIT_NULL
;
347 /* ./program.nit:83 */
348 fra
.me
.REG
[1] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
349 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
350 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], (&(fra
.me
)), ((fun_t
)OC_program___Program___generate_allocation_iroutines_1
));
351 stack_frame_head
= fra
.me
.prev
;
354 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
){
355 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
360 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
361 fra
.me
.file
= LOCATE_program
;
363 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
364 fra
.me
.has_broke
= 0;
366 fra
.me
.REG
[0] = NIT_NULL
;
367 fra
.me
.REG
[1] = NIT_NULL
;
368 fra
.me
.closure_ctx
= closctx_param
;
369 fra
.me
.closure_funs
= CREG
;
372 closctx
->REG
[1] = fra
.me
.REG
[0];
373 /* ./program.nit:84 */
374 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalClass___global(closctx
->REG
[1])(closctx
->REG
[1]);
375 REGB0
= CALL_abstractmetamodel___MMGlobalClass___is_abstract(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
376 if (UNTAG_Bool(REGB0
)) {
377 REGB0
= TAG_Bool(true);
379 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalClass___global(closctx
->REG
[1])(closctx
->REG
[1]);
380 REGB1
= CALL_abstractmetamodel___MMGlobalClass___is_interface(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
383 if (UNTAG_Bool(REGB0
)) {
386 /* ./program.nit:85 */
387 fra
.me
.REG
[0] = CALL_primitive_info___MMLocalClass___primitive_info(closctx
->REG
[1])(closctx
->REG
[1]);
388 /* ./program.nit:86 */
389 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
390 if (UNTAG_Bool(REGB0
)) {
392 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
393 if (UNTAG_Bool(REGB1
)) {
394 REGB1
= TAG_Bool(false);
397 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], NIT_NULL
);
401 if (UNTAG_Bool(REGB0
)) {
402 /* ./program.nit:89 */
403 fra
.me
.REG
[0] = CALL_static_type___MMLocalClass___get_type(closctx
->REG
[1])(closctx
->REG
[1]);
404 fra
.me
.REG
[0] = NEW_IRegister_icode_base___IRegister___init(fra
.me
.REG
[0]);
405 closctx
->REG
[2] = fra
.me
.REG
[0];
406 /* ./program.nit:90 */
408 fra
.me
.REG
[0] = NEW_Array_array___Array___with_capacity(REGB0
);
409 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[2]);
410 closctx
->REG
[3] = fra
.me
.REG
[0];
411 /* ./program.nit:91 */
412 fra
.me
.REG
[0] = NEW_IRoutine_icode_base___IRoutine___init(closctx
->REG
[3], NIT_NULL
);
413 /* ./program.nit:92 */
414 fra
.me
.REG
[1] = CALL_program___Program___main_module(closctx
->REG
[0])(closctx
->REG
[0]);
415 fra
.me
.REG
[1] = NEW_ICodeBuilder_icode_builder___ICodeBuilder___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
416 closctx
->REG
[4] = fra
.me
.REG
[1];
417 /* ./program.nit:94 */
418 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[1])(closctx
->REG
[1]);
419 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
, ((fun_t
)OC_program___Program___generate_allocation_iroutines_3
));
420 /* ./program.nit:107 */
421 CALL_program___MMLocalClass___init_var_iroutine__eq(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
422 /* ./program.nit:111 */
423 fra
.me
.REG
[0] = CALL_static_type___MMLocalClass___get_type(closctx
->REG
[1])(closctx
->REG
[1]);
424 fra
.me
.REG
[0] = NEW_IRegister_icode_base___IRegister___init(fra
.me
.REG
[0]);
425 closctx
->REG
[4] = fra
.me
.REG
[0];
426 /* ./program.nit:112 */
428 fra
.me
.REG
[0] = NEW_Array_array___Array___with_capacity(REGB0
);
429 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[4]);
430 /* ./program.nit:113 */
431 fra
.me
.REG
[0] = NEW_IRoutine_icode_base___IRoutine___init(fra
.me
.REG
[0], NIT_NULL
);
432 /* ./program.nit:114 */
433 fra
.me
.REG
[1] = CALL_program___Program___main_module(closctx
->REG
[0])(closctx
->REG
[0]);
434 fra
.me
.REG
[1] = NEW_ICodeBuilder_icode_builder___ICodeBuilder___init(fra
.me
.REG
[1], fra
.me
.REG
[0]);
435 closctx
->REG
[2] = fra
.me
.REG
[1];
436 /* ./program.nit:115 */
437 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[1])(closctx
->REG
[1]);
438 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
, ((fun_t
)OC_program___Program___generate_allocation_iroutines_5
));
439 /* ./program.nit:124 */
440 CALL_program___MMLocalClass___checknew_iroutine__eq(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
441 /* ./program.nit:127 */
442 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalClass___global_properties(closctx
->REG
[1])(closctx
->REG
[1]);
443 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_program___Program___generate_allocation_iroutines_7
));
446 stack_frame_head
= fra
.me
.prev
;
449 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
){
450 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
455 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
456 fra
.me
.file
= LOCATE_program
;
458 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
459 fra
.me
.has_broke
= 0;
461 fra
.me
.REG
[0] = NIT_NULL
;
462 fra
.me
.REG
[1] = NIT_NULL
;
463 fra
.me
.closure_ctx
= closctx_param
;
464 fra
.me
.closure_funs
= CREG
;
467 /* ./program.nit:95 */
468 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
469 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_MMAttribute
, ID_MMAttribute
)) /*cast MMAttribute*/;
470 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
471 if (UNTAG_Bool(REGB0
)) {
474 /* ./program.nit:96 */
475 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
476 /* ./program.nit:97 */
477 fra
.me
.REG
[1] = CALL_static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
478 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
479 if (UNTAG_Bool(REGB0
)) {
480 nit_abort("Reciever is null", NULL
, LOCATE_program
, 97);
482 fra
.me
.REG
[1] = CALL_static_type___MMSignature___return_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
483 /* ./program.nit:98 */
484 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMAttribute
, ID_MMAttribute
)) /*cast MMAttribute*/;
485 if (UNTAG_Bool(REGB0
)) {
486 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
487 if (UNTAG_Bool(REGB0
)) {
489 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
490 if (UNTAG_Bool(REGB1
)) {
491 REGB1
= TAG_Bool(false);
494 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
498 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
500 REGB1
= TAG_Bool(false);
503 if (UNTAG_Bool(REGB0
)) {
504 /* ./program.nit:99 */
505 fra
.me
.REG
[1] = CALL_icode_base___MMAttribute___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
506 /* ./program.nit:100 */
507 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
508 if (UNTAG_Bool(REGB0
)) {
510 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
511 if (UNTAG_Bool(REGB1
)) {
512 REGB1
= TAG_Bool(false);
515 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
519 if (UNTAG_Bool(REGB0
)) {
522 /* ./program.nit:102 */
523 fra
.me
.REG
[1] = CALL_icode_tools___ICodeBuilder___inline_routine(closctx
->REG
[4])(closctx
->REG
[4], fra
.me
.REG
[1], closctx
->REG
[3], NIT_NULL
);
524 REGB0
= TAG_Bool((fra
.me
.REG
[1]!=NIT_NULL
) && VAL_ISA(fra
.me
.REG
[1], COLOR_IRegister
, ID_IRegister
)) /*cast IRegister*/;
525 if (UNTAG_Bool(REGB0
)) {
527 nit_abort("Cast failed", NULL
, LOCATE_program
, 102);
529 /* ./program.nit:103 */
530 fra
.me
.REG
[1] = NEW_IAttrWrite_icode_base___IAttrWrite___init(fra
.me
.REG
[0], closctx
->REG
[2], fra
.me
.REG
[1]);
531 CALL_icode_builder___ICodeBuilder___stmt(closctx
->REG
[4])(closctx
->REG
[4], fra
.me
.REG
[1]);
534 stack_frame_head
= fra
.me
.prev
;
537 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
){
538 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
543 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
544 fra
.me
.file
= LOCATE_program
;
546 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
547 fra
.me
.has_broke
= 0;
549 fra
.me
.REG
[0] = NIT_NULL
;
550 fra
.me
.REG
[1] = NIT_NULL
;
551 fra
.me
.closure_ctx
= closctx_param
;
552 fra
.me
.closure_funs
= CREG
;
555 /* ./program.nit:116 */
556 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
557 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_MMAttribute
, ID_MMAttribute
)) /*cast MMAttribute*/;
558 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
559 if (UNTAG_Bool(REGB0
)) {
562 /* ./program.nit:117 */
563 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
564 /* ./program.nit:118 */
565 fra
.me
.REG
[1] = CALL_static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
566 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
567 if (UNTAG_Bool(REGB0
)) {
568 nit_abort("Reciever is null", NULL
, LOCATE_program
, 118);
570 fra
.me
.REG
[1] = CALL_static_type___MMSignature___return_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
571 /* ./program.nit:119 */
572 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMAttribute
, ID_MMAttribute
)) /*cast MMAttribute*/;
573 if (UNTAG_Bool(REGB0
)) {
574 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
575 if (UNTAG_Bool(REGB0
)) {
577 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
578 if (UNTAG_Bool(REGB1
)) {
579 REGB1
= TAG_Bool(false);
582 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
586 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
588 REGB1
= TAG_Bool(false);
591 if (UNTAG_Bool(REGB0
)) {
592 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
593 if (UNTAG_Bool(REGB0
)) {
594 nit_abort("Reciever is null", NULL
, LOCATE_program
, 119);
596 REGB0
= CALL_static_type___MMType___is_nullable(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
597 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
599 REGB1
= TAG_Bool(false);
602 if (UNTAG_Bool(REGB0
)) {
603 /* ./program.nit:120 */
604 CALL_icode_builder___ICodeBuilder___add_attr_check(closctx
->REG
[2])(closctx
->REG
[2], fra
.me
.REG
[0], closctx
->REG
[4]);
607 stack_frame_head
= fra
.me
.prev
;
610 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
){
611 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
618 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
619 fra
.me
.file
= LOCATE_program
;
621 fra
.me
.meth
= LOCATE_program___Program___generate_allocation_iroutines
;
622 fra
.me
.has_broke
= 0;
624 fra
.me
.REG
[0] = NIT_NULL
;
625 fra
.me
.REG
[1] = NIT_NULL
;
626 fra
.me
.REG
[2] = NIT_NULL
;
627 fra
.me
.REG
[3] = NIT_NULL
;
628 fra
.me
.REG
[4] = NIT_NULL
;
629 fra
.me
.REG
[5] = NIT_NULL
;
630 fra
.me
.closure_ctx
= closctx_param
;
631 fra
.me
.closure_funs
= CREG
;
634 /* ./program.nit:129 */
635 REGB0
= CALL_abstractmetamodel___MMGlobalProperty___is_init_for(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
->REG
[1]);
636 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
637 if (UNTAG_Bool(REGB0
)) {
640 /* ./program.nit:130 */
641 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalClass_____bra(closctx
->REG
[1])(closctx
->REG
[1], fra
.me
.REG
[0]);
642 /* ./program.nit:131 */
643 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMMethod
, ID_MMMethod
)) /*cast MMMethod*/;
644 if (UNTAG_Bool(REGB0
)) {
646 nit_abort("Assert failed", NULL
, LOCATE_program
, 131);
648 /* ./program.nit:133 */
649 fra
.me
.REG
[1] = CALL_static_type___MMLocalClass___get_type(closctx
->REG
[1])(closctx
->REG
[1]);
650 fra
.me
.REG
[1] = NEW_IRegister_icode_base___IRegister___init(fra
.me
.REG
[1]);
651 /* ./program.nit:134 */
652 fra
.me
.REG
[2] = NEW_Array_array___Array___init();
653 /* ./program.nit:135 */
655 fra
.me
.REG
[3] = CALL_static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
656 REGB1
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
657 if (UNTAG_Bool(REGB1
)) {
658 nit_abort("Reciever is null", NULL
, LOCATE_program
, 135);
660 REGB1
= CALL_static_type___MMSignature___arity(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
661 /* ./../lib/standard//kernel.nit:332 */
663 /* ./../lib/standard//kernel.nit:212 */
664 REGB2
= TAG_Bool(UNTAG_Int(REGB0
)<UNTAG_Int(REGB1
));
665 /* ./../lib/standard//kernel.nit:332 */
666 if (UNTAG_Bool(REGB2
)) {
667 /* ./program.nit:135 */
669 fra
.me
.REG
[3] = CALL_static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
670 REGB3
= TAG_Bool(fra
.me
.REG
[3]==NIT_NULL
);
671 if (UNTAG_Bool(REGB3
)) {
672 nit_abort("Reciever is null", NULL
, LOCATE_program
, 135);
674 fra
.me
.REG
[3] = CALL_static_type___MMSignature_____bra(fra
.me
.REG
[3])(fra
.me
.REG
[3], REGB2
);
675 fra
.me
.REG
[3] = NEW_IRegister_icode_base___IRegister___init(fra
.me
.REG
[3]);
676 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
677 /* ./../lib/standard//kernel.nit:334 */
679 /* ./../lib/standard//kernel.nit:215 */
680 REGB2
= TAG_Int(UNTAG_Int(REGB0
)+UNTAG_Int(REGB2
));
681 /* ./../lib/standard//kernel.nit:334 */
684 /* ./../lib/standard//kernel.nit:332 */
689 /* ./program.nit:136 */
690 fra
.me
.REG
[3] = NEW_IRoutine_icode_base___IRoutine___init(fra
.me
.REG
[2], fra
.me
.REG
[1]);
691 /* ./program.nit:137 */
692 fra
.me
.REG
[4] = CALL_icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
693 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
694 if (UNTAG_Bool(REGB0
)) {
695 nit_abort("Reciever is null", NULL
, LOCATE_program
, 137);
697 fra
.me
.REG
[4] = CALL_icode_base___IRoutine___location(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
698 CALL_icode_base___IRoutine___location__eq(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
699 /* ./program.nit:138 */
700 fra
.me
.REG
[4] = CALL_program___Program___main_module(closctx
->REG
[0])(closctx
->REG
[0]);
701 fra
.me
.REG
[4] = NEW_ICodeBuilder_icode_builder___ICodeBuilder___init(fra
.me
.REG
[4], fra
.me
.REG
[3]);
702 /* ./program.nit:140 */
703 fra
.me
.REG
[5] = CALL_static_type___MMLocalClass___get_type(closctx
->REG
[1])(closctx
->REG
[1]);
704 fra
.me
.REG
[5] = NEW_IAllocateInstance_icode_base___IAllocateInstance___init(fra
.me
.REG
[5]);
705 /* ./program.nit:141 */
706 CALL_icode_base___ICode___result__eq(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[1]);
707 /* ./program.nit:142 */
708 CALL_icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
709 /* ./program.nit:143 */
711 fra
.me
.REG
[5] = NEW_Array_array___Array___with_capacity(REGB0
);
712 CALL_abstract_collection___SimpleCollection___add(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[1]);
713 /* ./program.nit:144 */
714 CALL_abstract_collection___SimpleCollection___add_all(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[2]);
715 /* ./program.nit:146 */
716 fra
.me
.REG
[2] = CALL_static_type___MMLocalClass___get_type(closctx
->REG
[1])(closctx
->REG
[1]);
717 fra
.me
.REG
[2] = NEW_IInitAttributes_icode_base___IInitAttributes___init(fra
.me
.REG
[2], fra
.me
.REG
[1]);
718 CALL_icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[2]);
719 /* ./program.nit:147 */
720 fra
.me
.REG
[5] = NEW_IStaticCall_icode_base___IStaticCall___init(fra
.me
.REG
[0], fra
.me
.REG
[5]);
721 CALL_icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[5]);
722 /* ./program.nit:148 */
723 fra
.me
.REG
[5] = CALL_static_type___MMLocalClass___get_type(closctx
->REG
[1])(closctx
->REG
[1]);
724 fra
.me
.REG
[1] = NEW_ICheckInstance_icode_base___ICheckInstance___init(fra
.me
.REG
[5], fra
.me
.REG
[1]);
725 CALL_icode_builder___ICodeBuilder___stmt(fra
.me
.REG
[4])(fra
.me
.REG
[4], fra
.me
.REG
[1]);
726 /* ./program.nit:150 */
727 fra
.me
.REG
[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx
->REG
[1])(closctx
->REG
[1]);
728 CALL_abstract_collection___Map_____braeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0], fra
.me
.REG
[3]);
730 stack_frame_head
= fra
.me
.prev
;
733 void program___Program___with_each_iroutines(val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
734 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
738 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
739 fra
.me
.file
= LOCATE_program
;
741 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
742 fra
.me
.has_broke
= 0;
744 fra
.me
.REG
[0] = NIT_NULL
;
745 fra
.me
.REG
[1] = NIT_NULL
;
746 fra
.me
.closure_ctx
= closctx_param
;
747 fra
.me
.closure_funs
= CREG
;
750 /* ./program.nit:161 */
751 fra
.me
.REG
[0] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
752 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMModule___mhe(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
753 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
754 if (UNTAG_Bool(REGB0
)) {
755 nit_abort("Reciever is null", NULL
, LOCATE_program
, 161);
757 fra
.me
.REG
[0] = CALL_partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
758 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_program___Program___with_each_iroutines_1
));
759 switch ((&(fra
.me
))->has_broke
) {
761 case 1: (&(fra
.me
))->has_broke
= 0; goto label9
;
764 stack_frame_head
= fra
.me
.prev
;
767 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
){
768 struct {struct stack_frame_t me
;} fra
;
771 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
772 fra
.me
.file
= LOCATE_program
;
774 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
775 fra
.me
.has_broke
= 0;
777 fra
.me
.REG
[0] = NIT_NULL
;
778 fra
.me
.closure_ctx
= closctx_param
;
779 fra
.me
.closure_funs
= CREG
;
782 closctx
->REG
[0] = fra
.me
.REG
[0];
783 /* ./program.nit:162 */
784 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMModule___local_classes(closctx
->REG
[0])(closctx
->REG
[0]);
785 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_program___Program___with_each_iroutines_2
));
786 switch (closctx
->has_broke
) {
788 default: goto label8
;
791 stack_frame_head
= fra
.me
.prev
;
794 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
){
795 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
800 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
801 fra
.me
.file
= LOCATE_program
;
803 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
804 fra
.me
.has_broke
= 0;
806 fra
.me
.REG
[0] = NIT_NULL
;
807 fra
.me
.REG
[1] = NIT_NULL
;
808 fra
.me
.closure_ctx
= closctx_param
;
809 fra
.me
.closure_funs
= CREG
;
812 /* ./program.nit:163 */
813 closctx
->REG
[1] = NIT_NULL
;
814 /* ./program.nit:166 */
815 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMLocalClass___local_local_properties(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
816 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[1])(fra
.me
.REG
[1], closctx
, ((fun_t
)OC_program___Program___with_each_iroutines_3
));
817 switch (closctx
->has_broke
) {
819 default: goto label5
;
821 /* ./program.nit:177 */
822 fra
.me
.REG
[1] = CALL_program___MMLocalClass___init_var_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
823 closctx
->REG
[1] = fra
.me
.REG
[1];
824 /* ./program.nit:178 */
825 REGB0
= TAG_Bool(closctx
->REG
[1]==NIT_NULL
);
826 if (UNTAG_Bool(REGB0
)) {
828 REGB1
= TAG_Bool(closctx
->REG
[1]==NIT_NULL
);
829 if (UNTAG_Bool(REGB1
)) {
830 REGB1
= TAG_Bool(false);
833 REGB1
= CALL_kernel___Object_____eqeq(closctx
->REG
[1])(closctx
->REG
[1], NIT_NULL
);
837 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
838 if (UNTAG_Bool(REGB0
)) {
839 /* ./program.nit:179 */
840 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, closctx
->REG
[1], closctx
->REG
[0]);
841 if (closctx
->closure_ctx
->has_broke
) {
842 closctx
->has_broke
= 1;
846 /* ./program.nit:181 */
847 fra
.me
.REG
[1] = CALL_program___MMLocalClass___checknew_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
848 closctx
->REG
[1] = fra
.me
.REG
[1];
849 /* ./program.nit:182 */
850 REGB0
= TAG_Bool(closctx
->REG
[1]==NIT_NULL
);
851 if (UNTAG_Bool(REGB0
)) {
853 REGB1
= TAG_Bool(closctx
->REG
[1]==NIT_NULL
);
854 if (UNTAG_Bool(REGB1
)) {
855 REGB1
= TAG_Bool(false);
858 REGB1
= CALL_kernel___Object_____eqeq(closctx
->REG
[1])(closctx
->REG
[1], NIT_NULL
);
862 REGB0
= TAG_Bool(!UNTAG_Bool(REGB0
));
863 if (UNTAG_Bool(REGB0
)) {
864 /* ./program.nit:183 */
865 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, closctx
->REG
[1], closctx
->REG
[0]);
866 if (closctx
->closure_ctx
->has_broke
) {
867 closctx
->has_broke
= 1;
871 /* ./program.nit:185 */
872 fra
.me
.REG
[0] = CALL_program___MMLocalClass___new_instance_iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
873 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_program___Program___with_each_iroutines_6
));
874 switch (closctx
->has_broke
) {
876 default: goto label5
;
879 stack_frame_head
= fra
.me
.prev
;
882 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
){
883 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
888 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
889 fra
.me
.file
= LOCATE_program
;
891 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
892 fra
.me
.has_broke
= 0;
894 fra
.me
.REG
[0] = NIT_NULL
;
895 fra
.me
.REG
[1] = NIT_NULL
;
896 fra
.me
.closure_ctx
= closctx_param
;
897 fra
.me
.closure_funs
= CREG
;
900 /* ./program.nit:167 */
901 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMAttribute
, ID_MMAttribute
)) /*cast MMAttribute*/;
902 if (UNTAG_Bool(REGB0
)) {
903 /* ./program.nit:168 */
904 fra
.me
.REG
[1] = CALL_icode_base___MMAttribute___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
905 closctx
->REG
[1] = fra
.me
.REG
[1];
907 /* ./program.nit:169 */
908 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMMethod
, ID_MMMethod
)) /*cast MMMethod*/;
909 if (UNTAG_Bool(REGB0
)) {
910 /* ./program.nit:170 */
911 fra
.me
.REG
[0] = CALL_icode_base___MMMethod___iroutine(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
912 closctx
->REG
[1] = fra
.me
.REG
[0];
915 /* ./program.nit:172 */
916 REGB0
= TAG_Bool(closctx
->REG
[1]==NIT_NULL
);
917 if (UNTAG_Bool(REGB0
)) {
919 REGB1
= TAG_Bool(closctx
->REG
[1]==NIT_NULL
);
920 if (UNTAG_Bool(REGB1
)) {
921 REGB1
= TAG_Bool(false);
924 REGB1
= CALL_kernel___Object_____eqeq(closctx
->REG
[1])(closctx
->REG
[1], NIT_NULL
);
928 if (UNTAG_Bool(REGB0
)) {
931 /* ./program.nit:173 */
932 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, closctx
->REG
[1], closctx
->REG
[0]);
933 if (closctx
->closure_ctx
->has_broke
) {
934 closctx
->has_broke
= 1;
938 stack_frame_head
= fra
.me
.prev
;
941 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
){
942 struct {struct stack_frame_t me
;} fra
;
945 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
946 fra
.me
.file
= LOCATE_program
;
948 fra
.me
.meth
= LOCATE_program___Program___with_each_iroutines
;
949 fra
.me
.has_broke
= 0;
951 fra
.me
.REG
[0] = NIT_NULL
;
952 fra
.me
.closure_ctx
= closctx_param
;
953 fra
.me
.closure_funs
= CREG
;
956 /* ./program.nit:186 */
957 ((void (*)(struct stack_frame_t
*, val_t
, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, fra
.me
.REG
[0], closctx
->REG
[0]);
958 if (closctx
->closure_ctx
->has_broke
) {
959 closctx
->has_broke
= 1;
963 stack_frame_head
= fra
.me
.prev
;
966 void program___Program___with_each_methods(val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
967 struct {struct stack_frame_t me
;} fra
;
971 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
972 fra
.me
.file
= LOCATE_program
;
974 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
975 fra
.me
.has_broke
= 0;
977 fra
.me
.REG
[0] = NIT_NULL
;
978 fra
.me
.closure_ctx
= closctx_param
;
979 fra
.me
.closure_funs
= CREG
;
982 /* ./program.nit:197 */
983 fra
.me
.REG
[0] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
984 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMModule___mhe(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
985 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
986 if (UNTAG_Bool(REGB0
)) {
987 nit_abort("Reciever is null", NULL
, LOCATE_program
, 197);
989 fra
.me
.REG
[0] = CALL_partial_order___PartialOrderElement___greaters_and_self(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
990 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], (&(fra
.me
)), ((fun_t
)OC_program___Program___with_each_methods_1
));
991 switch ((&(fra
.me
))->has_broke
) {
993 case 1: (&(fra
.me
))->has_broke
= 0; goto label7
;
996 stack_frame_head
= fra
.me
.prev
;
999 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
){
1000 struct {struct stack_frame_t me
;} fra
;
1003 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1004 fra
.me
.file
= LOCATE_program
;
1006 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
1007 fra
.me
.has_broke
= 0;
1008 fra
.me
.REG_size
= 1;
1009 fra
.me
.REG
[0] = NIT_NULL
;
1010 fra
.me
.closure_ctx
= closctx_param
;
1011 fra
.me
.closure_funs
= CREG
;
1013 CREG
[0] = clos_fun0
;
1014 /* ./program.nit:198 */
1015 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1016 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_program___Program___with_each_methods_2
));
1017 switch (closctx
->has_broke
) {
1019 default: goto label6
;
1022 stack_frame_head
= fra
.me
.prev
;
1025 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
){
1026 struct {struct stack_frame_t me
;} fra
;
1029 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1030 fra
.me
.file
= LOCATE_program
;
1032 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
1033 fra
.me
.has_broke
= 0;
1034 fra
.me
.REG_size
= 1;
1035 fra
.me
.REG
[0] = NIT_NULL
;
1036 fra
.me
.closure_ctx
= closctx_param
;
1037 fra
.me
.closure_funs
= CREG
;
1039 CREG
[0] = clos_fun0
;
1040 /* ./program.nit:200 */
1041 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalClass___local_local_properties(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1042 CALL_abstract_collection___Collection___iterate(fra
.me
.REG
[0])(fra
.me
.REG
[0], closctx
, ((fun_t
)OC_program___Program___with_each_methods_3
));
1043 switch (closctx
->has_broke
) {
1045 default: goto label5
;
1048 stack_frame_head
= fra
.me
.prev
;
1051 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
){
1052 struct {struct stack_frame_t me
;} fra
;
1056 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1057 fra
.me
.file
= LOCATE_program
;
1059 fra
.me
.meth
= LOCATE_program___Program___with_each_methods
;
1060 fra
.me
.has_broke
= 0;
1061 fra
.me
.REG_size
= 1;
1062 fra
.me
.REG
[0] = NIT_NULL
;
1063 fra
.me
.closure_ctx
= closctx_param
;
1064 fra
.me
.closure_funs
= CREG
;
1066 CREG
[0] = clos_fun0
;
1067 /* ./program.nit:201 */
1068 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMMethod
, ID_MMMethod
)) /*cast MMMethod*/;
1069 if (UNTAG_Bool(REGB0
)) {
1070 /* ./program.nit:202 */
1071 ((void (*)(struct stack_frame_t
*, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, fra
.me
.REG
[0]);
1072 if (closctx
->closure_ctx
->has_broke
) {
1073 closctx
->has_broke
= 1;
1078 stack_frame_head
= fra
.me
.prev
;
1081 void program___Program___with_each_live_local_classes(val_t p0
, struct stack_frame_t
*closctx_param
, fun_t clos_fun0
){
1082 struct {struct stack_frame_t me
;} fra
;
1085 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1086 fra
.me
.file
= LOCATE_program
;
1088 fra
.me
.meth
= LOCATE_program___Program___with_each_live_local_classes
;
1089 fra
.me
.has_broke
= 0;
1090 fra
.me
.REG_size
= 1;
1091 fra
.me
.REG
[0] = NIT_NULL
;
1092 fra
.me
.closure_ctx
= closctx_param
;
1093 fra
.me
.closure_funs
= CREG
;
1095 CREG
[0] = clos_fun0
;
1096 /* ./program.nit:214 */
1097 fra
.me
.REG
[0] = CALL_program___Program___main_module(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1098 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMModule___local_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1099 CALL_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
));
1100 switch ((&(fra
.me
))->has_broke
) {
1102 case 1: (&(fra
.me
))->has_broke
= 0; goto label3
;
1105 stack_frame_head
= fra
.me
.prev
;
1108 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
){
1109 struct {struct stack_frame_t me
;} fra
;
1112 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1113 fra
.me
.file
= LOCATE_program
;
1115 fra
.me
.meth
= LOCATE_program___Program___with_each_live_local_classes
;
1116 fra
.me
.has_broke
= 0;
1117 fra
.me
.REG_size
= 1;
1118 fra
.me
.REG
[0] = NIT_NULL
;
1119 fra
.me
.closure_ctx
= closctx_param
;
1120 fra
.me
.closure_funs
= CREG
;
1122 CREG
[0] = clos_fun0
;
1123 /* ./program.nit:215 */
1124 ((void (*)(struct stack_frame_t
*, val_t
))(closctx
->closure_funs
[0]))(closctx
->closure_ctx
, fra
.me
.REG
[0]);
1125 if (closctx
->closure_ctx
->has_broke
) {
1126 closctx
->has_broke
= 1;
1130 stack_frame_head
= fra
.me
.prev
;
1133 void program___Program___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
1134 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_Program
].i
;
1135 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
1137 if (init_table
[itpos0
]) return;
1138 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1139 fra
.me
.file
= LOCATE_program
;
1141 fra
.me
.meth
= LOCATE_program___Program___init
;
1142 fra
.me
.has_broke
= 0;
1143 fra
.me
.REG_size
= 3;
1144 fra
.me
.REG
[0] = NIT_NULL
;
1145 fra
.me
.REG
[1] = NIT_NULL
;
1146 fra
.me
.REG
[2] = NIT_NULL
;
1150 /* ./program.nit:220 */
1151 ATTR_program___Program____main_module(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1152 /* ./program.nit:221 */
1153 ATTR_program___Program____tc(fra
.me
.REG
[0]) = fra
.me
.REG
[2];
1154 /* ./program.nit:222 */
1155 CALL_program___Program___finish_processing_classes(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
1156 stack_frame_head
= fra
.me
.prev
;
1157 init_table
[itpos0
] = 1;
1160 val_t
program___MMLocalClass___init_var_iroutine(val_t p0
){
1161 struct {struct stack_frame_t me
;} fra
;
1163 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1164 fra
.me
.file
= LOCATE_program
;
1166 fra
.me
.meth
= LOCATE_program___MMLocalClass___init_var_iroutine
;
1167 fra
.me
.has_broke
= 0;
1168 fra
.me
.REG_size
= 1;
1169 fra
.me
.REG
[0] = NIT_NULL
;
1171 /* ./program.nit:227 */
1172 fra
.me
.REG
[0] = ATTR_program___MMLocalClass____init_var_iroutine(fra
.me
.REG
[0]);
1173 stack_frame_head
= fra
.me
.prev
;
1174 return fra
.me
.REG
[0];
1176 void program___MMLocalClass___init_var_iroutine__eq(val_t p0
, val_t p1
){
1177 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} 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__eq
;
1183 fra
.me
.has_broke
= 0;
1184 fra
.me
.REG_size
= 2;
1185 fra
.me
.REG
[0] = NIT_NULL
;
1186 fra
.me
.REG
[1] = NIT_NULL
;
1189 /* ./program.nit:227 */
1190 ATTR_program___MMLocalClass____init_var_iroutine(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1191 stack_frame_head
= fra
.me
.prev
;
1194 val_t
program___MMLocalClass___checknew_iroutine(val_t p0
){
1195 struct {struct stack_frame_t me
;} fra
;
1197 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1198 fra
.me
.file
= LOCATE_program
;
1200 fra
.me
.meth
= LOCATE_program___MMLocalClass___checknew_iroutine
;
1201 fra
.me
.has_broke
= 0;
1202 fra
.me
.REG_size
= 1;
1203 fra
.me
.REG
[0] = NIT_NULL
;
1205 /* ./program.nit:229 */
1206 fra
.me
.REG
[0] = ATTR_program___MMLocalClass____checknew_iroutine(fra
.me
.REG
[0]);
1207 stack_frame_head
= fra
.me
.prev
;
1208 return fra
.me
.REG
[0];
1210 void program___MMLocalClass___checknew_iroutine__eq(val_t p0
, val_t p1
){
1211 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} 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__eq
;
1217 fra
.me
.has_broke
= 0;
1218 fra
.me
.REG_size
= 2;
1219 fra
.me
.REG
[0] = NIT_NULL
;
1220 fra
.me
.REG
[1] = NIT_NULL
;
1223 /* ./program.nit:229 */
1224 ATTR_program___MMLocalClass____checknew_iroutine(fra
.me
.REG
[0]) = fra
.me
.REG
[1];
1225 stack_frame_head
= fra
.me
.prev
;
1228 val_t
program___MMLocalClass___new_instance_iroutine(val_t p0
){
1229 struct {struct stack_frame_t me
;} fra
;
1232 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
1233 fra
.me
.file
= LOCATE_program
;
1235 fra
.me
.meth
= LOCATE_program___MMLocalClass___new_instance_iroutine
;
1236 fra
.me
.has_broke
= 0;
1237 fra
.me
.REG_size
= 1;
1238 fra
.me
.REG
[0] = NIT_NULL
;
1240 /* ./program.nit:231 */
1241 REGB0
= TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra
.me
.REG
[0])!=NIT_NULL
);
1242 if (UNTAG_Bool(REGB0
)) {
1244 nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_program
, 231);
1246 fra
.me
.REG
[0] = ATTR_program___MMLocalClass____new_instance_iroutine(fra
.me
.REG
[0]);
1247 stack_frame_head
= fra
.me
.prev
;
1248 return fra
.me
.REG
[0];