nitdoc: remove unused plugin "Copy to Clipboard"
[nit.git] / c_src / separate_compiler.sep.3.c
1 #include "separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateCompilerVisitor#native_array_def for (self: SeparateCompilerVisitor, String, nullable MType, Array[RuntimeVariable]) */
3 void separate_compiler__SeparateCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
4 val* var_pname /* var pname: String */;
5 val* var_ret_type /* var ret_type: nullable MType */;
6 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
7 val* var /* : nullable Object */;
8 val* var1 /* : MType */;
9 val* var_elttype /* var elttype: MType */;
10 static val* varonce;
11 val* var2 /* : String */;
12 char* var3 /* : NativeString */;
13 long var4 /* : Int */;
14 val* var5 /* : String */;
15 val* var6 /* : MClass */;
16 val* var_nclass /* var nclass: MClass */;
17 val* var7 /* : Array[Object] */;
18 long var8 /* : Int */;
19 val* var_ /* var : Array[Object] */;
20 static val* varonce9;
21 val* var10 /* : String */;
22 char* var11 /* : NativeString */;
23 long var12 /* : Int */;
24 val* var13 /* : String */;
25 val* var14 /* : String */;
26 static val* varonce15;
27 val* var16 /* : String */;
28 char* var17 /* : NativeString */;
29 long var18 /* : Int */;
30 val* var19 /* : String */;
31 long var20 /* : Int */;
32 val* var21 /* : nullable Object */;
33 static val* varonce22;
34 val* var23 /* : String */;
35 char* var24 /* : NativeString */;
36 long var25 /* : Int */;
37 val* var26 /* : String */;
38 val* var27 /* : String */;
39 val* var_recv /* var recv: String */;
40 static val* varonce28;
41 val* var29 /* : String */;
42 char* var30 /* : NativeString */;
43 long var31 /* : Int */;
44 val* var32 /* : String */;
45 short int var33 /* : Bool */;
46 static val* varonce34;
47 val* var35 /* : String */;
48 char* var36 /* : NativeString */;
49 long var37 /* : Int */;
50 val* var38 /* : String */;
51 long var39 /* : Int */;
52 val* var40 /* : nullable Object */;
53 static val* varonce41;
54 val* var42 /* : String */;
55 char* var43 /* : NativeString */;
56 long var44 /* : Int */;
57 val* var45 /* : String */;
58 val* var46 /* : Array[Object] */;
59 long var47 /* : Int */;
60 val* var48 /* : NativeArray[Object] */;
61 val* var49 /* : String */;
62 val* var50 /* : RuntimeVariable */;
63 static val* varonce51;
64 val* var52 /* : String */;
65 char* var53 /* : NativeString */;
66 long var54 /* : Int */;
67 val* var55 /* : String */;
68 short int var56 /* : Bool */;
69 static val* varonce57;
70 val* var58 /* : String */;
71 char* var59 /* : NativeString */;
72 long var60 /* : Int */;
73 val* var61 /* : String */;
74 long var62 /* : Int */;
75 val* var63 /* : nullable Object */;
76 static val* varonce64;
77 val* var65 /* : String */;
78 char* var66 /* : NativeString */;
79 long var67 /* : Int */;
80 val* var68 /* : String */;
81 long var69 /* : Int */;
82 val* var70 /* : nullable Object */;
83 static val* varonce71;
84 val* var72 /* : String */;
85 char* var73 /* : NativeString */;
86 long var74 /* : Int */;
87 val* var75 /* : String */;
88 val* var76 /* : Array[Object] */;
89 long var77 /* : Int */;
90 val* var78 /* : NativeArray[Object] */;
91 val* var79 /* : String */;
92 static val* varonce80;
93 val* var81 /* : String */;
94 char* var82 /* : NativeString */;
95 long var83 /* : Int */;
96 val* var84 /* : String */;
97 short int var85 /* : Bool */;
98 val* var86 /* : Array[Object] */;
99 long var87 /* : Int */;
100 val* var_88 /* var : Array[Object] */;
101 static val* varonce89;
102 val* var90 /* : String */;
103 char* var91 /* : NativeString */;
104 long var92 /* : Int */;
105 val* var93 /* : String */;
106 val* var94 /* : String */;
107 static val* varonce95;
108 val* var96 /* : String */;
109 char* var97 /* : NativeString */;
110 long var98 /* : Int */;
111 val* var99 /* : String */;
112 long var100 /* : Int */;
113 val* var101 /* : nullable Object */;
114 static val* varonce102;
115 val* var103 /* : String */;
116 char* var104 /* : NativeString */;
117 long var105 /* : Int */;
118 val* var106 /* : String */;
119 val* var107 /* : String */;
120 val* var_recv1 /* var recv1: String */;
121 static val* varonce108;
122 val* var109 /* : String */;
123 char* var110 /* : NativeString */;
124 long var111 /* : Int */;
125 val* var112 /* : String */;
126 static val* varonce113;
127 val* var114 /* : String */;
128 char* var115 /* : NativeString */;
129 long var116 /* : Int */;
130 val* var117 /* : String */;
131 static val* varonce118;
132 val* var119 /* : String */;
133 char* var120 /* : NativeString */;
134 long var121 /* : Int */;
135 val* var122 /* : String */;
136 long var123 /* : Int */;
137 val* var124 /* : nullable Object */;
138 static val* varonce125;
139 val* var126 /* : String */;
140 char* var127 /* : NativeString */;
141 long var128 /* : Int */;
142 val* var129 /* : String */;
143 val* var130 /* : String */;
144 static val* varonce131;
145 val* var132 /* : String */;
146 char* var133 /* : NativeString */;
147 long var134 /* : Int */;
148 val* var135 /* : String */;
149 val* var136 /* : Array[Object] */;
150 long var137 /* : Int */;
151 val* var138 /* : NativeArray[Object] */;
152 val* var139 /* : String */;
153 var_pname = p0;
154 var_ret_type = p1;
155 var_arguments = p2;
156 var = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
157 var1 = ((val* (*)(val*))(var->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var) /* mtype on <var:nullable Object(RuntimeVariable)>*/;
158 var_elttype = var1;
159 if (varonce) {
160 var2 = varonce;
161 } else {
162 var3 = "NativeArray";
163 var4 = 11;
164 var5 = string__NativeString__to_s_with_length(var3, var4);
165 var2 = var5;
166 varonce = var2;
167 }
168 var6 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var2) /* get_class on <self:SeparateCompilerVisitor>*/;
169 var_nclass = var6;
170 var7 = NEW_array__Array(&type_array__Arraykernel__Object);
171 var8 = 5;
172 ((void (*)(val*, long))(var7->class->vft[COLOR_array__Array__with_capacity]))(var7, var8) /* with_capacity on <var7:Array[Object]>*/;
173 CHECK_NEW_array__Array(var7);
174 var_ = var7;
175 if (varonce9) {
176 var10 = varonce9;
177 } else {
178 var11 = "((struct instance_";
179 var12 = 18;
180 var13 = string__NativeString__to_s_with_length(var11, var12);
181 var10 = var13;
182 varonce9 = var10;
183 }
184 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
185 var14 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_nclass) /* c_name on <var_nclass:MClass>*/;
186 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var14) /* add on <var_:Array[Object]>*/;
187 if (varonce15) {
188 var16 = varonce15;
189 } else {
190 var17 = "*)";
191 var18 = 2;
192 var19 = string__NativeString__to_s_with_length(var17, var18);
193 var16 = var19;
194 varonce15 = var16;
195 }
196 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
197 var20 = 0;
198 var21 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var20) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
199 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var21) /* add on <var_:Array[Object]>*/;
200 if (varonce22) {
201 var23 = varonce22;
202 } else {
203 var24 = ")->values";
204 var25 = 9;
205 var26 = string__NativeString__to_s_with_length(var24, var25);
206 var23 = var26;
207 varonce22 = var23;
208 }
209 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var23) /* add on <var_:Array[Object]>*/;
210 var27 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
211 var_recv = var27;
212 if (varonce28) {
213 var29 = varonce28;
214 } else {
215 var30 = "[]";
216 var31 = 2;
217 var32 = string__NativeString__to_s_with_length(var30, var31);
218 var29 = var32;
219 varonce28 = var29;
220 }
221 var33 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var29) /* == on <var_pname:String>*/;
222 if (var33){
223 if (varonce34) {
224 var35 = varonce34;
225 } else {
226 var36 = "[";
227 var37 = 1;
228 var38 = string__NativeString__to_s_with_length(var36, var37);
229 var35 = var38;
230 varonce34 = var35;
231 }
232 var39 = 1;
233 var40 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var39) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
234 if (varonce41) {
235 var42 = varonce41;
236 } else {
237 var43 = "]";
238 var44 = 1;
239 var45 = string__NativeString__to_s_with_length(var43, var44);
240 var42 = var45;
241 varonce41 = var42;
242 }
243 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
244 { /* var46 = array_instance Array[Object] */
245 var47 = 4;
246 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
247 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var_recv;
248 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var35;
249 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var40;
250 ((struct instance_array__NativeArray*)var48)->values[3] = (val*) var42;
251 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
252 CHECK_NEW_array__Array(var46);
253 }
254 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
255 if (var_ret_type == NULL) {
256 fprintf(stderr, "Runtime error: %s", "Cast failed");
257 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1567);
258 exit(1);
259 }
260 var50 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var49, var_ret_type) /* new_expr on <self:SeparateCompilerVisitor>*/;
261 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__ret]))(self, var50) /* ret on <self:SeparateCompilerVisitor>*/;
262 goto RET_LABEL;
263 } else {
264 if (varonce51) {
265 var52 = varonce51;
266 } else {
267 var53 = "[]=";
268 var54 = 3;
269 var55 = string__NativeString__to_s_with_length(var53, var54);
270 var52 = var55;
271 varonce51 = var52;
272 }
273 var56 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var52) /* == on <var_pname:String>*/;
274 if (var56){
275 if (varonce57) {
276 var58 = varonce57;
277 } else {
278 var59 = "[";
279 var60 = 1;
280 var61 = string__NativeString__to_s_with_length(var59, var60);
281 var58 = var61;
282 varonce57 = var58;
283 }
284 var62 = 1;
285 var63 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var62) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
286 if (varonce64) {
287 var65 = varonce64;
288 } else {
289 var66 = "]=";
290 var67 = 2;
291 var68 = string__NativeString__to_s_with_length(var66, var67);
292 var65 = var68;
293 varonce64 = var65;
294 }
295 var69 = 2;
296 var70 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var69) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
297 if (varonce71) {
298 var72 = varonce71;
299 } else {
300 var73 = ";";
301 var74 = 1;
302 var75 = string__NativeString__to_s_with_length(var73, var74);
303 var72 = var75;
304 varonce71 = var72;
305 }
306 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
307 { /* var76 = array_instance Array[Object] */
308 var77 = 6;
309 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
310 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var_recv;
311 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var58;
312 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var63;
313 ((struct instance_array__NativeArray*)var78)->values[3] = (val*) var65;
314 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var70;
315 ((struct instance_array__NativeArray*)var78)->values[5] = (val*) var72;
316 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
317 CHECK_NEW_array__Array(var76);
318 }
319 var79 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
320 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var79) /* add on <self:SeparateCompilerVisitor>*/;
321 goto RET_LABEL;
322 } else {
323 if (varonce80) {
324 var81 = varonce80;
325 } else {
326 var82 = "copy_to";
327 var83 = 7;
328 var84 = string__NativeString__to_s_with_length(var82, var83);
329 var81 = var84;
330 varonce80 = var81;
331 }
332 var85 = ((short int (*)(val*, val*))(var_pname->class->vft[COLOR_kernel__Object___61d_61d]))(var_pname, var81) /* == on <var_pname:String>*/;
333 if (var85){
334 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
335 var87 = 5;
336 ((void (*)(val*, long))(var86->class->vft[COLOR_array__Array__with_capacity]))(var86, var87) /* with_capacity on <var86:Array[Object]>*/;
337 CHECK_NEW_array__Array(var86);
338 var_88 = var86;
339 if (varonce89) {
340 var90 = varonce89;
341 } else {
342 var91 = "((struct instance_";
343 var92 = 18;
344 var93 = string__NativeString__to_s_with_length(var91, var92);
345 var90 = var93;
346 varonce89 = var90;
347 }
348 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var90) /* add on <var_88:Array[Object]>*/;
349 var94 = ((val* (*)(val*))(var_nclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_nclass) /* c_name on <var_nclass:MClass>*/;
350 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var94) /* add on <var_88:Array[Object]>*/;
351 if (varonce95) {
352 var96 = varonce95;
353 } else {
354 var97 = "*)";
355 var98 = 2;
356 var99 = string__NativeString__to_s_with_length(var97, var98);
357 var96 = var99;
358 varonce95 = var96;
359 }
360 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var96) /* add on <var_88:Array[Object]>*/;
361 var100 = 1;
362 var101 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var100) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
363 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var101) /* add on <var_88:Array[Object]>*/;
364 if (varonce102) {
365 var103 = varonce102;
366 } else {
367 var104 = ")->values";
368 var105 = 9;
369 var106 = string__NativeString__to_s_with_length(var104, var105);
370 var103 = var106;
371 varonce102 = var103;
372 }
373 ((void (*)(val*, val*))(var_88->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_88, var103) /* add on <var_88:Array[Object]>*/;
374 var107 = ((val* (*)(val*))(var_88->class->vft[COLOR_string__Object__to_s]))(var_88) /* to_s on <var_88:Array[Object]>*/;
375 var_recv1 = var107;
376 if (varonce108) {
377 var109 = varonce108;
378 } else {
379 var110 = "memcpy(";
380 var111 = 7;
381 var112 = string__NativeString__to_s_with_length(var110, var111);
382 var109 = var112;
383 varonce108 = var109;
384 }
385 if (varonce113) {
386 var114 = varonce113;
387 } else {
388 var115 = ", ";
389 var116 = 2;
390 var117 = string__NativeString__to_s_with_length(var115, var116);
391 var114 = var117;
392 varonce113 = var114;
393 }
394 if (varonce118) {
395 var119 = varonce118;
396 } else {
397 var120 = ", ";
398 var121 = 2;
399 var122 = string__NativeString__to_s_with_length(var120, var121);
400 var119 = var122;
401 varonce118 = var119;
402 }
403 var123 = 2;
404 var124 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var123) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
405 if (varonce125) {
406 var126 = varonce125;
407 } else {
408 var127 = "*sizeof(";
409 var128 = 8;
410 var129 = string__NativeString__to_s_with_length(var127, var128);
411 var126 = var129;
412 varonce125 = var126;
413 }
414 var130 = ((val* (*)(val*))(var_elttype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_elttype) /* ctype on <var_elttype:MType>*/;
415 if (varonce131) {
416 var132 = varonce131;
417 } else {
418 var133 = "));";
419 var134 = 3;
420 var135 = string__NativeString__to_s_with_length(var133, var134);
421 var132 = var135;
422 varonce131 = var132;
423 }
424 var136 = NEW_array__Array(&type_array__Arraykernel__Object);
425 { /* var136 = array_instance Array[Object] */
426 var137 = 9;
427 var138 = NEW_array__NativeArray(var137, &type_array__NativeArraykernel__Object);
428 ((struct instance_array__NativeArray*)var138)->values[0] = (val*) var109;
429 ((struct instance_array__NativeArray*)var138)->values[1] = (val*) var_recv1;
430 ((struct instance_array__NativeArray*)var138)->values[2] = (val*) var114;
431 ((struct instance_array__NativeArray*)var138)->values[3] = (val*) var_recv;
432 ((struct instance_array__NativeArray*)var138)->values[4] = (val*) var119;
433 ((struct instance_array__NativeArray*)var138)->values[5] = (val*) var124;
434 ((struct instance_array__NativeArray*)var138)->values[6] = (val*) var126;
435 ((struct instance_array__NativeArray*)var138)->values[7] = (val*) var130;
436 ((struct instance_array__NativeArray*)var138)->values[8] = (val*) var132;
437 ((void (*)(val*, val*, long))(var136->class->vft[COLOR_array__Array__with_native]))(var136, var138, var137) /* with_native on <var136:Array[Object]>*/;
438 CHECK_NEW_array__Array(var136);
439 }
440 var139 = ((val* (*)(val*))(var136->class->vft[COLOR_string__Object__to_s]))(var136) /* to_s on <var136:Array[Object]>*/;
441 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var139) /* add on <self:SeparateCompilerVisitor>*/;
442 goto RET_LABEL;
443 } else {
444 }
445 }
446 }
447 RET_LABEL:;
448 }
449 /* method separate_compiler#SeparateCompilerVisitor#native_array_def for (self: Object, String, nullable MType, Array[RuntimeVariable]) */
450 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__native_array_def(val* self, val* p0, val* p1, val* p2) {
451 separate_compiler__SeparateCompilerVisitor__native_array_def(self, p0, p1, p2);
452 RET_LABEL:;
453 }
454 /* method separate_compiler#SeparateCompilerVisitor#calloc_array for (self: SeparateCompilerVisitor, MType, Array[RuntimeVariable]) */
455 void separate_compiler__SeparateCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
456 val* var_ret_type /* var ret_type: MType */;
457 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
458 static val* varonce;
459 val* var /* : String */;
460 char* var1 /* : NativeString */;
461 long var2 /* : Int */;
462 val* var3 /* : String */;
463 val* var4 /* : MClass */;
464 val* var_mclass /* var mclass: MClass */;
465 val* var5 /* : MClassType */;
466 val* var6 /* : Array[MType] */;
467 val* var7 /* : nullable Object */;
468 short int var8 /* : Bool */;
469 int cltype;
470 int idtype;
471 const char* var_class_name;
472 val* var_ft /* var ft: MParameterType */;
473 long var9 /* : Int */;
474 val* var10 /* : nullable Object */;
475 val* var11 /* : RuntimeVariable */;
476 val* var_res /* var res: RuntimeVariable */;
477 var_ret_type = p0;
478 var_arguments = p1;
479 if (varonce) {
480 var = varonce;
481 } else {
482 var1 = "ArrayCapable";
483 var2 = 12;
484 var3 = string__NativeString__to_s_with_length(var1, var2);
485 var = var3;
486 varonce = var;
487 }
488 var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(self, var) /* get_class on <self:SeparateCompilerVisitor>*/;
489 var_mclass = var4;
490 var5 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:MClass>*/;
491 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassType__arguments]))(var5) /* arguments on <var5:MClassType>*/;
492 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Collection__first]))(var6) /* first on <var6:Array[MType]>*/;
493 /* <var7:nullable Object(MType)> isa MParameterType */
494 cltype = type_model__MParameterType.color;
495 idtype = type_model__MParameterType.id;
496 if(cltype >= var7->type->table_size) {
497 var8 = 0;
498 } else {
499 var8 = var7->type->type_table[cltype] == idtype;
500 }
501 if (!var8) {
502 var_class_name = var7 == NULL ? "null" : var7->type->name;
503 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MParameterType", var_class_name);
504 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1582);
505 exit(1);
506 }
507 var_ft = var7;
508 var9 = 1;
509 var10 = ((val* (*)(val*, long))(var_arguments->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_arguments, var9) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
510 var11 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__native_array_instance]))(self, var_ft, var10) /* native_array_instance on <self:SeparateCompilerVisitor>*/;
511 var_res = var11;
512 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__ret]))(self, var_res) /* ret on <self:SeparateCompilerVisitor>*/;
513 RET_LABEL:;
514 }
515 /* method separate_compiler#SeparateCompilerVisitor#calloc_array for (self: Object, MType, Array[RuntimeVariable]) */
516 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__calloc_array(val* self, val* p0, val* p1) {
517 separate_compiler__SeparateCompilerVisitor__calloc_array(self, p0, p1);
518 RET_LABEL:;
519 }
520 /* method separate_compiler#SeparateCompilerVisitor#link_unresolved_type for (self: SeparateCompilerVisitor, MClassDef, MType) */
521 void separate_compiler__SeparateCompilerVisitor__link_unresolved_type(val* self, val* p0, val* p1) {
522 val* var_mclassdef /* var mclassdef: MClassDef */;
523 val* var_mtype /* var mtype: MType */;
524 short int var /* : Bool */;
525 val* var1 /* : AbstractCompiler */;
526 val* var_compiler /* var compiler: SeparateCompiler */;
527 val* var2 /* : Map[MClassDef, Set[MType]] */;
528 val* var3 /* : nullable Frame */;
529 val* var4 /* : MPropDef */;
530 val* var5 /* : MClassDef */;
531 short int var6 /* : Bool */;
532 short int var7 /* : Bool */;
533 val* var8 /* : Map[MClassDef, Set[MType]] */;
534 val* var9 /* : nullable Frame */;
535 val* var10 /* : MPropDef */;
536 val* var11 /* : MClassDef */;
537 val* var12 /* : HashSet[MType] */;
538 val* var13 /* : Map[MClassDef, Set[MType]] */;
539 val* var14 /* : nullable Frame */;
540 val* var15 /* : MPropDef */;
541 val* var16 /* : MClassDef */;
542 val* var17 /* : nullable Object */;
543 var_mclassdef = p0;
544 var_mtype = p1;
545 var = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
546 if (!var) {
547 fprintf(stderr, "Runtime error: %s", "Assert failed");
548 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1588);
549 exit(1);
550 }
551 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
552 var_compiler = var1;
553 var2 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
554 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
555 if (var3 == NULL) {
556 fprintf(stderr, "Runtime error: %s", "Reciever is null");
557 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1590);
558 exit(1);
559 } else {
560 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var3) /* mpropdef on <var3:nullable Frame>*/;
561 }
562 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_model__MPropDef__mclassdef]))(var4) /* mclassdef on <var4:MPropDef>*/;
563 var6 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var2, var5) /* has_key on <var2:Map[MClassDef, Set[MType]]>*/;
564 var7 = !var6;
565 if (var7){
566 var8 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
567 var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
568 if (var9 == NULL) {
569 fprintf(stderr, "Runtime error: %s", "Reciever is null");
570 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1591);
571 exit(1);
572 } else {
573 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var9) /* mpropdef on <var9:nullable Frame>*/;
574 }
575 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_model__MPropDef__mclassdef]))(var10) /* mclassdef on <var10:MPropDef>*/;
576 var12 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
577 ((void (*)(val*))(var12->class->vft[COLOR_hash_collection__HashSet__init]))(var12) /* init on <var12:HashSet[MType]>*/;
578 CHECK_NEW_hash_collection__HashSet(var12);
579 ((void (*)(val*, val*, val*))(var8->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var8, var11, var12) /* []= on <var8:Map[MClassDef, Set[MType]]>*/;
580 } else {
581 }
582 var13 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(var_compiler) /* live_unresolved_types on <var_compiler:SeparateCompiler>*/;
583 var14 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame]))(self) /* frame on <self:SeparateCompilerVisitor>*/;
584 if (var14 == NULL) {
585 fprintf(stderr, "Runtime error: %s", "Reciever is null");
586 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1593);
587 exit(1);
588 } else {
589 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_compiler__Frame__mpropdef]))(var14) /* mpropdef on <var14:nullable Frame>*/;
590 }
591 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_model__MPropDef__mclassdef]))(var15) /* mclassdef on <var15:MPropDef>*/;
592 var17 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var16) /* [] on <var13:Map[MClassDef, Set[MType]]>*/;
593 ((void (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var17, var_mtype) /* add on <var17:nullable Object(Set[MType])>*/;
594 RET_LABEL:;
595 }
596 /* method separate_compiler#SeparateCompilerVisitor#link_unresolved_type for (self: Object, MClassDef, MType) */
597 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__link_unresolved_type(val* self, val* p0, val* p1) {
598 separate_compiler__SeparateCompilerVisitor__link_unresolved_type(self, p0, p1);
599 RET_LABEL:;
600 }
601 /* method separate_compiler#MMethodDef#separate_runtime_function for (self: MMethodDef): AbstractRuntimeFunction */
602 val* separate_compiler__MMethodDef__separate_runtime_function(val* self) {
603 val* var /* : AbstractRuntimeFunction */;
604 val* var1 /* : nullable SeparateRuntimeFunction */;
605 val* var_res /* var res: nullable SeparateRuntimeFunction */;
606 val* var2 /* : null */;
607 short int var3 /* : Bool */;
608 val* var4 /* : SeparateRuntimeFunction */;
609 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function_cache]))(self) /* separate_runtime_function_cache on <self:MMethodDef>*/;
610 var_res = var1;
611 var2 = NULL;
612 if (var_res == NULL) {
613 var3 = 1; /* is null */
614 } else {
615 var3 = 0; /* arg is null but recv is not */
616 }
617 if (var3){
618 var4 = NEW_separate_compiler__SeparateRuntimeFunction(&type_separate_compiler__SeparateRuntimeFunction);
619 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(var4, self) /* init on <var4:SeparateRuntimeFunction>*/;
620 CHECK_NEW_separate_compiler__SeparateRuntimeFunction(var4);
621 var_res = var4;
622 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function_cache_61d]))(self, var_res) /* separate_runtime_function_cache= on <self:MMethodDef>*/;
623 } else {
624 }
625 var = var_res;
626 goto RET_LABEL;
627 RET_LABEL:;
628 return var;
629 }
630 /* method separate_compiler#MMethodDef#separate_runtime_function for (self: Object): AbstractRuntimeFunction */
631 val* VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function(val* self) {
632 val* var /* : AbstractRuntimeFunction */;
633 val* var1 /* : AbstractRuntimeFunction */;
634 var1 = separate_compiler__MMethodDef__separate_runtime_function(self);
635 var = var1;
636 RET_LABEL:;
637 return var;
638 }
639 /* method separate_compiler#MMethodDef#separate_runtime_function_cache for (self: MMethodDef): nullable SeparateRuntimeFunction */
640 val* separate_compiler__MMethodDef__separate_runtime_function_cache(val* self) {
641 val* var /* : nullable SeparateRuntimeFunction */;
642 val* var1 /* : nullable SeparateRuntimeFunction */;
643 var1 = self->attrs[COLOR_separate_compiler__MMethodDef___64dseparate_runtime_function_cache].val; /* @separate_runtime_function_cache on <self:MMethodDef> */
644 var = var1;
645 RET_LABEL:;
646 return var;
647 }
648 /* method separate_compiler#MMethodDef#separate_runtime_function_cache for (self: Object): nullable SeparateRuntimeFunction */
649 val* VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function_cache(val* self) {
650 val* var /* : nullable SeparateRuntimeFunction */;
651 val* var1 /* : nullable SeparateRuntimeFunction */;
652 var1 = separate_compiler__MMethodDef__separate_runtime_function_cache(self);
653 var = var1;
654 RET_LABEL:;
655 return var;
656 }
657 /* method separate_compiler#MMethodDef#separate_runtime_function_cache= for (self: MMethodDef, nullable SeparateRuntimeFunction) */
658 void separate_compiler__MMethodDef__separate_runtime_function_cache_61d(val* self, val* p0) {
659 self->attrs[COLOR_separate_compiler__MMethodDef___64dseparate_runtime_function_cache].val = p0; /* @separate_runtime_function_cache on <self:MMethodDef> */
660 RET_LABEL:;
661 }
662 /* method separate_compiler#MMethodDef#separate_runtime_function_cache= for (self: Object, nullable SeparateRuntimeFunction) */
663 void VIRTUAL_separate_compiler__MMethodDef__separate_runtime_function_cache_61d(val* self, val* p0) {
664 separate_compiler__MMethodDef__separate_runtime_function_cache_61d(self, p0);
665 RET_LABEL:;
666 }
667 /* method separate_compiler#MMethodDef#virtual_runtime_function for (self: MMethodDef): AbstractRuntimeFunction */
668 val* separate_compiler__MMethodDef__virtual_runtime_function(val* self) {
669 val* var /* : AbstractRuntimeFunction */;
670 val* var1 /* : nullable VirtualRuntimeFunction */;
671 val* var_res /* var res: nullable VirtualRuntimeFunction */;
672 val* var2 /* : null */;
673 short int var3 /* : Bool */;
674 val* var4 /* : VirtualRuntimeFunction */;
675 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function_cache]))(self) /* virtual_runtime_function_cache on <self:MMethodDef>*/;
676 var_res = var1;
677 var2 = NULL;
678 if (var_res == NULL) {
679 var3 = 1; /* is null */
680 } else {
681 var3 = 0; /* arg is null but recv is not */
682 }
683 if (var3){
684 var4 = NEW_separate_compiler__VirtualRuntimeFunction(&type_separate_compiler__VirtualRuntimeFunction);
685 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__init]))(var4, self) /* init on <var4:VirtualRuntimeFunction>*/;
686 CHECK_NEW_separate_compiler__VirtualRuntimeFunction(var4);
687 var_res = var4;
688 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function_cache_61d]))(self, var_res) /* virtual_runtime_function_cache= on <self:MMethodDef>*/;
689 } else {
690 }
691 var = var_res;
692 goto RET_LABEL;
693 RET_LABEL:;
694 return var;
695 }
696 /* method separate_compiler#MMethodDef#virtual_runtime_function for (self: Object): AbstractRuntimeFunction */
697 val* VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function(val* self) {
698 val* var /* : AbstractRuntimeFunction */;
699 val* var1 /* : AbstractRuntimeFunction */;
700 var1 = separate_compiler__MMethodDef__virtual_runtime_function(self);
701 var = var1;
702 RET_LABEL:;
703 return var;
704 }
705 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache for (self: MMethodDef): nullable VirtualRuntimeFunction */
706 val* separate_compiler__MMethodDef__virtual_runtime_function_cache(val* self) {
707 val* var /* : nullable VirtualRuntimeFunction */;
708 val* var1 /* : nullable VirtualRuntimeFunction */;
709 var1 = self->attrs[COLOR_separate_compiler__MMethodDef___64dvirtual_runtime_function_cache].val; /* @virtual_runtime_function_cache on <self:MMethodDef> */
710 var = var1;
711 RET_LABEL:;
712 return var;
713 }
714 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache for (self: Object): nullable VirtualRuntimeFunction */
715 val* VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function_cache(val* self) {
716 val* var /* : nullable VirtualRuntimeFunction */;
717 val* var1 /* : nullable VirtualRuntimeFunction */;
718 var1 = separate_compiler__MMethodDef__virtual_runtime_function_cache(self);
719 var = var1;
720 RET_LABEL:;
721 return var;
722 }
723 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache= for (self: MMethodDef, nullable VirtualRuntimeFunction) */
724 void separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(val* self, val* p0) {
725 self->attrs[COLOR_separate_compiler__MMethodDef___64dvirtual_runtime_function_cache].val = p0; /* @virtual_runtime_function_cache on <self:MMethodDef> */
726 RET_LABEL:;
727 }
728 /* method separate_compiler#MMethodDef#virtual_runtime_function_cache= for (self: Object, nullable VirtualRuntimeFunction) */
729 void VIRTUAL_separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(val* self, val* p0) {
730 separate_compiler__MMethodDef__virtual_runtime_function_cache_61d(self, p0);
731 RET_LABEL:;
732 }
733 /* method separate_compiler#SeparateRuntimeFunction#build_c_name for (self: SeparateRuntimeFunction): String */
734 val* separate_compiler__SeparateRuntimeFunction__build_c_name(val* self) {
735 val* var /* : String */;
736 val* var1 /* : Array[Object] */;
737 long var2 /* : Int */;
738 val* var_ /* var : Array[Object] */;
739 static val* varonce;
740 val* var3 /* : String */;
741 char* var4 /* : NativeString */;
742 long var5 /* : Int */;
743 val* var6 /* : String */;
744 val* var7 /* : MMethodDef */;
745 val* var8 /* : String */;
746 static val* varonce9;
747 val* var10 /* : String */;
748 char* var11 /* : NativeString */;
749 long var12 /* : Int */;
750 val* var13 /* : String */;
751 val* var14 /* : String */;
752 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
753 var2 = 3;
754 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
755 CHECK_NEW_array__Array(var1);
756 var_ = var1;
757 if (varonce) {
758 var3 = varonce;
759 } else {
760 var4 = "";
761 var5 = 0;
762 var6 = string__NativeString__to_s_with_length(var4, var5);
763 var3 = var6;
764 varonce = var3;
765 }
766 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
767 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
768 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var7) /* c_name on <var7:MMethodDef>*/;
769 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
770 if (varonce9) {
771 var10 = varonce9;
772 } else {
773 var11 = "";
774 var12 = 0;
775 var13 = string__NativeString__to_s_with_length(var11, var12);
776 var10 = var13;
777 varonce9 = var10;
778 }
779 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
780 var14 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
781 var = var14;
782 goto RET_LABEL;
783 RET_LABEL:;
784 return var;
785 }
786 /* method separate_compiler#SeparateRuntimeFunction#build_c_name for (self: Object): String */
787 val* VIRTUAL_separate_compiler__SeparateRuntimeFunction__build_c_name(val* self) {
788 val* var /* : String */;
789 val* var1 /* : String */;
790 var1 = separate_compiler__SeparateRuntimeFunction__build_c_name(self);
791 var = var1;
792 RET_LABEL:;
793 return var;
794 }
795 /* method separate_compiler#SeparateRuntimeFunction#to_s for (self: SeparateRuntimeFunction): String */
796 val* separate_compiler__SeparateRuntimeFunction__to_s(val* self) {
797 val* var /* : String */;
798 val* var1 /* : MMethodDef */;
799 val* var2 /* : String */;
800 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
801 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:MMethodDef>*/;
802 var = var2;
803 goto RET_LABEL;
804 RET_LABEL:;
805 return var;
806 }
807 /* method separate_compiler#SeparateRuntimeFunction#to_s for (self: Object): String */
808 val* VIRTUAL_separate_compiler__SeparateRuntimeFunction__to_s(val* self) {
809 val* var /* : String */;
810 val* var1 /* : String */;
811 var1 = separate_compiler__SeparateRuntimeFunction__to_s(self);
812 var = var1;
813 RET_LABEL:;
814 return var;
815 }
816 /* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: SeparateRuntimeFunction, AbstractCompiler) */
817 void separate_compiler__SeparateRuntimeFunction__compile_to_c(val* self, val* p0) {
818 short int var /* : Bool */;
819 int cltype;
820 int idtype;
821 const struct type* type_struct;
822 const char* var_class_name;
823 val* var_compiler /* var compiler: AbstractCompiler */;
824 val* var1 /* : MMethodDef */;
825 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
826 val* var2 /* : MMethodDef */;
827 val* var3 /* : MClassDef */;
828 val* var4 /* : MClassType */;
829 val* var_recv /* var recv: MClassType */;
830 val* var5 /* : AbstractCompilerVisitor */;
831 val* var_v /* var v: AbstractCompilerVisitor */;
832 val* var6 /* : RuntimeVariable */;
833 static val* varonce;
834 val* var7 /* : String */;
835 char* var8 /* : NativeString */;
836 long var9 /* : Int */;
837 val* var10 /* : String */;
838 val* var_selfvar /* var selfvar: RuntimeVariable */;
839 val* var11 /* : Array[RuntimeVariable] */;
840 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
841 val* var12 /* : Frame */;
842 val* var_frame /* var frame: Frame */;
843 val* var13 /* : nullable MSignature */;
844 val* var14 /* : MClassDef */;
845 val* var15 /* : MClassType */;
846 val* var16 /* : MClassDef */;
847 val* var17 /* : MClassType */;
848 val* var18 /* : MClassDef */;
849 val* var19 /* : MModule */;
850 short int var20 /* : Bool */;
851 val* var21 /* : MType */;
852 val* var_msignature /* var msignature: MSignature */;
853 val* var22 /* : Buffer */;
854 val* var_sig /* var sig: Buffer */;
855 val* var23 /* : Buffer */;
856 val* var_comment /* var comment: Buffer */;
857 val* var24 /* : nullable MType */;
858 val* var_ret /* var ret: nullable MType */;
859 val* var25 /* : null */;
860 short int var26 /* : Bool */;
861 val* var27 /* : String */;
862 static val* varonce28;
863 val* var29 /* : String */;
864 char* var30 /* : NativeString */;
865 long var31 /* : Int */;
866 val* var32 /* : String */;
867 val* var33 /* : Array[Object] */;
868 long var34 /* : Int */;
869 val* var35 /* : NativeArray[Object] */;
870 val* var36 /* : String */;
871 val* var37 /* : MProperty */;
872 short int var38 /* : Bool */;
873 val* var39 /* : String */;
874 static val* varonce40;
875 val* var41 /* : String */;
876 char* var42 /* : NativeString */;
877 long var43 /* : Int */;
878 val* var44 /* : String */;
879 val* var45 /* : Array[Object] */;
880 long var46 /* : Int */;
881 val* var47 /* : NativeArray[Object] */;
882 val* var48 /* : String */;
883 static val* varonce49;
884 val* var50 /* : String */;
885 char* var51 /* : NativeString */;
886 long var52 /* : Int */;
887 val* var53 /* : String */;
888 val* var54 /* : String */;
889 static val* varonce55;
890 val* var56 /* : String */;
891 char* var57 /* : NativeString */;
892 long var58 /* : Int */;
893 val* var59 /* : String */;
894 val* var60 /* : MType */;
895 val* var61 /* : String */;
896 static val* varonce62;
897 val* var63 /* : String */;
898 char* var64 /* : NativeString */;
899 long var65 /* : Int */;
900 val* var66 /* : String */;
901 val* var67 /* : Array[Object] */;
902 long var68 /* : Int */;
903 val* var69 /* : NativeArray[Object] */;
904 val* var70 /* : String */;
905 static val* varonce71;
906 val* var72 /* : String */;
907 char* var73 /* : NativeString */;
908 long var74 /* : Int */;
909 val* var75 /* : String */;
910 static val* varonce76;
911 val* var77 /* : String */;
912 char* var78 /* : NativeString */;
913 long var79 /* : Int */;
914 val* var80 /* : String */;
915 val* var81 /* : MType */;
916 val* var82 /* : Array[Object] */;
917 long var83 /* : Int */;
918 val* var84 /* : NativeArray[Object] */;
919 val* var85 /* : String */;
920 val* var86 /* : Range[Int] */;
921 long var87 /* : Int */;
922 long var88 /* : Int */;
923 val* var89 /* : Discrete */;
924 val* var90 /* : Discrete */;
925 val* var91 /* : Iterator[nullable Object] */;
926 short int var92 /* : Bool */;
927 val* var93 /* : nullable Object */;
928 long var_i /* var i: Int */;
929 long var94 /* : Int */;
930 val* var95 /* : Array[MParameter] */;
931 val* var96 /* : nullable Object */;
932 val* var97 /* : MType */;
933 val* var_mtype /* var mtype: MType */;
934 long var98 /* : Int */;
935 short int var99 /* : Bool */;
936 short int var101 /* : Bool */;
937 static val* varonce102;
938 val* var103 /* : String */;
939 char* var104 /* : NativeString */;
940 long var105 /* : Int */;
941 val* var106 /* : String */;
942 val* var107 /* : MClass */;
943 val* var108 /* : Array[MType] */;
944 long var109 /* : Int */;
945 val* var110 /* : NativeArray[MType] */;
946 val* var111 /* : MClassType */;
947 static val* varonce112;
948 val* var113 /* : String */;
949 char* var114 /* : NativeString */;
950 long var115 /* : Int */;
951 val* var116 /* : String */;
952 val* var117 /* : Array[Object] */;
953 long var118 /* : Int */;
954 val* var119 /* : NativeArray[Object] */;
955 val* var120 /* : String */;
956 static val* varonce121;
957 val* var122 /* : String */;
958 char* var123 /* : NativeString */;
959 long var124 /* : Int */;
960 val* var125 /* : String */;
961 val* var126 /* : String */;
962 static val* varonce127;
963 val* var128 /* : String */;
964 char* var129 /* : NativeString */;
965 long var130 /* : Int */;
966 val* var131 /* : String */;
967 val* var132 /* : Array[Object] */;
968 long var133 /* : Int */;
969 val* var134 /* : NativeArray[Object] */;
970 val* var135 /* : Object */;
971 val* var136 /* : String */;
972 val* var137 /* : RuntimeVariable */;
973 val* var138 /* : Array[Object] */;
974 long var139 /* : Int */;
975 val* var_ /* var : Array[Object] */;
976 static val* varonce140;
977 val* var141 /* : String */;
978 char* var142 /* : NativeString */;
979 long var143 /* : Int */;
980 val* var144 /* : String */;
981 val* var145 /* : nullable Object */;
982 static val* varonce146;
983 val* var147 /* : String */;
984 char* var148 /* : NativeString */;
985 long var149 /* : Int */;
986 val* var150 /* : String */;
987 val* var151 /* : String */;
988 val* var_argvar /* var argvar: RuntimeVariable */;
989 static val* varonce152;
990 val* var153 /* : String */;
991 char* var154 /* : NativeString */;
992 long var155 /* : Int */;
993 val* var156 /* : String */;
994 static val* varonce157;
995 val* var158 /* : String */;
996 char* var159 /* : NativeString */;
997 long var160 /* : Int */;
998 val* var161 /* : String */;
999 val* var162 /* : null */;
1000 short int var163 /* : Bool */;
1001 static val* varonce164;
1002 val* var165 /* : String */;
1003 char* var166 /* : NativeString */;
1004 long var167 /* : Int */;
1005 val* var168 /* : String */;
1006 val* var169 /* : Array[Object] */;
1007 long var170 /* : Int */;
1008 val* var171 /* : NativeArray[Object] */;
1009 val* var172 /* : String */;
1010 val* var173 /* : String */;
1011 static val* varonce174;
1012 val* var175 /* : String */;
1013 char* var176 /* : NativeString */;
1014 long var177 /* : Int */;
1015 val* var178 /* : String */;
1016 val* var179 /* : Array[Object] */;
1017 long var180 /* : Int */;
1018 val* var181 /* : NativeArray[Object] */;
1019 val* var182 /* : String */;
1020 static val* varonce183;
1021 val* var184 /* : String */;
1022 char* var185 /* : NativeString */;
1023 long var186 /* : Int */;
1024 val* var187 /* : String */;
1025 static val* varonce188;
1026 val* var189 /* : String */;
1027 char* var190 /* : NativeString */;
1028 long var191 /* : Int */;
1029 val* var192 /* : String */;
1030 static val* varonce193;
1031 val* var194 /* : String */;
1032 char* var195 /* : NativeString */;
1033 long var196 /* : Int */;
1034 val* var197 /* : String */;
1035 val* var198 /* : Array[Object] */;
1036 long var199 /* : Int */;
1037 val* var200 /* : NativeArray[Object] */;
1038 val* var201 /* : String */;
1039 static val* varonce202;
1040 val* var203 /* : String */;
1041 char* var204 /* : NativeString */;
1042 long var205 /* : Int */;
1043 val* var206 /* : String */;
1044 val* var207 /* : Array[Object] */;
1045 long var208 /* : Int */;
1046 val* var209 /* : NativeArray[Object] */;
1047 val* var210 /* : String */;
1048 val* var211 /* : null */;
1049 short int var212 /* : Bool */;
1050 val* var213 /* : RuntimeVariable */;
1051 static val* varonce214;
1052 val* var215 /* : String */;
1053 char* var216 /* : NativeString */;
1054 long var217 /* : Int */;
1055 val* var218 /* : String */;
1056 val* var219 /* : String */;
1057 val* var220 /* : nullable Object */;
1058 val* var221 /* : MType */;
1059 short int var222 /* : Bool */;
1060 val* var223 /* : nullable RuntimeVariable */;
1061 val* var224 /* : nullable String */;
1062 static val* varonce225;
1063 val* var226 /* : String */;
1064 char* var227 /* : NativeString */;
1065 long var228 /* : Int */;
1066 val* var229 /* : String */;
1067 val* var230 /* : Array[Object] */;
1068 long var231 /* : Int */;
1069 val* var232 /* : NativeArray[Object] */;
1070 val* var233 /* : String */;
1071 val* var234 /* : null */;
1072 short int var235 /* : Bool */;
1073 static val* varonce236;
1074 val* var237 /* : String */;
1075 char* var238 /* : NativeString */;
1076 long var239 /* : Int */;
1077 val* var240 /* : String */;
1078 val* var241 /* : nullable RuntimeVariable */;
1079 static val* varonce242;
1080 val* var243 /* : String */;
1081 char* var244 /* : NativeString */;
1082 long var245 /* : Int */;
1083 val* var246 /* : String */;
1084 val* var247 /* : Array[Object] */;
1085 long var248 /* : Int */;
1086 val* var249 /* : NativeArray[Object] */;
1087 val* var250 /* : String */;
1088 static val* varonce251;
1089 val* var252 /* : String */;
1090 char* var253 /* : NativeString */;
1091 long var254 /* : Int */;
1092 val* var255 /* : String */;
1093 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
1094 /* <p0:AbstractCompiler> isa COMPILER */
1095 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
1096 cltype = type_struct->color;
1097 idtype = type_struct->id;
1098 if(cltype >= p0->type->table_size) {
1099 var = 0;
1100 } else {
1101 var = p0->type->type_table[cltype] == idtype;
1102 }
1103 if (!var) {
1104 var_class_name = p0 == NULL ? "null" : p0->type->name;
1105 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
1106 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1629);
1107 exit(1);
1108 }
1109 var_compiler = p0;
1110 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
1111 var_mmethoddef = var1;
1112 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:SeparateRuntimeFunction>*/;
1113 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on <var2:MMethodDef>*/;
1114 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
1115 var_recv = var4;
1116 var5 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on <var_compiler:AbstractCompiler>*/;
1117 var_v = var5;
1118 var6 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
1119 if (varonce) {
1120 var7 = varonce;
1121 } else {
1122 var8 = "self";
1123 var9 = 4;
1124 var10 = string__NativeString__to_s_with_length(var8, var9);
1125 var7 = var10;
1126 varonce = var7;
1127 }
1128 ((void (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var6, var7, var_recv, var_recv) /* init on <var6:RuntimeVariable>*/;
1129 CHECK_NEW_abstract_compiler__RuntimeVariable(var6);
1130 var_selfvar = var6;
1131 var11 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
1132 ((void (*)(val*))(var11->class->vft[COLOR_array__Array__init]))(var11) /* init on <var11:Array[RuntimeVariable]>*/;
1133 CHECK_NEW_array__Array(var11);
1134 var_arguments = var11;
1135 var12 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
1136 ((void (*)(val*, val*, val*, val*, val*))(var12->class->vft[COLOR_abstract_compiler__Frame__init]))(var12, var_v, var_mmethoddef, var_recv, var_arguments) /* init on <var12:Frame>*/;
1137 CHECK_NEW_abstract_compiler__Frame(var12);
1138 var_frame = var12;
1139 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on <var_v:AbstractCompilerVisitor>*/;
1140 var13 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MMethodDef__msignature]))(var_mmethoddef) /* msignature on <var_mmethoddef:MMethodDef>*/;
1141 var14 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1142 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_model__MClassDef__bound_mtype]))(var14) /* bound_mtype on <var14:MClassDef>*/;
1143 var16 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1144 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MClassDef__bound_mtype]))(var16) /* bound_mtype on <var16:MClassDef>*/;
1145 var18 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
1146 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MClassDef__mmodule]))(var18) /* mmodule on <var18:MClassDef>*/;
1147 var20 = 1;
1148 if (var13 == NULL) {
1149 fprintf(stderr, "Runtime error: %s", "Reciever is null");
1150 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1640);
1151 exit(1);
1152 } else {
1153 var21 = ((val* (*)(val*, val*, val*, val*, short int))(var13->class->vft[COLOR_model__MType__resolve_for]))(var13, var15, var17, var19, var20) /* resolve_for on <var13:nullable MSignature>*/;
1154 }
1155 var_msignature = var21;
1156 var22 = NEW_string__Buffer(&type_string__Buffer);
1157 ((void (*)(val*))(var22->class->vft[COLOR_string__Buffer__init]))(var22) /* init on <var22:Buffer>*/;
1158 CHECK_NEW_string__Buffer(var22);
1159 var_sig = var22;
1160 var23 = NEW_string__Buffer(&type_string__Buffer);
1161 ((void (*)(val*))(var23->class->vft[COLOR_string__Buffer__init]))(var23) /* init on <var23:Buffer>*/;
1162 CHECK_NEW_string__Buffer(var23);
1163 var_comment = var23;
1164 var24 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
1165 var_ret = var24;
1166 var25 = NULL;
1167 if (var_ret == NULL) {
1168 var26 = 0; /* is null */
1169 } else {
1170 var26 = 1; /* arg is null and recv is not */
1171 }
1172 if (var26){
1173 var27 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
1174 if (varonce28) {
1175 var29 = varonce28;
1176 } else {
1177 var30 = " ";
1178 var31 = 1;
1179 var32 = string__NativeString__to_s_with_length(var30, var31);
1180 var29 = var32;
1181 varonce28 = var29;
1182 }
1183 var33 = NEW_array__Array(&type_array__Arraykernel__Object);
1184 { /* var33 = array_instance Array[Object] */
1185 var34 = 2;
1186 var35 = NEW_array__NativeArray(var34, &type_array__NativeArraykernel__Object);
1187 ((struct instance_array__NativeArray*)var35)->values[0] = (val*) var27;
1188 ((struct instance_array__NativeArray*)var35)->values[1] = (val*) var29;
1189 ((void (*)(val*, val*, long))(var33->class->vft[COLOR_array__Array__with_native]))(var33, var35, var34) /* with_native on <var33:Array[Object]>*/;
1190 CHECK_NEW_array__Array(var33);
1191 }
1192 var36 = ((val* (*)(val*))(var33->class->vft[COLOR_string__Object__to_s]))(var33) /* to_s on <var33:Array[Object]>*/;
1193 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var36) /* append on <var_sig:Buffer>*/;
1194 } else {
1195 var37 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
1196 var38 = ((short int (*)(val*))(var37->class->vft[COLOR_model__MMethod__is_new]))(var37) /* is_new on <var37:MProperty(MMethod)>*/;
1197 if (var38){
1198 var_ret = var_recv;
1199 var39 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MClassType)>*/;
1200 if (varonce40) {
1201 var41 = varonce40;
1202 } else {
1203 var42 = " ";
1204 var43 = 1;
1205 var44 = string__NativeString__to_s_with_length(var42, var43);
1206 var41 = var44;
1207 varonce40 = var41;
1208 }
1209 var45 = NEW_array__Array(&type_array__Arraykernel__Object);
1210 { /* var45 = array_instance Array[Object] */
1211 var46 = 2;
1212 var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
1213 ((struct instance_array__NativeArray*)var47)->values[0] = (val*) var39;
1214 ((struct instance_array__NativeArray*)var47)->values[1] = (val*) var41;
1215 ((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
1216 CHECK_NEW_array__Array(var45);
1217 }
1218 var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
1219 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var48) /* append on <var_sig:Buffer>*/;
1220 } else {
1221 if (varonce49) {
1222 var50 = varonce49;
1223 } else {
1224 var51 = "void ";
1225 var52 = 5;
1226 var53 = string__NativeString__to_s_with_length(var51, var52);
1227 var50 = var53;
1228 varonce49 = var50;
1229 }
1230 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var50) /* append on <var_sig:Buffer>*/;
1231 }
1232 }
1233 var54 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
1234 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var54) /* append on <var_sig:Buffer>*/;
1235 if (varonce55) {
1236 var56 = varonce55;
1237 } else {
1238 var57 = "(";
1239 var58 = 1;
1240 var59 = string__NativeString__to_s_with_length(var57, var58);
1241 var56 = var59;
1242 varonce55 = var56;
1243 }
1244 var60 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
1245 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_compiler__MType__ctype]))(var60) /* ctype on <var60:MType>*/;
1246 if (varonce62) {
1247 var63 = varonce62;
1248 } else {
1249 var64 = " ";
1250 var65 = 1;
1251 var66 = string__NativeString__to_s_with_length(var64, var65);
1252 var63 = var66;
1253 varonce62 = var63;
1254 }
1255 var67 = NEW_array__Array(&type_array__Arraykernel__Object);
1256 { /* var67 = array_instance Array[Object] */
1257 var68 = 4;
1258 var69 = NEW_array__NativeArray(var68, &type_array__NativeArraykernel__Object);
1259 ((struct instance_array__NativeArray*)var69)->values[0] = (val*) var56;
1260 ((struct instance_array__NativeArray*)var69)->values[1] = (val*) var61;
1261 ((struct instance_array__NativeArray*)var69)->values[2] = (val*) var63;
1262 ((struct instance_array__NativeArray*)var69)->values[3] = (val*) var_selfvar;
1263 ((void (*)(val*, val*, long))(var67->class->vft[COLOR_array__Array__with_native]))(var67, var69, var68) /* with_native on <var67:Array[Object]>*/;
1264 CHECK_NEW_array__Array(var67);
1265 }
1266 var70 = ((val* (*)(val*))(var67->class->vft[COLOR_string__Object__to_s]))(var67) /* to_s on <var67:Array[Object]>*/;
1267 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var70) /* append on <var_sig:Buffer>*/;
1268 if (varonce71) {
1269 var72 = varonce71;
1270 } else {
1271 var73 = "(";
1272 var74 = 1;
1273 var75 = string__NativeString__to_s_with_length(var73, var74);
1274 var72 = var75;
1275 varonce71 = var72;
1276 }
1277 if (varonce76) {
1278 var77 = varonce76;
1279 } else {
1280 var78 = ": ";
1281 var79 = 2;
1282 var80 = string__NativeString__to_s_with_length(var78, var79);
1283 var77 = var80;
1284 varonce76 = var77;
1285 }
1286 var81 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
1287 var82 = NEW_array__Array(&type_array__Arraykernel__Object);
1288 { /* var82 = array_instance Array[Object] */
1289 var83 = 4;
1290 var84 = NEW_array__NativeArray(var83, &type_array__NativeArraykernel__Object);
1291 ((struct instance_array__NativeArray*)var84)->values[0] = (val*) var72;
1292 ((struct instance_array__NativeArray*)var84)->values[1] = (val*) var_selfvar;
1293 ((struct instance_array__NativeArray*)var84)->values[2] = (val*) var77;
1294 ((struct instance_array__NativeArray*)var84)->values[3] = (val*) var81;
1295 ((void (*)(val*, val*, long))(var82->class->vft[COLOR_array__Array__with_native]))(var82, var84, var83) /* with_native on <var82:Array[Object]>*/;
1296 CHECK_NEW_array__Array(var82);
1297 }
1298 var85 = ((val* (*)(val*))(var82->class->vft[COLOR_string__Object__to_s]))(var82) /* to_s on <var82:Array[Object]>*/;
1299 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var85) /* append on <var_comment:Buffer>*/;
1300 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_selfvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
1301 var86 = NEW_range__Range(&type_range__Rangekernel__Int);
1302 var87 = 0;
1303 var88 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
1304 var89 = BOX_kernel__Int(var87); /* autobox from Int to Discrete */
1305 var90 = BOX_kernel__Int(var88); /* autobox from Int to Discrete */
1306 ((void (*)(val*, val*, val*))(var86->class->vft[COLOR_range__Range__without_last]))(var86, var89, var90) /* without_last on <var86:Range[Int]>*/;
1307 CHECK_NEW_range__Range(var86);
1308 var91 = ((val* (*)(val*))(var86->class->vft[COLOR_abstract_collection__Collection__iterator]))(var86) /* iterator on <var86:Range[Int]>*/;
1309 for(;;) {
1310 var92 = ((short int (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var91) /* is_ok on <var91:Iterator[nullable Object]>*/;
1311 if(!var92) break;
1312 var93 = ((val* (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__item]))(var91) /* item on <var91:Iterator[nullable Object]>*/;
1313 var94 = ((struct instance_kernel__Int*)var93)->value; /* autounbox from nullable Object to Int */;
1314 var_i = var94;
1315 var95 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
1316 var96 = ((val* (*)(val*, long))(var95->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var95, var_i) /* [] on <var95:Array[MParameter]>*/;
1317 var97 = ((val* (*)(val*))(var96->class->vft[COLOR_model__MParameter__mtype]))(var96) /* mtype on <var96:nullable Object(MParameter)>*/;
1318 var_mtype = var97;
1319 var98 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
1320 { /* Inline kernel#Int#== (var_i,var98) */
1321 var101 = var_i == var98;
1322 var99 = var101;
1323 goto RET_LABEL100;
1324 RET_LABEL100:(void)0;
1325 }
1326 if (var99){
1327 if (varonce102) {
1328 var103 = varonce102;
1329 } else {
1330 var104 = "Array";
1331 var105 = 5;
1332 var106 = string__NativeString__to_s_with_length(var104, var105);
1333 var103 = var106;
1334 varonce102 = var103;
1335 }
1336 var107 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(var_v, var103) /* get_class on <var_v:AbstractCompilerVisitor>*/;
1337 var108 = NEW_array__Array(&type_array__Arraymodel__MType);
1338 { /* var108 = array_instance Array[MType] */
1339 var109 = 1;
1340 var110 = NEW_array__NativeArray(var109, &type_array__NativeArraymodel__MType);
1341 ((struct instance_array__NativeArray*)var110)->values[0] = (val*) var_mtype;
1342 ((void (*)(val*, val*, long))(var108->class->vft[COLOR_array__Array__with_native]))(var108, var110, var109) /* with_native on <var108:Array[MType]>*/;
1343 CHECK_NEW_array__Array(var108);
1344 }
1345 var111 = ((val* (*)(val*, val*))(var107->class->vft[COLOR_model__MClass__get_mtype]))(var107, var108) /* get_mtype on <var107:MClass>*/;
1346 var_mtype = var111;
1347 } else {
1348 }
1349 if (varonce112) {
1350 var113 = varonce112;
1351 } else {
1352 var114 = ", ";
1353 var115 = 2;
1354 var116 = string__NativeString__to_s_with_length(var114, var115);
1355 var113 = var116;
1356 varonce112 = var113;
1357 }
1358 var117 = NEW_array__Array(&type_array__Arraykernel__Object);
1359 { /* var117 = array_instance Array[Object] */
1360 var118 = 2;
1361 var119 = NEW_array__NativeArray(var118, &type_array__NativeArraykernel__Object);
1362 ((struct instance_array__NativeArray*)var119)->values[0] = (val*) var113;
1363 ((struct instance_array__NativeArray*)var119)->values[1] = (val*) var_mtype;
1364 ((void (*)(val*, val*, long))(var117->class->vft[COLOR_array__Array__with_native]))(var117, var119, var118) /* with_native on <var117:Array[Object]>*/;
1365 CHECK_NEW_array__Array(var117);
1366 }
1367 var120 = ((val* (*)(val*))(var117->class->vft[COLOR_string__Object__to_s]))(var117) /* to_s on <var117:Array[Object]>*/;
1368 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var120) /* append on <var_comment:Buffer>*/;
1369 if (varonce121) {
1370 var122 = varonce121;
1371 } else {
1372 var123 = ", ";
1373 var124 = 2;
1374 var125 = string__NativeString__to_s_with_length(var123, var124);
1375 var122 = var125;
1376 varonce121 = var122;
1377 }
1378 var126 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
1379 if (varonce127) {
1380 var128 = varonce127;
1381 } else {
1382 var129 = " p";
1383 var130 = 2;
1384 var131 = string__NativeString__to_s_with_length(var129, var130);
1385 var128 = var131;
1386 varonce127 = var128;
1387 }
1388 var132 = NEW_array__Array(&type_array__Arraykernel__Object);
1389 { /* var132 = array_instance Array[Object] */
1390 var133 = 4;
1391 var134 = NEW_array__NativeArray(var133, &type_array__NativeArraykernel__Object);
1392 ((struct instance_array__NativeArray*)var134)->values[0] = (val*) var122;
1393 ((struct instance_array__NativeArray*)var134)->values[1] = (val*) var126;
1394 ((struct instance_array__NativeArray*)var134)->values[2] = (val*) var128;
1395 var135 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
1396 ((struct instance_array__NativeArray*)var134)->values[3] = (val*) var135;
1397 ((void (*)(val*, val*, long))(var132->class->vft[COLOR_array__Array__with_native]))(var132, var134, var133) /* with_native on <var132:Array[Object]>*/;
1398 CHECK_NEW_array__Array(var132);
1399 }
1400 var136 = ((val* (*)(val*))(var132->class->vft[COLOR_string__Object__to_s]))(var132) /* to_s on <var132:Array[Object]>*/;
1401 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var136) /* append on <var_sig:Buffer>*/;
1402 var137 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
1403 var138 = NEW_array__Array(&type_array__Arraykernel__Object);
1404 var139 = 3;
1405 ((void (*)(val*, long))(var138->class->vft[COLOR_array__Array__with_capacity]))(var138, var139) /* with_capacity on <var138:Array[Object]>*/;
1406 CHECK_NEW_array__Array(var138);
1407 var_ = var138;
1408 if (varonce140) {
1409 var141 = varonce140;
1410 } else {
1411 var142 = "p";
1412 var143 = 1;
1413 var144 = string__NativeString__to_s_with_length(var142, var143);
1414 var141 = var144;
1415 varonce140 = var141;
1416 }
1417 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var141) /* add on <var_:Array[Object]>*/;
1418 var145 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */
1419 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var145) /* add on <var_:Array[Object]>*/;
1420 if (varonce146) {
1421 var147 = varonce146;
1422 } else {
1423 var148 = "";
1424 var149 = 0;
1425 var150 = string__NativeString__to_s_with_length(var148, var149);
1426 var147 = var150;
1427 varonce146 = var147;
1428 }
1429 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var147) /* add on <var_:Array[Object]>*/;
1430 var151 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1431 ((void (*)(val*, val*, val*, val*))(var137->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var137, var151, var_mtype, var_mtype) /* init on <var137:RuntimeVariable>*/;
1432 CHECK_NEW_abstract_compiler__RuntimeVariable(var137);
1433 var_argvar = var137;
1434 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_argvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
1435 CONTINUE_label: (void)0;
1436 ((void (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__next]))(var91) /* next on <var91:Iterator[nullable Object]>*/;
1437 }
1438 BREAK_label: (void)0;
1439 if (varonce152) {
1440 var153 = varonce152;
1441 } else {
1442 var154 = ")";
1443 var155 = 1;
1444 var156 = string__NativeString__to_s_with_length(var154, var155);
1445 var153 = var156;
1446 varonce152 = var153;
1447 }
1448 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var153) /* append on <var_sig:Buffer>*/;
1449 if (varonce157) {
1450 var158 = varonce157;
1451 } else {
1452 var159 = ")";
1453 var160 = 1;
1454 var161 = string__NativeString__to_s_with_length(var159, var160);
1455 var158 = var161;
1456 varonce157 = var158;
1457 }
1458 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var158) /* append on <var_comment:Buffer>*/;
1459 var162 = NULL;
1460 if (var_ret == NULL) {
1461 var163 = 0; /* is null */
1462 } else {
1463 var163 = 1; /* arg is null and recv is not */
1464 }
1465 if (var163){
1466 if (varonce164) {
1467 var165 = varonce164;
1468 } else {
1469 var166 = ": ";
1470 var167 = 2;
1471 var168 = string__NativeString__to_s_with_length(var166, var167);
1472 var165 = var168;
1473 varonce164 = var165;
1474 }
1475 var169 = NEW_array__Array(&type_array__Arraykernel__Object);
1476 { /* var169 = array_instance Array[Object] */
1477 var170 = 2;
1478 var171 = NEW_array__NativeArray(var170, &type_array__NativeArraykernel__Object);
1479 ((struct instance_array__NativeArray*)var171)->values[0] = (val*) var165;
1480 ((struct instance_array__NativeArray*)var171)->values[1] = (val*) var_ret;
1481 ((void (*)(val*, val*, long))(var169->class->vft[COLOR_array__Array__with_native]))(var169, var171, var170) /* with_native on <var169:Array[Object]>*/;
1482 CHECK_NEW_array__Array(var169);
1483 }
1484 var172 = ((val* (*)(val*))(var169->class->vft[COLOR_string__Object__to_s]))(var169) /* to_s on <var169:Array[Object]>*/;
1485 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var172) /* append on <var_comment:Buffer>*/;
1486 } else {
1487 }
1488 var173 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:SeparateRuntimeFunction>*/;
1489 if (varonce174) {
1490 var175 = varonce174;
1491 } else {
1492 var176 = ";";
1493 var177 = 1;
1494 var178 = string__NativeString__to_s_with_length(var176, var177);
1495 var175 = var178;
1496 varonce174 = var175;
1497 }
1498 var179 = NEW_array__Array(&type_array__Arraykernel__Object);
1499 { /* var179 = array_instance Array[Object] */
1500 var180 = 2;
1501 var181 = NEW_array__NativeArray(var180, &type_array__NativeArraykernel__Object);
1502 ((struct instance_array__NativeArray*)var181)->values[0] = (val*) var_sig;
1503 ((struct instance_array__NativeArray*)var181)->values[1] = (val*) var175;
1504 ((void (*)(val*, val*, long))(var179->class->vft[COLOR_array__Array__with_native]))(var179, var181, var180) /* with_native on <var179:Array[Object]>*/;
1505 CHECK_NEW_array__Array(var179);
1506 }
1507 var182 = ((val* (*)(val*))(var179->class->vft[COLOR_string__Object__to_s]))(var179) /* to_s on <var179:Array[Object]>*/;
1508 ((void (*)(val*, val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var_compiler, var173, var182) /* provide_declaration on <var_compiler:AbstractCompiler>*/;
1509 if (varonce183) {
1510 var184 = varonce183;
1511 } else {
1512 var185 = "/* method ";
1513 var186 = 10;
1514 var187 = string__NativeString__to_s_with_length(var185, var186);
1515 var184 = var187;
1516 varonce183 = var184;
1517 }
1518 if (varonce188) {
1519 var189 = varonce188;
1520 } else {
1521 var190 = " for ";
1522 var191 = 5;
1523 var192 = string__NativeString__to_s_with_length(var190, var191);
1524 var189 = var192;
1525 varonce188 = var189;
1526 }
1527 if (varonce193) {
1528 var194 = varonce193;
1529 } else {
1530 var195 = " */";
1531 var196 = 3;
1532 var197 = string__NativeString__to_s_with_length(var195, var196);
1533 var194 = var197;
1534 varonce193 = var194;
1535 }
1536 var198 = NEW_array__Array(&type_array__Arraykernel__Object);
1537 { /* var198 = array_instance Array[Object] */
1538 var199 = 5;
1539 var200 = NEW_array__NativeArray(var199, &type_array__NativeArraykernel__Object);
1540 ((struct instance_array__NativeArray*)var200)->values[0] = (val*) var184;
1541 ((struct instance_array__NativeArray*)var200)->values[1] = (val*) self;
1542 ((struct instance_array__NativeArray*)var200)->values[2] = (val*) var189;
1543 ((struct instance_array__NativeArray*)var200)->values[3] = (val*) var_comment;
1544 ((struct instance_array__NativeArray*)var200)->values[4] = (val*) var194;
1545 ((void (*)(val*, val*, long))(var198->class->vft[COLOR_array__Array__with_native]))(var198, var200, var199) /* with_native on <var198:Array[Object]>*/;
1546 CHECK_NEW_array__Array(var198);
1547 }
1548 var201 = ((val* (*)(val*))(var198->class->vft[COLOR_string__Object__to_s]))(var198) /* to_s on <var198:Array[Object]>*/;
1549 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var201) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
1550 if (varonce202) {
1551 var203 = varonce202;
1552 } else {
1553 var204 = " {";
1554 var205 = 2;
1555 var206 = string__NativeString__to_s_with_length(var204, var205);
1556 var203 = var206;
1557 varonce202 = var203;
1558 }
1559 var207 = NEW_array__Array(&type_array__Arraykernel__Object);
1560 { /* var207 = array_instance Array[Object] */
1561 var208 = 2;
1562 var209 = NEW_array__NativeArray(var208, &type_array__NativeArraykernel__Object);
1563 ((struct instance_array__NativeArray*)var209)->values[0] = (val*) var_sig;
1564 ((struct instance_array__NativeArray*)var209)->values[1] = (val*) var203;
1565 ((void (*)(val*, val*, long))(var207->class->vft[COLOR_array__Array__with_native]))(var207, var209, var208) /* with_native on <var207:Array[Object]>*/;
1566 CHECK_NEW_array__Array(var207);
1567 }
1568 var210 = ((val* (*)(val*))(var207->class->vft[COLOR_string__Object__to_s]))(var207) /* to_s on <var207:Array[Object]>*/;
1569 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var210) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
1570 var211 = NULL;
1571 if (var_ret == NULL) {
1572 var212 = 0; /* is null */
1573 } else {
1574 var212 = 1; /* arg is null and recv is not */
1575 }
1576 if (var212){
1577 var213 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on <var_v:AbstractCompilerVisitor>*/;
1578 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var213) /* returnvar= on <var_frame:Frame>*/;
1579 } else {
1580 }
1581 if (varonce214) {
1582 var215 = varonce214;
1583 } else {
1584 var216 = "RET_LABEL";
1585 var217 = 9;
1586 var218 = string__NativeString__to_s_with_length(var216, var217);
1587 var215 = var218;
1588 varonce214 = var215;
1589 }
1590 var219 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var215) /* get_name on <var_v:AbstractCompilerVisitor>*/;
1591 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var219) /* returnlabel= on <var_frame:Frame>*/;
1592 var220 = ((val* (*)(val*))(var_arguments->class->vft[COLOR_abstract_collection__Collection__first]))(var_arguments) /* first on <var_arguments:Array[RuntimeVariable]>*/;
1593 var221 = ((val* (*)(val*))(var220->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var220) /* mtype on <var220:nullable Object(RuntimeVariable)>*/;
1594 var222 = ((short int (*)(val*, val*))(var_recv->class->vft[COLOR_kernel__Object___33d_61d]))(var_recv, var221) /* != on <var_recv:MClassType>*/;
1595 if (var222){
1596 } else {
1597 }
1598 var223 = ((val* (*)(val*, val*, val*))(var_mmethoddef->class->vft[COLOR_abstract_compiler__MMethodDef__compile_inside_to_c]))(var_mmethoddef, var_v, var_arguments) /* compile_inside_to_c on <var_mmethoddef:MMethodDef>*/;
1599 var223;
1600 var224 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
1601 if (var224 == NULL) {
1602 fprintf(stderr, "Runtime error: %s", "Cast failed");
1603 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1686);
1604 exit(1);
1605 }
1606 if (varonce225) {
1607 var226 = varonce225;
1608 } else {
1609 var227 = ":;";
1610 var228 = 2;
1611 var229 = string__NativeString__to_s_with_length(var227, var228);
1612 var226 = var229;
1613 varonce225 = var226;
1614 }
1615 var230 = NEW_array__Array(&type_array__Arraykernel__Object);
1616 { /* var230 = array_instance Array[Object] */
1617 var231 = 2;
1618 var232 = NEW_array__NativeArray(var231, &type_array__NativeArraykernel__Object);
1619 ((struct instance_array__NativeArray*)var232)->values[0] = (val*) var224;
1620 ((struct instance_array__NativeArray*)var232)->values[1] = (val*) var226;
1621 ((void (*)(val*, val*, long))(var230->class->vft[COLOR_array__Array__with_native]))(var230, var232, var231) /* with_native on <var230:Array[Object]>*/;
1622 CHECK_NEW_array__Array(var230);
1623 }
1624 var233 = ((val* (*)(val*))(var230->class->vft[COLOR_string__Object__to_s]))(var230) /* to_s on <var230:Array[Object]>*/;
1625 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var233) /* add on <var_v:AbstractCompilerVisitor>*/;
1626 var234 = NULL;
1627 if (var_ret == NULL) {
1628 var235 = 0; /* is null */
1629 } else {
1630 var235 = 1; /* arg is null and recv is not */
1631 }
1632 if (var235){
1633 if (varonce236) {
1634 var237 = varonce236;
1635 } else {
1636 var238 = "return ";
1637 var239 = 7;
1638 var240 = string__NativeString__to_s_with_length(var238, var239);
1639 var237 = var240;
1640 varonce236 = var237;
1641 }
1642 var241 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
1643 if (var241 == NULL) {
1644 fprintf(stderr, "Runtime error: %s", "Cast failed");
1645 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1688);
1646 exit(1);
1647 }
1648 if (varonce242) {
1649 var243 = varonce242;
1650 } else {
1651 var244 = ";";
1652 var245 = 1;
1653 var246 = string__NativeString__to_s_with_length(var244, var245);
1654 var243 = var246;
1655 varonce242 = var243;
1656 }
1657 var247 = NEW_array__Array(&type_array__Arraykernel__Object);
1658 { /* var247 = array_instance Array[Object] */
1659 var248 = 3;
1660 var249 = NEW_array__NativeArray(var248, &type_array__NativeArraykernel__Object);
1661 ((struct instance_array__NativeArray*)var249)->values[0] = (val*) var237;
1662 ((struct instance_array__NativeArray*)var249)->values[1] = (val*) var241;
1663 ((struct instance_array__NativeArray*)var249)->values[2] = (val*) var243;
1664 ((void (*)(val*, val*, long))(var247->class->vft[COLOR_array__Array__with_native]))(var247, var249, var248) /* with_native on <var247:Array[Object]>*/;
1665 CHECK_NEW_array__Array(var247);
1666 }
1667 var250 = ((val* (*)(val*))(var247->class->vft[COLOR_string__Object__to_s]))(var247) /* to_s on <var247:Array[Object]>*/;
1668 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var250) /* add on <var_v:AbstractCompilerVisitor>*/;
1669 } else {
1670 }
1671 if (varonce251) {
1672 var252 = varonce251;
1673 } else {
1674 var253 = "}";
1675 var254 = 1;
1676 var255 = string__NativeString__to_s_with_length(var253, var254);
1677 var252 = var255;
1678 varonce251 = var252;
1679 }
1680 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var252) /* add on <var_v:AbstractCompilerVisitor>*/;
1681 RET_LABEL:;
1682 }
1683 /* method separate_compiler#SeparateRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
1684 void VIRTUAL_separate_compiler__SeparateRuntimeFunction__compile_to_c(val* self, val* p0) {
1685 separate_compiler__SeparateRuntimeFunction__compile_to_c(self, p0);
1686 RET_LABEL:;
1687 }
1688 /* method separate_compiler#VirtualRuntimeFunction#build_c_name for (self: VirtualRuntimeFunction): String */
1689 val* separate_compiler__VirtualRuntimeFunction__build_c_name(val* self) {
1690 val* var /* : String */;
1691 val* var1 /* : Array[Object] */;
1692 long var2 /* : Int */;
1693 val* var_ /* var : Array[Object] */;
1694 static val* varonce;
1695 val* var3 /* : String */;
1696 char* var4 /* : NativeString */;
1697 long var5 /* : Int */;
1698 val* var6 /* : String */;
1699 val* var7 /* : MMethodDef */;
1700 val* var8 /* : String */;
1701 static val* varonce9;
1702 val* var10 /* : String */;
1703 char* var11 /* : NativeString */;
1704 long var12 /* : Int */;
1705 val* var13 /* : String */;
1706 val* var14 /* : String */;
1707 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
1708 var2 = 3;
1709 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
1710 CHECK_NEW_array__Array(var1);
1711 var_ = var1;
1712 if (varonce) {
1713 var3 = varonce;
1714 } else {
1715 var4 = "VIRTUAL_";
1716 var5 = 8;
1717 var6 = string__NativeString__to_s_with_length(var4, var5);
1718 var3 = var6;
1719 varonce = var3;
1720 }
1721 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
1722 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
1723 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(var7) /* c_name on <var7:MMethodDef>*/;
1724 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var8) /* add on <var_:Array[Object]>*/;
1725 if (varonce9) {
1726 var10 = varonce9;
1727 } else {
1728 var11 = "";
1729 var12 = 0;
1730 var13 = string__NativeString__to_s_with_length(var11, var12);
1731 var10 = var13;
1732 varonce9 = var10;
1733 }
1734 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var10) /* add on <var_:Array[Object]>*/;
1735 var14 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
1736 var = var14;
1737 goto RET_LABEL;
1738 RET_LABEL:;
1739 return var;
1740 }
1741 /* method separate_compiler#VirtualRuntimeFunction#build_c_name for (self: Object): String */
1742 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__build_c_name(val* self) {
1743 val* var /* : String */;
1744 val* var1 /* : String */;
1745 var1 = separate_compiler__VirtualRuntimeFunction__build_c_name(self);
1746 var = var1;
1747 RET_LABEL:;
1748 return var;
1749 }
1750 /* method separate_compiler#VirtualRuntimeFunction#to_s for (self: VirtualRuntimeFunction): String */
1751 val* separate_compiler__VirtualRuntimeFunction__to_s(val* self) {
1752 val* var /* : String */;
1753 val* var1 /* : MMethodDef */;
1754 val* var2 /* : String */;
1755 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
1756 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_string__Object__to_s]))(var1) /* to_s on <var1:MMethodDef>*/;
1757 var = var2;
1758 goto RET_LABEL;
1759 RET_LABEL:;
1760 return var;
1761 }
1762 /* method separate_compiler#VirtualRuntimeFunction#to_s for (self: Object): String */
1763 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__to_s(val* self) {
1764 val* var /* : String */;
1765 val* var1 /* : String */;
1766 var1 = separate_compiler__VirtualRuntimeFunction__to_s(self);
1767 var = var1;
1768 RET_LABEL:;
1769 return var;
1770 }
1771 /* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: VirtualRuntimeFunction, AbstractCompiler) */
1772 void separate_compiler__VirtualRuntimeFunction__compile_to_c(val* self, val* p0) {
1773 short int var /* : Bool */;
1774 int cltype;
1775 int idtype;
1776 const struct type* type_struct;
1777 const char* var_class_name;
1778 val* var_compiler /* var compiler: AbstractCompiler */;
1779 val* var1 /* : MMethodDef */;
1780 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
1781 val* var2 /* : MMethodDef */;
1782 val* var3 /* : MClassDef */;
1783 val* var4 /* : MClassType */;
1784 val* var_recv /* var recv: MClassType */;
1785 val* var5 /* : AbstractCompilerVisitor */;
1786 val* var_v /* var v: AbstractCompilerVisitor */;
1787 val* var6 /* : RuntimeVariable */;
1788 static val* varonce;
1789 val* var7 /* : String */;
1790 char* var8 /* : NativeString */;
1791 long var9 /* : Int */;
1792 val* var10 /* : String */;
1793 val* var11 /* : MClassType */;
1794 val* var_selfvar /* var selfvar: RuntimeVariable */;
1795 val* var12 /* : Array[RuntimeVariable] */;
1796 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1797 val* var13 /* : Frame */;
1798 val* var_frame /* var frame: Frame */;
1799 val* var14 /* : Buffer */;
1800 val* var_sig /* var sig: Buffer */;
1801 val* var15 /* : Buffer */;
1802 val* var_comment /* var comment: Buffer */;
1803 val* var16 /* : MMethodDef */;
1804 val* var17 /* : MProperty */;
1805 val* var18 /* : MPropDef */;
1806 val* var19 /* : MClassDef */;
1807 val* var_intromclassdef /* var intromclassdef: MClassDef */;
1808 val* var20 /* : MProperty */;
1809 val* var21 /* : MPropDef */;
1810 val* var22 /* : nullable MSignature */;
1811 val* var23 /* : MClassType */;
1812 val* var24 /* : MClassType */;
1813 val* var25 /* : MModule */;
1814 short int var26 /* : Bool */;
1815 val* var27 /* : MType */;
1816 val* var_msignature /* var msignature: MSignature */;
1817 val* var28 /* : nullable MType */;
1818 val* var_ret /* var ret: nullable MType */;
1819 val* var29 /* : null */;
1820 short int var30 /* : Bool */;
1821 val* var31 /* : String */;
1822 static val* varonce32;
1823 val* var33 /* : String */;
1824 char* var34 /* : NativeString */;
1825 long var35 /* : Int */;
1826 val* var36 /* : String */;
1827 val* var37 /* : Array[Object] */;
1828 long var38 /* : Int */;
1829 val* var39 /* : NativeArray[Object] */;
1830 val* var40 /* : String */;
1831 val* var41 /* : MProperty */;
1832 short int var42 /* : Bool */;
1833 val* var43 /* : String */;
1834 static val* varonce44;
1835 val* var45 /* : String */;
1836 char* var46 /* : NativeString */;
1837 long var47 /* : Int */;
1838 val* var48 /* : String */;
1839 val* var49 /* : Array[Object] */;
1840 long var50 /* : Int */;
1841 val* var51 /* : NativeArray[Object] */;
1842 val* var52 /* : String */;
1843 static val* varonce53;
1844 val* var54 /* : String */;
1845 char* var55 /* : NativeString */;
1846 long var56 /* : Int */;
1847 val* var57 /* : String */;
1848 val* var58 /* : String */;
1849 static val* varonce59;
1850 val* var60 /* : String */;
1851 char* var61 /* : NativeString */;
1852 long var62 /* : Int */;
1853 val* var63 /* : String */;
1854 val* var64 /* : MType */;
1855 val* var65 /* : String */;
1856 static val* varonce66;
1857 val* var67 /* : String */;
1858 char* var68 /* : NativeString */;
1859 long var69 /* : Int */;
1860 val* var70 /* : String */;
1861 val* var71 /* : Array[Object] */;
1862 long var72 /* : Int */;
1863 val* var73 /* : NativeArray[Object] */;
1864 val* var74 /* : String */;
1865 static val* varonce75;
1866 val* var76 /* : String */;
1867 char* var77 /* : NativeString */;
1868 long var78 /* : Int */;
1869 val* var79 /* : String */;
1870 static val* varonce80;
1871 val* var81 /* : String */;
1872 char* var82 /* : NativeString */;
1873 long var83 /* : Int */;
1874 val* var84 /* : String */;
1875 val* var85 /* : MType */;
1876 val* var86 /* : Array[Object] */;
1877 long var87 /* : Int */;
1878 val* var88 /* : NativeArray[Object] */;
1879 val* var89 /* : String */;
1880 val* var90 /* : Range[Int] */;
1881 long var91 /* : Int */;
1882 long var92 /* : Int */;
1883 val* var93 /* : Discrete */;
1884 val* var94 /* : Discrete */;
1885 val* var95 /* : Iterator[nullable Object] */;
1886 short int var96 /* : Bool */;
1887 val* var97 /* : nullable Object */;
1888 long var_i /* var i: Int */;
1889 long var98 /* : Int */;
1890 val* var99 /* : Array[MParameter] */;
1891 val* var100 /* : nullable Object */;
1892 val* var101 /* : MType */;
1893 val* var_mtype /* var mtype: MType */;
1894 long var102 /* : Int */;
1895 short int var103 /* : Bool */;
1896 short int var105 /* : Bool */;
1897 static val* varonce106;
1898 val* var107 /* : String */;
1899 char* var108 /* : NativeString */;
1900 long var109 /* : Int */;
1901 val* var110 /* : String */;
1902 val* var111 /* : MClass */;
1903 val* var112 /* : Array[MType] */;
1904 long var113 /* : Int */;
1905 val* var114 /* : NativeArray[MType] */;
1906 val* var115 /* : MClassType */;
1907 static val* varonce116;
1908 val* var117 /* : String */;
1909 char* var118 /* : NativeString */;
1910 long var119 /* : Int */;
1911 val* var120 /* : String */;
1912 val* var121 /* : Array[Object] */;
1913 long var122 /* : Int */;
1914 val* var123 /* : NativeArray[Object] */;
1915 val* var124 /* : String */;
1916 static val* varonce125;
1917 val* var126 /* : String */;
1918 char* var127 /* : NativeString */;
1919 long var128 /* : Int */;
1920 val* var129 /* : String */;
1921 val* var130 /* : String */;
1922 static val* varonce131;
1923 val* var132 /* : String */;
1924 char* var133 /* : NativeString */;
1925 long var134 /* : Int */;
1926 val* var135 /* : String */;
1927 val* var136 /* : Array[Object] */;
1928 long var137 /* : Int */;
1929 val* var138 /* : NativeArray[Object] */;
1930 val* var139 /* : Object */;
1931 val* var140 /* : String */;
1932 val* var141 /* : RuntimeVariable */;
1933 val* var142 /* : Array[Object] */;
1934 long var143 /* : Int */;
1935 val* var_ /* var : Array[Object] */;
1936 static val* varonce144;
1937 val* var145 /* : String */;
1938 char* var146 /* : NativeString */;
1939 long var147 /* : Int */;
1940 val* var148 /* : String */;
1941 val* var149 /* : nullable Object */;
1942 static val* varonce150;
1943 val* var151 /* : String */;
1944 char* var152 /* : NativeString */;
1945 long var153 /* : Int */;
1946 val* var154 /* : String */;
1947 val* var155 /* : String */;
1948 val* var_argvar /* var argvar: RuntimeVariable */;
1949 static val* varonce156;
1950 val* var157 /* : String */;
1951 char* var158 /* : NativeString */;
1952 long var159 /* : Int */;
1953 val* var160 /* : String */;
1954 static val* varonce161;
1955 val* var162 /* : String */;
1956 char* var163 /* : NativeString */;
1957 long var164 /* : Int */;
1958 val* var165 /* : String */;
1959 val* var166 /* : null */;
1960 short int var167 /* : Bool */;
1961 static val* varonce168;
1962 val* var169 /* : String */;
1963 char* var170 /* : NativeString */;
1964 long var171 /* : Int */;
1965 val* var172 /* : String */;
1966 val* var173 /* : Array[Object] */;
1967 long var174 /* : Int */;
1968 val* var175 /* : NativeArray[Object] */;
1969 val* var176 /* : String */;
1970 val* var177 /* : String */;
1971 static val* varonce178;
1972 val* var179 /* : String */;
1973 char* var180 /* : NativeString */;
1974 long var181 /* : Int */;
1975 val* var182 /* : String */;
1976 val* var183 /* : Array[Object] */;
1977 long var184 /* : Int */;
1978 val* var185 /* : NativeArray[Object] */;
1979 val* var186 /* : String */;
1980 static val* varonce187;
1981 val* var188 /* : String */;
1982 char* var189 /* : NativeString */;
1983 long var190 /* : Int */;
1984 val* var191 /* : String */;
1985 static val* varonce192;
1986 val* var193 /* : String */;
1987 char* var194 /* : NativeString */;
1988 long var195 /* : Int */;
1989 val* var196 /* : String */;
1990 static val* varonce197;
1991 val* var198 /* : String */;
1992 char* var199 /* : NativeString */;
1993 long var200 /* : Int */;
1994 val* var201 /* : String */;
1995 val* var202 /* : Array[Object] */;
1996 long var203 /* : Int */;
1997 val* var204 /* : NativeArray[Object] */;
1998 val* var205 /* : String */;
1999 static val* varonce206;
2000 val* var207 /* : String */;
2001 char* var208 /* : NativeString */;
2002 long var209 /* : Int */;
2003 val* var210 /* : String */;
2004 val* var211 /* : Array[Object] */;
2005 long var212 /* : Int */;
2006 val* var213 /* : NativeArray[Object] */;
2007 val* var214 /* : String */;
2008 val* var215 /* : null */;
2009 short int var216 /* : Bool */;
2010 val* var217 /* : RuntimeVariable */;
2011 static val* varonce218;
2012 val* var219 /* : String */;
2013 char* var220 /* : NativeString */;
2014 long var221 /* : Int */;
2015 val* var222 /* : String */;
2016 val* var223 /* : String */;
2017 val* var224 /* : nullable RuntimeVariable */;
2018 val* var_subret /* var subret: nullable RuntimeVariable */;
2019 val* var225 /* : null */;
2020 short int var226 /* : Bool */;
2021 val* var227 /* : null */;
2022 short int var228 /* : Bool */;
2023 val* var229 /* : nullable RuntimeVariable */;
2024 val* var230 /* : nullable String */;
2025 static val* varonce231;
2026 val* var232 /* : String */;
2027 char* var233 /* : NativeString */;
2028 long var234 /* : Int */;
2029 val* var235 /* : String */;
2030 val* var236 /* : Array[Object] */;
2031 long var237 /* : Int */;
2032 val* var238 /* : NativeArray[Object] */;
2033 val* var239 /* : String */;
2034 val* var240 /* : null */;
2035 short int var241 /* : Bool */;
2036 static val* varonce242;
2037 val* var243 /* : String */;
2038 char* var244 /* : NativeString */;
2039 long var245 /* : Int */;
2040 val* var246 /* : String */;
2041 val* var247 /* : nullable RuntimeVariable */;
2042 static val* varonce248;
2043 val* var249 /* : String */;
2044 char* var250 /* : NativeString */;
2045 long var251 /* : Int */;
2046 val* var252 /* : String */;
2047 val* var253 /* : Array[Object] */;
2048 long var254 /* : Int */;
2049 val* var255 /* : NativeArray[Object] */;
2050 val* var256 /* : String */;
2051 static val* varonce257;
2052 val* var258 /* : String */;
2053 char* var259 /* : NativeString */;
2054 long var260 /* : Int */;
2055 val* var261 /* : String */;
2056 /* Covariant cast for argument 0 (compiler) <p0:AbstractCompiler> isa COMPILER */
2057 /* <p0:AbstractCompiler> isa COMPILER */
2058 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTCOMPILER];
2059 cltype = type_struct->color;
2060 idtype = type_struct->id;
2061 if(cltype >= p0->type->table_size) {
2062 var = 0;
2063 } else {
2064 var = p0->type->type_table[cltype] == idtype;
2065 }
2066 if (!var) {
2067 var_class_name = p0 == NULL ? "null" : p0->type->name;
2068 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPILER", var_class_name);
2069 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1703);
2070 exit(1);
2071 }
2072 var_compiler = p0;
2073 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
2074 var_mmethoddef = var1;
2075 var2 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
2076 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__MPropDef__mclassdef]))(var2) /* mclassdef on <var2:MMethodDef>*/;
2077 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
2078 var_recv = var4;
2079 var5 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(var_compiler) /* new_visitor on <var_compiler:AbstractCompiler>*/;
2080 var_v = var5;
2081 var6 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
2082 if (varonce) {
2083 var7 = varonce;
2084 } else {
2085 var8 = "self";
2086 var9 = 4;
2087 var10 = string__NativeString__to_s_with_length(var8, var9);
2088 var7 = var10;
2089 varonce = var7;
2090 }
2091 var11 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type]))(var_v) /* object_type on <var_v:AbstractCompilerVisitor>*/;
2092 ((void (*)(val*, val*, val*, val*))(var6->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var6, var7, var11, var_recv) /* init on <var6:RuntimeVariable>*/;
2093 CHECK_NEW_abstract_compiler__RuntimeVariable(var6);
2094 var_selfvar = var6;
2095 var12 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
2096 ((void (*)(val*))(var12->class->vft[COLOR_array__Array__init]))(var12) /* init on <var12:Array[RuntimeVariable]>*/;
2097 CHECK_NEW_array__Array(var12);
2098 var_arguments = var12;
2099 var13 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
2100 ((void (*)(val*, val*, val*, val*, val*))(var13->class->vft[COLOR_abstract_compiler__Frame__init]))(var13, var_v, var_mmethoddef, var_recv, var_arguments) /* init on <var13:Frame>*/;
2101 CHECK_NEW_abstract_compiler__Frame(var13);
2102 var_frame = var13;
2103 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__frame_61d]))(var_v, var_frame) /* frame= on <var_v:AbstractCompilerVisitor>*/;
2104 var14 = NEW_string__Buffer(&type_string__Buffer);
2105 ((void (*)(val*))(var14->class->vft[COLOR_string__Buffer__init]))(var14) /* init on <var14:Buffer>*/;
2106 CHECK_NEW_string__Buffer(var14);
2107 var_sig = var14;
2108 var15 = NEW_string__Buffer(&type_string__Buffer);
2109 ((void (*)(val*))(var15->class->vft[COLOR_string__Buffer__init]))(var15) /* init on <var15:Buffer>*/;
2110 CHECK_NEW_string__Buffer(var15);
2111 var_comment = var15;
2112 var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__mmethoddef]))(self) /* mmethoddef on <self:VirtualRuntimeFunction>*/;
2113 var17 = ((val* (*)(val*))(var16->class->vft[COLOR_model__MPropDef__mproperty]))(var16) /* mproperty on <var16:MMethodDef>*/;
2114 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_model__MProperty__intro]))(var17) /* intro on <var17:MProperty(MMethod)>*/;
2115 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MPropDef__mclassdef]))(var18) /* mclassdef on <var18:MPropDef(MMethodDef)>*/;
2116 var_intromclassdef = var19;
2117 var20 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
2118 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_model__MProperty__intro]))(var20) /* intro on <var20:MProperty(MMethod)>*/;
2119 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_model__MMethodDef__msignature]))(var21) /* msignature on <var21:MPropDef(MMethodDef)>*/;
2120 var23 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2121 var24 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__bound_mtype]))(var_intromclassdef) /* bound_mtype on <var_intromclassdef:MClassDef>*/;
2122 var25 = ((val* (*)(val*))(var_intromclassdef->class->vft[COLOR_model__MClassDef__mmodule]))(var_intromclassdef) /* mmodule on <var_intromclassdef:MClassDef>*/;
2123 var26 = 1;
2124 if (var22 == NULL) {
2125 fprintf(stderr, "Runtime error: %s", "Reciever is null");
2126 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1719);
2127 exit(1);
2128 } else {
2129 var27 = ((val* (*)(val*, val*, val*, val*, short int))(var22->class->vft[COLOR_model__MType__resolve_for]))(var22, var23, var24, var25, var26) /* resolve_for on <var22:nullable MSignature>*/;
2130 }
2131 var_msignature = var27;
2132 var28 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__return_mtype]))(var_msignature) /* return_mtype on <var_msignature:MSignature>*/;
2133 var_ret = var28;
2134 var29 = NULL;
2135 if (var_ret == NULL) {
2136 var30 = 0; /* is null */
2137 } else {
2138 var30 = 1; /* arg is null and recv is not */
2139 }
2140 if (var30){
2141 var31 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
2142 if (varonce32) {
2143 var33 = varonce32;
2144 } else {
2145 var34 = " ";
2146 var35 = 1;
2147 var36 = string__NativeString__to_s_with_length(var34, var35);
2148 var33 = var36;
2149 varonce32 = var33;
2150 }
2151 var37 = NEW_array__Array(&type_array__Arraykernel__Object);
2152 { /* var37 = array_instance Array[Object] */
2153 var38 = 2;
2154 var39 = NEW_array__NativeArray(var38, &type_array__NativeArraykernel__Object);
2155 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var31;
2156 ((struct instance_array__NativeArray*)var39)->values[1] = (val*) var33;
2157 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Object]>*/;
2158 CHECK_NEW_array__Array(var37);
2159 }
2160 var40 = ((val* (*)(val*))(var37->class->vft[COLOR_string__Object__to_s]))(var37) /* to_s on <var37:Array[Object]>*/;
2161 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var40) /* append on <var_sig:Buffer>*/;
2162 } else {
2163 var41 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mproperty]))(var_mmethoddef) /* mproperty on <var_mmethoddef:MMethodDef>*/;
2164 var42 = ((short int (*)(val*))(var41->class->vft[COLOR_model__MMethod__is_new]))(var41) /* is_new on <var41:MProperty(MMethod)>*/;
2165 if (var42){
2166 var_ret = var_recv;
2167 var43 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MClassType)>*/;
2168 if (varonce44) {
2169 var45 = varonce44;
2170 } else {
2171 var46 = " ";
2172 var47 = 1;
2173 var48 = string__NativeString__to_s_with_length(var46, var47);
2174 var45 = var48;
2175 varonce44 = var45;
2176 }
2177 var49 = NEW_array__Array(&type_array__Arraykernel__Object);
2178 { /* var49 = array_instance Array[Object] */
2179 var50 = 2;
2180 var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object);
2181 ((struct instance_array__NativeArray*)var51)->values[0] = (val*) var43;
2182 ((struct instance_array__NativeArray*)var51)->values[1] = (val*) var45;
2183 ((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
2184 CHECK_NEW_array__Array(var49);
2185 }
2186 var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
2187 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var52) /* append on <var_sig:Buffer>*/;
2188 } else {
2189 if (varonce53) {
2190 var54 = varonce53;
2191 } else {
2192 var55 = "void ";
2193 var56 = 5;
2194 var57 = string__NativeString__to_s_with_length(var55, var56);
2195 var54 = var57;
2196 varonce53 = var54;
2197 }
2198 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var54) /* append on <var_sig:Buffer>*/;
2199 }
2200 }
2201 var58 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
2202 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var58) /* append on <var_sig:Buffer>*/;
2203 if (varonce59) {
2204 var60 = varonce59;
2205 } else {
2206 var61 = "(";
2207 var62 = 1;
2208 var63 = string__NativeString__to_s_with_length(var61, var62);
2209 var60 = var63;
2210 varonce59 = var60;
2211 }
2212 var64 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
2213 var65 = ((val* (*)(val*))(var64->class->vft[COLOR_abstract_compiler__MType__ctype]))(var64) /* ctype on <var64:MType>*/;
2214 if (varonce66) {
2215 var67 = varonce66;
2216 } else {
2217 var68 = " ";
2218 var69 = 1;
2219 var70 = string__NativeString__to_s_with_length(var68, var69);
2220 var67 = var70;
2221 varonce66 = var67;
2222 }
2223 var71 = NEW_array__Array(&type_array__Arraykernel__Object);
2224 { /* var71 = array_instance Array[Object] */
2225 var72 = 4;
2226 var73 = NEW_array__NativeArray(var72, &type_array__NativeArraykernel__Object);
2227 ((struct instance_array__NativeArray*)var73)->values[0] = (val*) var60;
2228 ((struct instance_array__NativeArray*)var73)->values[1] = (val*) var65;
2229 ((struct instance_array__NativeArray*)var73)->values[2] = (val*) var67;
2230 ((struct instance_array__NativeArray*)var73)->values[3] = (val*) var_selfvar;
2231 ((void (*)(val*, val*, long))(var71->class->vft[COLOR_array__Array__with_native]))(var71, var73, var72) /* with_native on <var71:Array[Object]>*/;
2232 CHECK_NEW_array__Array(var71);
2233 }
2234 var74 = ((val* (*)(val*))(var71->class->vft[COLOR_string__Object__to_s]))(var71) /* to_s on <var71:Array[Object]>*/;
2235 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var74) /* append on <var_sig:Buffer>*/;
2236 if (varonce75) {
2237 var76 = varonce75;
2238 } else {
2239 var77 = "(";
2240 var78 = 1;
2241 var79 = string__NativeString__to_s_with_length(var77, var78);
2242 var76 = var79;
2243 varonce75 = var76;
2244 }
2245 if (varonce80) {
2246 var81 = varonce80;
2247 } else {
2248 var82 = ": ";
2249 var83 = 2;
2250 var84 = string__NativeString__to_s_with_length(var82, var83);
2251 var81 = var84;
2252 varonce80 = var81;
2253 }
2254 var85 = ((val* (*)(val*))(var_selfvar->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_selfvar) /* mtype on <var_selfvar:RuntimeVariable>*/;
2255 var86 = NEW_array__Array(&type_array__Arraykernel__Object);
2256 { /* var86 = array_instance Array[Object] */
2257 var87 = 4;
2258 var88 = NEW_array__NativeArray(var87, &type_array__NativeArraykernel__Object);
2259 ((struct instance_array__NativeArray*)var88)->values[0] = (val*) var76;
2260 ((struct instance_array__NativeArray*)var88)->values[1] = (val*) var_selfvar;
2261 ((struct instance_array__NativeArray*)var88)->values[2] = (val*) var81;
2262 ((struct instance_array__NativeArray*)var88)->values[3] = (val*) var85;
2263 ((void (*)(val*, val*, long))(var86->class->vft[COLOR_array__Array__with_native]))(var86, var88, var87) /* with_native on <var86:Array[Object]>*/;
2264 CHECK_NEW_array__Array(var86);
2265 }
2266 var89 = ((val* (*)(val*))(var86->class->vft[COLOR_string__Object__to_s]))(var86) /* to_s on <var86:Array[Object]>*/;
2267 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var89) /* append on <var_comment:Buffer>*/;
2268 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_selfvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
2269 var90 = NEW_range__Range(&type_range__Rangekernel__Int);
2270 var91 = 0;
2271 var92 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
2272 var93 = BOX_kernel__Int(var91); /* autobox from Int to Discrete */
2273 var94 = BOX_kernel__Int(var92); /* autobox from Int to Discrete */
2274 ((void (*)(val*, val*, val*))(var90->class->vft[COLOR_range__Range__without_last]))(var90, var93, var94) /* without_last on <var90:Range[Int]>*/;
2275 CHECK_NEW_range__Range(var90);
2276 var95 = ((val* (*)(val*))(var90->class->vft[COLOR_abstract_collection__Collection__iterator]))(var90) /* iterator on <var90:Range[Int]>*/;
2277 for(;;) {
2278 var96 = ((short int (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var95) /* is_ok on <var95:Iterator[nullable Object]>*/;
2279 if(!var96) break;
2280 var97 = ((val* (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__item]))(var95) /* item on <var95:Iterator[nullable Object]>*/;
2281 var98 = ((struct instance_kernel__Int*)var97)->value; /* autounbox from nullable Object to Int */;
2282 var_i = var98;
2283 var99 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
2284 var100 = ((val* (*)(val*, long))(var99->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var99, var_i) /* [] on <var99:Array[MParameter]>*/;
2285 var101 = ((val* (*)(val*))(var100->class->vft[COLOR_model__MParameter__mtype]))(var100) /* mtype on <var100:nullable Object(MParameter)>*/;
2286 var_mtype = var101;
2287 var102 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
2288 { /* Inline kernel#Int#== (var_i,var102) */
2289 var105 = var_i == var102;
2290 var103 = var105;
2291 goto RET_LABEL104;
2292 RET_LABEL104:(void)0;
2293 }
2294 if (var103){
2295 if (varonce106) {
2296 var107 = varonce106;
2297 } else {
2298 var108 = "Array";
2299 var109 = 5;
2300 var110 = string__NativeString__to_s_with_length(var108, var109);
2301 var107 = var110;
2302 varonce106 = var107;
2303 }
2304 var111 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class]))(var_v, var107) /* get_class on <var_v:AbstractCompilerVisitor>*/;
2305 var112 = NEW_array__Array(&type_array__Arraymodel__MType);
2306 { /* var112 = array_instance Array[MType] */
2307 var113 = 1;
2308 var114 = NEW_array__NativeArray(var113, &type_array__NativeArraymodel__MType);
2309 ((struct instance_array__NativeArray*)var114)->values[0] = (val*) var_mtype;
2310 ((void (*)(val*, val*, long))(var112->class->vft[COLOR_array__Array__with_native]))(var112, var114, var113) /* with_native on <var112:Array[MType]>*/;
2311 CHECK_NEW_array__Array(var112);
2312 }
2313 var115 = ((val* (*)(val*, val*))(var111->class->vft[COLOR_model__MClass__get_mtype]))(var111, var112) /* get_mtype on <var111:MClass>*/;
2314 var_mtype = var115;
2315 } else {
2316 }
2317 if (varonce116) {
2318 var117 = varonce116;
2319 } else {
2320 var118 = ", ";
2321 var119 = 2;
2322 var120 = string__NativeString__to_s_with_length(var118, var119);
2323 var117 = var120;
2324 varonce116 = var117;
2325 }
2326 var121 = NEW_array__Array(&type_array__Arraykernel__Object);
2327 { /* var121 = array_instance Array[Object] */
2328 var122 = 2;
2329 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object);
2330 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var117;
2331 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var_mtype;
2332 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[Object]>*/;
2333 CHECK_NEW_array__Array(var121);
2334 }
2335 var124 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on <var121:Array[Object]>*/;
2336 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var124) /* append on <var_comment:Buffer>*/;
2337 if (varonce125) {
2338 var126 = varonce125;
2339 } else {
2340 var127 = ", ";
2341 var128 = 2;
2342 var129 = string__NativeString__to_s_with_length(var127, var128);
2343 var126 = var129;
2344 varonce125 = var126;
2345 }
2346 var130 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
2347 if (varonce131) {
2348 var132 = varonce131;
2349 } else {
2350 var133 = " p";
2351 var134 = 2;
2352 var135 = string__NativeString__to_s_with_length(var133, var134);
2353 var132 = var135;
2354 varonce131 = var132;
2355 }
2356 var136 = NEW_array__Array(&type_array__Arraykernel__Object);
2357 { /* var136 = array_instance Array[Object] */
2358 var137 = 4;
2359 var138 = NEW_array__NativeArray(var137, &type_array__NativeArraykernel__Object);
2360 ((struct instance_array__NativeArray*)var138)->values[0] = (val*) var126;
2361 ((struct instance_array__NativeArray*)var138)->values[1] = (val*) var130;
2362 ((struct instance_array__NativeArray*)var138)->values[2] = (val*) var132;
2363 var139 = BOX_kernel__Int(var_i); /* autobox from Int to Object */
2364 ((struct instance_array__NativeArray*)var138)->values[3] = (val*) var139;
2365 ((void (*)(val*, val*, long))(var136->class->vft[COLOR_array__Array__with_native]))(var136, var138, var137) /* with_native on <var136:Array[Object]>*/;
2366 CHECK_NEW_array__Array(var136);
2367 }
2368 var140 = ((val* (*)(val*))(var136->class->vft[COLOR_string__Object__to_s]))(var136) /* to_s on <var136:Array[Object]>*/;
2369 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var140) /* append on <var_sig:Buffer>*/;
2370 var141 = NEW_abstract_compiler__RuntimeVariable(&type_abstract_compiler__RuntimeVariable);
2371 var142 = NEW_array__Array(&type_array__Arraykernel__Object);
2372 var143 = 3;
2373 ((void (*)(val*, long))(var142->class->vft[COLOR_array__Array__with_capacity]))(var142, var143) /* with_capacity on <var142:Array[Object]>*/;
2374 CHECK_NEW_array__Array(var142);
2375 var_ = var142;
2376 if (varonce144) {
2377 var145 = varonce144;
2378 } else {
2379 var146 = "p";
2380 var147 = 1;
2381 var148 = string__NativeString__to_s_with_length(var146, var147);
2382 var145 = var148;
2383 varonce144 = var145;
2384 }
2385 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var145) /* add on <var_:Array[Object]>*/;
2386 var149 = BOX_kernel__Int(var_i); /* autobox from Int to nullable Object */
2387 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var149) /* add on <var_:Array[Object]>*/;
2388 if (varonce150) {
2389 var151 = varonce150;
2390 } else {
2391 var152 = "";
2392 var153 = 0;
2393 var154 = string__NativeString__to_s_with_length(var152, var153);
2394 var151 = var154;
2395 varonce150 = var151;
2396 }
2397 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var151) /* add on <var_:Array[Object]>*/;
2398 var155 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
2399 ((void (*)(val*, val*, val*, val*))(var141->class->vft[COLOR_abstract_compiler__RuntimeVariable__init]))(var141, var155, var_mtype, var_mtype) /* init on <var141:RuntimeVariable>*/;
2400 CHECK_NEW_abstract_compiler__RuntimeVariable(var141);
2401 var_argvar = var141;
2402 ((void (*)(val*, val*))(var_arguments->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_arguments, var_argvar) /* add on <var_arguments:Array[RuntimeVariable]>*/;
2403 CONTINUE_label: (void)0;
2404 ((void (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__next]))(var95) /* next on <var95:Iterator[nullable Object]>*/;
2405 }
2406 BREAK_label: (void)0;
2407 if (varonce156) {
2408 var157 = varonce156;
2409 } else {
2410 var158 = ")";
2411 var159 = 1;
2412 var160 = string__NativeString__to_s_with_length(var158, var159);
2413 var157 = var160;
2414 varonce156 = var157;
2415 }
2416 ((void (*)(val*, val*))(var_sig->class->vft[COLOR_abstract_collection__Sequence__append]))(var_sig, var157) /* append on <var_sig:Buffer>*/;
2417 if (varonce161) {
2418 var162 = varonce161;
2419 } else {
2420 var163 = ")";
2421 var164 = 1;
2422 var165 = string__NativeString__to_s_with_length(var163, var164);
2423 var162 = var165;
2424 varonce161 = var162;
2425 }
2426 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var162) /* append on <var_comment:Buffer>*/;
2427 var166 = NULL;
2428 if (var_ret == NULL) {
2429 var167 = 0; /* is null */
2430 } else {
2431 var167 = 1; /* arg is null and recv is not */
2432 }
2433 if (var167){
2434 if (varonce168) {
2435 var169 = varonce168;
2436 } else {
2437 var170 = ": ";
2438 var171 = 2;
2439 var172 = string__NativeString__to_s_with_length(var170, var171);
2440 var169 = var172;
2441 varonce168 = var169;
2442 }
2443 var173 = NEW_array__Array(&type_array__Arraykernel__Object);
2444 { /* var173 = array_instance Array[Object] */
2445 var174 = 2;
2446 var175 = NEW_array__NativeArray(var174, &type_array__NativeArraykernel__Object);
2447 ((struct instance_array__NativeArray*)var175)->values[0] = (val*) var169;
2448 ((struct instance_array__NativeArray*)var175)->values[1] = (val*) var_ret;
2449 ((void (*)(val*, val*, long))(var173->class->vft[COLOR_array__Array__with_native]))(var173, var175, var174) /* with_native on <var173:Array[Object]>*/;
2450 CHECK_NEW_array__Array(var173);
2451 }
2452 var176 = ((val* (*)(val*))(var173->class->vft[COLOR_string__Object__to_s]))(var173) /* to_s on <var173:Array[Object]>*/;
2453 ((void (*)(val*, val*))(var_comment->class->vft[COLOR_abstract_collection__Sequence__append]))(var_comment, var176) /* append on <var_comment:Buffer>*/;
2454 } else {
2455 }
2456 var177 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(self) /* c_name on <self:VirtualRuntimeFunction>*/;
2457 if (varonce178) {
2458 var179 = varonce178;
2459 } else {
2460 var180 = ";";
2461 var181 = 1;
2462 var182 = string__NativeString__to_s_with_length(var180, var181);
2463 var179 = var182;
2464 varonce178 = var179;
2465 }
2466 var183 = NEW_array__Array(&type_array__Arraykernel__Object);
2467 { /* var183 = array_instance Array[Object] */
2468 var184 = 2;
2469 var185 = NEW_array__NativeArray(var184, &type_array__NativeArraykernel__Object);
2470 ((struct instance_array__NativeArray*)var185)->values[0] = (val*) var_sig;
2471 ((struct instance_array__NativeArray*)var185)->values[1] = (val*) var179;
2472 ((void (*)(val*, val*, long))(var183->class->vft[COLOR_array__Array__with_native]))(var183, var185, var184) /* with_native on <var183:Array[Object]>*/;
2473 CHECK_NEW_array__Array(var183);
2474 }
2475 var186 = ((val* (*)(val*))(var183->class->vft[COLOR_string__Object__to_s]))(var183) /* to_s on <var183:Array[Object]>*/;
2476 ((void (*)(val*, val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(var_compiler, var177, var186) /* provide_declaration on <var_compiler:AbstractCompiler>*/;
2477 if (varonce187) {
2478 var188 = varonce187;
2479 } else {
2480 var189 = "/* method ";
2481 var190 = 10;
2482 var191 = string__NativeString__to_s_with_length(var189, var190);
2483 var188 = var191;
2484 varonce187 = var188;
2485 }
2486 if (varonce192) {
2487 var193 = varonce192;
2488 } else {
2489 var194 = " for ";
2490 var195 = 5;
2491 var196 = string__NativeString__to_s_with_length(var194, var195);
2492 var193 = var196;
2493 varonce192 = var193;
2494 }
2495 if (varonce197) {
2496 var198 = varonce197;
2497 } else {
2498 var199 = " */";
2499 var200 = 3;
2500 var201 = string__NativeString__to_s_with_length(var199, var200);
2501 var198 = var201;
2502 varonce197 = var198;
2503 }
2504 var202 = NEW_array__Array(&type_array__Arraykernel__Object);
2505 { /* var202 = array_instance Array[Object] */
2506 var203 = 5;
2507 var204 = NEW_array__NativeArray(var203, &type_array__NativeArraykernel__Object);
2508 ((struct instance_array__NativeArray*)var204)->values[0] = (val*) var188;
2509 ((struct instance_array__NativeArray*)var204)->values[1] = (val*) self;
2510 ((struct instance_array__NativeArray*)var204)->values[2] = (val*) var193;
2511 ((struct instance_array__NativeArray*)var204)->values[3] = (val*) var_comment;
2512 ((struct instance_array__NativeArray*)var204)->values[4] = (val*) var198;
2513 ((void (*)(val*, val*, long))(var202->class->vft[COLOR_array__Array__with_native]))(var202, var204, var203) /* with_native on <var202:Array[Object]>*/;
2514 CHECK_NEW_array__Array(var202);
2515 }
2516 var205 = ((val* (*)(val*))(var202->class->vft[COLOR_string__Object__to_s]))(var202) /* to_s on <var202:Array[Object]>*/;
2517 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var205) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
2518 if (varonce206) {
2519 var207 = varonce206;
2520 } else {
2521 var208 = " {";
2522 var209 = 2;
2523 var210 = string__NativeString__to_s_with_length(var208, var209);
2524 var207 = var210;
2525 varonce206 = var207;
2526 }
2527 var211 = NEW_array__Array(&type_array__Arraykernel__Object);
2528 { /* var211 = array_instance Array[Object] */
2529 var212 = 2;
2530 var213 = NEW_array__NativeArray(var212, &type_array__NativeArraykernel__Object);
2531 ((struct instance_array__NativeArray*)var213)->values[0] = (val*) var_sig;
2532 ((struct instance_array__NativeArray*)var213)->values[1] = (val*) var207;
2533 ((void (*)(val*, val*, long))(var211->class->vft[COLOR_array__Array__with_native]))(var211, var213, var212) /* with_native on <var211:Array[Object]>*/;
2534 CHECK_NEW_array__Array(var211);
2535 }
2536 var214 = ((val* (*)(val*))(var211->class->vft[COLOR_string__Object__to_s]))(var211) /* to_s on <var211:Array[Object]>*/;
2537 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var214) /* add_decl on <var_v:AbstractCompilerVisitor>*/;
2538 var215 = NULL;
2539 if (var_ret == NULL) {
2540 var216 = 0; /* is null */
2541 } else {
2542 var216 = 1; /* arg is null and recv is not */
2543 }
2544 if (var216){
2545 var217 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(var_v, var_ret) /* new_var on <var_v:AbstractCompilerVisitor>*/;
2546 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar_61d]))(var_frame, var217) /* returnvar= on <var_frame:Frame>*/;
2547 } else {
2548 }
2549 if (varonce218) {
2550 var219 = varonce218;
2551 } else {
2552 var220 = "RET_LABEL";
2553 var221 = 9;
2554 var222 = string__NativeString__to_s_with_length(var220, var221);
2555 var219 = var222;
2556 varonce218 = var219;
2557 }
2558 var223 = ((val* (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name]))(var_v, var219) /* get_name on <var_v:AbstractCompilerVisitor>*/;
2559 ((void (*)(val*, val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel_61d]))(var_frame, var223) /* returnlabel= on <var_frame:Frame>*/;
2560 var224 = ((val* (*)(val*, val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__call]))(var_v, var_mmethoddef, var_recv, var_arguments) /* call on <var_v:AbstractCompilerVisitor>*/;
2561 var_subret = var224;
2562 var225 = NULL;
2563 if (var_ret == NULL) {
2564 var226 = 0; /* is null */
2565 } else {
2566 var226 = 1; /* arg is null and recv is not */
2567 }
2568 if (var226){
2569 var227 = NULL;
2570 if (var_subret == NULL) {
2571 var228 = 0; /* is null */
2572 } else {
2573 var228 = 1; /* arg is null and recv is not */
2574 }
2575 if (!var228) {
2576 fprintf(stderr, "Runtime error: %s", "Assert failed");
2577 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1759);
2578 exit(1);
2579 }
2580 var229 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
2581 if (var229 == NULL) {
2582 fprintf(stderr, "Runtime error: %s", "Cast failed");
2583 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1760);
2584 exit(1);
2585 }
2586 ((void (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__assign]))(var_v, var229, var_subret) /* assign on <var_v:AbstractCompilerVisitor>*/;
2587 } else {
2588 }
2589 var230 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnlabel]))(var_frame) /* returnlabel on <var_frame:Frame>*/;
2590 if (var230 == NULL) {
2591 fprintf(stderr, "Runtime error: %s", "Cast failed");
2592 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1763);
2593 exit(1);
2594 }
2595 if (varonce231) {
2596 var232 = varonce231;
2597 } else {
2598 var233 = ":;";
2599 var234 = 2;
2600 var235 = string__NativeString__to_s_with_length(var233, var234);
2601 var232 = var235;
2602 varonce231 = var232;
2603 }
2604 var236 = NEW_array__Array(&type_array__Arraykernel__Object);
2605 { /* var236 = array_instance Array[Object] */
2606 var237 = 2;
2607 var238 = NEW_array__NativeArray(var237, &type_array__NativeArraykernel__Object);
2608 ((struct instance_array__NativeArray*)var238)->values[0] = (val*) var230;
2609 ((struct instance_array__NativeArray*)var238)->values[1] = (val*) var232;
2610 ((void (*)(val*, val*, long))(var236->class->vft[COLOR_array__Array__with_native]))(var236, var238, var237) /* with_native on <var236:Array[Object]>*/;
2611 CHECK_NEW_array__Array(var236);
2612 }
2613 var239 = ((val* (*)(val*))(var236->class->vft[COLOR_string__Object__to_s]))(var236) /* to_s on <var236:Array[Object]>*/;
2614 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var239) /* add on <var_v:AbstractCompilerVisitor>*/;
2615 var240 = NULL;
2616 if (var_ret == NULL) {
2617 var241 = 0; /* is null */
2618 } else {
2619 var241 = 1; /* arg is null and recv is not */
2620 }
2621 if (var241){
2622 if (varonce242) {
2623 var243 = varonce242;
2624 } else {
2625 var244 = "return ";
2626 var245 = 7;
2627 var246 = string__NativeString__to_s_with_length(var244, var245);
2628 var243 = var246;
2629 varonce242 = var243;
2630 }
2631 var247 = ((val* (*)(val*))(var_frame->class->vft[COLOR_abstract_compiler__Frame__returnvar]))(var_frame) /* returnvar on <var_frame:Frame>*/;
2632 if (var247 == NULL) {
2633 fprintf(stderr, "Runtime error: %s", "Cast failed");
2634 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1765);
2635 exit(1);
2636 }
2637 if (varonce248) {
2638 var249 = varonce248;
2639 } else {
2640 var250 = ";";
2641 var251 = 1;
2642 var252 = string__NativeString__to_s_with_length(var250, var251);
2643 var249 = var252;
2644 varonce248 = var249;
2645 }
2646 var253 = NEW_array__Array(&type_array__Arraykernel__Object);
2647 { /* var253 = array_instance Array[Object] */
2648 var254 = 3;
2649 var255 = NEW_array__NativeArray(var254, &type_array__NativeArraykernel__Object);
2650 ((struct instance_array__NativeArray*)var255)->values[0] = (val*) var243;
2651 ((struct instance_array__NativeArray*)var255)->values[1] = (val*) var247;
2652 ((struct instance_array__NativeArray*)var255)->values[2] = (val*) var249;
2653 ((void (*)(val*, val*, long))(var253->class->vft[COLOR_array__Array__with_native]))(var253, var255, var254) /* with_native on <var253:Array[Object]>*/;
2654 CHECK_NEW_array__Array(var253);
2655 }
2656 var256 = ((val* (*)(val*))(var253->class->vft[COLOR_string__Object__to_s]))(var253) /* to_s on <var253:Array[Object]>*/;
2657 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var256) /* add on <var_v:AbstractCompilerVisitor>*/;
2658 } else {
2659 }
2660 if (varonce257) {
2661 var258 = varonce257;
2662 } else {
2663 var259 = "}";
2664 var260 = 1;
2665 var261 = string__NativeString__to_s_with_length(var259, var260);
2666 var258 = var261;
2667 varonce257 = var258;
2668 }
2669 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var258) /* add on <var_v:AbstractCompilerVisitor>*/;
2670 RET_LABEL:;
2671 }
2672 /* method separate_compiler#VirtualRuntimeFunction#compile_to_c for (self: Object, AbstractCompiler) */
2673 void VIRTUAL_separate_compiler__VirtualRuntimeFunction__compile_to_c(val* self, val* p0) {
2674 separate_compiler__VirtualRuntimeFunction__compile_to_c(self, p0);
2675 RET_LABEL:;
2676 }
2677 /* method separate_compiler#VirtualRuntimeFunction#call for (self: VirtualRuntimeFunction, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
2678 val* separate_compiler__VirtualRuntimeFunction__call(val* self, val* p0, val* p1) {
2679 val* var /* : nullable RuntimeVariable */;
2680 short int var1 /* : Bool */;
2681 int cltype;
2682 int idtype;
2683 const struct type* type_struct;
2684 const char* var_class_name;
2685 val* var_v /* var v: AbstractCompilerVisitor */;
2686 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2687 /* Covariant cast for argument 0 (v) <p0:AbstractCompilerVisitor> isa VISITOR */
2688 /* <p0:AbstractCompilerVisitor> isa VISITOR */
2689 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractRuntimeFunction_VTVISITOR];
2690 cltype = type_struct->color;
2691 idtype = type_struct->id;
2692 if(cltype >= p0->type->table_size) {
2693 var1 = 0;
2694 } else {
2695 var1 = p0->type->type_table[cltype] == idtype;
2696 }
2697 if (!var1) {
2698 var_class_name = p0 == NULL ? "null" : p0->type->name;
2699 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
2700 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1770);
2701 exit(1);
2702 }
2703 var_v = p0;
2704 var_arguments = p1;
2705 fprintf(stderr, "Runtime error: %s", "Aborted");
2706 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 1771);
2707 exit(1);
2708 RET_LABEL:;
2709 return var;
2710 }
2711 /* method separate_compiler#VirtualRuntimeFunction#call for (self: Object, AbstractCompilerVisitor, Array[RuntimeVariable]): nullable RuntimeVariable */
2712 val* VIRTUAL_separate_compiler__VirtualRuntimeFunction__call(val* self, val* p0, val* p1) {
2713 val* var /* : nullable RuntimeVariable */;
2714 val* var1 /* : nullable RuntimeVariable */;
2715 var1 = separate_compiler__VirtualRuntimeFunction__call(self, p0, p1);
2716 var = var1;
2717 RET_LABEL:;
2718 return var;
2719 }
2720 /* method separate_compiler#MType#const_color for (self: MType): String */
2721 val* separate_compiler__MType__const_color(val* self) {
2722 val* var /* : String */;
2723 val* var1 /* : Array[Object] */;
2724 long var2 /* : Int */;
2725 val* var_ /* var : Array[Object] */;
2726 static val* varonce;
2727 val* var3 /* : String */;
2728 char* var4 /* : NativeString */;
2729 long var5 /* : Int */;
2730 val* var6 /* : String */;
2731 val* var7 /* : String */;
2732 static val* varonce8;
2733 val* var9 /* : String */;
2734 char* var10 /* : NativeString */;
2735 long var11 /* : Int */;
2736 val* var12 /* : String */;
2737 val* var13 /* : String */;
2738 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
2739 var2 = 3;
2740 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
2741 CHECK_NEW_array__Array(var1);
2742 var_ = var1;
2743 if (varonce) {
2744 var3 = varonce;
2745 } else {
2746 var4 = "COLOR_";
2747 var5 = 6;
2748 var6 = string__NativeString__to_s_with_length(var4, var5);
2749 var3 = var6;
2750 varonce = var3;
2751 }
2752 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
2753 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MType__c_name]))(self) /* c_name on <self:MType>*/;
2754 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
2755 if (varonce8) {
2756 var9 = varonce8;
2757 } else {
2758 var10 = "";
2759 var11 = 0;
2760 var12 = string__NativeString__to_s_with_length(var10, var11);
2761 var9 = var12;
2762 varonce8 = var9;
2763 }
2764 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
2765 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
2766 var = var13;
2767 goto RET_LABEL;
2768 RET_LABEL:;
2769 return var;
2770 }
2771 /* method separate_compiler#MType#const_color for (self: Object): String */
2772 val* VIRTUAL_separate_compiler__MType__const_color(val* self) {
2773 val* var /* : String */;
2774 val* var1 /* : String */;
2775 var1 = separate_compiler__MType__const_color(self);
2776 var = var1;
2777 RET_LABEL:;
2778 return var;
2779 }
2780 /* method separate_compiler#MProperty#const_color for (self: MProperty): String */
2781 val* separate_compiler__MProperty__const_color(val* self) {
2782 val* var /* : String */;
2783 val* var1 /* : Array[Object] */;
2784 long var2 /* : Int */;
2785 val* var_ /* var : Array[Object] */;
2786 static val* varonce;
2787 val* var3 /* : String */;
2788 char* var4 /* : NativeString */;
2789 long var5 /* : Int */;
2790 val* var6 /* : String */;
2791 val* var7 /* : String */;
2792 static val* varonce8;
2793 val* var9 /* : String */;
2794 char* var10 /* : NativeString */;
2795 long var11 /* : Int */;
2796 val* var12 /* : String */;
2797 val* var13 /* : String */;
2798 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
2799 var2 = 3;
2800 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
2801 CHECK_NEW_array__Array(var1);
2802 var_ = var1;
2803 if (varonce) {
2804 var3 = varonce;
2805 } else {
2806 var4 = "COLOR_";
2807 var5 = 6;
2808 var6 = string__NativeString__to_s_with_length(var4, var5);
2809 var3 = var6;
2810 varonce = var3;
2811 }
2812 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
2813 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MProperty__c_name]))(self) /* c_name on <self:MProperty>*/;
2814 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
2815 if (varonce8) {
2816 var9 = varonce8;
2817 } else {
2818 var10 = "";
2819 var11 = 0;
2820 var12 = string__NativeString__to_s_with_length(var10, var11);
2821 var9 = var12;
2822 varonce8 = var9;
2823 }
2824 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
2825 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
2826 var = var13;
2827 goto RET_LABEL;
2828 RET_LABEL:;
2829 return var;
2830 }
2831 /* method separate_compiler#MProperty#const_color for (self: Object): String */
2832 val* VIRTUAL_separate_compiler__MProperty__const_color(val* self) {
2833 val* var /* : String */;
2834 val* var1 /* : String */;
2835 var1 = separate_compiler__MProperty__const_color(self);
2836 var = var1;
2837 RET_LABEL:;
2838 return var;
2839 }
2840 /* method separate_compiler#MPropDef#const_color for (self: MPropDef): String */
2841 val* separate_compiler__MPropDef__const_color(val* self) {
2842 val* var /* : String */;
2843 val* var1 /* : Array[Object] */;
2844 long var2 /* : Int */;
2845 val* var_ /* var : Array[Object] */;
2846 static val* varonce;
2847 val* var3 /* : String */;
2848 char* var4 /* : NativeString */;
2849 long var5 /* : Int */;
2850 val* var6 /* : String */;
2851 val* var7 /* : String */;
2852 static val* varonce8;
2853 val* var9 /* : String */;
2854 char* var10 /* : NativeString */;
2855 long var11 /* : Int */;
2856 val* var12 /* : String */;
2857 val* var13 /* : String */;
2858 var1 = NEW_array__Array(&type_array__Arraykernel__Object);
2859 var2 = 3;
2860 ((void (*)(val*, long))(var1->class->vft[COLOR_array__Array__with_capacity]))(var1, var2) /* with_capacity on <var1:Array[Object]>*/;
2861 CHECK_NEW_array__Array(var1);
2862 var_ = var1;
2863 if (varonce) {
2864 var3 = varonce;
2865 } else {
2866 var4 = "COLOR_";
2867 var5 = 6;
2868 var6 = string__NativeString__to_s_with_length(var4, var5);
2869 var3 = var6;
2870 varonce = var3;
2871 }
2872 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var3) /* add on <var_:Array[Object]>*/;
2873 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__MPropDef__c_name]))(self) /* c_name on <self:MPropDef>*/;
2874 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var7) /* add on <var_:Array[Object]>*/;
2875 if (varonce8) {
2876 var9 = varonce8;
2877 } else {
2878 var10 = "";
2879 var11 = 0;
2880 var12 = string__NativeString__to_s_with_length(var10, var11);
2881 var9 = var12;
2882 varonce8 = var9;
2883 }
2884 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var9) /* add on <var_:Array[Object]>*/;
2885 var13 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
2886 var = var13;
2887 goto RET_LABEL;
2888 RET_LABEL:;
2889 return var;
2890 }
2891 /* method separate_compiler#MPropDef#const_color for (self: Object): String */
2892 val* VIRTUAL_separate_compiler__MPropDef__const_color(val* self) {
2893 val* var /* : String */;
2894 val* var1 /* : String */;
2895 var1 = separate_compiler__MPropDef__const_color(self);
2896 var = var1;
2897 RET_LABEL:;
2898 return var;
2899 }