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