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