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