c_src: update
[nit.git] / c_src / compiling___icode_generator._sep.c
1 /* This C file is generated by NIT to compile module compiling___icode_generator. */
2 #include "compiling___icode_generator._sep.h"
3 void compiling___icode_generator___Program___generate_icode_files(val_t p0){
4 struct {struct stack_frame_t me; val_t MORE_REG[2];} 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_compiling___icode_generator;
9 fra.me.line = 26;
10 fra.me.meth = LOCATE_compiling___icode_generator___Program___generate_icode_files;
11 fra.me.has_broke = 0;
12 fra.me.REG_size = 3;
13 fra.me.REG[0] = NIT_NULL;
14 fra.me.REG[1] = NIT_NULL;
15 fra.me.REG[2] = NIT_NULL;
16 fra.me.REG[0] = p0;
17 /* ./compiling//icode_generator.nit:26 */
18 fra.me.REG[1] = fra.me.REG[0];
19 /* ./compiling//icode_generator.nit:28 */
20 fra.me.REG[2] = CALL_program___Program___tc(fra.me.REG[1])(fra.me.REG[1]);
21 fra.me.REG[2] = CALL_compiling___compiling_base___ToolContext___compdir(fra.me.REG[2])(fra.me.REG[2]);
22 REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
23 if (UNTAG_Bool(REGB0)) {
24 nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 28);
25 }
26 CALL_standard___file___String___mkdir(fra.me.REG[2])(fra.me.REG[2]);
27 CALL_program___Program___with_each_live_local_classes(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_compiling___icode_generator___Program___generate_icode_files_1));
28 stack_frame_head = fra.me.prev;
29 return;
30 }
31 void OC_compiling___icode_generator___Program___generate_icode_files_1(struct stack_frame_t *closctx, val_t p0){
32 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
33 val_t REGB0;
34 val_t tmp;
35 /* ./compiling//icode_generator.nit:30 */
36 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
37 fra.me.file = LOCATE_compiling___icode_generator;
38 fra.me.line = 30;
39 fra.me.meth = LOCATE_compiling___icode_generator___Program___generate_icode_files;
40 fra.me.has_broke = 0;
41 fra.me.REG_size = 2;
42 fra.me.REG[0] = NIT_NULL;
43 fra.me.REG[1] = NIT_NULL;
44 fra.me.REG[0] = p0;
45 /* ./compiling//icode_generator.nit:31 */
46 fra.me.REG[1] = CALL_program___Program___tc(closctx->REG[1])(closctx->REG[1]);
47 fra.me.REG[1] = CALL_compiling___compiling_base___ToolContext___compdir(fra.me.REG[1])(fra.me.REG[1]);
48 REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___string___String, ID_standard___string___String)) /*cast String*/;
49 if (UNTAG_Bool(REGB0)) {
50 } else {
51 nit_abort("Cast failed", NULL, LOCATE_compiling___icode_generator, 31);
52 }
53 CALL_compiling___icode_generator___MMLocalClass___generate_icode_file(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
54 stack_frame_head = fra.me.prev;
55 return;
56 }
57 void compiling___icode_generator___FileICodeDumper___init(val_t p0, val_t p1, int* init_table){
58 int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_compiling___icode_generator___FileICodeDumper].i;
59 struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
60 val_t REGB0;
61 val_t REGB1;
62 val_t tmp;
63 if (init_table[itpos0]) return;
64 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
65 fra.me.file = LOCATE_compiling___icode_generator;
66 fra.me.line = 41;
67 fra.me.meth = LOCATE_compiling___icode_generator___FileICodeDumper___init;
68 fra.me.has_broke = 0;
69 fra.me.REG_size = 3;
70 fra.me.REG[0] = NIT_NULL;
71 fra.me.REG[1] = NIT_NULL;
72 fra.me.REG[2] = NIT_NULL;
73 fra.me.REG[0] = p0;
74 fra.me.REG[1] = p1;
75 /* ./compiling//icode_generator.nit:41 */
76 fra.me.REG[2] = fra.me.REG[0];
77 /* ./compiling//icode_generator.nit:43 */
78 REGB0 = TAG_Bool(false);
79 REGB1 = TAG_Bool(false);
80 CALL_analysis___icode_dump___ICodeDumper___init(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB1, init_table);
81 /* ./compiling//icode_generator.nit:44 */
82 ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[2]) = fra.me.REG[1];
83 stack_frame_head = fra.me.prev;
84 init_table[itpos0] = 1;
85 return;
86 }
87 void compiling___icode_generator___FileICodeDumper___write(val_t p0, val_t p1){
88 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
89 val_t REGB0;
90 val_t REGB1;
91 val_t REGB2;
92 val_t tmp;
93 static val_t once_value_1; /* Once value */
94 static val_t once_value_3; /* Once value */
95 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
96 fra.me.file = LOCATE_compiling___icode_generator;
97 fra.me.line = 47;
98 fra.me.meth = LOCATE_compiling___icode_generator___FileICodeDumper___write;
99 fra.me.has_broke = 0;
100 fra.me.REG_size = 4;
101 fra.me.REG[0] = NIT_NULL;
102 fra.me.REG[1] = NIT_NULL;
103 fra.me.REG[2] = NIT_NULL;
104 fra.me.REG[3] = NIT_NULL;
105 fra.me.REG[0] = p0;
106 fra.me.REG[1] = p1;
107 /* ./compiling//icode_generator.nit:48 */
108 REGB0 = TAG_Int(0);
109 REGB1 = CALL_analysis___icode_dump___ICodeDumper___indent_level(fra.me.REG[0])(fra.me.REG[0]);
110 /* ./../lib/standard//kernel.nit:352 */
111 while(1) {
112 REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
113 if (UNTAG_Bool(REGB2)) {
114 } else {
115 nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
116 }
117 /* ./../lib/standard//kernel.nit:232 */
118 REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
119 /* ./../lib/standard//kernel.nit:352 */
120 if (UNTAG_Bool(REGB2)) {
121 /* ./compiling//icode_generator.nit:49 */
122 REGB2 = TAG_Bool(ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0])!=NIT_NULL);
123 if (UNTAG_Bool(REGB2)) {
124 } else {
125 nit_abort("Uninitialized attribute %s", "_file", LOCATE_compiling___icode_generator, 49);
126 }
127 fra.me.REG[2] = ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0]);
128 if (!once_value_1) {
129 fra.me.REG[3] = BOX_NativeString(" ");
130 REGB2 = TAG_Int(4);
131 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
132 once_value_1 = fra.me.REG[3];
133 register_static_object(&once_value_1);
134 } else fra.me.REG[3] = once_value_1;
135 fra.me.REG[3] = fra.me.REG[3];
136 CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
137 /* ./../lib/standard//kernel.nit:354 */
138 REGB2 = TAG_Int(1);
139 /* ./../lib/standard//kernel.nit:235 */
140 REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
141 /* ./../lib/standard//kernel.nit:354 */
142 REGB0 = REGB2;
143 } else {
144 /* ./../lib/standard//kernel.nit:352 */
145 goto label2;
146 }
147 }
148 label2: while(0);
149 /* ./compiling//icode_generator.nit:51 */
150 REGB0 = TAG_Bool(ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0])!=NIT_NULL);
151 if (UNTAG_Bool(REGB0)) {
152 } else {
153 nit_abort("Uninitialized attribute %s", "_file", LOCATE_compiling___icode_generator, 51);
154 }
155 fra.me.REG[3] = ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0]);
156 CALL_standard___stream___OStream___write(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
157 /* ./compiling//icode_generator.nit:52 */
158 REGB0 = TAG_Bool(ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0])!=NIT_NULL);
159 if (UNTAG_Bool(REGB0)) {
160 } else {
161 nit_abort("Uninitialized attribute %s", "_file", LOCATE_compiling___icode_generator, 52);
162 }
163 fra.me.REG[0] = ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0]);
164 if (!once_value_3) {
165 fra.me.REG[1] = BOX_NativeString("\n");
166 REGB0 = TAG_Int(1);
167 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
168 once_value_3 = fra.me.REG[1];
169 register_static_object(&once_value_3);
170 } else fra.me.REG[1] = once_value_3;
171 fra.me.REG[1] = fra.me.REG[1];
172 CALL_standard___stream___OStream___write(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
173 stack_frame_head = fra.me.prev;
174 return;
175 }
176 void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0, val_t p1){
177 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
178 val_t REGB0;
179 val_t REGB1;
180 val_t tmp;
181 static val_t once_value_1; /* Once value */
182 static val_t once_value_2; /* Once value */
183 static val_t once_value_3; /* Once value */
184 static val_t once_value_4; /* Once value */
185 static val_t once_value_5; /* Once value */
186 static val_t once_value_6; /* Once value */
187 static val_t once_value_7; /* Once value */
188 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
189 fra.me.file = LOCATE_compiling___icode_generator;
190 fra.me.line = 57;
191 fra.me.meth = LOCATE_compiling___icode_generator___MMLocalClass___generate_icode_file;
192 fra.me.has_broke = 0;
193 fra.me.REG_size = 4;
194 fra.me.REG[0] = NIT_NULL;
195 fra.me.REG[1] = NIT_NULL;
196 fra.me.REG[2] = NIT_NULL;
197 fra.me.REG[3] = NIT_NULL;
198 fra.me.REG[0] = p0;
199 fra.me.REG[1] = p1;
200 /* ./compiling//icode_generator.nit:59 */
201 REGB0 = TAG_Int(5);
202 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
203 if (!once_value_1) {
204 fra.me.REG[3] = BOX_NativeString("");
205 REGB0 = TAG_Int(0);
206 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
207 once_value_1 = fra.me.REG[3];
208 register_static_object(&once_value_1);
209 } else fra.me.REG[3] = once_value_1;
210 fra.me.REG[3] = fra.me.REG[3];
211 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
212 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
213 if (!once_value_2) {
214 fra.me.REG[1] = BOX_NativeString("/");
215 REGB0 = TAG_Int(1);
216 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
217 once_value_2 = fra.me.REG[1];
218 register_static_object(&once_value_2);
219 } else fra.me.REG[1] = once_value_2;
220 fra.me.REG[1] = fra.me.REG[1];
221 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
222 fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
223 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
224 if (!once_value_3) {
225 fra.me.REG[1] = BOX_NativeString(".icode");
226 REGB0 = TAG_Int(6);
227 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
228 once_value_3 = fra.me.REG[1];
229 register_static_object(&once_value_3);
230 } else fra.me.REG[1] = once_value_3;
231 fra.me.REG[1] = fra.me.REG[1];
232 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
233 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
234 fra.me.REG[2] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[2]);
235 /* ./compiling//icode_generator.nit:60 */
236 fra.me.REG[1] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[0])(fra.me.REG[0]);
237 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
238 if (UNTAG_Bool(REGB0)) {
239 } else {
240 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
241 if (UNTAG_Bool(REGB1)) {
242 REGB1 = TAG_Bool(false);
243 REGB0 = REGB1;
244 } else {
245 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
246 REGB0 = REGB1;
247 }
248 }
249 if (UNTAG_Bool(REGB0)) {
250 /* ./compiling//icode_generator.nit:62 */
251 fra.me.REG[1] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[0])(fra.me.REG[0]);
252 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
253 if (UNTAG_Bool(REGB0)) {
254 } else {
255 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
256 if (UNTAG_Bool(REGB1)) {
257 REGB1 = TAG_Bool(false);
258 REGB0 = REGB1;
259 } else {
260 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
261 REGB0 = REGB1;
262 }
263 }
264 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
265 if (UNTAG_Bool(REGB0)) {
266 /* ./compiling//icode_generator.nit:63 */
267 fra.me.REG[1] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(fra.me.REG[2]);
268 /* ./compiling//icode_generator.nit:64 */
269 CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[1])(fra.me.REG[1]);
270 /* ./compiling//icode_generator.nit:65 */
271 if (!once_value_4) {
272 fra.me.REG[3] = BOX_NativeString("Init var iroutine::\n");
273 REGB0 = TAG_Int(20);
274 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
275 once_value_4 = fra.me.REG[3];
276 register_static_object(&once_value_4);
277 } else fra.me.REG[3] = once_value_4;
278 fra.me.REG[3] = fra.me.REG[3];
279 CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
280 /* ./compiling//icode_generator.nit:66 */
281 fra.me.REG[3] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[0])(fra.me.REG[0]);
282 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
283 if (UNTAG_Bool(REGB0)) {
284 nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 66);
285 }
286 CALL_analysis___icode_dump___IRoutine___dump(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
287 /* ./compiling//icode_generator.nit:67 */
288 if (!once_value_5) {
289 fra.me.REG[1] = BOX_NativeString("\n\n");
290 REGB0 = TAG_Int(2);
291 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
292 once_value_5 = fra.me.REG[1];
293 register_static_object(&once_value_5);
294 } else fra.me.REG[1] = once_value_5;
295 fra.me.REG[1] = fra.me.REG[1];
296 CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
297 }
298 /* ./compiling//icode_generator.nit:69 */
299 fra.me.REG[1] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[0])(fra.me.REG[0]);
300 REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
301 if (UNTAG_Bool(REGB0)) {
302 } else {
303 REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
304 if (UNTAG_Bool(REGB1)) {
305 REGB1 = TAG_Bool(false);
306 REGB0 = REGB1;
307 } else {
308 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
309 REGB0 = REGB1;
310 }
311 }
312 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
313 if (UNTAG_Bool(REGB0)) {
314 /* ./compiling//icode_generator.nit:70 */
315 fra.me.REG[1] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(fra.me.REG[2]);
316 /* ./compiling//icode_generator.nit:71 */
317 CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[1])(fra.me.REG[1]);
318 /* ./compiling//icode_generator.nit:72 */
319 if (!once_value_6) {
320 fra.me.REG[3] = BOX_NativeString("Check new instance iroutine::\n");
321 REGB0 = TAG_Int(30);
322 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
323 once_value_6 = fra.me.REG[3];
324 register_static_object(&once_value_6);
325 } else fra.me.REG[3] = once_value_6;
326 fra.me.REG[3] = fra.me.REG[3];
327 CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
328 /* ./compiling//icode_generator.nit:73 */
329 fra.me.REG[3] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[0])(fra.me.REG[0]);
330 REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
331 if (UNTAG_Bool(REGB0)) {
332 nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 73);
333 }
334 CALL_analysis___icode_dump___IRoutine___dump(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
335 /* ./compiling//icode_generator.nit:74 */
336 if (!once_value_7) {
337 fra.me.REG[1] = BOX_NativeString("\n\n");
338 REGB0 = TAG_Int(2);
339 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
340 once_value_7 = fra.me.REG[1];
341 register_static_object(&once_value_7);
342 } else fra.me.REG[1] = once_value_7;
343 fra.me.REG[1] = fra.me.REG[1];
344 CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
345 }
346 /* ./compiling//icode_generator.nit:78 */
347 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[0])(fra.me.REG[0]);
348 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_compiling___icode_generator___MMLocalClass___generate_icode_file_8));
349 }
350 /* ./compiling//icode_generator.nit:91 */
351 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[0])(fra.me.REG[0]);
352 CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_compiling___icode_generator___MMLocalClass___generate_icode_file_13));
353 /* ./compiling//icode_generator.nit:97 */
354 CALL_standard___stream___IOS___close(fra.me.REG[2])(fra.me.REG[2]);
355 stack_frame_head = fra.me.prev;
356 return;
357 }
358 void OC_compiling___icode_generator___MMLocalClass___generate_icode_file_8(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
359 struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
360 val_t REGB0;
361 fun_t CREG[1];
362 val_t tmp;
363 static val_t once_value_10; /* Once value */
364 static val_t once_value_11; /* Once value */
365 static val_t once_value_12; /* Once value */
366 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
367 fra.me.file = LOCATE_compiling___icode_generator;
368 fra.me.line = 0;
369 fra.me.meth = LOCATE_compiling___icode_generator___MMLocalClass___generate_icode_file;
370 fra.me.has_broke = 0;
371 fra.me.REG_size = 4;
372 fra.me.REG[0] = NIT_NULL;
373 fra.me.REG[1] = NIT_NULL;
374 fra.me.REG[2] = NIT_NULL;
375 fra.me.REG[3] = NIT_NULL;
376 fra.me.closure_ctx = closctx_param;
377 fra.me.closure_funs = CREG;
378 fra.me.REG[0] = p0;
379 CREG[0] = clos_fun0;
380 /* ./compiling//icode_generator.nit:79 */
381 REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
382 REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
383 if (UNTAG_Bool(REGB0)) {
384 goto label9;
385 }
386 /* ./compiling//icode_generator.nit:80 */
387 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
388 /* ./compiling//icode_generator.nit:81 */
389 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
390 if (UNTAG_Bool(REGB0)) {
391 } else {
392 nit_abort("Assert failed", NULL, LOCATE_compiling___icode_generator, 81);
393 }
394 /* ./compiling//icode_generator.nit:82 */
395 fra.me.REG[1] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(closctx->REG[2]);
396 /* ./compiling//icode_generator.nit:83 */
397 CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[1])(fra.me.REG[1]);
398 /* ./compiling//icode_generator.nit:84 */
399 REGB0 = TAG_Int(3);
400 fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
401 if (!once_value_10) {
402 fra.me.REG[3] = BOX_NativeString("New instance:: ");
403 REGB0 = TAG_Int(15);
404 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
405 once_value_10 = fra.me.REG[3];
406 register_static_object(&once_value_10);
407 } else fra.me.REG[3] = once_value_10;
408 fra.me.REG[3] = fra.me.REG[3];
409 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
410 fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[0])(fra.me.REG[0]);
411 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
412 if (!once_value_11) {
413 fra.me.REG[3] = BOX_NativeString("\n");
414 REGB0 = TAG_Int(1);
415 fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
416 once_value_11 = fra.me.REG[3];
417 register_static_object(&once_value_11);
418 } else fra.me.REG[3] = once_value_11;
419 fra.me.REG[3] = fra.me.REG[3];
420 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
421 fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
422 CALL_standard___stream___OStream___write(closctx->REG[2])(closctx->REG[2], fra.me.REG[2]);
423 /* ./compiling//icode_generator.nit:85 */
424 fra.me.REG[2] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[0])(closctx->REG[0]);
425 fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
426 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
427 if (UNTAG_Bool(REGB0)) {
428 nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 85);
429 }
430 CALL_analysis___icode_dump___IRoutine___dump(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
431 /* ./compiling//icode_generator.nit:86 */
432 if (!once_value_12) {
433 fra.me.REG[1] = BOX_NativeString("\n\n");
434 REGB0 = TAG_Int(2);
435 fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
436 once_value_12 = fra.me.REG[1];
437 register_static_object(&once_value_12);
438 } else fra.me.REG[1] = once_value_12;
439 fra.me.REG[1] = fra.me.REG[1];
440 CALL_standard___stream___OStream___write(closctx->REG[2])(closctx->REG[2], fra.me.REG[1]);
441 label9: while(0);
442 stack_frame_head = fra.me.prev;
443 return;
444 }
445 void OC_compiling___icode_generator___MMLocalClass___generate_icode_file_13(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
446 struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
447 val_t REGB0;
448 val_t REGB1;
449 fun_t CREG[1];
450 val_t tmp;
451 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
452 fra.me.file = LOCATE_compiling___icode_generator;
453 fra.me.line = 0;
454 fra.me.meth = LOCATE_compiling___icode_generator___MMLocalClass___generate_icode_file;
455 fra.me.has_broke = 0;
456 fra.me.REG_size = 2;
457 fra.me.REG[0] = NIT_NULL;
458 fra.me.REG[1] = NIT_NULL;
459 fra.me.closure_ctx = closctx_param;
460 fra.me.closure_funs = CREG;
461 fra.me.REG[0] = p0;
462 CREG[0] = clos_fun0;
463 /* ./compiling//icode_generator.nit:92 */
464 fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
465 /* ./compiling//icode_generator.nit:93 */
466 fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
467 REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],closctx->REG[0]));
468 if (UNTAG_Bool(REGB0)) {
469 } else {
470 REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[0]);
471 REGB0 = REGB1;
472 }
473 if (UNTAG_Bool(REGB0)) {
474 REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
475 } else {
476 REGB1 = TAG_Bool(false);
477 REGB0 = REGB1;
478 }
479 if (UNTAG_Bool(REGB0)) {
480 /* ./compiling//icode_generator.nit:94 */
481 CALL_compiling___icode_generator___MMMethod___generate_icode(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
482 }
483 stack_frame_head = fra.me.prev;
484 return;
485 }
486 void compiling___icode_generator___MMMethod___generate_icode(val_t p0, val_t p1){
487 struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
488 val_t REGB0;
489 val_t tmp;
490 static val_t once_value_1; /* Once value */
491 static val_t once_value_2; /* Once value */
492 static val_t once_value_3; /* Once value */
493 fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
494 fra.me.file = LOCATE_compiling___icode_generator;
495 fra.me.line = 102;
496 fra.me.meth = LOCATE_compiling___icode_generator___MMMethod___generate_icode;
497 fra.me.has_broke = 0;
498 fra.me.REG_size = 5;
499 fra.me.REG[0] = NIT_NULL;
500 fra.me.REG[1] = NIT_NULL;
501 fra.me.REG[2] = NIT_NULL;
502 fra.me.REG[3] = NIT_NULL;
503 fra.me.REG[4] = NIT_NULL;
504 fra.me.REG[0] = p0;
505 fra.me.REG[1] = p1;
506 /* ./compiling//icode_generator.nit:104 */
507 fra.me.REG[2] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(fra.me.REG[1]);
508 /* ./compiling//icode_generator.nit:105 */
509 CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[2])(fra.me.REG[2]);
510 /* ./compiling//icode_generator.nit:106 */
511 REGB0 = TAG_Int(3);
512 fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
513 if (!once_value_1) {
514 fra.me.REG[4] = BOX_NativeString("Method:: ");
515 REGB0 = TAG_Int(9);
516 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
517 once_value_1 = fra.me.REG[4];
518 register_static_object(&once_value_1);
519 } else fra.me.REG[4] = once_value_1;
520 fra.me.REG[4] = fra.me.REG[4];
521 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
522 fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[0])(fra.me.REG[0]);
523 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
524 if (!once_value_2) {
525 fra.me.REG[4] = BOX_NativeString("\n");
526 REGB0 = TAG_Int(1);
527 fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
528 once_value_2 = fra.me.REG[4];
529 register_static_object(&once_value_2);
530 } else fra.me.REG[4] = once_value_2;
531 fra.me.REG[4] = fra.me.REG[4];
532 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
533 fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
534 CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
535 /* ./compiling//icode_generator.nit:107 */
536 fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
537 REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
538 if (UNTAG_Bool(REGB0)) {
539 nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 107);
540 }
541 CALL_analysis___icode_dump___IRoutine___dump(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
542 /* ./compiling//icode_generator.nit:108 */
543 if (!once_value_3) {
544 fra.me.REG[2] = BOX_NativeString("\n\n");
545 REGB0 = TAG_Int(2);
546 fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
547 once_value_3 = fra.me.REG[2];
548 register_static_object(&once_value_3);
549 } else fra.me.REG[2] = once_value_3;
550 fra.me.REG[2] = fra.me.REG[2];
551 CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
552 stack_frame_head = fra.me.prev;
553 return;
554 }