c_src: fix last update, _nitni.h s were referring to _nit.h from Nit src
[nit.git] / c_src / program._sep.c
1 /* This C file is generated by NIT to compile module program. */
2 #include "program._sep.h"
3 val_t program___ToolContext___global(val_t p0){
4 struct {struct stack_frame_t me;} fra;
5 val_t REGB0;
6 val_t tmp;
7 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
8 fra.me.file = LOCATE_program;
9 fra.me.line = 26;
10 fra.me.meth = LOCATE_program___ToolContext___global;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 1;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[0] = p0;
15 /* ./program.nit:26 */
16 REGB0 = TAG_Bool(ATTR_program___ToolContext____global(fra.me.REG[0])!=NIT_NULL);
17 if (UNTAG_Bool(REGB0)) {
18 } else {
19 nit_abort("Uninitialized attribute %s", "_global", LOCATE_program, 26);
20 }
21 REGB0 = ATTR_program___ToolContext____global(fra.me.REG[0]);
22 stack_frame_head = fra.me.prev;
23 return REGB0;
24 }
25 void program___ToolContext___global__eq(val_t p0, val_t p1){
26 struct {struct stack_frame_t me;} fra;
27 val_t REGB0;
28 val_t tmp;
29 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
30 fra.me.file = LOCATE_program;
31 fra.me.line = 26;
32 fra.me.meth = LOCATE_program___ToolContext___global__eq;
33 fra.me.has_broke = 0;
34 fra.me.REG_size = 1;
35 fra.me.REG[0] = NIT_NULL;
36 fra.me.REG[0] = p0;
37 REGB0 = p1;
38 /* ./program.nit:26 */
39 ATTR_program___ToolContext____global(fra.me.REG[0]) = REGB0;
40 stack_frame_head = fra.me.prev;
41 return;
42 }
43 void program___ToolContext___use_SFT_optimization__eq(val_t p0, val_t p1){
44 struct {struct stack_frame_t me;} fra;
45 val_t REGB0;
46 val_t tmp;
47 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
48 fra.me.file = LOCATE_program;
49 fra.me.line = 27;
50 fra.me.meth = LOCATE_program___ToolContext___use_SFT_optimization__eq;
51 fra.me.has_broke = 0;
52 fra.me.REG_size = 1;
53 fra.me.REG[0] = NIT_NULL;
54 fra.me.REG[0] = p0;
55 REGB0 = p1;
56 /* ./program.nit:27 */
57 ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0]) = REGB0;
58 stack_frame_head = fra.me.prev;
59 return;
60 }
61 val_t program___ToolContext___use_SFT_optimization(val_t p0){
62 struct {struct stack_frame_t me;} fra;
63 val_t REGB0;
64 val_t REGB1;
65 val_t tmp;
66 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
67 fra.me.file = LOCATE_program;
68 fra.me.line = 29;
69 fra.me.meth = LOCATE_program___ToolContext___use_SFT_optimization;
70 fra.me.has_broke = 0;
71 fra.me.REG_size = 1;
72 fra.me.REG[0] = NIT_NULL;
73 fra.me.REG[0] = p0;
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)) {
79 } else {
80 nit_abort("Uninitialized attribute %s", "_use_SFT_optimization", LOCATE_program, 31);
81 }
82 REGB0 = ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0]);
83 } else {
84 REGB1 = TAG_Bool(false);
85 REGB0 = REGB1;
86 }
87 goto label1;
88 label1: while(0);
89 stack_frame_head = fra.me.prev;
90 return REGB0;
91 }
92 val_t program___Program___tc(val_t p0){
93 struct {struct stack_frame_t me;} fra;
94 val_t REGB0;
95 val_t tmp;
96 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
97 fra.me.file = LOCATE_program;
98 fra.me.line = 37;
99 fra.me.meth = LOCATE_program___Program___tc;
100 fra.me.has_broke = 0;
101 fra.me.REG_size = 1;
102 fra.me.REG[0] = NIT_NULL;
103 fra.me.REG[0] = p0;
104 /* ./program.nit:37 */
105 REGB0 = TAG_Bool(ATTR_program___Program____tc(fra.me.REG[0])!=NIT_NULL);
106 if (UNTAG_Bool(REGB0)) {
107 } else {
108 nit_abort("Uninitialized attribute %s", "_tc", LOCATE_program, 37);
109 }
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];
113 }
114 val_t program___Program___main_module(val_t p0){
115 struct {struct stack_frame_t me;} fra;
116 val_t REGB0;
117 val_t tmp;
118 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
119 fra.me.file = LOCATE_program;
120 fra.me.line = 41;
121 fra.me.meth = LOCATE_program___Program___main_module;
122 fra.me.has_broke = 0;
123 fra.me.REG_size = 1;
124 fra.me.REG[0] = NIT_NULL;
125 fra.me.REG[0] = p0;
126 /* ./program.nit:41 */
127 REGB0 = TAG_Bool(ATTR_program___Program____main_module(fra.me.REG[0])!=NIT_NULL);
128 if (UNTAG_Bool(REGB0)) {
129 } else {
130 nit_abort("Uninitialized attribute %s", "_main_module", LOCATE_program, 41);
131 }
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];
135 }
136 val_t program___Program___main_method(val_t p0){
137 struct {struct stack_frame_t me;} fra;
138 val_t tmp;
139 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
140 fra.me.file = LOCATE_program;
141 fra.me.line = 44;
142 fra.me.meth = LOCATE_program___Program___main_method;
143 fra.me.has_broke = 0;
144 fra.me.REG_size = 1;
145 fra.me.REG[0] = NIT_NULL;
146 fra.me.REG[0] = p0;
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];
151 }
152 val_t program___Program___main_class(val_t p0){
153 struct {struct stack_frame_t me;} fra;
154 val_t tmp;
155 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
156 fra.me.file = LOCATE_program;
157 fra.me.line = 48;
158 fra.me.meth = LOCATE_program___Program___main_class;
159 fra.me.has_broke = 0;
160 fra.me.REG_size = 1;
161 fra.me.REG[0] = NIT_NULL;
162 fra.me.REG[0] = p0;
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];
167 }
168 void program___Program___finish_processing_classes(val_t p0){
169 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
170 val_t REGB0;
171 val_t REGB1;
172 val_t REGB2;
173 val_t tmp;
174 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
175 fra.me.file = LOCATE_program;
176 fra.me.line = 52;
177 fra.me.meth = LOCATE_program___Program___finish_processing_classes;
178 fra.me.has_broke = 0;
179 fra.me.REG_size = 3;
180 fra.me.REG[0] = NIT_NULL;
181 fra.me.REG[1] = NIT_NULL;
182 fra.me.REG[2] = NIT_NULL;
183 fra.me.REG[0] = p0;
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:269 */
191 REGB0 = TAG_Int(0);
192 /* ./../lib/standard//collection//array.nit:270 */
193 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
194 if (UNTAG_Bool(REGB1)) {
195 } else {
196 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
197 }
198 REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
199 /* ./../lib/standard//collection//array.nit:271 */
200 fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
201 /* ./../lib/standard//collection//array.nit:272 */
202 while(1) {
203 /* ./../lib/standard//collection//array.nit:24 */
204 REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
205 if (UNTAG_Bool(REGB1)) {
206 } else {
207 nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
208 }
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)) {
212 } else {
213 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
214 }
215 /* ./../lib/standard//kernel.nit:232 */
216 REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
217 /* ./../lib/standard//collection//array.nit:272 */
218 if (UNTAG_Bool(REGB1)) {
219 /* ./../lib/standard//collection//array.nit:273 */
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, 273);
223 }
224 /* ./../lib/standard//collection//array.nit:718 */
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:274 */
229 REGB1 = TAG_Int(1);
230 /* ./../lib/standard//kernel.nit:235 */
231 REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
232 /* ./../lib/standard//collection//array.nit:274 */
233 REGB0 = REGB1;
234 } else {
235 /* ./../lib/standard//collection//array.nit:272 */
236 goto label2;
237 }
238 }
239 label2: while(0);
240 stack_frame_head = fra.me.prev;
241 return;
242 }
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;
245 fun_t CREG[1];
246 val_t tmp;
247 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
248 fra.me.file = LOCATE_program;
249 fra.me.line = 0;
250 fra.me.meth = LOCATE_program___Program___finish_processing_classes;
251 fra.me.has_broke = 0;
252 fra.me.REG_size = 1;
253 fra.me.REG[0] = NIT_NULL;
254 fra.me.closure_ctx = closctx_param;
255 fra.me.closure_funs = CREG;
256 fra.me.REG[0] = p0;
257 CREG[0] = clos_fun0;
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;
263 return;
264 }
265 void program___Program___compute_main_method(val_t p0){
266 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
267 val_t REGB0;
268 val_t tmp;
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;
275 fra.me.line = 66;
276 fra.me.meth = LOCATE_program___Program___compute_main_method;
277 fra.me.has_broke = 0;
278 fra.me.REG_size = 3;
279 fra.me.REG[0] = NIT_NULL;
280 fra.me.REG[1] = NIT_NULL;
281 fra.me.REG[2] = NIT_NULL;
282 fra.me.REG[0] = p0;
283 /* ./program.nit:68 */
284 if (!once_value_1) {
285 if (!once_value_2) {
286 fra.me.REG[1] = BOX_NativeString("Sys");
287 REGB0 = TAG_Int(3);
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)) {
303 goto label3;
304 }
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 */
309 if (!once_value_4) {
310 if (!once_value_5) {
311 fra.me.REG[2] = BOX_NativeString("main");
312 REGB0 = TAG_Int(4);
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)) {
327 goto label3;
328 }
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];
334 label3: while(0);
335 stack_frame_head = fra.me.prev;
336 return;
337 }
338 void program___Program___generate_allocation_iroutines(val_t p0){
339 struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
340 val_t tmp;
341 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
342 fra.me.file = LOCATE_program;
343 fra.me.line = 80;
344 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
345 fra.me.has_broke = 0;
346 fra.me.REG_size = 6;
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;
353 fra.me.REG[0] = p0;
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;
361 return;
362 }
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;
365 val_t REGB0;
366 val_t REGB1;
367 fun_t CREG[1];
368 val_t tmp;
369 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
370 fra.me.file = LOCATE_program;
371 fra.me.line = 0;
372 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
373 fra.me.has_broke = 0;
374 fra.me.REG_size = 2;
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;
379 fra.me.REG[0] = p0;
380 CREG[0] = clos_fun0;
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);
387 } else {
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]);
390 REGB0 = REGB1;
391 }
392 if (UNTAG_Bool(REGB0)) {
393 goto label2;
394 }
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)) {
400 } else {
401 REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
402 if (UNTAG_Bool(REGB1)) {
403 REGB1 = TAG_Bool(false);
404 REGB0 = REGB1;
405 } else {
406 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
407 REGB0 = REGB1;
408 }
409 }
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 */
416 REGB0 = TAG_Int(1);
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 */
436 REGB0 = TAG_Int(1);
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));
453 }
454 label2: while(0);
455 stack_frame_head = fra.me.prev;
456 return;
457 }
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;
460 val_t REGB0;
461 val_t REGB1;
462 fun_t CREG[1];
463 val_t tmp;
464 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
465 fra.me.file = LOCATE_program;
466 fra.me.line = 0;
467 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
468 fra.me.has_broke = 0;
469 fra.me.REG_size = 2;
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;
474 fra.me.REG[0] = p0;
475 CREG[0] = clos_fun0;
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)) {
481 goto label4;
482 }
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);
490 }
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)) {
497 } else {
498 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
499 if (UNTAG_Bool(REGB1)) {
500 REGB1 = TAG_Bool(false);
501 REGB0 = REGB1;
502 } else {
503 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
504 REGB0 = REGB1;
505 }
506 }
507 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
508 } else {
509 REGB1 = TAG_Bool(false);
510 REGB0 = REGB1;
511 }
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)) {
518 } else {
519 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
520 if (UNTAG_Bool(REGB1)) {
521 REGB1 = TAG_Bool(false);
522 REGB0 = REGB1;
523 } else {
524 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
525 REGB0 = REGB1;
526 }
527 }
528 if (UNTAG_Bool(REGB0)) {
529 goto label4;
530 }
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)) {
535 } else {
536 nit_abort("Cast failed", NULL, LOCATE_program, 102);
537 }
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]);
541 }
542 label4: while(0);
543 stack_frame_head = fra.me.prev;
544 return;
545 }
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;
548 val_t REGB0;
549 val_t REGB1;
550 fun_t CREG[1];
551 val_t tmp;
552 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
553 fra.me.file = LOCATE_program;
554 fra.me.line = 0;
555 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
556 fra.me.has_broke = 0;
557 fra.me.REG_size = 2;
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;
562 fra.me.REG[0] = p0;
563 CREG[0] = clos_fun0;
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)) {
569 goto label6;
570 }
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);
578 }
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)) {
585 } else {
586 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
587 if (UNTAG_Bool(REGB1)) {
588 REGB1 = TAG_Bool(false);
589 REGB0 = REGB1;
590 } else {
591 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
592 REGB0 = REGB1;
593 }
594 }
595 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
596 } else {
597 REGB1 = TAG_Bool(false);
598 REGB0 = REGB1;
599 }
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);
604 }
605 REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
606 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
607 } else {
608 REGB1 = TAG_Bool(false);
609 REGB0 = REGB1;
610 }
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]);
614 }
615 label6: while(0);
616 stack_frame_head = fra.me.prev;
617 return;
618 }
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;
621 val_t REGB0;
622 val_t REGB1;
623 val_t REGB2;
624 val_t REGB3;
625 fun_t CREG[1];
626 val_t tmp;
627 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
628 fra.me.file = LOCATE_program;
629 fra.me.line = 0;
630 fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
631 fra.me.has_broke = 0;
632 fra.me.REG_size = 6;
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;
641 fra.me.REG[0] = p0;
642 CREG[0] = clos_fun0;
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)) {
647 goto label8;
648 }
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)) {
654 } else {
655 nit_abort("Assert failed", NULL, LOCATE_program, 131);
656 }
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 */
663 REGB0 = TAG_Int(0);
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);
668 }
669 REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
670 /* ./../lib/standard//kernel.nit:352 */
671 while(1) {
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)) {
674 } else {
675 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
676 }
677 /* ./../lib/standard//kernel.nit:232 */
678 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
679 /* ./../lib/standard//kernel.nit:352 */
680 if (UNTAG_Bool(REGB2)) {
681 /* ./program.nit:135 */
682 REGB2 = REGB0;
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);
687 }
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:354 */
692 REGB2 = TAG_Int(1);
693 /* ./../lib/standard//kernel.nit:235 */
694 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
695 /* ./../lib/standard//kernel.nit:354 */
696 REGB0 = REGB2;
697 } else {
698 /* ./../lib/standard//kernel.nit:352 */
699 goto label9;
700 }
701 }
702 label9: while(0);
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);
710 }
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 */
724 REGB0 = TAG_Int(1);
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]);
743 label8: while(0);
744 stack_frame_head = fra.me.prev;
745 return;
746 }
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;
749 val_t REGB0;
750 fun_t CREG[1];
751 val_t tmp;
752 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
753 fra.me.file = LOCATE_program;
754 fra.me.line = 156;
755 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
756 fra.me.has_broke = 0;
757 fra.me.REG_size = 3;
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;
763 fra.me.REG[0] = p0;
764 CREG[0] = clos_fun0;
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);
771 }
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) {
775 case 0: break;
776 case 1: (&(fra.me))->has_broke = 0; goto label9;
777 }
778 label9: while(0);
779 stack_frame_head = fra.me.prev;
780 return;
781 }
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;
784 fun_t CREG[1];
785 val_t tmp;
786 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
787 fra.me.file = LOCATE_program;
788 fra.me.line = 0;
789 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
790 fra.me.has_broke = 0;
791 fra.me.REG_size = 1;
792 fra.me.REG[0] = NIT_NULL;
793 fra.me.closure_ctx = closctx_param;
794 fra.me.closure_funs = CREG;
795 fra.me.REG[0] = p0;
796 CREG[0] = clos_fun0;
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) {
802 case 0: break;
803 default: goto label8;
804 }
805 label8: while(0);
806 stack_frame_head = fra.me.prev;
807 return;
808 }
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;
811 val_t REGB0;
812 val_t REGB1;
813 fun_t CREG[1];
814 val_t tmp;
815 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
816 fra.me.file = LOCATE_program;
817 fra.me.line = 0;
818 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
819 fra.me.has_broke = 0;
820 fra.me.REG_size = 2;
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;
825 fra.me.REG[0] = p0;
826 CREG[0] = clos_fun0;
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) {
833 case 0: break;
834 default: goto label5;
835 }
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)) {
842 } else {
843 REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
844 if (UNTAG_Bool(REGB1)) {
845 REGB1 = TAG_Bool(false);
846 REGB0 = REGB1;
847 } else {
848 REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
849 REGB0 = REGB1;
850 }
851 }
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;
858 goto label5;
859 }
860 }
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)) {
867 } else {
868 REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
869 if (UNTAG_Bool(REGB1)) {
870 REGB1 = TAG_Bool(false);
871 REGB0 = REGB1;
872 } else {
873 REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
874 REGB0 = REGB1;
875 }
876 }
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;
883 goto label5;
884 }
885 }
886 /* ./program.nit:185 */
887 fra.me.REG[0] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[0])(fra.me.REG[0]);
888 fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
889 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));
890 switch (closctx->has_broke) {
891 case 0: break;
892 default: goto label5;
893 }
894 label5: while(0);
895 stack_frame_head = fra.me.prev;
896 return;
897 }
898 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){
899 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
900 val_t REGB0;
901 val_t REGB1;
902 fun_t CREG[1];
903 val_t tmp;
904 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
905 fra.me.file = LOCATE_program;
906 fra.me.line = 0;
907 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
908 fra.me.has_broke = 0;
909 fra.me.REG_size = 2;
910 fra.me.REG[0] = NIT_NULL;
911 fra.me.REG[1] = NIT_NULL;
912 fra.me.closure_ctx = closctx_param;
913 fra.me.closure_funs = CREG;
914 fra.me.REG[0] = p0;
915 CREG[0] = clos_fun0;
916 /* ./program.nit:167 */
917 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
918 if (UNTAG_Bool(REGB0)) {
919 /* ./program.nit:168 */
920 fra.me.REG[1] = CALL_icode___icode_base___MMAttribute___iroutine(fra.me.REG[0])(fra.me.REG[0]);
921 closctx->REG[2] = fra.me.REG[1];
922 } else {
923 /* ./program.nit:169 */
924 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
925 if (UNTAG_Bool(REGB0)) {
926 /* ./program.nit:170 */
927 fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
928 closctx->REG[2] = fra.me.REG[0];
929 }
930 }
931 /* ./program.nit:172 */
932 REGB0 = TAG_Bool(closctx->REG[2]==NIT_NULL);
933 if (UNTAG_Bool(REGB0)) {
934 } else {
935 REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
936 if (UNTAG_Bool(REGB1)) {
937 REGB1 = TAG_Bool(false);
938 REGB0 = REGB1;
939 } else {
940 REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
941 REGB0 = REGB1;
942 }
943 }
944 if (UNTAG_Bool(REGB0)) {
945 goto label4;
946 }
947 /* ./program.nit:173 */
948 ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[2], closctx->REG[1]);
949 if (closctx->closure_ctx->has_broke) {
950 closctx->has_broke = 1;
951 goto label4;
952 }
953 label4: while(0);
954 stack_frame_head = fra.me.prev;
955 return;
956 }
957 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){
958 struct {struct stack_frame_t me;} fra;
959 fun_t CREG[1];
960 val_t tmp;
961 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
962 fra.me.file = LOCATE_program;
963 fra.me.line = 0;
964 fra.me.meth = LOCATE_program___Program___with_each_iroutines;
965 fra.me.has_broke = 0;
966 fra.me.REG_size = 1;
967 fra.me.REG[0] = NIT_NULL;
968 fra.me.closure_ctx = closctx_param;
969 fra.me.closure_funs = CREG;
970 fra.me.REG[0] = p0;
971 CREG[0] = clos_fun0;
972 /* ./program.nit:186 */
973 ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0], closctx->REG[1]);
974 if (closctx->closure_ctx->has_broke) {
975 closctx->has_broke = 1;
976 goto label7;
977 }
978 label7: while(0);
979 stack_frame_head = fra.me.prev;
980 return;
981 }
982 void program___Program___with_each_methods(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
983 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
984 val_t REGB0;
985 fun_t CREG[1];
986 val_t tmp;
987 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
988 fra.me.file = LOCATE_program;
989 fra.me.line = 192;
990 fra.me.meth = LOCATE_program___Program___with_each_methods;
991 fra.me.has_broke = 0;
992 fra.me.REG_size = 2;
993 fra.me.REG[0] = NIT_NULL;
994 fra.me.REG[1] = NIT_NULL;
995 fra.me.closure_ctx = closctx_param;
996 fra.me.closure_funs = CREG;
997 fra.me.REG[0] = p0;
998 CREG[0] = clos_fun0;
999 /* ./program.nit:197 */
1000 fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
1001 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[1])(fra.me.REG[1]);
1002 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
1003 if (UNTAG_Bool(REGB0)) {
1004 nit_abort("Reciever is null", NULL, LOCATE_program, 197);
1005 }
1006 fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[1])(fra.me.REG[1]);
1007 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));
1008 switch ((&(fra.me))->has_broke) {
1009 case 0: break;
1010 case 1: (&(fra.me))->has_broke = 0; goto label7;
1011 }
1012 label7: while(0);
1013 stack_frame_head = fra.me.prev;
1014 return;
1015 }
1016 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){
1017 struct {struct stack_frame_t me;} fra;
1018 fun_t CREG[1];
1019 val_t tmp;
1020 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1021 fra.me.file = LOCATE_program;
1022 fra.me.line = 0;
1023 fra.me.meth = LOCATE_program___Program___with_each_methods;
1024 fra.me.has_broke = 0;
1025 fra.me.REG_size = 1;
1026 fra.me.REG[0] = NIT_NULL;
1027 fra.me.closure_ctx = closctx_param;
1028 fra.me.closure_funs = CREG;
1029 fra.me.REG[0] = p0;
1030 CREG[0] = clos_fun0;
1031 /* ./program.nit:198 */
1032 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
1033 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));
1034 switch (closctx->has_broke) {
1035 case 0: break;
1036 default: goto label6;
1037 }
1038 label6: while(0);
1039 stack_frame_head = fra.me.prev;
1040 return;
1041 }
1042 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){
1043 struct {struct stack_frame_t me;} fra;
1044 fun_t CREG[1];
1045 val_t tmp;
1046 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1047 fra.me.file = LOCATE_program;
1048 fra.me.line = 0;
1049 fra.me.meth = LOCATE_program___Program___with_each_methods;
1050 fra.me.has_broke = 0;
1051 fra.me.REG_size = 1;
1052 fra.me.REG[0] = NIT_NULL;
1053 fra.me.closure_ctx = closctx_param;
1054 fra.me.closure_funs = CREG;
1055 fra.me.REG[0] = p0;
1056 CREG[0] = clos_fun0;
1057 /* ./program.nit:200 */
1058 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra.me.REG[0])(fra.me.REG[0]);
1059 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));
1060 switch (closctx->has_broke) {
1061 case 0: break;
1062 default: goto label5;
1063 }
1064 label5: while(0);
1065 stack_frame_head = fra.me.prev;
1066 return;
1067 }
1068 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){
1069 struct {struct stack_frame_t me;} fra;
1070 val_t REGB0;
1071 fun_t CREG[1];
1072 val_t tmp;
1073 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1074 fra.me.file = LOCATE_program;
1075 fra.me.line = 0;
1076 fra.me.meth = LOCATE_program___Program___with_each_methods;
1077 fra.me.has_broke = 0;
1078 fra.me.REG_size = 1;
1079 fra.me.REG[0] = NIT_NULL;
1080 fra.me.closure_ctx = closctx_param;
1081 fra.me.closure_funs = CREG;
1082 fra.me.REG[0] = p0;
1083 CREG[0] = clos_fun0;
1084 /* ./program.nit:201 */
1085 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
1086 if (UNTAG_Bool(REGB0)) {
1087 /* ./program.nit:202 */
1088 ((void (*)(struct stack_frame_t *, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0]);
1089 if (closctx->closure_ctx->has_broke) {
1090 closctx->has_broke = 1;
1091 goto label4;
1092 }
1093 }
1094 label4: while(0);
1095 stack_frame_head = fra.me.prev;
1096 return;
1097 }
1098 void program___Program___with_each_live_local_classes(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
1099 struct {struct stack_frame_t me;} fra;
1100 fun_t CREG[1];
1101 val_t tmp;
1102 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1103 fra.me.file = LOCATE_program;
1104 fra.me.line = 209;
1105 fra.me.meth = LOCATE_program___Program___with_each_live_local_classes;
1106 fra.me.has_broke = 0;
1107 fra.me.REG_size = 1;
1108 fra.me.REG[0] = NIT_NULL;
1109 fra.me.closure_ctx = closctx_param;
1110 fra.me.closure_funs = CREG;
1111 fra.me.REG[0] = p0;
1112 CREG[0] = clos_fun0;
1113 /* ./program.nit:214 */
1114 fra.me.REG[0] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
1115 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
1116 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));
1117 switch ((&(fra.me))->has_broke) {
1118 case 0: break;
1119 case 1: (&(fra.me))->has_broke = 0; goto label3;
1120 }
1121 label3: while(0);
1122 stack_frame_head = fra.me.prev;
1123 return;
1124 }
1125 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){
1126 struct {struct stack_frame_t me;} fra;
1127 fun_t CREG[1];
1128 val_t tmp;
1129 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1130 fra.me.file = LOCATE_program;
1131 fra.me.line = 0;
1132 fra.me.meth = LOCATE_program___Program___with_each_live_local_classes;
1133 fra.me.has_broke = 0;
1134 fra.me.REG_size = 1;
1135 fra.me.REG[0] = NIT_NULL;
1136 fra.me.closure_ctx = closctx_param;
1137 fra.me.closure_funs = CREG;
1138 fra.me.REG[0] = p0;
1139 CREG[0] = clos_fun0;
1140 /* ./program.nit:215 */
1141 ((void (*)(struct stack_frame_t *, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0]);
1142 if (closctx->closure_ctx->has_broke) {
1143 closctx->has_broke = 1;
1144 goto label2;
1145 }
1146 label2: while(0);
1147 stack_frame_head = fra.me.prev;
1148 return;
1149 }
1150 void program___Program___init(val_t p0, val_t p1, val_t p2, int* init_table){
1151 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_program___Program].i;
1152 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
1153 val_t tmp;
1154 if (init_table[itpos0]) return;
1155 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1156 fra.me.file = LOCATE_program;
1157 fra.me.line = 219;
1158 fra.me.meth = LOCATE_program___Program___init;
1159 fra.me.has_broke = 0;
1160 fra.me.REG_size = 3;
1161 fra.me.REG[0] = NIT_NULL;
1162 fra.me.REG[1] = NIT_NULL;
1163 fra.me.REG[2] = NIT_NULL;
1164 fra.me.REG[0] = p0;
1165 fra.me.REG[1] = p1;
1166 fra.me.REG[2] = p2;
1167 /* ./program.nit:220 */
1168 ATTR_program___Program____main_module(fra.me.REG[0]) = fra.me.REG[1];
1169 /* ./program.nit:221 */
1170 ATTR_program___Program____tc(fra.me.REG[0]) = fra.me.REG[2];
1171 /* ./program.nit:222 */
1172 CALL_program___Program___finish_processing_classes(fra.me.REG[0])(fra.me.REG[0]);
1173 stack_frame_head = fra.me.prev;
1174 init_table[itpos0] = 1;
1175 return;
1176 }
1177 val_t program___MMLocalClass___init_var_iroutine(val_t p0){
1178 struct {struct stack_frame_t me;} fra;
1179 val_t tmp;
1180 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1181 fra.me.file = LOCATE_program;
1182 fra.me.line = 227;
1183 fra.me.meth = LOCATE_program___MMLocalClass___init_var_iroutine;
1184 fra.me.has_broke = 0;
1185 fra.me.REG_size = 1;
1186 fra.me.REG[0] = NIT_NULL;
1187 fra.me.REG[0] = p0;
1188 /* ./program.nit:227 */
1189 fra.me.REG[0] = ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]);
1190 stack_frame_head = fra.me.prev;
1191 return fra.me.REG[0];
1192 }
1193 void program___MMLocalClass___init_var_iroutine__eq(val_t p0, val_t p1){
1194 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1195 val_t tmp;
1196 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1197 fra.me.file = LOCATE_program;
1198 fra.me.line = 227;
1199 fra.me.meth = LOCATE_program___MMLocalClass___init_var_iroutine__eq;
1200 fra.me.has_broke = 0;
1201 fra.me.REG_size = 2;
1202 fra.me.REG[0] = NIT_NULL;
1203 fra.me.REG[1] = NIT_NULL;
1204 fra.me.REG[0] = p0;
1205 fra.me.REG[1] = p1;
1206 /* ./program.nit:227 */
1207 ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
1208 stack_frame_head = fra.me.prev;
1209 return;
1210 }
1211 val_t program___MMLocalClass___checknew_iroutine(val_t p0){
1212 struct {struct stack_frame_t me;} fra;
1213 val_t tmp;
1214 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1215 fra.me.file = LOCATE_program;
1216 fra.me.line = 229;
1217 fra.me.meth = LOCATE_program___MMLocalClass___checknew_iroutine;
1218 fra.me.has_broke = 0;
1219 fra.me.REG_size = 1;
1220 fra.me.REG[0] = NIT_NULL;
1221 fra.me.REG[0] = p0;
1222 /* ./program.nit:229 */
1223 fra.me.REG[0] = ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]);
1224 stack_frame_head = fra.me.prev;
1225 return fra.me.REG[0];
1226 }
1227 void program___MMLocalClass___checknew_iroutine__eq(val_t p0, val_t p1){
1228 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
1229 val_t tmp;
1230 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1231 fra.me.file = LOCATE_program;
1232 fra.me.line = 229;
1233 fra.me.meth = LOCATE_program___MMLocalClass___checknew_iroutine__eq;
1234 fra.me.has_broke = 0;
1235 fra.me.REG_size = 2;
1236 fra.me.REG[0] = NIT_NULL;
1237 fra.me.REG[1] = NIT_NULL;
1238 fra.me.REG[0] = p0;
1239 fra.me.REG[1] = p1;
1240 /* ./program.nit:229 */
1241 ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]) = fra.me.REG[1];
1242 stack_frame_head = fra.me.prev;
1243 return;
1244 }
1245 val_t program___MMLocalClass___new_instance_iroutine(val_t p0){
1246 struct {struct stack_frame_t me;} fra;
1247 val_t REGB0;
1248 val_t tmp;
1249 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
1250 fra.me.file = LOCATE_program;
1251 fra.me.line = 231;
1252 fra.me.meth = LOCATE_program___MMLocalClass___new_instance_iroutine;
1253 fra.me.has_broke = 0;
1254 fra.me.REG_size = 1;
1255 fra.me.REG[0] = NIT_NULL;
1256 fra.me.REG[0] = p0;
1257 /* ./program.nit:231 */
1258 REGB0 = TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0])!=NIT_NULL);
1259 if (UNTAG_Bool(REGB0)) {
1260 } else {
1261 nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_program, 231);
1262 }
1263 fra.me.REG[0] = ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]);
1264 stack_frame_head = fra.me.prev;
1265 return fra.me.REG[0];
1266 }