update NOTICE
[nit.git] / c_src / separate_compiler.sep.3.c
1 #include "separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateCompilerVisitor#unbox_extern for (self: Object, RuntimeVariable, MType): RuntimeVariable */
3 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__unbox_extern(val* self, val* p0, val* p1) {
4 val* var /* : RuntimeVariable */;
5 val* var1 /* : RuntimeVariable */;
6 var1 = separate_compiler__SeparateCompilerVisitor__unbox_extern(self, p0, p1);
7 var = var1;
8 RET_LABEL:;
9 return var;
10 }
11 /* method separate_compiler#SeparateCompilerVisitor#box_extern for (self: SeparateCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
12 val* separate_compiler__SeparateCompilerVisitor__box_extern(val* self, val* p0, val* p1) {
13 val* var /* : RuntimeVariable */;
14 val* var_value /* var value: RuntimeVariable */;
15 val* var_mtype /* var mtype: MType */;
16 short int var1 /* : Bool */;
17 short int var2 /* : Bool */;
18 short int var3 /* : Bool */;
19 int cltype;
20 int idtype;
21 short int var_ /* var : Bool */;
22 val* var4 /* : MClass */;
23 val* var6 /* : MClass */;
24 val* var7 /* : MClassKind */;
25 val* var9 /* : MClassKind */;
26 val* var10 /* : MClassKind */;
27 short int var11 /* : Bool */;
28 short int var12 /* : Bool */;
29 val* var_other /* var other: nullable Object */;
30 short int var14 /* : Bool */;
31 short int var16 /* : Bool */;
32 short int var_17 /* var : Bool */;
33 val* var18 /* : MClass */;
34 val* var20 /* : MClass */;
35 val* var21 /* : String */;
36 val* var23 /* : String */;
37 static val* varonce;
38 val* var24 /* : String */;
39 char* var25 /* : NativeString */;
40 long var26 /* : Int */;
41 val* var27 /* : FlatString */;
42 short int var28 /* : Bool */;
43 short int var29 /* : Bool */;
44 val* var_other31 /* var other: nullable Object */;
45 short int var32 /* : Bool */;
46 short int var33 /* : Bool */;
47 short int var34 /* : Bool */;
48 val* var35 /* : AbstractCompiler */;
49 val* var37 /* : AbstractCompiler */;
50 val* var38 /* : MModule */;
51 val* var40 /* : MModule */;
52 val* var41 /* : MClassType */;
53 short int var43 /* : Bool */;
54 val* var44 /* : MClassType */;
55 static val* varonce45;
56 val* var46 /* : String */;
57 char* var47 /* : NativeString */;
58 long var48 /* : Int */;
59 val* var49 /* : FlatString */;
60 val* var50 /* : MClass */;
61 val* var51 /* : MClassType */;
62 val* var53 /* : MClassType */;
63 val* var_valtype /* var valtype: MClassType */;
64 val* var54 /* : RuntimeVariable */;
65 val* var_res /* var res: RuntimeVariable */;
66 short int var55 /* : Bool */;
67 val* var56 /* : AbstractCompiler */;
68 val* var58 /* : AbstractCompiler */;
69 val* var59 /* : nullable RapidTypeAnalysis */;
70 val* var61 /* : nullable RapidTypeAnalysis */;
71 val* var62 /* : null */;
72 short int var63 /* : Bool */;
73 short int var64 /* : Bool */;
74 short int var66 /* : Bool */;
75 short int var67 /* : Bool */;
76 short int var68 /* : Bool */;
77 short int var_69 /* var : Bool */;
78 val* var70 /* : AbstractCompiler */;
79 val* var72 /* : AbstractCompiler */;
80 val* var73 /* : nullable RapidTypeAnalysis */;
81 val* var75 /* : nullable RapidTypeAnalysis */;
82 val* var76 /* : HashSet[MClassType] */;
83 val* var78 /* : HashSet[MClassType] */;
84 val* var79 /* : MType */;
85 val* var81 /* : MType */;
86 short int var82 /* : Bool */;
87 int cltype83;
88 int idtype84;
89 const char* var_class_name;
90 short int var85 /* : Bool */;
91 short int var86 /* : Bool */;
92 static val* varonce87;
93 val* var88 /* : String */;
94 char* var89 /* : NativeString */;
95 long var90 /* : Int */;
96 val* var91 /* : FlatString */;
97 val* var92 /* : MType */;
98 val* var94 /* : MType */;
99 static val* varonce95;
100 val* var96 /* : String */;
101 char* var97 /* : NativeString */;
102 long var98 /* : Int */;
103 val* var99 /* : FlatString */;
104 val* var100 /* : MType */;
105 val* var102 /* : MType */;
106 static val* varonce103;
107 val* var104 /* : String */;
108 char* var105 /* : NativeString */;
109 long var106 /* : Int */;
110 val* var107 /* : FlatString */;
111 val* var108 /* : Array[Object] */;
112 long var109 /* : Int */;
113 val* var110 /* : NativeArray[Object] */;
114 val* var111 /* : String */;
115 static val* varonce112;
116 val* var113 /* : String */;
117 char* var114 /* : NativeString */;
118 long var115 /* : Int */;
119 val* var116 /* : FlatString */;
120 static val* varonce117;
121 val* var118 /* : String */;
122 char* var119 /* : NativeString */;
123 long var120 /* : Int */;
124 val* var121 /* : FlatString */;
125 val* var122 /* : String */;
126 val* var123 /* : Array[Object] */;
127 long var124 /* : Int */;
128 val* var125 /* : NativeArray[Object] */;
129 val* var126 /* : String */;
130 static val* varonce127;
131 val* var128 /* : String */;
132 char* var129 /* : NativeString */;
133 long var130 /* : Int */;
134 val* var131 /* : FlatString */;
135 val* var132 /* : String */;
136 static val* varonce133;
137 val* var134 /* : String */;
138 char* var135 /* : NativeString */;
139 long var136 /* : Int */;
140 val* var137 /* : FlatString */;
141 static val* varonce138;
142 val* var139 /* : String */;
143 char* var140 /* : NativeString */;
144 long var141 /* : Int */;
145 val* var142 /* : FlatString */;
146 val* var143 /* : MType */;
147 val* var145 /* : MType */;
148 static val* varonce146;
149 val* var147 /* : String */;
150 char* var148 /* : NativeString */;
151 long var149 /* : Int */;
152 val* var150 /* : FlatString */;
153 val* var151 /* : Array[Object] */;
154 long var152 /* : Int */;
155 val* var153 /* : NativeArray[Object] */;
156 val* var154 /* : String */;
157 static val* varonce155;
158 val* var156 /* : String */;
159 char* var157 /* : NativeString */;
160 long var158 /* : Int */;
161 val* var159 /* : FlatString */;
162 val* var160 /* : String */;
163 val* var161 /* : Array[Object] */;
164 long var162 /* : Int */;
165 val* var163 /* : NativeArray[Object] */;
166 val* var164 /* : String */;
167 static val* varonce165;
168 val* var166 /* : String */;
169 char* var167 /* : NativeString */;
170 long var168 /* : Int */;
171 val* var169 /* : FlatString */;
172 val* var170 /* : String */;
173 static val* varonce171;
174 val* var172 /* : String */;
175 char* var173 /* : NativeString */;
176 long var174 /* : Int */;
177 val* var175 /* : FlatString */;
178 val* var176 /* : Array[Object] */;
179 long var177 /* : Int */;
180 val* var178 /* : NativeArray[Object] */;
181 val* var179 /* : String */;
182 static val* varonce180;
183 val* var181 /* : String */;
184 char* var182 /* : NativeString */;
185 long var183 /* : Int */;
186 val* var184 /* : FlatString */;
187 val* var185 /* : String */;
188 val* var186 /* : Array[Object] */;
189 long var187 /* : Int */;
190 val* var188 /* : NativeArray[Object] */;
191 val* var189 /* : String */;
192 static val* varonce190;
193 val* var191 /* : String */;
194 char* var192 /* : NativeString */;
195 long var193 /* : Int */;
196 val* var194 /* : FlatString */;
197 val* var195 /* : String */;
198 static val* varonce196;
199 val* var197 /* : String */;
200 char* var198 /* : NativeString */;
201 long var199 /* : Int */;
202 val* var200 /* : FlatString */;
203 val* var201 /* : Array[Object] */;
204 long var202 /* : Int */;
205 val* var203 /* : NativeArray[Object] */;
206 val* var204 /* : String */;
207 var_value = p0;
208 var_mtype = p1;
209 /* <var_mtype:MType> isa MClassType */
210 cltype = type_model__MClassType.color;
211 idtype = type_model__MClassType.id;
212 if(cltype >= var_mtype->type->table_size) {
213 var3 = 0;
214 } else {
215 var3 = var_mtype->type->type_table[cltype] == idtype;
216 }
217 var_ = var3;
218 if (var3){
219 {
220 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
221 var6 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
222 if (unlikely(var6 == NULL)) {
223 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
224 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
225 show_backtrace(1);
226 }
227 var4 = var6;
228 RET_LABEL5:(void)0;
229 }
230 }
231 {
232 { /* Inline model#MClass#kind (var4) on <var4:MClass> */
233 var9 = var4->attrs[COLOR_model__MClass___kind].val; /* _kind on <var4:MClass> */
234 if (unlikely(var9 == NULL)) {
235 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
236 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 371);
237 show_backtrace(1);
238 }
239 var7 = var9;
240 RET_LABEL8:(void)0;
241 }
242 }
243 {
244 var10 = model__Object__extern_kind(self);
245 }
246 {
247 { /* Inline kernel#Object#== (var7,var10) on <var7:MClassKind> */
248 var_other = var10;
249 {
250 { /* Inline kernel#Object#is_same_instance (var7,var_other) on <var7:MClassKind> */
251 var16 = var7 == var_other;
252 var14 = var16;
253 goto RET_LABEL15;
254 RET_LABEL15:(void)0;
255 }
256 }
257 var12 = var14;
258 goto RET_LABEL13;
259 RET_LABEL13:(void)0;
260 }
261 var11 = var12;
262 }
263 var2 = var11;
264 } else {
265 var2 = var_;
266 }
267 var_17 = var2;
268 if (var2){
269 {
270 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MType(MClassType)> */
271 var20 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MType(MClassType)> */
272 if (unlikely(var20 == NULL)) {
273 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
274 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
275 show_backtrace(1);
276 }
277 var18 = var20;
278 RET_LABEL19:(void)0;
279 }
280 }
281 {
282 { /* Inline model#MClass#name (var18) on <var18:MClass> */
283 var23 = var18->attrs[COLOR_model__MClass___name].val; /* _name on <var18:MClass> */
284 if (unlikely(var23 == NULL)) {
285 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
286 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 352);
287 show_backtrace(1);
288 }
289 var21 = var23;
290 RET_LABEL22:(void)0;
291 }
292 }
293 if (varonce) {
294 var24 = varonce;
295 } else {
296 var25 = "NativeString";
297 var26 = 12;
298 var27 = string__NativeString__to_s_with_length(var25, var26);
299 var24 = var27;
300 varonce = var24;
301 }
302 {
303 { /* Inline kernel#Object#!= (var21,var24) on <var21:String> */
304 var_other31 = var24;
305 {
306 var33 = ((short int (*)(val*, val*))(var21->class->vft[COLOR_kernel__Object___61d_61d]))(var21, var_other31) /* == on <var21:String>*/;
307 var32 = var33;
308 }
309 var34 = !var32;
310 var29 = var34;
311 goto RET_LABEL30;
312 RET_LABEL30:(void)0;
313 }
314 var28 = var29;
315 }
316 var1 = var28;
317 } else {
318 var1 = var_17;
319 }
320 if (var1){
321 {
322 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
323 var37 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
324 if (unlikely(var37 == NULL)) {
325 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
326 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
327 show_backtrace(1);
328 }
329 var35 = var37;
330 RET_LABEL36:(void)0;
331 }
332 }
333 {
334 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var35) on <var35:AbstractCompiler(SeparateCompiler)> */
335 var40 = var35->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var35:AbstractCompiler(SeparateCompiler)> */
336 if (unlikely(var40 == NULL)) {
337 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
338 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
339 show_backtrace(1);
340 }
341 var38 = var40;
342 RET_LABEL39:(void)0;
343 }
344 }
345 {
346 { /* Inline model#MModule#pointer_type (var38) on <var38:MModule> */
347 var43 = var38->attrs[COLOR_model__MModule___pointer_type].val != NULL; /* _pointer_type on <var38:MModule> */
348 if(likely(var43)) {
349 var44 = var38->attrs[COLOR_model__MModule___pointer_type].val; /* _pointer_type on <var38:MModule> */
350 if (unlikely(var44 == NULL)) {
351 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _pointer_type");
352 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 217);
353 show_backtrace(1);
354 }
355 } else {
356 if (varonce45) {
357 var46 = varonce45;
358 } else {
359 var47 = "Pointer";
360 var48 = 7;
361 var49 = string__NativeString__to_s_with_length(var47, var48);
362 var46 = var49;
363 varonce45 = var46;
364 }
365 {
366 var50 = model__MModule__get_primitive_class(var38, var46);
367 }
368 {
369 { /* Inline model#MClass#mclass_type (var50) on <var50:MClass> */
370 var53 = var50->attrs[COLOR_model__MClass___mclass_type].val; /* _mclass_type on <var50:MClass> */
371 if (unlikely(var53 == NULL)) {
372 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
373 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 435);
374 show_backtrace(1);
375 }
376 var51 = var53;
377 RET_LABEL52:(void)0;
378 }
379 }
380 var38->attrs[COLOR_model__MModule___pointer_type].val = var51; /* _pointer_type on <var38:MModule> */
381 var44 = var51;
382 }
383 var41 = var44;
384 RET_LABEL42:(void)0;
385 }
386 }
387 var_valtype = var41;
388 {
389 var54 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_mtype);
390 }
391 var_res = var54;
392 {
393 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
394 var58 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
395 if (unlikely(var58 == NULL)) {
396 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
397 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
398 show_backtrace(1);
399 }
400 var56 = var58;
401 RET_LABEL57:(void)0;
402 }
403 }
404 {
405 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var56) on <var56:AbstractCompiler(SeparateCompiler)> */
406 var61 = var56->attrs[COLOR_separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var56:AbstractCompiler(SeparateCompiler)> */
407 var59 = var61;
408 RET_LABEL60:(void)0;
409 }
410 }
411 var62 = NULL;
412 if (var59 == NULL) {
413 var63 = 0; /* is null */
414 } else {
415 var63 = 1; /* arg is null and recv is not */
416 }
417 if (0) {
418 { /* Inline kernel#Object#!= (var59,var62) on <var59:nullable RapidTypeAnalysis> */
419 var_other31 = var62;
420 {
421 var67 = ((short int (*)(val*, val*))(var59->class->vft[COLOR_kernel__Object___61d_61d]))(var59, var_other31) /* == on <var59:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/;
422 var66 = var67;
423 }
424 var68 = !var66;
425 var64 = var68;
426 goto RET_LABEL65;
427 RET_LABEL65:(void)0;
428 }
429 var63 = var64;
430 }
431 var_69 = var63;
432 if (var63){
433 {
434 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
435 var72 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
436 if (unlikely(var72 == NULL)) {
437 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
438 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
439 show_backtrace(1);
440 }
441 var70 = var72;
442 RET_LABEL71:(void)0;
443 }
444 }
445 {
446 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var70) on <var70:AbstractCompiler(SeparateCompiler)> */
447 var75 = var70->attrs[COLOR_separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var70:AbstractCompiler(SeparateCompiler)> */
448 var73 = var75;
449 RET_LABEL74:(void)0;
450 }
451 }
452 if (var73 == NULL) {
453 PRINT_ERROR("Runtime error: %s", "Receiver is null");
454 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1032);
455 show_backtrace(1);
456 } else {
457 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (var73) on <var73:nullable RapidTypeAnalysis> */
458 if (unlikely(var73 == NULL)) {
459 PRINT_ERROR("Runtime error: %s", "Receiver is null");
460 PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53);
461 show_backtrace(1);
462 }
463 var78 = var73->attrs[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <var73:nullable RapidTypeAnalysis> */
464 if (unlikely(var78 == NULL)) {
465 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
466 PRINT_ERROR(" (%s:%d)\n", "rapid_type_analysis.nit", 53);
467 show_backtrace(1);
468 }
469 var76 = var78;
470 RET_LABEL77:(void)0;
471 }
472 }
473 {
474 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
475 var81 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
476 if (unlikely(var81 == NULL)) {
477 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
478 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
479 show_backtrace(1);
480 }
481 var79 = var81;
482 RET_LABEL80:(void)0;
483 }
484 }
485 /* <var79:MType> isa MClassType */
486 cltype83 = type_model__MClassType.color;
487 idtype84 = type_model__MClassType.id;
488 if(cltype83 >= var79->type->table_size) {
489 var82 = 0;
490 } else {
491 var82 = var79->type->type_table[cltype83] == idtype84;
492 }
493 if (unlikely(!var82)) {
494 var_class_name = var79 == NULL ? "null" : var79->type->name;
495 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
496 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1032);
497 show_backtrace(1);
498 }
499 {
500 var85 = hash_collection__HashSet__has(var76, var79);
501 }
502 var86 = !var85;
503 var55 = var86;
504 } else {
505 var55 = var_69;
506 }
507 if (var55){
508 if (varonce87) {
509 var88 = varonce87;
510 } else {
511 var89 = "/*no boxing of ";
512 var90 = 15;
513 var91 = string__NativeString__to_s_with_length(var89, var90);
514 var88 = var91;
515 varonce87 = var88;
516 }
517 {
518 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
519 var94 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
520 if (unlikely(var94 == NULL)) {
521 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
522 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
523 show_backtrace(1);
524 }
525 var92 = var94;
526 RET_LABEL93:(void)0;
527 }
528 }
529 if (varonce95) {
530 var96 = varonce95;
531 } else {
532 var97 = ": ";
533 var98 = 2;
534 var99 = string__NativeString__to_s_with_length(var97, var98);
535 var96 = var99;
536 varonce95 = var96;
537 }
538 {
539 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
540 var102 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
541 if (unlikely(var102 == NULL)) {
542 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
543 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
544 show_backtrace(1);
545 }
546 var100 = var102;
547 RET_LABEL101:(void)0;
548 }
549 }
550 if (varonce103) {
551 var104 = varonce103;
552 } else {
553 var105 = " is not live! */";
554 var106 = 16;
555 var107 = string__NativeString__to_s_with_length(var105, var106);
556 var104 = var107;
557 varonce103 = var104;
558 }
559 var108 = NEW_array__Array(&type_array__Arraykernel__Object);
560 { /* var108 = array_instance Array[Object] */
561 var109 = 5;
562 var110 = NEW_array__NativeArray(var109, &type_array__NativeArraykernel__Object);
563 ((struct instance_array__NativeArray*)var110)->values[0] = (val*) var88;
564 ((struct instance_array__NativeArray*)var110)->values[1] = (val*) var92;
565 ((struct instance_array__NativeArray*)var110)->values[2] = (val*) var96;
566 ((struct instance_array__NativeArray*)var110)->values[3] = (val*) var100;
567 ((struct instance_array__NativeArray*)var110)->values[4] = (val*) var104;
568 {
569 ((void (*)(val*, val*, long))(var108->class->vft[COLOR_array__Array__with_native]))(var108, var110, var109) /* with_native on <var108:Array[Object]>*/;
570 }
571 }
572 {
573 var111 = ((val* (*)(val*))(var108->class->vft[COLOR_string__Object__to_s]))(var108) /* to_s on <var108:Array[Object]>*/;
574 }
575 {
576 abstract_compiler__AbstractCompilerVisitor__add(self, var111); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
577 }
578 if (varonce112) {
579 var113 = varonce112;
580 } else {
581 var114 = "PRINT_ERROR(\"Dead code executed!\\n\"); show_backtrace(1);";
582 var115 = 56;
583 var116 = string__NativeString__to_s_with_length(var114, var115);
584 var113 = var116;
585 varonce112 = var113;
586 }
587 {
588 abstract_compiler__AbstractCompilerVisitor__add(self, var113); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
589 }
590 var = var_res;
591 goto RET_LABEL;
592 } else {
593 }
594 if (varonce117) {
595 var118 = varonce117;
596 } else {
597 var119 = "BOX_";
598 var120 = 4;
599 var121 = string__NativeString__to_s_with_length(var119, var120);
600 var118 = var121;
601 varonce117 = var118;
602 }
603 {
604 var122 = ((val* (*)(val*))(var_valtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_valtype) /* c_name on <var_valtype:MClassType>*/;
605 }
606 var123 = NEW_array__Array(&type_array__Arraykernel__Object);
607 { /* var123 = array_instance Array[Object] */
608 var124 = 2;
609 var125 = NEW_array__NativeArray(var124, &type_array__NativeArraykernel__Object);
610 ((struct instance_array__NativeArray*)var125)->values[0] = (val*) var118;
611 ((struct instance_array__NativeArray*)var125)->values[1] = (val*) var122;
612 {
613 ((void (*)(val*, val*, long))(var123->class->vft[COLOR_array__Array__with_native]))(var123, var125, var124) /* with_native on <var123:Array[Object]>*/;
614 }
615 }
616 {
617 var126 = ((val* (*)(val*))(var123->class->vft[COLOR_string__Object__to_s]))(var123) /* to_s on <var123:Array[Object]>*/;
618 }
619 {
620 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var126); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
621 }
622 if (varonce127) {
623 var128 = varonce127;
624 } else {
625 var129 = " = BOX_";
626 var130 = 7;
627 var131 = string__NativeString__to_s_with_length(var129, var130);
628 var128 = var131;
629 varonce127 = var128;
630 }
631 {
632 var132 = ((val* (*)(val*))(var_valtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_valtype) /* c_name on <var_valtype:MClassType>*/;
633 }
634 if (varonce133) {
635 var134 = varonce133;
636 } else {
637 var135 = "(";
638 var136 = 1;
639 var137 = string__NativeString__to_s_with_length(var135, var136);
640 var134 = var137;
641 varonce133 = var134;
642 }
643 if (varonce138) {
644 var139 = varonce138;
645 } else {
646 var140 = "); /* boxing ";
647 var141 = 13;
648 var142 = string__NativeString__to_s_with_length(var140, var141);
649 var139 = var142;
650 varonce138 = var139;
651 }
652 {
653 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
654 var145 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
655 if (unlikely(var145 == NULL)) {
656 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
657 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
658 show_backtrace(1);
659 }
660 var143 = var145;
661 RET_LABEL144:(void)0;
662 }
663 }
664 if (varonce146) {
665 var147 = varonce146;
666 } else {
667 var148 = " */";
668 var149 = 3;
669 var150 = string__NativeString__to_s_with_length(var148, var149);
670 var147 = var150;
671 varonce146 = var147;
672 }
673 var151 = NEW_array__Array(&type_array__Arraykernel__Object);
674 { /* var151 = array_instance Array[Object] */
675 var152 = 8;
676 var153 = NEW_array__NativeArray(var152, &type_array__NativeArraykernel__Object);
677 ((struct instance_array__NativeArray*)var153)->values[0] = (val*) var_res;
678 ((struct instance_array__NativeArray*)var153)->values[1] = (val*) var128;
679 ((struct instance_array__NativeArray*)var153)->values[2] = (val*) var132;
680 ((struct instance_array__NativeArray*)var153)->values[3] = (val*) var134;
681 ((struct instance_array__NativeArray*)var153)->values[4] = (val*) var_value;
682 ((struct instance_array__NativeArray*)var153)->values[5] = (val*) var139;
683 ((struct instance_array__NativeArray*)var153)->values[6] = (val*) var143;
684 ((struct instance_array__NativeArray*)var153)->values[7] = (val*) var147;
685 {
686 ((void (*)(val*, val*, long))(var151->class->vft[COLOR_array__Array__with_native]))(var151, var153, var152) /* with_native on <var151:Array[Object]>*/;
687 }
688 }
689 {
690 var154 = ((val* (*)(val*))(var151->class->vft[COLOR_string__Object__to_s]))(var151) /* to_s on <var151:Array[Object]>*/;
691 }
692 {
693 abstract_compiler__AbstractCompilerVisitor__add(self, var154); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
694 }
695 if (varonce155) {
696 var156 = varonce155;
697 } else {
698 var157 = "type_";
699 var158 = 5;
700 var159 = string__NativeString__to_s_with_length(var157, var158);
701 var156 = var159;
702 varonce155 = var156;
703 }
704 {
705 var160 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
706 }
707 var161 = NEW_array__Array(&type_array__Arraykernel__Object);
708 { /* var161 = array_instance Array[Object] */
709 var162 = 2;
710 var163 = NEW_array__NativeArray(var162, &type_array__NativeArraykernel__Object);
711 ((struct instance_array__NativeArray*)var163)->values[0] = (val*) var156;
712 ((struct instance_array__NativeArray*)var163)->values[1] = (val*) var160;
713 {
714 ((void (*)(val*, val*, long))(var161->class->vft[COLOR_array__Array__with_native]))(var161, var163, var162) /* with_native on <var161:Array[Object]>*/;
715 }
716 }
717 {
718 var164 = ((val* (*)(val*))(var161->class->vft[COLOR_string__Object__to_s]))(var161) /* to_s on <var161:Array[Object]>*/;
719 }
720 {
721 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var164); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
722 }
723 if (varonce165) {
724 var166 = varonce165;
725 } else {
726 var167 = "->type = &type_";
727 var168 = 15;
728 var169 = string__NativeString__to_s_with_length(var167, var168);
729 var166 = var169;
730 varonce165 = var166;
731 }
732 {
733 var170 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
734 }
735 if (varonce171) {
736 var172 = varonce171;
737 } else {
738 var173 = ";";
739 var174 = 1;
740 var175 = string__NativeString__to_s_with_length(var173, var174);
741 var172 = var175;
742 varonce171 = var172;
743 }
744 var176 = NEW_array__Array(&type_array__Arraykernel__Object);
745 { /* var176 = array_instance Array[Object] */
746 var177 = 4;
747 var178 = NEW_array__NativeArray(var177, &type_array__NativeArraykernel__Object);
748 ((struct instance_array__NativeArray*)var178)->values[0] = (val*) var_res;
749 ((struct instance_array__NativeArray*)var178)->values[1] = (val*) var166;
750 ((struct instance_array__NativeArray*)var178)->values[2] = (val*) var170;
751 ((struct instance_array__NativeArray*)var178)->values[3] = (val*) var172;
752 {
753 ((void (*)(val*, val*, long))(var176->class->vft[COLOR_array__Array__with_native]))(var176, var178, var177) /* with_native on <var176:Array[Object]>*/;
754 }
755 }
756 {
757 var179 = ((val* (*)(val*))(var176->class->vft[COLOR_string__Object__to_s]))(var176) /* to_s on <var176:Array[Object]>*/;
758 }
759 {
760 abstract_compiler__AbstractCompilerVisitor__add(self, var179); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
761 }
762 if (varonce180) {
763 var181 = varonce180;
764 } else {
765 var182 = "class_";
766 var183 = 6;
767 var184 = string__NativeString__to_s_with_length(var182, var183);
768 var181 = var184;
769 varonce180 = var181;
770 }
771 {
772 var185 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
773 }
774 var186 = NEW_array__Array(&type_array__Arraykernel__Object);
775 { /* var186 = array_instance Array[Object] */
776 var187 = 2;
777 var188 = NEW_array__NativeArray(var187, &type_array__NativeArraykernel__Object);
778 ((struct instance_array__NativeArray*)var188)->values[0] = (val*) var181;
779 ((struct instance_array__NativeArray*)var188)->values[1] = (val*) var185;
780 {
781 ((void (*)(val*, val*, long))(var186->class->vft[COLOR_array__Array__with_native]))(var186, var188, var187) /* with_native on <var186:Array[Object]>*/;
782 }
783 }
784 {
785 var189 = ((val* (*)(val*))(var186->class->vft[COLOR_string__Object__to_s]))(var186) /* to_s on <var186:Array[Object]>*/;
786 }
787 {
788 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var189); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
789 }
790 if (varonce190) {
791 var191 = varonce190;
792 } else {
793 var192 = "->class = &class_";
794 var193 = 17;
795 var194 = string__NativeString__to_s_with_length(var192, var193);
796 var191 = var194;
797 varonce190 = var191;
798 }
799 {
800 var195 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
801 }
802 if (varonce196) {
803 var197 = varonce196;
804 } else {
805 var198 = ";";
806 var199 = 1;
807 var200 = string__NativeString__to_s_with_length(var198, var199);
808 var197 = var200;
809 varonce196 = var197;
810 }
811 var201 = NEW_array__Array(&type_array__Arraykernel__Object);
812 { /* var201 = array_instance Array[Object] */
813 var202 = 4;
814 var203 = NEW_array__NativeArray(var202, &type_array__NativeArraykernel__Object);
815 ((struct instance_array__NativeArray*)var203)->values[0] = (val*) var_res;
816 ((struct instance_array__NativeArray*)var203)->values[1] = (val*) var191;
817 ((struct instance_array__NativeArray*)var203)->values[2] = (val*) var195;
818 ((struct instance_array__NativeArray*)var203)->values[3] = (val*) var197;
819 {
820 ((void (*)(val*, val*, long))(var201->class->vft[COLOR_array__Array__with_native]))(var201, var203, var202) /* with_native on <var201:Array[Object]>*/;
821 }
822 }
823 {
824 var204 = ((val* (*)(val*))(var201->class->vft[COLOR_string__Object__to_s]))(var201) /* to_s on <var201:Array[Object]>*/;
825 }
826 {
827 abstract_compiler__AbstractCompilerVisitor__add(self, var204); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
828 }
829 var = var_res;
830 goto RET_LABEL;
831 } else {
832 var = var_value;
833 goto RET_LABEL;
834 }
835 RET_LABEL:;
836 return var;
837 }
838 /* method separate_compiler#SeparateCompilerVisitor#box_extern for (self: Object, RuntimeVariable, MType): RuntimeVariable */
839 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__box_extern(val* self, val* p0, val* p1) {
840 val* var /* : RuntimeVariable */;
841 val* var1 /* : RuntimeVariable */;
842 var1 = separate_compiler__SeparateCompilerVisitor__box_extern(self, p0, p1);
843 var = var1;
844 RET_LABEL:;
845 return var;
846 }
847 /* method separate_compiler#SeparateCompilerVisitor#type_info for (self: SeparateCompilerVisitor, RuntimeVariable): String */
848 val* separate_compiler__SeparateCompilerVisitor__type_info(val* self, val* p0) {
849 val* var /* : String */;
850 val* var_value /* var value: RuntimeVariable */;
851 val* var1 /* : MType */;
852 val* var3 /* : MType */;
853 val* var4 /* : String */;
854 static val* varonce;
855 val* var5 /* : String */;
856 char* var6 /* : NativeString */;
857 long var7 /* : Int */;
858 val* var8 /* : FlatString */;
859 short int var9 /* : Bool */;
860 short int var10 /* : Bool */;
861 static val* varonce11;
862 val* var12 /* : String */;
863 char* var13 /* : NativeString */;
864 long var14 /* : Int */;
865 val* var15 /* : FlatString */;
866 val* var16 /* : Array[Object] */;
867 long var17 /* : Int */;
868 val* var18 /* : NativeArray[Object] */;
869 val* var19 /* : String */;
870 val* var20 /* : AbstractCompiler */;
871 val* var22 /* : AbstractCompiler */;
872 val* var23 /* : Set[MType] */;
873 val* var25 /* : Set[MType] */;
874 val* var26 /* : MType */;
875 val* var28 /* : MType */;
876 static val* varonce29;
877 val* var30 /* : String */;
878 char* var31 /* : NativeString */;
879 long var32 /* : Int */;
880 val* var33 /* : FlatString */;
881 val* var34 /* : MType */;
882 val* var36 /* : MType */;
883 val* var37 /* : String */;
884 val* var38 /* : Array[Object] */;
885 long var39 /* : Int */;
886 val* var40 /* : NativeArray[Object] */;
887 val* var41 /* : String */;
888 static val* varonce42;
889 val* var43 /* : String */;
890 char* var44 /* : NativeString */;
891 long var45 /* : Int */;
892 val* var46 /* : FlatString */;
893 val* var47 /* : MType */;
894 val* var49 /* : MType */;
895 val* var50 /* : String */;
896 static val* varonce51;
897 val* var52 /* : String */;
898 char* var53 /* : NativeString */;
899 long var54 /* : Int */;
900 val* var55 /* : FlatString */;
901 val* var56 /* : Array[Object] */;
902 long var57 /* : Int */;
903 val* var58 /* : NativeArray[Object] */;
904 val* var59 /* : String */;
905 var_value = p0;
906 {
907 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
908 var3 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
909 if (unlikely(var3 == NULL)) {
910 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
911 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
912 show_backtrace(1);
913 }
914 var1 = var3;
915 RET_LABEL2:(void)0;
916 }
917 }
918 {
919 var4 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var1) /* ctype on <var1:MType>*/;
920 }
921 if (varonce) {
922 var5 = varonce;
923 } else {
924 var6 = "val*";
925 var7 = 4;
926 var8 = string__NativeString__to_s_with_length(var6, var7);
927 var5 = var8;
928 varonce = var5;
929 }
930 {
931 var10 = string__FlatString___61d_61d(var4, var5);
932 var9 = var10;
933 }
934 if (var9){
935 if (varonce11) {
936 var12 = varonce11;
937 } else {
938 var13 = "->type";
939 var14 = 6;
940 var15 = string__NativeString__to_s_with_length(var13, var14);
941 var12 = var15;
942 varonce11 = var12;
943 }
944 var16 = NEW_array__Array(&type_array__Arraykernel__Object);
945 { /* var16 = array_instance Array[Object] */
946 var17 = 2;
947 var18 = NEW_array__NativeArray(var17, &type_array__NativeArraykernel__Object);
948 ((struct instance_array__NativeArray*)var18)->values[0] = (val*) var_value;
949 ((struct instance_array__NativeArray*)var18)->values[1] = (val*) var12;
950 {
951 ((void (*)(val*, val*, long))(var16->class->vft[COLOR_array__Array__with_native]))(var16, var18, var17) /* with_native on <var16:Array[Object]>*/;
952 }
953 }
954 {
955 var19 = ((val* (*)(val*))(var16->class->vft[COLOR_string__Object__to_s]))(var16) /* to_s on <var16:Array[Object]>*/;
956 }
957 var = var19;
958 goto RET_LABEL;
959 } else {
960 {
961 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
962 var22 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
963 if (unlikely(var22 == NULL)) {
964 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
965 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
966 show_backtrace(1);
967 }
968 var20 = var22;
969 RET_LABEL21:(void)0;
970 }
971 }
972 {
973 { /* Inline separate_compiler#SeparateCompiler#undead_types (var20) on <var20:AbstractCompiler(SeparateCompiler)> */
974 var25 = var20->attrs[COLOR_separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var20:AbstractCompiler(SeparateCompiler)> */
975 if (unlikely(var25 == NULL)) {
976 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
977 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 156);
978 show_backtrace(1);
979 }
980 var23 = var25;
981 RET_LABEL24:(void)0;
982 }
983 }
984 {
985 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
986 var28 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
987 if (unlikely(var28 == NULL)) {
988 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
989 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
990 show_backtrace(1);
991 }
992 var26 = var28;
993 RET_LABEL27:(void)0;
994 }
995 }
996 {
997 ((void (*)(val*, val*))(var23->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var23, var26) /* add on <var23:Set[MType]>*/;
998 }
999 if (varonce29) {
1000 var30 = varonce29;
1001 } else {
1002 var31 = "type_";
1003 var32 = 5;
1004 var33 = string__NativeString__to_s_with_length(var31, var32);
1005 var30 = var33;
1006 varonce29 = var30;
1007 }
1008 {
1009 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1010 var36 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1011 if (unlikely(var36 == NULL)) {
1012 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1013 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
1014 show_backtrace(1);
1015 }
1016 var34 = var36;
1017 RET_LABEL35:(void)0;
1018 }
1019 }
1020 {
1021 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_abstract_compiler__MType__c_name]))(var34) /* c_name on <var34:MType>*/;
1022 }
1023 var38 = NEW_array__Array(&type_array__Arraykernel__Object);
1024 { /* var38 = array_instance Array[Object] */
1025 var39 = 2;
1026 var40 = NEW_array__NativeArray(var39, &type_array__NativeArraykernel__Object);
1027 ((struct instance_array__NativeArray*)var40)->values[0] = (val*) var30;
1028 ((struct instance_array__NativeArray*)var40)->values[1] = (val*) var37;
1029 {
1030 ((void (*)(val*, val*, long))(var38->class->vft[COLOR_array__Array__with_native]))(var38, var40, var39) /* with_native on <var38:Array[Object]>*/;
1031 }
1032 }
1033 {
1034 var41 = ((val* (*)(val*))(var38->class->vft[COLOR_string__Object__to_s]))(var38) /* to_s on <var38:Array[Object]>*/;
1035 }
1036 {
1037 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var41); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
1038 }
1039 if (varonce42) {
1040 var43 = varonce42;
1041 } else {
1042 var44 = "(&type_";
1043 var45 = 7;
1044 var46 = string__NativeString__to_s_with_length(var44, var45);
1045 var43 = var46;
1046 varonce42 = var43;
1047 }
1048 {
1049 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_value) on <var_value:RuntimeVariable> */
1050 var49 = var_value->attrs[COLOR_abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_value:RuntimeVariable> */
1051 if (unlikely(var49 == NULL)) {
1052 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
1053 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1634);
1054 show_backtrace(1);
1055 }
1056 var47 = var49;
1057 RET_LABEL48:(void)0;
1058 }
1059 }
1060 {
1061 var50 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_compiler__MType__c_name]))(var47) /* c_name on <var47:MType>*/;
1062 }
1063 if (varonce51) {
1064 var52 = varonce51;
1065 } else {
1066 var53 = ")";
1067 var54 = 1;
1068 var55 = string__NativeString__to_s_with_length(var53, var54);
1069 var52 = var55;
1070 varonce51 = var52;
1071 }
1072 var56 = NEW_array__Array(&type_array__Arraykernel__Object);
1073 { /* var56 = array_instance Array[Object] */
1074 var57 = 3;
1075 var58 = NEW_array__NativeArray(var57, &type_array__NativeArraykernel__Object);
1076 ((struct instance_array__NativeArray*)var58)->values[0] = (val*) var43;
1077 ((struct instance_array__NativeArray*)var58)->values[1] = (val*) var50;
1078 ((struct instance_array__NativeArray*)var58)->values[2] = (val*) var52;
1079 {
1080 ((void (*)(val*, val*, long))(var56->class->vft[COLOR_array__Array__with_native]))(var56, var58, var57) /* with_native on <var56:Array[Object]>*/;
1081 }
1082 }
1083 {
1084 var59 = ((val* (*)(val*))(var56->class->vft[COLOR_string__Object__to_s]))(var56) /* to_s on <var56:Array[Object]>*/;
1085 }
1086 var = var59;
1087 goto RET_LABEL;
1088 }
1089 RET_LABEL:;
1090 return var;
1091 }
1092 /* method separate_compiler#SeparateCompilerVisitor#type_info for (self: Object, RuntimeVariable): String */
1093 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__type_info(val* self, val* p0) {
1094 val* var /* : String */;
1095 val* var1 /* : String */;
1096 var1 = separate_compiler__SeparateCompilerVisitor__type_info(self, p0);
1097 var = var1;
1098 RET_LABEL:;
1099 return var;
1100 }
1101 /* method separate_compiler#SeparateCompilerVisitor#compile_callsite for (self: SeparateCompilerVisitor, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
1102 val* separate_compiler__SeparateCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
1103 val* var /* : nullable RuntimeVariable */;
1104 val* var_callsite /* var callsite: CallSite */;
1105 val* var_args /* var args: Array[RuntimeVariable] */;
1106 val* var1 /* : AbstractCompiler */;
1107 val* var3 /* : AbstractCompiler */;
1108 val* var4 /* : nullable RapidTypeAnalysis */;
1109 val* var6 /* : nullable RapidTypeAnalysis */;
1110 val* var_rta /* var rta: nullable RapidTypeAnalysis */;
1111 val* var7 /* : MMethod */;
1112 val* var9 /* : MMethod */;
1113 val* var_mmethod /* var mmethod: MMethod */;
1114 short int var10 /* : Bool */;
1115 short int var11 /* : Bool */;
1116 val* var12 /* : AbstractCompiler */;
1117 val* var14 /* : AbstractCompiler */;
1118 val* var15 /* : ModelBuilder */;
1119 val* var17 /* : ModelBuilder */;
1120 val* var18 /* : ToolContext */;
1121 val* var20 /* : ToolContext */;
1122 val* var21 /* : OptionBool */;
1123 val* var23 /* : OptionBool */;
1124 val* var24 /* : nullable Object */;
1125 val* var26 /* : nullable Object */;
1126 short int var27 /* : Bool */;
1127 short int var_ /* var : Bool */;
1128 val* var28 /* : null */;
1129 short int var29 /* : Bool */;
1130 short int var30 /* : Bool */;
1131 val* var_other /* var other: nullable Object */;
1132 short int var32 /* : Bool */;
1133 short int var33 /* : Bool */;
1134 short int var34 /* : Bool */;
1135 short int var_35 /* var : Bool */;
1136 short int var36 /* : Bool */;
1137 short int var38 /* : Bool */;
1138 short int var39 /* : Bool */;
1139 val* var40 /* : Set[MMethodDef] */;
1140 val* var_tgs /* var tgs: Set[MMethodDef] */;
1141 long var41 /* : Int */;
1142 long var42 /* : Int */;
1143 short int var43 /* : Bool */;
1144 short int var44 /* : Bool */;
1145 short int var46 /* : Bool */;
1146 val* var47 /* : nullable RuntimeVariable */;
1147 val* var_res0 /* var res0: nullable RuntimeVariable */;
1148 val* var48 /* : nullable Object */;
1149 val* var49 /* : nullable Object */;
1150 val* var50 /* : MClassDef */;
1151 val* var52 /* : MClassDef */;
1152 val* var53 /* : MClassType */;
1153 val* var55 /* : MClassType */;
1154 val* var56 /* : nullable RuntimeVariable */;
1155 val* var_res /* var res: nullable RuntimeVariable */;
1156 val* var57 /* : null */;
1157 short int var58 /* : Bool */;
1158 short int var59 /* : Bool */;
1159 short int var61 /* : Bool */;
1160 short int var62 /* : Bool */;
1161 short int var63 /* : Bool */;
1162 val* var64 /* : null */;
1163 short int var65 /* : Bool */;
1164 short int var66 /* : Bool */;
1165 short int var68 /* : Bool */;
1166 short int var69 /* : Bool */;
1167 short int var70 /* : Bool */;
1168 static val* varonce;
1169 val* var71 /* : String */;
1170 char* var72 /* : NativeString */;
1171 long var73 /* : Int */;
1172 val* var74 /* : FlatString */;
1173 val* var75 /* : nullable RuntimeVariable */;
1174 var_callsite = p0;
1175 var_args = p1;
1176 {
1177 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1178 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1179 if (unlikely(var3 == NULL)) {
1180 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1181 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1182 show_backtrace(1);
1183 }
1184 var1 = var3;
1185 RET_LABEL2:(void)0;
1186 }
1187 }
1188 {
1189 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (var1) on <var1:AbstractCompiler(SeparateCompiler)> */
1190 var6 = var1->attrs[COLOR_separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <var1:AbstractCompiler(SeparateCompiler)> */
1191 var4 = var6;
1192 RET_LABEL5:(void)0;
1193 }
1194 }
1195 var_rta = var4;
1196 {
1197 { /* Inline typing#CallSite#mproperty (var_callsite) on <var_callsite:CallSite> */
1198 var9 = var_callsite->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <var_callsite:CallSite> */
1199 if (unlikely(var9 == NULL)) {
1200 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
1201 PRINT_ERROR(" (%s:%d)\n", "semantize/typing.nit", 483);
1202 show_backtrace(1);
1203 }
1204 var7 = var9;
1205 RET_LABEL8:(void)0;
1206 }
1207 }
1208 var_mmethod = var7;
1209 {
1210 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1211 var14 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1212 if (unlikely(var14 == NULL)) {
1213 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1214 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1215 show_backtrace(1);
1216 }
1217 var12 = var14;
1218 RET_LABEL13:(void)0;
1219 }
1220 }
1221 {
1222 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var12) on <var12:AbstractCompiler(SeparateCompiler)> */
1223 var17 = var12->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var12:AbstractCompiler(SeparateCompiler)> */
1224 if (unlikely(var17 == NULL)) {
1225 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1226 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
1227 show_backtrace(1);
1228 }
1229 var15 = var17;
1230 RET_LABEL16:(void)0;
1231 }
1232 }
1233 {
1234 { /* Inline modelbuilder#ModelBuilder#toolcontext (var15) on <var15:ModelBuilder> */
1235 var20 = var15->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var15:ModelBuilder> */
1236 if (unlikely(var20 == NULL)) {
1237 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1238 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
1239 show_backtrace(1);
1240 }
1241 var18 = var20;
1242 RET_LABEL19:(void)0;
1243 }
1244 }
1245 {
1246 { /* Inline separate_compiler#ToolContext#opt_direct_call_monomorph (var18) on <var18:ToolContext> */
1247 var23 = var18->attrs[COLOR_separate_compiler__ToolContext___opt_direct_call_monomorph].val; /* _opt_direct_call_monomorph on <var18:ToolContext> */
1248 if (unlikely(var23 == NULL)) {
1249 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_direct_call_monomorph");
1250 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 36);
1251 show_backtrace(1);
1252 }
1253 var21 = var23;
1254 RET_LABEL22:(void)0;
1255 }
1256 }
1257 {
1258 { /* Inline opts#Option#value (var21) on <var21:OptionBool> */
1259 var26 = var21->attrs[COLOR_opts__Option___value].val; /* _value on <var21:OptionBool> */
1260 var24 = var26;
1261 RET_LABEL25:(void)0;
1262 }
1263 }
1264 var27 = ((struct instance_kernel__Bool*)var24)->value; /* autounbox from nullable Object to Bool */;
1265 var_ = var27;
1266 if (var27){
1267 var28 = NULL;
1268 if (var_rta == NULL) {
1269 var29 = 0; /* is null */
1270 } else {
1271 var29 = 1; /* arg is null and recv is not */
1272 }
1273 if (0) {
1274 { /* Inline kernel#Object#!= (var_rta,var28) on <var_rta:nullable RapidTypeAnalysis> */
1275 var_other = var28;
1276 {
1277 var33 = ((short int (*)(val*, val*))(var_rta->class->vft[COLOR_kernel__Object___61d_61d]))(var_rta, var_other) /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/;
1278 var32 = var33;
1279 }
1280 var34 = !var32;
1281 var30 = var34;
1282 goto RET_LABEL31;
1283 RET_LABEL31:(void)0;
1284 }
1285 var29 = var30;
1286 }
1287 var11 = var29;
1288 } else {
1289 var11 = var_;
1290 }
1291 var_35 = var11;
1292 if (var11){
1293 {
1294 { /* Inline model#MMethod#is_root_init (var_mmethod) on <var_mmethod:MMethod> */
1295 var38 = var_mmethod->attrs[COLOR_model__MMethod___is_root_init].s; /* _is_root_init on <var_mmethod:MMethod> */
1296 var36 = var38;
1297 RET_LABEL37:(void)0;
1298 }
1299 }
1300 var39 = !var36;
1301 var10 = var39;
1302 } else {
1303 var10 = var_35;
1304 }
1305 if (var10){
1306 {
1307 var40 = rapid_type_analysis__RapidTypeAnalysis__live_targets(var_rta, var_callsite);
1308 }
1309 var_tgs = var40;
1310 {
1311 var41 = ((long (*)(val*))(var_tgs->class->vft[COLOR_abstract_collection__Collection__length]))(var_tgs) /* length on <var_tgs:Set[MMethodDef]>*/;
1312 }
1313 var42 = 1;
1314 {
1315 { /* Inline kernel#Int#== (var41,var42) on <var41:Int> */
1316 var46 = var41 == var42;
1317 var44 = var46;
1318 goto RET_LABEL45;
1319 RET_LABEL45:(void)0;
1320 }
1321 var43 = var44;
1322 }
1323 if (var43){
1324 {
1325 var47 = separate_compiler__SeparateCompilerVisitor__before_send(self, var_mmethod, var_args);
1326 }
1327 var_res0 = var47;
1328 {
1329 var48 = ((val* (*)(val*))(var_tgs->class->vft[COLOR_abstract_collection__Collection__first]))(var_tgs) /* first on <var_tgs:Set[MMethodDef]>*/;
1330 }
1331 {
1332 var49 = ((val* (*)(val*))(var_tgs->class->vft[COLOR_abstract_collection__Collection__first]))(var_tgs) /* first on <var_tgs:Set[MMethodDef]>*/;
1333 }
1334 {
1335 { /* Inline model#MPropDef#mclassdef (var49) on <var49:nullable Object(MMethodDef)> */
1336 var52 = var49->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var49:nullable Object(MMethodDef)> */
1337 if (unlikely(var52 == NULL)) {
1338 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1339 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
1340 show_backtrace(1);
1341 }
1342 var50 = var52;
1343 RET_LABEL51:(void)0;
1344 }
1345 }
1346 {
1347 { /* Inline model#MClassDef#bound_mtype (var50) on <var50:MClassDef> */
1348 var55 = var50->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var50:MClassDef> */
1349 if (unlikely(var55 == NULL)) {
1350 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1351 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
1352 show_backtrace(1);
1353 }
1354 var53 = var55;
1355 RET_LABEL54:(void)0;
1356 }
1357 }
1358 {
1359 var56 = separate_compiler__SeparateCompilerVisitor__call(self, var48, var53, var_args);
1360 }
1361 var_res = var56;
1362 var57 = NULL;
1363 if (var_res0 == NULL) {
1364 var58 = 0; /* is null */
1365 } else {
1366 var58 = 1; /* arg is null and recv is not */
1367 }
1368 if (0) {
1369 { /* Inline kernel#Object#!= (var_res0,var57) on <var_res0:nullable RuntimeVariable> */
1370 var_other = var57;
1371 {
1372 var62 = ((short int (*)(val*, val*))(var_res0->class->vft[COLOR_kernel__Object___61d_61d]))(var_res0, var_other) /* == on <var_res0:nullable RuntimeVariable(RuntimeVariable)>*/;
1373 var61 = var62;
1374 }
1375 var63 = !var61;
1376 var59 = var63;
1377 goto RET_LABEL60;
1378 RET_LABEL60:(void)0;
1379 }
1380 var58 = var59;
1381 }
1382 if (var58){
1383 var64 = NULL;
1384 if (var_res == NULL) {
1385 var65 = 0; /* is null */
1386 } else {
1387 var65 = 1; /* arg is null and recv is not */
1388 }
1389 if (0) {
1390 { /* Inline kernel#Object#!= (var_res,var64) on <var_res:nullable RuntimeVariable> */
1391 var_other = var64;
1392 {
1393 var69 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other) /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/;
1394 var68 = var69;
1395 }
1396 var70 = !var68;
1397 var66 = var70;
1398 goto RET_LABEL67;
1399 RET_LABEL67:(void)0;
1400 }
1401 var65 = var66;
1402 }
1403 if (unlikely(!var65)) {
1404 PRINT_ERROR("Runtime error: %s", "Assert failed");
1405 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1074);
1406 show_backtrace(1);
1407 }
1408 {
1409 abstract_compiler__AbstractCompilerVisitor__assign(self, var_res0, var_res); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <self:SeparateCompilerVisitor>*/
1410 }
1411 var_res = var_res0;
1412 } else {
1413 }
1414 if (varonce) {
1415 var71 = varonce;
1416 } else {
1417 var72 = "}";
1418 var73 = 1;
1419 var74 = string__NativeString__to_s_with_length(var72, var73);
1420 var71 = var74;
1421 varonce = var71;
1422 }
1423 {
1424 abstract_compiler__AbstractCompilerVisitor__add(self, var71); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
1425 }
1426 var = var_res;
1427 goto RET_LABEL;
1428 } else {
1429 }
1430 } else {
1431 }
1432 {
1433 var75 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompilerVisitor__compile_callsite]))(self, p0, p1) /* compile_callsite on <self:SeparateCompilerVisitor>*/;
1434 }
1435 var = var75;
1436 goto RET_LABEL;
1437 RET_LABEL:;
1438 return var;
1439 }
1440 /* method separate_compiler#SeparateCompilerVisitor#compile_callsite for (self: Object, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
1441 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__compile_callsite(val* self, val* p0, val* p1) {
1442 val* var /* : nullable RuntimeVariable */;
1443 val* var1 /* : nullable RuntimeVariable */;
1444 var1 = separate_compiler__SeparateCompilerVisitor__compile_callsite(self, p0, p1);
1445 var = var1;
1446 RET_LABEL:;
1447 return var;
1448 }
1449 /* method separate_compiler#SeparateCompilerVisitor#send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
1450 val* separate_compiler__SeparateCompilerVisitor__send(val* self, val* p0, val* p1) {
1451 val* var /* : nullable RuntimeVariable */;
1452 val* var_mmethod /* var mmethod: MMethod */;
1453 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1454 val* var1 /* : nullable Object */;
1455 val* var2 /* : MType */;
1456 val* var4 /* : MType */;
1457 val* var5 /* : String */;
1458 static val* varonce;
1459 val* var6 /* : String */;
1460 char* var7 /* : NativeString */;
1461 long var8 /* : Int */;
1462 val* var9 /* : FlatString */;
1463 short int var10 /* : Bool */;
1464 short int var11 /* : Bool */;
1465 val* var_other /* var other: nullable Object */;
1466 short int var13 /* : Bool */;
1467 short int var14 /* : Bool */;
1468 short int var15 /* : Bool */;
1469 val* var16 /* : AbstractCompiler */;
1470 val* var18 /* : AbstractCompiler */;
1471 val* var19 /* : MModule */;
1472 val* var21 /* : MModule */;
1473 val* var_m /* var m: MModule */;
1474 val* var22 /* : AbstractCompiler */;
1475 val* var24 /* : AbstractCompiler */;
1476 val* var25 /* : AbstractCompiler */;
1477 val* var27 /* : AbstractCompiler */;
1478 val* var28 /* : MModule */;
1479 val* var30 /* : MModule */;
1480 val* var32 /* : nullable Object */;
1481 val* var33 /* : MType */;
1482 val* var35 /* : MType */;
1483 val* var36 /* : nullable RuntimeVariable */;
1484 val* var_res /* var res: nullable RuntimeVariable */;
1485 val* var37 /* : AbstractCompiler */;
1486 val* var39 /* : AbstractCompiler */;
1487 val* var41 /* : String */;
1488 val* var42 /* : nullable RuntimeVariable */;
1489 var_mmethod = p0;
1490 var_arguments = p1;
1491 {
1492 var1 = abstract_collection__SequenceRead__first(var_arguments);
1493 }
1494 {
1495 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var1) on <var1:nullable Object(RuntimeVariable)> */
1496 var4 = var1->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var1:nullable Object(RuntimeVariable)> */
1497 if (unlikely(var4 == NULL)) {
1498 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
1499 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
1500 show_backtrace(1);
1501 }
1502 var2 = var4;
1503 RET_LABEL3:(void)0;
1504 }
1505 }
1506 {
1507 var5 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var2) /* ctype on <var2:MType>*/;
1508 }
1509 if (varonce) {
1510 var6 = varonce;
1511 } else {
1512 var7 = "val*";
1513 var8 = 4;
1514 var9 = string__NativeString__to_s_with_length(var7, var8);
1515 var6 = var9;
1516 varonce = var6;
1517 }
1518 {
1519 { /* Inline kernel#Object#!= (var5,var6) on <var5:String> */
1520 var_other = var6;
1521 {
1522 var14 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_other) /* == on <var5:String>*/;
1523 var13 = var14;
1524 }
1525 var15 = !var13;
1526 var11 = var15;
1527 goto RET_LABEL12;
1528 RET_LABEL12:(void)0;
1529 }
1530 var10 = var11;
1531 }
1532 if (var10){
1533 {
1534 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1535 var18 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1536 if (unlikely(var18 == NULL)) {
1537 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1538 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1539 show_backtrace(1);
1540 }
1541 var16 = var18;
1542 RET_LABEL17:(void)0;
1543 }
1544 }
1545 {
1546 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var16) on <var16:AbstractCompiler(SeparateCompiler)> */
1547 var21 = var16->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var16:AbstractCompiler(SeparateCompiler)> */
1548 if (unlikely(var21 == NULL)) {
1549 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1550 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
1551 show_backtrace(1);
1552 }
1553 var19 = var21;
1554 RET_LABEL20:(void)0;
1555 }
1556 }
1557 var_m = var19;
1558 {
1559 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1560 var24 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1561 if (unlikely(var24 == NULL)) {
1562 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1563 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1564 show_backtrace(1);
1565 }
1566 var22 = var24;
1567 RET_LABEL23:(void)0;
1568 }
1569 }
1570 {
1571 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1572 var27 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1573 if (unlikely(var27 == NULL)) {
1574 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1575 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1576 show_backtrace(1);
1577 }
1578 var25 = var27;
1579 RET_LABEL26:(void)0;
1580 }
1581 }
1582 {
1583 { /* Inline abstract_compiler#AbstractCompiler#realmainmodule (var25) on <var25:AbstractCompiler(SeparateCompiler)> */
1584 var30 = var25->attrs[COLOR_abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on <var25:AbstractCompiler(SeparateCompiler)> */
1585 if (unlikely(var30 == NULL)) {
1586 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule");
1587 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 467);
1588 show_backtrace(1);
1589 }
1590 var28 = var30;
1591 RET_LABEL29:(void)0;
1592 }
1593 }
1594 {
1595 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var22,var28) on <var22:AbstractCompiler(SeparateCompiler)> */
1596 var22->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var28; /* _mainmodule on <var22:AbstractCompiler(SeparateCompiler)> */
1597 RET_LABEL31:(void)0;
1598 }
1599 }
1600 {
1601 var32 = abstract_collection__SequenceRead__first(var_arguments);
1602 }
1603 {
1604 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var32) on <var32:nullable Object(RuntimeVariable)> */
1605 var35 = var32->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var32:nullable Object(RuntimeVariable)> */
1606 if (unlikely(var35 == NULL)) {
1607 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
1608 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
1609 show_backtrace(1);
1610 }
1611 var33 = var35;
1612 RET_LABEL34:(void)0;
1613 }
1614 }
1615 {
1616 var36 = abstract_compiler__AbstractCompilerVisitor__monomorphic_send(self, var_mmethod, var33, var_arguments);
1617 }
1618 var_res = var36;
1619 {
1620 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1621 var39 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1622 if (unlikely(var39 == NULL)) {
1623 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1624 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1625 show_backtrace(1);
1626 }
1627 var37 = var39;
1628 RET_LABEL38:(void)0;
1629 }
1630 }
1631 {
1632 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var37,var_m) on <var37:AbstractCompiler(SeparateCompiler)> */
1633 var37->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var_m; /* _mainmodule on <var37:AbstractCompiler(SeparateCompiler)> */
1634 RET_LABEL40:(void)0;
1635 }
1636 }
1637 var = var_res;
1638 goto RET_LABEL;
1639 } else {
1640 }
1641 {
1642 var41 = separate_compiler__MProperty__const_color(var_mmethod);
1643 }
1644 {
1645 var42 = separate_compiler__SeparateCompilerVisitor__table_send(self, var_mmethod, var_arguments, var41);
1646 }
1647 var = var42;
1648 goto RET_LABEL;
1649 RET_LABEL:;
1650 return var;
1651 }
1652 /* method separate_compiler#SeparateCompilerVisitor#send for (self: Object, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
1653 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__send(val* self, val* p0, val* p1) {
1654 val* var /* : nullable RuntimeVariable */;
1655 val* var1 /* : nullable RuntimeVariable */;
1656 var1 = separate_compiler__SeparateCompilerVisitor__send(self, p0, p1);
1657 var = var1;
1658 RET_LABEL:;
1659 return var;
1660 }
1661 /* method separate_compiler#SeparateCompilerVisitor#before_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
1662 val* separate_compiler__SeparateCompilerVisitor__before_send(val* self, val* p0, val* p1) {
1663 val* var /* : nullable RuntimeVariable */;
1664 val* var_mmethod /* var mmethod: MMethod */;
1665 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
1666 val* var1 /* : null */;
1667 val* var_res /* var res: nullable RuntimeVariable */;
1668 val* var2 /* : nullable Object */;
1669 val* var_recv /* var recv: RuntimeVariable */;
1670 short int var3 /* : Bool */;
1671 short int var4 /* : Bool */;
1672 val* var5 /* : AbstractCompiler */;
1673 val* var7 /* : AbstractCompiler */;
1674 val* var8 /* : ModelBuilder */;
1675 val* var10 /* : ModelBuilder */;
1676 val* var11 /* : ToolContext */;
1677 val* var13 /* : ToolContext */;
1678 val* var14 /* : OptionBool */;
1679 val* var16 /* : OptionBool */;
1680 val* var17 /* : nullable Object */;
1681 val* var19 /* : nullable Object */;
1682 short int var20 /* : Bool */;
1683 short int var21 /* : Bool */;
1684 short int var_ /* var : Bool */;
1685 val* var22 /* : String */;
1686 val* var24 /* : String */;
1687 static val* varonce;
1688 val* var25 /* : String */;
1689 char* var26 /* : NativeString */;
1690 long var27 /* : Int */;
1691 val* var28 /* : FlatString */;
1692 short int var29 /* : Bool */;
1693 short int var30 /* : Bool */;
1694 short int var_31 /* var : Bool */;
1695 val* var32 /* : String */;
1696 val* var34 /* : String */;
1697 static val* varonce35;
1698 val* var36 /* : String */;
1699 char* var37 /* : NativeString */;
1700 long var38 /* : Int */;
1701 val* var39 /* : FlatString */;
1702 short int var40 /* : Bool */;
1703 short int var41 /* : Bool */;
1704 short int var_consider_null /* var consider_null: Bool */;
1705 short int var42 /* : Bool */;
1706 val* var43 /* : MType */;
1707 val* var45 /* : MType */;
1708 short int var46 /* : Bool */;
1709 int cltype;
1710 int idtype;
1711 short int var_47 /* var : Bool */;
1712 short int var_maybenull /* var maybenull: Bool */;
1713 static val* varonce48;
1714 val* var49 /* : String */;
1715 char* var50 /* : NativeString */;
1716 long var51 /* : Int */;
1717 val* var52 /* : FlatString */;
1718 static val* varonce53;
1719 val* var54 /* : String */;
1720 char* var55 /* : NativeString */;
1721 long var56 /* : Int */;
1722 val* var57 /* : FlatString */;
1723 val* var58 /* : Array[Object] */;
1724 long var59 /* : Int */;
1725 val* var60 /* : NativeArray[Object] */;
1726 val* var61 /* : String */;
1727 val* var62 /* : String */;
1728 val* var64 /* : String */;
1729 static val* varonce65;
1730 val* var66 /* : String */;
1731 char* var67 /* : NativeString */;
1732 long var68 /* : Int */;
1733 val* var69 /* : FlatString */;
1734 short int var70 /* : Bool */;
1735 short int var71 /* : Bool */;
1736 val* var72 /* : MClassType */;
1737 val* var73 /* : RuntimeVariable */;
1738 long var74 /* : Int */;
1739 val* var75 /* : nullable Object */;
1740 val* var_arg /* var arg: RuntimeVariable */;
1741 val* var76 /* : MType */;
1742 val* var78 /* : MType */;
1743 short int var79 /* : Bool */;
1744 int cltype80;
1745 int idtype81;
1746 static val* varonce82;
1747 val* var83 /* : String */;
1748 char* var84 /* : NativeString */;
1749 long var85 /* : Int */;
1750 val* var86 /* : FlatString */;
1751 static val* varonce87;
1752 val* var88 /* : String */;
1753 char* var89 /* : NativeString */;
1754 long var90 /* : Int */;
1755 val* var91 /* : FlatString */;
1756 val* var92 /* : Array[Object] */;
1757 long var93 /* : Int */;
1758 val* var94 /* : NativeArray[Object] */;
1759 val* var95 /* : String */;
1760 val* var96 /* : MType */;
1761 val* var98 /* : MType */;
1762 short int var99 /* : Bool */;
1763 int cltype100;
1764 int idtype101;
1765 static val* varonce102;
1766 val* var103 /* : String */;
1767 char* var104 /* : NativeString */;
1768 long var105 /* : Int */;
1769 val* var106 /* : FlatString */;
1770 val* var107 /* : Array[Object] */;
1771 long var108 /* : Int */;
1772 val* var109 /* : NativeArray[Object] */;
1773 val* var110 /* : String */;
1774 static val* varonce111;
1775 val* var112 /* : String */;
1776 char* var113 /* : NativeString */;
1777 long var114 /* : Int */;
1778 val* var115 /* : FlatString */;
1779 val* var116 /* : String */;
1780 static val* varonce117;
1781 val* var118 /* : String */;
1782 char* var119 /* : NativeString */;
1783 long var120 /* : Int */;
1784 val* var121 /* : FlatString */;
1785 val* var122 /* : Array[Object] */;
1786 long var123 /* : Int */;
1787 val* var124 /* : NativeArray[Object] */;
1788 val* var125 /* : String */;
1789 val* var126 /* : String */;
1790 val* var128 /* : String */;
1791 static val* varonce129;
1792 val* var130 /* : String */;
1793 char* var131 /* : NativeString */;
1794 long var132 /* : Int */;
1795 val* var133 /* : FlatString */;
1796 short int var134 /* : Bool */;
1797 short int var135 /* : Bool */;
1798 val* var136 /* : MClassType */;
1799 val* var137 /* : RuntimeVariable */;
1800 long var138 /* : Int */;
1801 val* var139 /* : nullable Object */;
1802 val* var_arg140 /* var arg: RuntimeVariable */;
1803 val* var141 /* : MType */;
1804 val* var143 /* : MType */;
1805 short int var144 /* : Bool */;
1806 int cltype145;
1807 int idtype146;
1808 static val* varonce147;
1809 val* var148 /* : String */;
1810 char* var149 /* : NativeString */;
1811 long var150 /* : Int */;
1812 val* var151 /* : FlatString */;
1813 static val* varonce152;
1814 val* var153 /* : String */;
1815 char* var154 /* : NativeString */;
1816 long var155 /* : Int */;
1817 val* var156 /* : FlatString */;
1818 val* var157 /* : Array[Object] */;
1819 long var158 /* : Int */;
1820 val* var159 /* : NativeArray[Object] */;
1821 val* var160 /* : String */;
1822 val* var161 /* : MType */;
1823 val* var163 /* : MType */;
1824 short int var164 /* : Bool */;
1825 int cltype165;
1826 int idtype166;
1827 static val* varonce167;
1828 val* var168 /* : String */;
1829 char* var169 /* : NativeString */;
1830 long var170 /* : Int */;
1831 val* var171 /* : FlatString */;
1832 val* var172 /* : Array[Object] */;
1833 long var173 /* : Int */;
1834 val* var174 /* : NativeArray[Object] */;
1835 val* var175 /* : String */;
1836 static val* varonce176;
1837 val* var177 /* : String */;
1838 char* var178 /* : NativeString */;
1839 long var179 /* : Int */;
1840 val* var180 /* : FlatString */;
1841 val* var181 /* : String */;
1842 static val* varonce182;
1843 val* var183 /* : String */;
1844 char* var184 /* : NativeString */;
1845 long var185 /* : Int */;
1846 val* var186 /* : FlatString */;
1847 val* var187 /* : Array[Object] */;
1848 long var188 /* : Int */;
1849 val* var189 /* : NativeArray[Object] */;
1850 val* var190 /* : String */;
1851 static val* varonce191;
1852 val* var192 /* : String */;
1853 char* var193 /* : NativeString */;
1854 long var194 /* : Int */;
1855 val* var195 /* : FlatString */;
1856 static val* varonce196;
1857 val* var197 /* : String */;
1858 char* var198 /* : NativeString */;
1859 long var199 /* : Int */;
1860 val* var200 /* : FlatString */;
1861 static val* varonce201;
1862 val* var202 /* : String */;
1863 char* var203 /* : NativeString */;
1864 long var204 /* : Int */;
1865 val* var205 /* : FlatString */;
1866 short int var206 /* : Bool */;
1867 val* var207 /* : AbstractCompiler */;
1868 val* var209 /* : AbstractCompiler */;
1869 val* var210 /* : ModelBuilder */;
1870 val* var212 /* : ModelBuilder */;
1871 val* var213 /* : ToolContext */;
1872 val* var215 /* : ToolContext */;
1873 val* var216 /* : OptionBool */;
1874 val* var218 /* : OptionBool */;
1875 val* var219 /* : nullable Object */;
1876 val* var221 /* : nullable Object */;
1877 short int var222 /* : Bool */;
1878 short int var223 /* : Bool */;
1879 short int var_224 /* var : Bool */;
1880 short int var225 /* : Bool */;
1881 val* var226 /* : String */;
1882 val* var228 /* : String */;
1883 static val* varonce229;
1884 val* var230 /* : String */;
1885 char* var231 /* : NativeString */;
1886 long var232 /* : Int */;
1887 val* var233 /* : FlatString */;
1888 short int var234 /* : Bool */;
1889 short int var235 /* : Bool */;
1890 short int var_236 /* var : Bool */;
1891 val* var237 /* : String */;
1892 val* var239 /* : String */;
1893 static val* varonce240;
1894 val* var241 /* : String */;
1895 char* var242 /* : NativeString */;
1896 long var243 /* : Int */;
1897 val* var244 /* : FlatString */;
1898 short int var245 /* : Bool */;
1899 short int var246 /* : Bool */;
1900 val* var247 /* : null */;
1901 short int var248 /* : Bool */;
1902 short int var249 /* : Bool */;
1903 val* var_other /* var other: nullable Object */;
1904 short int var251 /* : Bool */;
1905 short int var253 /* : Bool */;
1906 val* var254 /* : MClassType */;
1907 val* var255 /* : RuntimeVariable */;
1908 long var256 /* : Int */;
1909 val* var257 /* : nullable Object */;
1910 val* var_arg258 /* var arg: RuntimeVariable */;
1911 val* var259 /* : MType */;
1912 val* var261 /* : MType */;
1913 short int var262 /* : Bool */;
1914 int cltype263;
1915 int idtype264;
1916 val* var265 /* : String */;
1917 val* var267 /* : String */;
1918 static val* varonce268;
1919 val* var269 /* : String */;
1920 char* var270 /* : NativeString */;
1921 long var271 /* : Int */;
1922 val* var272 /* : FlatString */;
1923 short int var273 /* : Bool */;
1924 short int var274 /* : Bool */;
1925 static val* varonce275;
1926 val* var276 /* : String */;
1927 char* var277 /* : NativeString */;
1928 long var278 /* : Int */;
1929 val* var279 /* : FlatString */;
1930 val* var280 /* : Array[Object] */;
1931 long var281 /* : Int */;
1932 val* var282 /* : NativeArray[Object] */;
1933 val* var283 /* : String */;
1934 static val* varonce284;
1935 val* var285 /* : String */;
1936 char* var286 /* : NativeString */;
1937 long var287 /* : Int */;
1938 val* var288 /* : FlatString */;
1939 val* var289 /* : Array[Object] */;
1940 long var290 /* : Int */;
1941 val* var291 /* : NativeArray[Object] */;
1942 val* var292 /* : String */;
1943 static val* varonce293;
1944 val* var294 /* : String */;
1945 char* var295 /* : NativeString */;
1946 long var296 /* : Int */;
1947 val* var297 /* : FlatString */;
1948 static val* varonce298;
1949 val* var299 /* : String */;
1950 char* var300 /* : NativeString */;
1951 long var301 /* : Int */;
1952 val* var302 /* : FlatString */;
1953 var_mmethod = p0;
1954 var_arguments = p1;
1955 var1 = NULL;
1956 var_res = var1;
1957 {
1958 var2 = abstract_collection__SequenceRead__first(var_arguments);
1959 }
1960 var_recv = var2;
1961 {
1962 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
1963 var7 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
1964 if (unlikely(var7 == NULL)) {
1965 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
1966 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
1967 show_backtrace(1);
1968 }
1969 var5 = var7;
1970 RET_LABEL6:(void)0;
1971 }
1972 }
1973 {
1974 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var5) on <var5:AbstractCompiler(SeparateCompiler)> */
1975 var10 = var5->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var5:AbstractCompiler(SeparateCompiler)> */
1976 if (unlikely(var10 == NULL)) {
1977 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
1978 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
1979 show_backtrace(1);
1980 }
1981 var8 = var10;
1982 RET_LABEL9:(void)0;
1983 }
1984 }
1985 {
1986 { /* Inline modelbuilder#ModelBuilder#toolcontext (var8) on <var8:ModelBuilder> */
1987 var13 = var8->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var8:ModelBuilder> */
1988 if (unlikely(var13 == NULL)) {
1989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
1990 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
1991 show_backtrace(1);
1992 }
1993 var11 = var13;
1994 RET_LABEL12:(void)0;
1995 }
1996 }
1997 {
1998 { /* Inline abstract_compiler#ToolContext#opt_no_check_null (var11) on <var11:ToolContext> */
1999 var16 = var11->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_null].val; /* _opt_no_check_null on <var11:ToolContext> */
2000 if (unlikely(var16 == NULL)) {
2001 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_null");
2002 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 57);
2003 show_backtrace(1);
2004 }
2005 var14 = var16;
2006 RET_LABEL15:(void)0;
2007 }
2008 }
2009 {
2010 { /* Inline opts#Option#value (var14) on <var14:OptionBool> */
2011 var19 = var14->attrs[COLOR_opts__Option___value].val; /* _value on <var14:OptionBool> */
2012 var17 = var19;
2013 RET_LABEL18:(void)0;
2014 }
2015 }
2016 var20 = ((struct instance_kernel__Bool*)var17)->value; /* autounbox from nullable Object to Bool */;
2017 var21 = !var20;
2018 var_ = var21;
2019 if (var21){
2020 var4 = var_;
2021 } else {
2022 {
2023 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2024 var24 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2025 if (unlikely(var24 == NULL)) {
2026 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2027 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
2028 show_backtrace(1);
2029 }
2030 var22 = var24;
2031 RET_LABEL23:(void)0;
2032 }
2033 }
2034 if (varonce) {
2035 var25 = varonce;
2036 } else {
2037 var26 = "==";
2038 var27 = 2;
2039 var28 = string__NativeString__to_s_with_length(var26, var27);
2040 var25 = var28;
2041 varonce = var25;
2042 }
2043 {
2044 var30 = string__FlatString___61d_61d(var22, var25);
2045 var29 = var30;
2046 }
2047 var4 = var29;
2048 }
2049 var_31 = var4;
2050 if (var4){
2051 var3 = var_31;
2052 } else {
2053 {
2054 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2055 var34 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2056 if (unlikely(var34 == NULL)) {
2057 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2058 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
2059 show_backtrace(1);
2060 }
2061 var32 = var34;
2062 RET_LABEL33:(void)0;
2063 }
2064 }
2065 if (varonce35) {
2066 var36 = varonce35;
2067 } else {
2068 var37 = "!=";
2069 var38 = 2;
2070 var39 = string__NativeString__to_s_with_length(var37, var38);
2071 var36 = var39;
2072 varonce35 = var36;
2073 }
2074 {
2075 var41 = string__FlatString___61d_61d(var32, var36);
2076 var40 = var41;
2077 }
2078 var3 = var40;
2079 }
2080 var_consider_null = var3;
2081 {
2082 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_recv) on <var_recv:RuntimeVariable> */
2083 var45 = var_recv->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_recv:RuntimeVariable> */
2084 if (unlikely(var45 == NULL)) {
2085 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2086 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
2087 show_backtrace(1);
2088 }
2089 var43 = var45;
2090 RET_LABEL44:(void)0;
2091 }
2092 }
2093 /* <var43:MType> isa MNullableType */
2094 cltype = type_model__MNullableType.color;
2095 idtype = type_model__MNullableType.id;
2096 if(cltype >= var43->type->table_size) {
2097 var46 = 0;
2098 } else {
2099 var46 = var43->type->type_table[cltype] == idtype;
2100 }
2101 var_47 = var46;
2102 if (var46){
2103 var42 = var_consider_null;
2104 } else {
2105 var42 = var_47;
2106 }
2107 var_maybenull = var42;
2108 if (var_maybenull){
2109 if (varonce48) {
2110 var49 = varonce48;
2111 } else {
2112 var50 = "if (";
2113 var51 = 4;
2114 var52 = string__NativeString__to_s_with_length(var50, var51);
2115 var49 = var52;
2116 varonce48 = var49;
2117 }
2118 if (varonce53) {
2119 var54 = varonce53;
2120 } else {
2121 var55 = " == NULL) {";
2122 var56 = 11;
2123 var57 = string__NativeString__to_s_with_length(var55, var56);
2124 var54 = var57;
2125 varonce53 = var54;
2126 }
2127 var58 = NEW_array__Array(&type_array__Arraykernel__Object);
2128 { /* var58 = array_instance Array[Object] */
2129 var59 = 3;
2130 var60 = NEW_array__NativeArray(var59, &type_array__NativeArraykernel__Object);
2131 ((struct instance_array__NativeArray*)var60)->values[0] = (val*) var49;
2132 ((struct instance_array__NativeArray*)var60)->values[1] = (val*) var_recv;
2133 ((struct instance_array__NativeArray*)var60)->values[2] = (val*) var54;
2134 {
2135 ((void (*)(val*, val*, long))(var58->class->vft[COLOR_array__Array__with_native]))(var58, var60, var59) /* with_native on <var58:Array[Object]>*/;
2136 }
2137 }
2138 {
2139 var61 = ((val* (*)(val*))(var58->class->vft[COLOR_string__Object__to_s]))(var58) /* to_s on <var58:Array[Object]>*/;
2140 }
2141 {
2142 abstract_compiler__AbstractCompilerVisitor__add(self, var61); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2143 }
2144 {
2145 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2146 var64 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2147 if (unlikely(var64 == NULL)) {
2148 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2149 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
2150 show_backtrace(1);
2151 }
2152 var62 = var64;
2153 RET_LABEL63:(void)0;
2154 }
2155 }
2156 if (varonce65) {
2157 var66 = varonce65;
2158 } else {
2159 var67 = "==";
2160 var68 = 2;
2161 var69 = string__NativeString__to_s_with_length(var67, var68);
2162 var66 = var69;
2163 varonce65 = var66;
2164 }
2165 {
2166 var71 = string__FlatString___61d_61d(var62, var66);
2167 var70 = var71;
2168 }
2169 if (var70){
2170 {
2171 var72 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
2172 }
2173 {
2174 var73 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var72);
2175 }
2176 var_res = var73;
2177 var74 = 1;
2178 {
2179 var75 = array__Array___91d_93d(var_arguments, var74);
2180 }
2181 var_arg = var75;
2182 {
2183 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg) on <var_arg:RuntimeVariable> */
2184 var78 = var_arg->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg:RuntimeVariable> */
2185 if (unlikely(var78 == NULL)) {
2186 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2187 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
2188 show_backtrace(1);
2189 }
2190 var76 = var78;
2191 RET_LABEL77:(void)0;
2192 }
2193 }
2194 /* <var76:MType> isa MNullableType */
2195 cltype80 = type_model__MNullableType.color;
2196 idtype81 = type_model__MNullableType.id;
2197 if(cltype80 >= var76->type->table_size) {
2198 var79 = 0;
2199 } else {
2200 var79 = var76->type->type_table[cltype80] == idtype81;
2201 }
2202 if (var79){
2203 if (varonce82) {
2204 var83 = varonce82;
2205 } else {
2206 var84 = " = (";
2207 var85 = 4;
2208 var86 = string__NativeString__to_s_with_length(var84, var85);
2209 var83 = var86;
2210 varonce82 = var83;
2211 }
2212 if (varonce87) {
2213 var88 = varonce87;
2214 } else {
2215 var89 = " == NULL);";
2216 var90 = 10;
2217 var91 = string__NativeString__to_s_with_length(var89, var90);
2218 var88 = var91;
2219 varonce87 = var88;
2220 }
2221 var92 = NEW_array__Array(&type_array__Arraykernel__Object);
2222 { /* var92 = array_instance Array[Object] */
2223 var93 = 4;
2224 var94 = NEW_array__NativeArray(var93, &type_array__NativeArraykernel__Object);
2225 ((struct instance_array__NativeArray*)var94)->values[0] = (val*) var_res;
2226 ((struct instance_array__NativeArray*)var94)->values[1] = (val*) var83;
2227 ((struct instance_array__NativeArray*)var94)->values[2] = (val*) var_arg;
2228 ((struct instance_array__NativeArray*)var94)->values[3] = (val*) var88;
2229 {
2230 ((void (*)(val*, val*, long))(var92->class->vft[COLOR_array__Array__with_native]))(var92, var94, var93) /* with_native on <var92:Array[Object]>*/;
2231 }
2232 }
2233 {
2234 var95 = ((val* (*)(val*))(var92->class->vft[COLOR_string__Object__to_s]))(var92) /* to_s on <var92:Array[Object]>*/;
2235 }
2236 {
2237 abstract_compiler__AbstractCompilerVisitor__add(self, var95); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2238 }
2239 } else {
2240 {
2241 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg) on <var_arg:RuntimeVariable> */
2242 var98 = var_arg->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg:RuntimeVariable> */
2243 if (unlikely(var98 == NULL)) {
2244 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2245 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
2246 show_backtrace(1);
2247 }
2248 var96 = var98;
2249 RET_LABEL97:(void)0;
2250 }
2251 }
2252 /* <var96:MType> isa MNullType */
2253 cltype100 = type_model__MNullType.color;
2254 idtype101 = type_model__MNullType.id;
2255 if(cltype100 >= var96->type->table_size) {
2256 var99 = 0;
2257 } else {
2258 var99 = var96->type->type_table[cltype100] == idtype101;
2259 }
2260 if (var99){
2261 if (varonce102) {
2262 var103 = varonce102;
2263 } else {
2264 var104 = " = 1; /* is null */";
2265 var105 = 19;
2266 var106 = string__NativeString__to_s_with_length(var104, var105);
2267 var103 = var106;
2268 varonce102 = var103;
2269 }
2270 var107 = NEW_array__Array(&type_array__Arraykernel__Object);
2271 { /* var107 = array_instance Array[Object] */
2272 var108 = 2;
2273 var109 = NEW_array__NativeArray(var108, &type_array__NativeArraykernel__Object);
2274 ((struct instance_array__NativeArray*)var109)->values[0] = (val*) var_res;
2275 ((struct instance_array__NativeArray*)var109)->values[1] = (val*) var103;
2276 {
2277 ((void (*)(val*, val*, long))(var107->class->vft[COLOR_array__Array__with_native]))(var107, var109, var108) /* with_native on <var107:Array[Object]>*/;
2278 }
2279 }
2280 {
2281 var110 = ((val* (*)(val*))(var107->class->vft[COLOR_string__Object__to_s]))(var107) /* to_s on <var107:Array[Object]>*/;
2282 }
2283 {
2284 abstract_compiler__AbstractCompilerVisitor__add(self, var110); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2285 }
2286 } else {
2287 if (varonce111) {
2288 var112 = varonce111;
2289 } else {
2290 var113 = " = 0; /* ";
2291 var114 = 9;
2292 var115 = string__NativeString__to_s_with_length(var113, var114);
2293 var112 = var115;
2294 varonce111 = var112;
2295 }
2296 {
2297 var116 = abstract_compiler__RuntimeVariable__inspect(var_arg);
2298 }
2299 if (varonce117) {
2300 var118 = varonce117;
2301 } else {
2302 var119 = " cannot be null */";
2303 var120 = 18;
2304 var121 = string__NativeString__to_s_with_length(var119, var120);
2305 var118 = var121;
2306 varonce117 = var118;
2307 }
2308 var122 = NEW_array__Array(&type_array__Arraykernel__Object);
2309 { /* var122 = array_instance Array[Object] */
2310 var123 = 4;
2311 var124 = NEW_array__NativeArray(var123, &type_array__NativeArraykernel__Object);
2312 ((struct instance_array__NativeArray*)var124)->values[0] = (val*) var_res;
2313 ((struct instance_array__NativeArray*)var124)->values[1] = (val*) var112;
2314 ((struct instance_array__NativeArray*)var124)->values[2] = (val*) var116;
2315 ((struct instance_array__NativeArray*)var124)->values[3] = (val*) var118;
2316 {
2317 ((void (*)(val*, val*, long))(var122->class->vft[COLOR_array__Array__with_native]))(var122, var124, var123) /* with_native on <var122:Array[Object]>*/;
2318 }
2319 }
2320 {
2321 var125 = ((val* (*)(val*))(var122->class->vft[COLOR_string__Object__to_s]))(var122) /* to_s on <var122:Array[Object]>*/;
2322 }
2323 {
2324 abstract_compiler__AbstractCompilerVisitor__add(self, var125); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2325 }
2326 }
2327 }
2328 } else {
2329 {
2330 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2331 var128 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2332 if (unlikely(var128 == NULL)) {
2333 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2334 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
2335 show_backtrace(1);
2336 }
2337 var126 = var128;
2338 RET_LABEL127:(void)0;
2339 }
2340 }
2341 if (varonce129) {
2342 var130 = varonce129;
2343 } else {
2344 var131 = "!=";
2345 var132 = 2;
2346 var133 = string__NativeString__to_s_with_length(var131, var132);
2347 var130 = var133;
2348 varonce129 = var130;
2349 }
2350 {
2351 var135 = string__FlatString___61d_61d(var126, var130);
2352 var134 = var135;
2353 }
2354 if (var134){
2355 {
2356 var136 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
2357 }
2358 {
2359 var137 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var136);
2360 }
2361 var_res = var137;
2362 var138 = 1;
2363 {
2364 var139 = array__Array___91d_93d(var_arguments, var138);
2365 }
2366 var_arg140 = var139;
2367 {
2368 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg140) on <var_arg140:RuntimeVariable> */
2369 var143 = var_arg140->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg140:RuntimeVariable> */
2370 if (unlikely(var143 == NULL)) {
2371 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2372 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
2373 show_backtrace(1);
2374 }
2375 var141 = var143;
2376 RET_LABEL142:(void)0;
2377 }
2378 }
2379 /* <var141:MType> isa MNullableType */
2380 cltype145 = type_model__MNullableType.color;
2381 idtype146 = type_model__MNullableType.id;
2382 if(cltype145 >= var141->type->table_size) {
2383 var144 = 0;
2384 } else {
2385 var144 = var141->type->type_table[cltype145] == idtype146;
2386 }
2387 if (var144){
2388 if (varonce147) {
2389 var148 = varonce147;
2390 } else {
2391 var149 = " = (";
2392 var150 = 4;
2393 var151 = string__NativeString__to_s_with_length(var149, var150);
2394 var148 = var151;
2395 varonce147 = var148;
2396 }
2397 if (varonce152) {
2398 var153 = varonce152;
2399 } else {
2400 var154 = " != NULL);";
2401 var155 = 10;
2402 var156 = string__NativeString__to_s_with_length(var154, var155);
2403 var153 = var156;
2404 varonce152 = var153;
2405 }
2406 var157 = NEW_array__Array(&type_array__Arraykernel__Object);
2407 { /* var157 = array_instance Array[Object] */
2408 var158 = 4;
2409 var159 = NEW_array__NativeArray(var158, &type_array__NativeArraykernel__Object);
2410 ((struct instance_array__NativeArray*)var159)->values[0] = (val*) var_res;
2411 ((struct instance_array__NativeArray*)var159)->values[1] = (val*) var148;
2412 ((struct instance_array__NativeArray*)var159)->values[2] = (val*) var_arg140;
2413 ((struct instance_array__NativeArray*)var159)->values[3] = (val*) var153;
2414 {
2415 ((void (*)(val*, val*, long))(var157->class->vft[COLOR_array__Array__with_native]))(var157, var159, var158) /* with_native on <var157:Array[Object]>*/;
2416 }
2417 }
2418 {
2419 var160 = ((val* (*)(val*))(var157->class->vft[COLOR_string__Object__to_s]))(var157) /* to_s on <var157:Array[Object]>*/;
2420 }
2421 {
2422 abstract_compiler__AbstractCompilerVisitor__add(self, var160); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2423 }
2424 } else {
2425 {
2426 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg140) on <var_arg140:RuntimeVariable> */
2427 var163 = var_arg140->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg140:RuntimeVariable> */
2428 if (unlikely(var163 == NULL)) {
2429 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2430 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
2431 show_backtrace(1);
2432 }
2433 var161 = var163;
2434 RET_LABEL162:(void)0;
2435 }
2436 }
2437 /* <var161:MType> isa MNullType */
2438 cltype165 = type_model__MNullType.color;
2439 idtype166 = type_model__MNullType.id;
2440 if(cltype165 >= var161->type->table_size) {
2441 var164 = 0;
2442 } else {
2443 var164 = var161->type->type_table[cltype165] == idtype166;
2444 }
2445 if (var164){
2446 if (varonce167) {
2447 var168 = varonce167;
2448 } else {
2449 var169 = " = 0; /* is null */";
2450 var170 = 19;
2451 var171 = string__NativeString__to_s_with_length(var169, var170);
2452 var168 = var171;
2453 varonce167 = var168;
2454 }
2455 var172 = NEW_array__Array(&type_array__Arraykernel__Object);
2456 { /* var172 = array_instance Array[Object] */
2457 var173 = 2;
2458 var174 = NEW_array__NativeArray(var173, &type_array__NativeArraykernel__Object);
2459 ((struct instance_array__NativeArray*)var174)->values[0] = (val*) var_res;
2460 ((struct instance_array__NativeArray*)var174)->values[1] = (val*) var168;
2461 {
2462 ((void (*)(val*, val*, long))(var172->class->vft[COLOR_array__Array__with_native]))(var172, var174, var173) /* with_native on <var172:Array[Object]>*/;
2463 }
2464 }
2465 {
2466 var175 = ((val* (*)(val*))(var172->class->vft[COLOR_string__Object__to_s]))(var172) /* to_s on <var172:Array[Object]>*/;
2467 }
2468 {
2469 abstract_compiler__AbstractCompilerVisitor__add(self, var175); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2470 }
2471 } else {
2472 if (varonce176) {
2473 var177 = varonce176;
2474 } else {
2475 var178 = " = 1; /* ";
2476 var179 = 9;
2477 var180 = string__NativeString__to_s_with_length(var178, var179);
2478 var177 = var180;
2479 varonce176 = var177;
2480 }
2481 {
2482 var181 = abstract_compiler__RuntimeVariable__inspect(var_arg140);
2483 }
2484 if (varonce182) {
2485 var183 = varonce182;
2486 } else {
2487 var184 = " cannot be null */";
2488 var185 = 18;
2489 var186 = string__NativeString__to_s_with_length(var184, var185);
2490 var183 = var186;
2491 varonce182 = var183;
2492 }
2493 var187 = NEW_array__Array(&type_array__Arraykernel__Object);
2494 { /* var187 = array_instance Array[Object] */
2495 var188 = 4;
2496 var189 = NEW_array__NativeArray(var188, &type_array__NativeArraykernel__Object);
2497 ((struct instance_array__NativeArray*)var189)->values[0] = (val*) var_res;
2498 ((struct instance_array__NativeArray*)var189)->values[1] = (val*) var177;
2499 ((struct instance_array__NativeArray*)var189)->values[2] = (val*) var181;
2500 ((struct instance_array__NativeArray*)var189)->values[3] = (val*) var183;
2501 {
2502 ((void (*)(val*, val*, long))(var187->class->vft[COLOR_array__Array__with_native]))(var187, var189, var188) /* with_native on <var187:Array[Object]>*/;
2503 }
2504 }
2505 {
2506 var190 = ((val* (*)(val*))(var187->class->vft[COLOR_string__Object__to_s]))(var187) /* to_s on <var187:Array[Object]>*/;
2507 }
2508 {
2509 abstract_compiler__AbstractCompilerVisitor__add(self, var190); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2510 }
2511 }
2512 }
2513 } else {
2514 if (varonce191) {
2515 var192 = varonce191;
2516 } else {
2517 var193 = "Receiver is null";
2518 var194 = 16;
2519 var195 = string__NativeString__to_s_with_length(var193, var194);
2520 var192 = var195;
2521 varonce191 = var192;
2522 }
2523 {
2524 abstract_compiler__AbstractCompilerVisitor__add_abort(self, var192); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
2525 }
2526 }
2527 }
2528 if (varonce196) {
2529 var197 = varonce196;
2530 } else {
2531 var198 = "} else {";
2532 var199 = 8;
2533 var200 = string__NativeString__to_s_with_length(var198, var199);
2534 var197 = var200;
2535 varonce196 = var197;
2536 }
2537 {
2538 abstract_compiler__AbstractCompilerVisitor__add(self, var197); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2539 }
2540 } else {
2541 if (varonce201) {
2542 var202 = varonce201;
2543 } else {
2544 var203 = "{";
2545 var204 = 1;
2546 var205 = string__NativeString__to_s_with_length(var203, var204);
2547 var202 = var205;
2548 varonce201 = var202;
2549 }
2550 {
2551 abstract_compiler__AbstractCompilerVisitor__add(self, var202); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2552 }
2553 }
2554 {
2555 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
2556 var209 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
2557 if (unlikely(var209 == NULL)) {
2558 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2559 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
2560 show_backtrace(1);
2561 }
2562 var207 = var209;
2563 RET_LABEL208:(void)0;
2564 }
2565 }
2566 {
2567 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var207) on <var207:AbstractCompiler(SeparateCompiler)> */
2568 var212 = var207->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var207:AbstractCompiler(SeparateCompiler)> */
2569 if (unlikely(var212 == NULL)) {
2570 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
2571 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
2572 show_backtrace(1);
2573 }
2574 var210 = var212;
2575 RET_LABEL211:(void)0;
2576 }
2577 }
2578 {
2579 { /* Inline modelbuilder#ModelBuilder#toolcontext (var210) on <var210:ModelBuilder> */
2580 var215 = var210->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var210:ModelBuilder> */
2581 if (unlikely(var215 == NULL)) {
2582 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
2583 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
2584 show_backtrace(1);
2585 }
2586 var213 = var215;
2587 RET_LABEL214:(void)0;
2588 }
2589 }
2590 {
2591 { /* Inline separate_compiler#ToolContext#opt_no_shortcut_equate (var213) on <var213:ToolContext> */
2592 var218 = var213->attrs[COLOR_separate_compiler__ToolContext___opt_no_shortcut_equate].val; /* _opt_no_shortcut_equate on <var213:ToolContext> */
2593 if (unlikely(var218 == NULL)) {
2594 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_shortcut_equate");
2595 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 30);
2596 show_backtrace(1);
2597 }
2598 var216 = var218;
2599 RET_LABEL217:(void)0;
2600 }
2601 }
2602 {
2603 { /* Inline opts#Option#value (var216) on <var216:OptionBool> */
2604 var221 = var216->attrs[COLOR_opts__Option___value].val; /* _value on <var216:OptionBool> */
2605 var219 = var221;
2606 RET_LABEL220:(void)0;
2607 }
2608 }
2609 var222 = ((struct instance_kernel__Bool*)var219)->value; /* autounbox from nullable Object to Bool */;
2610 var223 = !var222;
2611 var_224 = var223;
2612 if (var223){
2613 {
2614 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2615 var228 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2616 if (unlikely(var228 == NULL)) {
2617 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2618 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
2619 show_backtrace(1);
2620 }
2621 var226 = var228;
2622 RET_LABEL227:(void)0;
2623 }
2624 }
2625 if (varonce229) {
2626 var230 = varonce229;
2627 } else {
2628 var231 = "==";
2629 var232 = 2;
2630 var233 = string__NativeString__to_s_with_length(var231, var232);
2631 var230 = var233;
2632 varonce229 = var230;
2633 }
2634 {
2635 var235 = string__FlatString___61d_61d(var226, var230);
2636 var234 = var235;
2637 }
2638 var_236 = var234;
2639 if (var234){
2640 var225 = var_236;
2641 } else {
2642 {
2643 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2644 var239 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2645 if (unlikely(var239 == NULL)) {
2646 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2647 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
2648 show_backtrace(1);
2649 }
2650 var237 = var239;
2651 RET_LABEL238:(void)0;
2652 }
2653 }
2654 if (varonce240) {
2655 var241 = varonce240;
2656 } else {
2657 var242 = "!=";
2658 var243 = 2;
2659 var244 = string__NativeString__to_s_with_length(var242, var243);
2660 var241 = var244;
2661 varonce240 = var241;
2662 }
2663 {
2664 var246 = string__FlatString___61d_61d(var237, var241);
2665 var245 = var246;
2666 }
2667 var225 = var245;
2668 }
2669 var206 = var225;
2670 } else {
2671 var206 = var_224;
2672 }
2673 if (var206){
2674 var247 = NULL;
2675 if (var_res == NULL) {
2676 var248 = 1; /* is null */
2677 } else {
2678 var248 = 0; /* arg is null but recv is not */
2679 }
2680 if (0) {
2681 { /* Inline kernel#Object#== (var_res,var247) on <var_res:nullable RuntimeVariable> */
2682 var_other = var247;
2683 {
2684 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable RuntimeVariable(RuntimeVariable)> */
2685 var253 = var_res == var_other;
2686 var251 = var253;
2687 goto RET_LABEL252;
2688 RET_LABEL252:(void)0;
2689 }
2690 }
2691 var249 = var251;
2692 goto RET_LABEL250;
2693 RET_LABEL250:(void)0;
2694 }
2695 var248 = var249;
2696 }
2697 if (var248){
2698 {
2699 var254 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
2700 }
2701 {
2702 var255 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var254);
2703 }
2704 var_res = var255;
2705 } else {
2706 }
2707 var256 = 1;
2708 {
2709 var257 = array__Array___91d_93d(var_arguments, var256);
2710 }
2711 var_arg258 = var257;
2712 {
2713 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var_arg258) on <var_arg258:RuntimeVariable> */
2714 var261 = var_arg258->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var_arg258:RuntimeVariable> */
2715 if (unlikely(var261 == NULL)) {
2716 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
2717 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
2718 show_backtrace(1);
2719 }
2720 var259 = var261;
2721 RET_LABEL260:(void)0;
2722 }
2723 }
2724 /* <var259:MType> isa MNullType */
2725 cltype263 = type_model__MNullType.color;
2726 idtype264 = type_model__MNullType.id;
2727 if(cltype263 >= var259->type->table_size) {
2728 var262 = 0;
2729 } else {
2730 var262 = var259->type->type_table[cltype263] == idtype264;
2731 }
2732 if (var262){
2733 {
2734 { /* Inline model#MProperty#name (var_mmethod) on <var_mmethod:MMethod> */
2735 var267 = var_mmethod->attrs[COLOR_model__MProperty___name].val; /* _name on <var_mmethod:MMethod> */
2736 if (unlikely(var267 == NULL)) {
2737 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2738 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
2739 show_backtrace(1);
2740 }
2741 var265 = var267;
2742 RET_LABEL266:(void)0;
2743 }
2744 }
2745 if (varonce268) {
2746 var269 = varonce268;
2747 } else {
2748 var270 = "==";
2749 var271 = 2;
2750 var272 = string__NativeString__to_s_with_length(var270, var271);
2751 var269 = var272;
2752 varonce268 = var269;
2753 }
2754 {
2755 var274 = string__FlatString___61d_61d(var265, var269);
2756 var273 = var274;
2757 }
2758 if (var273){
2759 if (varonce275) {
2760 var276 = varonce275;
2761 } else {
2762 var277 = " = 0; /* arg is null but recv is not */";
2763 var278 = 39;
2764 var279 = string__NativeString__to_s_with_length(var277, var278);
2765 var276 = var279;
2766 varonce275 = var276;
2767 }
2768 var280 = NEW_array__Array(&type_array__Arraykernel__Object);
2769 { /* var280 = array_instance Array[Object] */
2770 var281 = 2;
2771 var282 = NEW_array__NativeArray(var281, &type_array__NativeArraykernel__Object);
2772 ((struct instance_array__NativeArray*)var282)->values[0] = (val*) var_res;
2773 ((struct instance_array__NativeArray*)var282)->values[1] = (val*) var276;
2774 {
2775 ((void (*)(val*, val*, long))(var280->class->vft[COLOR_array__Array__with_native]))(var280, var282, var281) /* with_native on <var280:Array[Object]>*/;
2776 }
2777 }
2778 {
2779 var283 = ((val* (*)(val*))(var280->class->vft[COLOR_string__Object__to_s]))(var280) /* to_s on <var280:Array[Object]>*/;
2780 }
2781 {
2782 abstract_compiler__AbstractCompilerVisitor__add(self, var283); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2783 }
2784 } else {
2785 if (varonce284) {
2786 var285 = varonce284;
2787 } else {
2788 var286 = " = 1; /* arg is null and recv is not */";
2789 var287 = 39;
2790 var288 = string__NativeString__to_s_with_length(var286, var287);
2791 var285 = var288;
2792 varonce284 = var285;
2793 }
2794 var289 = NEW_array__Array(&type_array__Arraykernel__Object);
2795 { /* var289 = array_instance Array[Object] */
2796 var290 = 2;
2797 var291 = NEW_array__NativeArray(var290, &type_array__NativeArraykernel__Object);
2798 ((struct instance_array__NativeArray*)var291)->values[0] = (val*) var_res;
2799 ((struct instance_array__NativeArray*)var291)->values[1] = (val*) var285;
2800 {
2801 ((void (*)(val*, val*, long))(var289->class->vft[COLOR_array__Array__with_native]))(var289, var291, var290) /* with_native on <var289:Array[Object]>*/;
2802 }
2803 }
2804 {
2805 var292 = ((val* (*)(val*))(var289->class->vft[COLOR_string__Object__to_s]))(var289) /* to_s on <var289:Array[Object]>*/;
2806 }
2807 {
2808 abstract_compiler__AbstractCompilerVisitor__add(self, var292); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2809 }
2810 }
2811 if (varonce293) {
2812 var294 = varonce293;
2813 } else {
2814 var295 = "}";
2815 var296 = 1;
2816 var297 = string__NativeString__to_s_with_length(var295, var296);
2817 var294 = var297;
2818 varonce293 = var294;
2819 }
2820 {
2821 abstract_compiler__AbstractCompilerVisitor__add(self, var294); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2822 }
2823 if (varonce298) {
2824 var299 = varonce298;
2825 } else {
2826 var300 = "if (0) {";
2827 var301 = 8;
2828 var302 = string__NativeString__to_s_with_length(var300, var301);
2829 var299 = var302;
2830 varonce298 = var299;
2831 }
2832 {
2833 abstract_compiler__AbstractCompilerVisitor__add(self, var299); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
2834 }
2835 } else {
2836 }
2837 } else {
2838 }
2839 var = var_res;
2840 goto RET_LABEL;
2841 RET_LABEL:;
2842 return var;
2843 }
2844 /* method separate_compiler#SeparateCompilerVisitor#before_send for (self: Object, MMethod, Array[RuntimeVariable]): nullable RuntimeVariable */
2845 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__before_send(val* self, val* p0, val* p1) {
2846 val* var /* : nullable RuntimeVariable */;
2847 val* var1 /* : nullable RuntimeVariable */;
2848 var1 = separate_compiler__SeparateCompilerVisitor__before_send(self, p0, p1);
2849 var = var1;
2850 RET_LABEL:;
2851 return var;
2852 }
2853 /* method separate_compiler#SeparateCompilerVisitor#table_send for (self: SeparateCompilerVisitor, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */
2854 val* separate_compiler__SeparateCompilerVisitor__table_send(val* self, val* p0, val* p1, val* p2) {
2855 val* var /* : nullable RuntimeVariable */;
2856 val* var_mmethod /* var mmethod: MMethod */;
2857 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
2858 val* var_const_color /* var const_color: String */;
2859 val* var1 /* : AbstractCompiler */;
2860 val* var3 /* : AbstractCompiler */;
2861 val* var4 /* : ModelBuilder */;
2862 val* var6 /* : ModelBuilder */;
2863 val* var_ /* var : ModelBuilder */;
2864 long var7 /* : Int */;
2865 long var9 /* : Int */;
2866 long var10 /* : Int */;
2867 long var11 /* : Int */;
2868 short int var13 /* : Bool */;
2869 int cltype;
2870 int idtype;
2871 const char* var_class_name;
2872 long var14 /* : Int */;
2873 val* var16 /* : AbstractCompiler */;
2874 val* var18 /* : AbstractCompiler */;
2875 val* var19 /* : ModelBuilder */;
2876 val* var21 /* : ModelBuilder */;
2877 val* var22 /* : ToolContext */;
2878 val* var24 /* : ToolContext */;
2879 val* var25 /* : OptionBool */;
2880 val* var27 /* : OptionBool */;
2881 val* var28 /* : nullable Object */;
2882 val* var30 /* : nullable Object */;
2883 short int var31 /* : Bool */;
2884 static val* varonce;
2885 val* var32 /* : String */;
2886 char* var33 /* : NativeString */;
2887 long var34 /* : Int */;
2888 val* var35 /* : FlatString */;
2889 long var36 /* : Int */;
2890 long var38 /* : Int */;
2891 val* var39 /* : MPropDef */;
2892 val* var41 /* : MPropDef */;
2893 val* var42 /* : nullable MSignature */;
2894 val* var44 /* : nullable MSignature */;
2895 long var45 /* : Int */;
2896 long var46 /* : Int */;
2897 long var47 /* : Int */;
2898 short int var49 /* : Bool */;
2899 int cltype50;
2900 int idtype51;
2901 const char* var_class_name52;
2902 long var53 /* : Int */;
2903 short int var54 /* : Bool */;
2904 short int var55 /* : Bool */;
2905 short int var57 /* : Bool */;
2906 static val* varonce58;
2907 val* var59 /* : String */;
2908 char* var60 /* : NativeString */;
2909 long var61 /* : Int */;
2910 val* var62 /* : FlatString */;
2911 static val* varonce63;
2912 val* var64 /* : String */;
2913 char* var65 /* : NativeString */;
2914 long var66 /* : Int */;
2915 val* var67 /* : FlatString */;
2916 long var68 /* : Int */;
2917 long var70 /* : Int */;
2918 static val* varonce71;
2919 val* var72 /* : String */;
2920 char* var73 /* : NativeString */;
2921 long var74 /* : Int */;
2922 val* var75 /* : FlatString */;
2923 val* var76 /* : Array[Object] */;
2924 long var77 /* : Int */;
2925 val* var78 /* : NativeArray[Object] */;
2926 val* var79 /* : Object */;
2927 val* var80 /* : String */;
2928 val* var81 /* : nullable Object */;
2929 val* var_recv /* var recv: RuntimeVariable */;
2930 val* var82 /* : nullable RuntimeVariable */;
2931 val* var_res0 /* var res0: nullable RuntimeVariable */;
2932 val* var83 /* : MPropDef */;
2933 val* var85 /* : MPropDef */;
2934 val* var86 /* : nullable MSignature */;
2935 val* var88 /* : nullable MSignature */;
2936 val* var89 /* : MPropDef */;
2937 val* var91 /* : MPropDef */;
2938 val* var92 /* : MClassDef */;
2939 val* var94 /* : MClassDef */;
2940 val* var95 /* : MClassType */;
2941 val* var97 /* : MClassType */;
2942 val* var98 /* : MPropDef */;
2943 val* var100 /* : MPropDef */;
2944 val* var101 /* : MClassDef */;
2945 val* var103 /* : MClassDef */;
2946 val* var104 /* : MClassType */;
2947 val* var106 /* : MClassType */;
2948 val* var107 /* : MPropDef */;
2949 val* var109 /* : MPropDef */;
2950 val* var110 /* : MClassDef */;
2951 val* var112 /* : MClassDef */;
2952 val* var113 /* : MModule */;
2953 val* var115 /* : MModule */;
2954 short int var116 /* : Bool */;
2955 val* var117 /* : MSignature */;
2956 val* var_msignature /* var msignature: MSignature */;
2957 val* var118 /* : nullable MType */;
2958 val* var120 /* : nullable MType */;
2959 val* var_ret /* var ret: nullable MType */;
2960 val* var121 /* : null */;
2961 short int var122 /* : Bool */;
2962 short int var123 /* : Bool */;
2963 val* var_other /* var other: nullable Object */;
2964 short int var125 /* : Bool */;
2965 short int var127 /* : Bool */;
2966 val* var128 /* : null */;
2967 val* var_res /* var res: nullable RuntimeVariable */;
2968 val* var129 /* : RuntimeVariable */;
2969 val* var130 /* : FlatBuffer */;
2970 val* var_s /* var s: FlatBuffer */;
2971 val* var131 /* : FlatBuffer */;
2972 val* var_ss /* var ss: FlatBuffer */;
2973 static val* varonce132;
2974 val* var133 /* : String */;
2975 char* var134 /* : NativeString */;
2976 long var135 /* : Int */;
2977 val* var136 /* : FlatString */;
2978 val* var137 /* : Array[Object] */;
2979 long var138 /* : Int */;
2980 val* var139 /* : NativeArray[Object] */;
2981 val* var140 /* : String */;
2982 long var141 /* : Int */;
2983 long var_i /* var i: Int */;
2984 long var142 /* : Int */;
2985 long var_143 /* var : Int */;
2986 short int var144 /* : Bool */;
2987 short int var146 /* : Bool */;
2988 int cltype147;
2989 int idtype148;
2990 const char* var_class_name149;
2991 short int var150 /* : Bool */;
2992 long var151 /* : Int */;
2993 long var152 /* : Int */;
2994 short int var154 /* : Bool */;
2995 int cltype155;
2996 int idtype156;
2997 const char* var_class_name157;
2998 long var158 /* : Int */;
2999 val* var159 /* : nullable Object */;
3000 val* var_a /* var a: RuntimeVariable */;
3001 val* var160 /* : Array[MParameter] */;
3002 val* var162 /* : Array[MParameter] */;
3003 val* var163 /* : nullable Object */;
3004 val* var164 /* : MType */;
3005 val* var166 /* : MType */;
3006 val* var_t /* var t: MType */;
3007 long var167 /* : Int */;
3008 long var169 /* : Int */;
3009 short int var170 /* : Bool */;
3010 short int var171 /* : Bool */;
3011 short int var173 /* : Bool */;
3012 long var174 /* : Int */;
3013 long var175 /* : Int */;
3014 short int var177 /* : Bool */;
3015 int cltype178;
3016 int idtype179;
3017 const char* var_class_name180;
3018 long var181 /* : Int */;
3019 val* var182 /* : nullable Object */;
3020 val* var183 /* : MType */;
3021 val* var185 /* : MType */;
3022 static val* varonce186;
3023 val* var187 /* : String */;
3024 char* var188 /* : NativeString */;
3025 long var189 /* : Int */;
3026 val* var190 /* : FlatString */;
3027 val* var191 /* : String */;
3028 val* var192 /* : Array[Object] */;
3029 long var193 /* : Int */;
3030 val* var194 /* : NativeArray[Object] */;
3031 val* var195 /* : String */;
3032 val* var196 /* : RuntimeVariable */;
3033 static val* varonce197;
3034 val* var198 /* : String */;
3035 char* var199 /* : NativeString */;
3036 long var200 /* : Int */;
3037 val* var201 /* : FlatString */;
3038 val* var202 /* : Array[Object] */;
3039 long var203 /* : Int */;
3040 val* var204 /* : NativeArray[Object] */;
3041 val* var205 /* : String */;
3042 long var206 /* : Int */;
3043 long var207 /* : Int */;
3044 val* var208 /* : null */;
3045 short int var209 /* : Bool */;
3046 short int var210 /* : Bool */;
3047 short int var212 /* : Bool */;
3048 short int var214 /* : Bool */;
3049 static val* varonce215;
3050 val* var216 /* : String */;
3051 char* var217 /* : NativeString */;
3052 long var218 /* : Int */;
3053 val* var219 /* : FlatString */;
3054 val* var_r /* var r: nullable Object */;
3055 val* var220 /* : String */;
3056 static val* varonce221;
3057 val* var222 /* : String */;
3058 char* var223 /* : NativeString */;
3059 long var224 /* : Int */;
3060 val* var225 /* : FlatString */;
3061 static val* varonce226;
3062 val* var227 /* : String */;
3063 char* var228 /* : NativeString */;
3064 long var229 /* : Int */;
3065 val* var230 /* : FlatString */;
3066 static val* varonce231;
3067 val* var232 /* : String */;
3068 char* var233 /* : NativeString */;
3069 long var234 /* : Int */;
3070 val* var235 /* : FlatString */;
3071 val* var236 /* : nullable Object */;
3072 static val* varonce237;
3073 val* var238 /* : String */;
3074 char* var239 /* : NativeString */;
3075 long var240 /* : Int */;
3076 val* var241 /* : FlatString */;
3077 static val* varonce242;
3078 val* var243 /* : String */;
3079 char* var244 /* : NativeString */;
3080 long var245 /* : Int */;
3081 val* var246 /* : FlatString */;
3082 static val* varonce247;
3083 val* var248 /* : String */;
3084 char* var249 /* : NativeString */;
3085 long var250 /* : Int */;
3086 val* var251 /* : FlatString */;
3087 static val* varonce252;
3088 val* var253 /* : String */;
3089 char* var254 /* : NativeString */;
3090 long var255 /* : Int */;
3091 val* var256 /* : FlatString */;
3092 val* var257 /* : nullable Object */;
3093 val* var258 /* : String */;
3094 static val* varonce259;
3095 val* var260 /* : String */;
3096 char* var261 /* : NativeString */;
3097 long var262 /* : Int */;
3098 val* var263 /* : FlatString */;
3099 val* var264 /* : Array[Object] */;
3100 long var265 /* : Int */;
3101 val* var266 /* : NativeArray[Object] */;
3102 val* var267 /* : String */;
3103 val* var_call /* var call: String */;
3104 val* var268 /* : null */;
3105 short int var269 /* : Bool */;
3106 short int var270 /* : Bool */;
3107 val* var_other272 /* var other: nullable Object */;
3108 short int var273 /* : Bool */;
3109 short int var274 /* : Bool */;
3110 short int var275 /* : Bool */;
3111 static val* varonce276;
3112 val* var277 /* : String */;
3113 char* var278 /* : NativeString */;
3114 long var279 /* : Int */;
3115 val* var280 /* : FlatString */;
3116 static val* varonce281;
3117 val* var282 /* : String */;
3118 char* var283 /* : NativeString */;
3119 long var284 /* : Int */;
3120 val* var285 /* : FlatString */;
3121 val* var286 /* : Array[Object] */;
3122 long var287 /* : Int */;
3123 val* var288 /* : NativeArray[Object] */;
3124 val* var289 /* : String */;
3125 static val* varonce290;
3126 val* var291 /* : String */;
3127 char* var292 /* : NativeString */;
3128 long var293 /* : Int */;
3129 val* var294 /* : FlatString */;
3130 val* var295 /* : Array[Object] */;
3131 long var296 /* : Int */;
3132 val* var297 /* : NativeArray[Object] */;
3133 val* var298 /* : String */;
3134 val* var299 /* : null */;
3135 short int var300 /* : Bool */;
3136 short int var301 /* : Bool */;
3137 short int var303 /* : Bool */;
3138 short int var304 /* : Bool */;
3139 short int var305 /* : Bool */;
3140 val* var306 /* : null */;
3141 short int var307 /* : Bool */;
3142 short int var308 /* : Bool */;
3143 short int var310 /* : Bool */;
3144 short int var311 /* : Bool */;
3145 short int var312 /* : Bool */;
3146 static val* varonce313;
3147 val* var314 /* : String */;
3148 char* var315 /* : NativeString */;
3149 long var316 /* : Int */;
3150 val* var317 /* : FlatString */;
3151 var_mmethod = p0;
3152 var_arguments = p1;
3153 var_const_color = p2;
3154 {
3155 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3156 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3157 if (unlikely(var3 == NULL)) {
3158 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3159 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
3160 show_backtrace(1);
3161 }
3162 var1 = var3;
3163 RET_LABEL2:(void)0;
3164 }
3165 }
3166 {
3167 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var1) on <var1:AbstractCompiler(SeparateCompiler)> */
3168 var6 = var1->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var1:AbstractCompiler(SeparateCompiler)> */
3169 if (unlikely(var6 == NULL)) {
3170 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3171 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
3172 show_backtrace(1);
3173 }
3174 var4 = var6;
3175 RET_LABEL5:(void)0;
3176 }
3177 }
3178 var_ = var4;
3179 {
3180 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables (var_) on <var_:ModelBuilder> */
3181 var9 = var_->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on <var_:ModelBuilder> */
3182 var7 = var9;
3183 RET_LABEL8:(void)0;
3184 }
3185 }
3186 var10 = 1;
3187 {
3188 { /* Inline kernel#Int#+ (var7,var10) on <var7:Int> */
3189 /* Covariant cast for argument 0 (i) <var10:Int> isa OTHER */
3190 /* <var10:Int> isa OTHER */
3191 var13 = 1; /* easy <var10:Int> isa OTHER*/
3192 if (unlikely(!var13)) {
3193 var_class_name = type_kernel__Int.name;
3194 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3195 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
3196 show_backtrace(1);
3197 }
3198 var14 = var7 + var10;
3199 var11 = var14;
3200 goto RET_LABEL12;
3201 RET_LABEL12:(void)0;
3202 }
3203 }
3204 {
3205 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables= (var_,var11) on <var_:ModelBuilder> */
3206 var_->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_tables].l = var11; /* _nb_invok_by_tables on <var_:ModelBuilder> */
3207 RET_LABEL15:(void)0;
3208 }
3209 }
3210 {
3211 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
3212 var18 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
3213 if (unlikely(var18 == NULL)) {
3214 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
3215 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
3216 show_backtrace(1);
3217 }
3218 var16 = var18;
3219 RET_LABEL17:(void)0;
3220 }
3221 }
3222 {
3223 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var16) on <var16:AbstractCompiler(SeparateCompiler)> */
3224 var21 = var16->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var16:AbstractCompiler(SeparateCompiler)> */
3225 if (unlikely(var21 == NULL)) {
3226 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
3227 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
3228 show_backtrace(1);
3229 }
3230 var19 = var21;
3231 RET_LABEL20:(void)0;
3232 }
3233 }
3234 {
3235 { /* Inline modelbuilder#ModelBuilder#toolcontext (var19) on <var19:ModelBuilder> */
3236 var24 = var19->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var19:ModelBuilder> */
3237 if (unlikely(var24 == NULL)) {
3238 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
3239 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
3240 show_backtrace(1);
3241 }
3242 var22 = var24;
3243 RET_LABEL23:(void)0;
3244 }
3245 }
3246 {
3247 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var22) on <var22:ToolContext> */
3248 var27 = var22->attrs[COLOR_abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var22:ToolContext> */
3249 if (unlikely(var27 == NULL)) {
3250 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
3251 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 63);
3252 show_backtrace(1);
3253 }
3254 var25 = var27;
3255 RET_LABEL26:(void)0;
3256 }
3257 }
3258 {
3259 { /* Inline opts#Option#value (var25) on <var25:OptionBool> */
3260 var30 = var25->attrs[COLOR_opts__Option___value].val; /* _value on <var25:OptionBool> */
3261 var28 = var30;
3262 RET_LABEL29:(void)0;
3263 }
3264 }
3265 var31 = ((struct instance_kernel__Bool*)var28)->value; /* autounbox from nullable Object to Bool */;
3266 if (var31){
3267 if (varonce) {
3268 var32 = varonce;
3269 } else {
3270 var33 = "count_invoke_by_tables++;";
3271 var34 = 25;
3272 var35 = string__NativeString__to_s_with_length(var33, var34);
3273 var32 = var35;
3274 varonce = var32;
3275 }
3276 {
3277 abstract_compiler__AbstractCompilerVisitor__add(self, var32); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
3278 }
3279 } else {
3280 }
3281 {
3282 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
3283 var38 = var_arguments->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
3284 var36 = var38;
3285 RET_LABEL37:(void)0;
3286 }
3287 }
3288 {
3289 { /* Inline model#MProperty#intro (var_mmethod) on <var_mmethod:MMethod> */
3290 var41 = var_mmethod->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_mmethod:MMethod> */
3291 if (unlikely(var41 == NULL)) {
3292 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3293 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3294 show_backtrace(1);
3295 }
3296 var39 = var41;
3297 RET_LABEL40:(void)0;
3298 }
3299 }
3300 {
3301 { /* Inline model#MMethodDef#msignature (var39) on <var39:MPropDef(MMethodDef)> */
3302 var44 = var39->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var39:MPropDef(MMethodDef)> */
3303 var42 = var44;
3304 RET_LABEL43:(void)0;
3305 }
3306 }
3307 if (var42 == NULL) {
3308 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3309 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1167);
3310 show_backtrace(1);
3311 } else {
3312 var45 = model__MSignature__arity(var42);
3313 }
3314 var46 = 1;
3315 {
3316 { /* Inline kernel#Int#+ (var45,var46) on <var45:Int> */
3317 /* Covariant cast for argument 0 (i) <var46:Int> isa OTHER */
3318 /* <var46:Int> isa OTHER */
3319 var49 = 1; /* easy <var46:Int> isa OTHER*/
3320 if (unlikely(!var49)) {
3321 var_class_name52 = type_kernel__Int.name;
3322 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name52);
3323 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
3324 show_backtrace(1);
3325 }
3326 var53 = var45 + var46;
3327 var47 = var53;
3328 goto RET_LABEL48;
3329 RET_LABEL48:(void)0;
3330 }
3331 }
3332 {
3333 { /* Inline kernel#Int#== (var36,var47) on <var36:Int> */
3334 var57 = var36 == var47;
3335 var55 = var57;
3336 goto RET_LABEL56;
3337 RET_LABEL56:(void)0;
3338 }
3339 var54 = var55;
3340 }
3341 if (unlikely(!var54)) {
3342 if (varonce58) {
3343 var59 = varonce58;
3344 } else {
3345 var60 = "Invalid arity for ";
3346 var61 = 18;
3347 var62 = string__NativeString__to_s_with_length(var60, var61);
3348 var59 = var62;
3349 varonce58 = var59;
3350 }
3351 if (varonce63) {
3352 var64 = varonce63;
3353 } else {
3354 var65 = ". ";
3355 var66 = 2;
3356 var67 = string__NativeString__to_s_with_length(var65, var66);
3357 var64 = var67;
3358 varonce63 = var64;
3359 }
3360 {
3361 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
3362 var70 = var_arguments->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
3363 var68 = var70;
3364 RET_LABEL69:(void)0;
3365 }
3366 }
3367 if (varonce71) {
3368 var72 = varonce71;
3369 } else {
3370 var73 = " arguments given.";
3371 var74 = 17;
3372 var75 = string__NativeString__to_s_with_length(var73, var74);
3373 var72 = var75;
3374 varonce71 = var72;
3375 }
3376 var76 = NEW_array__Array(&type_array__Arraykernel__Object);
3377 { /* var76 = array_instance Array[Object] */
3378 var77 = 5;
3379 var78 = NEW_array__NativeArray(var77, &type_array__NativeArraykernel__Object);
3380 ((struct instance_array__NativeArray*)var78)->values[0] = (val*) var59;
3381 ((struct instance_array__NativeArray*)var78)->values[1] = (val*) var_mmethod;
3382 ((struct instance_array__NativeArray*)var78)->values[2] = (val*) var64;
3383 var79 = BOX_kernel__Int(var68); /* autobox from Int to Object */
3384 ((struct instance_array__NativeArray*)var78)->values[3] = (val*) var79;
3385 ((struct instance_array__NativeArray*)var78)->values[4] = (val*) var72;
3386 {
3387 ((void (*)(val*, val*, long))(var76->class->vft[COLOR_array__Array__with_native]))(var76, var78, var77) /* with_native on <var76:Array[Object]>*/;
3388 }
3389 }
3390 {
3391 var80 = ((val* (*)(val*))(var76->class->vft[COLOR_string__Object__to_s]))(var76) /* to_s on <var76:Array[Object]>*/;
3392 }
3393 {
3394 abstract_compiler__AbstractCompilerVisitor__debug(self, var80); /* Direct call abstract_compiler#AbstractCompilerVisitor#debug on <self:SeparateCompilerVisitor>*/
3395 }
3396 PRINT_ERROR("Runtime error: %s", "Assert failed");
3397 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1167);
3398 show_backtrace(1);
3399 }
3400 {
3401 var81 = abstract_collection__SequenceRead__first(var_arguments);
3402 }
3403 var_recv = var81;
3404 {
3405 var82 = separate_compiler__SeparateCompilerVisitor__before_send(self, var_mmethod, var_arguments);
3406 }
3407 var_res0 = var82;
3408 {
3409 { /* Inline model#MProperty#intro (var_mmethod) on <var_mmethod:MMethod> */
3410 var85 = var_mmethod->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_mmethod:MMethod> */
3411 if (unlikely(var85 == NULL)) {
3412 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3413 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3414 show_backtrace(1);
3415 }
3416 var83 = var85;
3417 RET_LABEL84:(void)0;
3418 }
3419 }
3420 {
3421 { /* Inline model#MMethodDef#msignature (var83) on <var83:MPropDef(MMethodDef)> */
3422 var88 = var83->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var83:MPropDef(MMethodDef)> */
3423 var86 = var88;
3424 RET_LABEL87:(void)0;
3425 }
3426 }
3427 {
3428 { /* Inline model#MProperty#intro (var_mmethod) on <var_mmethod:MMethod> */
3429 var91 = var_mmethod->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_mmethod:MMethod> */
3430 if (unlikely(var91 == NULL)) {
3431 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3432 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3433 show_backtrace(1);
3434 }
3435 var89 = var91;
3436 RET_LABEL90:(void)0;
3437 }
3438 }
3439 {
3440 { /* Inline model#MPropDef#mclassdef (var89) on <var89:MPropDef(MMethodDef)> */
3441 var94 = var89->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var89:MPropDef(MMethodDef)> */
3442 if (unlikely(var94 == NULL)) {
3443 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3444 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
3445 show_backtrace(1);
3446 }
3447 var92 = var94;
3448 RET_LABEL93:(void)0;
3449 }
3450 }
3451 {
3452 { /* Inline model#MClassDef#bound_mtype (var92) on <var92:MClassDef> */
3453 var97 = var92->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var92:MClassDef> */
3454 if (unlikely(var97 == NULL)) {
3455 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3456 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
3457 show_backtrace(1);
3458 }
3459 var95 = var97;
3460 RET_LABEL96:(void)0;
3461 }
3462 }
3463 {
3464 { /* Inline model#MProperty#intro (var_mmethod) on <var_mmethod:MMethod> */
3465 var100 = var_mmethod->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_mmethod:MMethod> */
3466 if (unlikely(var100 == NULL)) {
3467 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3468 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3469 show_backtrace(1);
3470 }
3471 var98 = var100;
3472 RET_LABEL99:(void)0;
3473 }
3474 }
3475 {
3476 { /* Inline model#MPropDef#mclassdef (var98) on <var98:MPropDef(MMethodDef)> */
3477 var103 = var98->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var98:MPropDef(MMethodDef)> */
3478 if (unlikely(var103 == NULL)) {
3479 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3480 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
3481 show_backtrace(1);
3482 }
3483 var101 = var103;
3484 RET_LABEL102:(void)0;
3485 }
3486 }
3487 {
3488 { /* Inline model#MClassDef#bound_mtype (var101) on <var101:MClassDef> */
3489 var106 = var101->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var101:MClassDef> */
3490 if (unlikely(var106 == NULL)) {
3491 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3492 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
3493 show_backtrace(1);
3494 }
3495 var104 = var106;
3496 RET_LABEL105:(void)0;
3497 }
3498 }
3499 {
3500 { /* Inline model#MProperty#intro (var_mmethod) on <var_mmethod:MMethod> */
3501 var109 = var_mmethod->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_mmethod:MMethod> */
3502 if (unlikely(var109 == NULL)) {
3503 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
3504 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
3505 show_backtrace(1);
3506 }
3507 var107 = var109;
3508 RET_LABEL108:(void)0;
3509 }
3510 }
3511 {
3512 { /* Inline model#MPropDef#mclassdef (var107) on <var107:MPropDef(MMethodDef)> */
3513 var112 = var107->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var107:MPropDef(MMethodDef)> */
3514 if (unlikely(var112 == NULL)) {
3515 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
3516 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
3517 show_backtrace(1);
3518 }
3519 var110 = var112;
3520 RET_LABEL111:(void)0;
3521 }
3522 }
3523 {
3524 { /* Inline model#MClassDef#mmodule (var110) on <var110:MClassDef> */
3525 var115 = var110->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var110:MClassDef> */
3526 if (unlikely(var115 == NULL)) {
3527 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
3528 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
3529 show_backtrace(1);
3530 }
3531 var113 = var115;
3532 RET_LABEL114:(void)0;
3533 }
3534 }
3535 var116 = 1;
3536 if (var86 == NULL) {
3537 PRINT_ERROR("Runtime error: %s", "Receiver is null");
3538 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1173);
3539 show_backtrace(1);
3540 } else {
3541 var117 = model__MSignature__resolve_for(var86, var95, var104, var113, var116);
3542 }
3543 var_msignature = var117;
3544 {
3545 { /* Inline model#MSignature#return_mtype (var_msignature) on <var_msignature:MSignature> */
3546 var120 = var_msignature->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var_msignature:MSignature> */
3547 var118 = var120;
3548 RET_LABEL119:(void)0;
3549 }
3550 }
3551 var_ret = var118;
3552 var121 = NULL;
3553 if (var_ret == NULL) {
3554 var122 = 1; /* is null */
3555 } else {
3556 var122 = 0; /* arg is null but recv is not */
3557 }
3558 if (0) {
3559 { /* Inline kernel#Object#== (var_ret,var121) on <var_ret:nullable MType> */
3560 var_other = var121;
3561 {
3562 { /* Inline kernel#Object#is_same_instance (var_ret,var_other) on <var_ret:nullable MType(MType)> */
3563 var127 = var_ret == var_other;
3564 var125 = var127;
3565 goto RET_LABEL126;
3566 RET_LABEL126:(void)0;
3567 }
3568 }
3569 var123 = var125;
3570 goto RET_LABEL124;
3571 RET_LABEL124:(void)0;
3572 }
3573 var122 = var123;
3574 }
3575 if (var122){
3576 var128 = NULL;
3577 var_res = var128;
3578 } else {
3579 {
3580 var129 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_ret);
3581 }
3582 var_res = var129;
3583 }
3584 var130 = NEW_string__FlatBuffer(&type_string__FlatBuffer);
3585 {
3586 ((void (*)(val*))(var130->class->vft[COLOR_kernel__Object__init]))(var130) /* init on <var130:FlatBuffer>*/;
3587 }
3588 var_s = var130;
3589 var131 = NEW_string__FlatBuffer(&type_string__FlatBuffer);
3590 {
3591 ((void (*)(val*))(var131->class->vft[COLOR_kernel__Object__init]))(var131) /* init on <var131:FlatBuffer>*/;
3592 }
3593 var_ss = var131;
3594 if (varonce132) {
3595 var133 = varonce132;
3596 } else {
3597 var134 = "val*";
3598 var135 = 4;
3599 var136 = string__NativeString__to_s_with_length(var134, var135);
3600 var133 = var136;
3601 varonce132 = var133;
3602 }
3603 {
3604 string__FlatBuffer__append(var_s, var133); /* Direct call string#FlatBuffer#append on <var_s:FlatBuffer>*/
3605 }
3606 var137 = NEW_array__Array(&type_array__Arraykernel__Object);
3607 { /* var137 = array_instance Array[Object] */
3608 var138 = 1;
3609 var139 = NEW_array__NativeArray(var138, &type_array__NativeArraykernel__Object);
3610 ((struct instance_array__NativeArray*)var139)->values[0] = (val*) var_recv;
3611 {
3612 ((void (*)(val*, val*, long))(var137->class->vft[COLOR_array__Array__with_native]))(var137, var139, var138) /* with_native on <var137:Array[Object]>*/;
3613 }
3614 }
3615 {
3616 var140 = ((val* (*)(val*))(var137->class->vft[COLOR_string__Object__to_s]))(var137) /* to_s on <var137:Array[Object]>*/;
3617 }
3618 {
3619 string__FlatBuffer__append(var_ss, var140); /* Direct call string#FlatBuffer#append on <var_ss:FlatBuffer>*/
3620 }
3621 var141 = 0;
3622 var_i = var141;
3623 {
3624 var142 = model__MSignature__arity(var_msignature);
3625 }
3626 var_143 = var142;
3627 for(;;) {
3628 {
3629 { /* Inline kernel#Int#< (var_i,var_143) on <var_i:Int> */
3630 /* Covariant cast for argument 0 (i) <var_143:Int> isa OTHER */
3631 /* <var_143:Int> isa OTHER */
3632 var146 = 1; /* easy <var_143:Int> isa OTHER*/
3633 if (unlikely(!var146)) {
3634 var_class_name149 = type_kernel__Int.name;
3635 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name149);
3636 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
3637 show_backtrace(1);
3638 }
3639 var150 = var_i < var_143;
3640 var144 = var150;
3641 goto RET_LABEL145;
3642 RET_LABEL145:(void)0;
3643 }
3644 }
3645 if (var144){
3646 var151 = 1;
3647 {
3648 { /* Inline kernel#Int#+ (var_i,var151) on <var_i:Int> */
3649 /* Covariant cast for argument 0 (i) <var151:Int> isa OTHER */
3650 /* <var151:Int> isa OTHER */
3651 var154 = 1; /* easy <var151:Int> isa OTHER*/
3652 if (unlikely(!var154)) {
3653 var_class_name157 = type_kernel__Int.name;
3654 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name157);
3655 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
3656 show_backtrace(1);
3657 }
3658 var158 = var_i + var151;
3659 var152 = var158;
3660 goto RET_LABEL153;
3661 RET_LABEL153:(void)0;
3662 }
3663 }
3664 {
3665 var159 = array__Array___91d_93d(var_arguments, var152);
3666 }
3667 var_a = var159;
3668 {
3669 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
3670 var162 = var_msignature->attrs[COLOR_model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
3671 if (unlikely(var162 == NULL)) {
3672 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
3673 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1465);
3674 show_backtrace(1);
3675 }
3676 var160 = var162;
3677 RET_LABEL161:(void)0;
3678 }
3679 }
3680 {
3681 var163 = array__Array___91d_93d(var160, var_i);
3682 }
3683 {
3684 { /* Inline model#MParameter#mtype (var163) on <var163:nullable Object(MParameter)> */
3685 var166 = var163->attrs[COLOR_model__MParameter___mtype].val; /* _mtype on <var163:nullable Object(MParameter)> */
3686 if (unlikely(var166 == NULL)) {
3687 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
3688 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1565);
3689 show_backtrace(1);
3690 }
3691 var164 = var166;
3692 RET_LABEL165:(void)0;
3693 }
3694 }
3695 var_t = var164;
3696 {
3697 { /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:MSignature> */
3698 var169 = var_msignature->attrs[COLOR_model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:MSignature> */
3699 var167 = var169;
3700 RET_LABEL168:(void)0;
3701 }
3702 }
3703 {
3704 { /* Inline kernel#Int#== (var_i,var167) on <var_i:Int> */
3705 var173 = var_i == var167;
3706 var171 = var173;
3707 goto RET_LABEL172;
3708 RET_LABEL172:(void)0;
3709 }
3710 var170 = var171;
3711 }
3712 if (var170){
3713 var174 = 1;
3714 {
3715 { /* Inline kernel#Int#+ (var_i,var174) on <var_i:Int> */
3716 /* Covariant cast for argument 0 (i) <var174:Int> isa OTHER */
3717 /* <var174:Int> isa OTHER */
3718 var177 = 1; /* easy <var174:Int> isa OTHER*/
3719 if (unlikely(!var177)) {
3720 var_class_name180 = type_kernel__Int.name;
3721 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name180);
3722 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
3723 show_backtrace(1);
3724 }
3725 var181 = var_i + var174;
3726 var175 = var181;
3727 goto RET_LABEL176;
3728 RET_LABEL176:(void)0;
3729 }
3730 }
3731 {
3732 var182 = array__Array___91d_93d(var_arguments, var175);
3733 }
3734 {
3735 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var182) on <var182:nullable Object(RuntimeVariable)> */
3736 var185 = var182->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var182:nullable Object(RuntimeVariable)> */
3737 if (unlikely(var185 == NULL)) {
3738 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
3739 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
3740 show_backtrace(1);
3741 }
3742 var183 = var185;
3743 RET_LABEL184:(void)0;
3744 }
3745 }
3746 var_t = var183;
3747 } else {
3748 }
3749 if (varonce186) {
3750 var187 = varonce186;
3751 } else {
3752 var188 = ", ";
3753 var189 = 2;
3754 var190 = string__NativeString__to_s_with_length(var188, var189);
3755 var187 = var190;
3756 varonce186 = var187;
3757 }
3758 {
3759 var191 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t) /* ctype on <var_t:MType>*/;
3760 }
3761 var192 = NEW_array__Array(&type_array__Arraykernel__Object);
3762 { /* var192 = array_instance Array[Object] */
3763 var193 = 2;
3764 var194 = NEW_array__NativeArray(var193, &type_array__NativeArraykernel__Object);
3765 ((struct instance_array__NativeArray*)var194)->values[0] = (val*) var187;
3766 ((struct instance_array__NativeArray*)var194)->values[1] = (val*) var191;
3767 {
3768 ((void (*)(val*, val*, long))(var192->class->vft[COLOR_array__Array__with_native]))(var192, var194, var193) /* with_native on <var192:Array[Object]>*/;
3769 }
3770 }
3771 {
3772 var195 = ((val* (*)(val*))(var192->class->vft[COLOR_string__Object__to_s]))(var192) /* to_s on <var192:Array[Object]>*/;
3773 }
3774 {
3775 string__FlatBuffer__append(var_s, var195); /* Direct call string#FlatBuffer#append on <var_s:FlatBuffer>*/
3776 }
3777 {
3778 var196 = separate_compiler__SeparateCompilerVisitor__autobox(self, var_a, var_t);
3779 }
3780 var_a = var196;
3781 if (varonce197) {
3782 var198 = varonce197;
3783 } else {
3784 var199 = ", ";
3785 var200 = 2;
3786 var201 = string__NativeString__to_s_with_length(var199, var200);
3787 var198 = var201;
3788 varonce197 = var198;
3789 }
3790 var202 = NEW_array__Array(&type_array__Arraykernel__Object);
3791 { /* var202 = array_instance Array[Object] */
3792 var203 = 2;
3793 var204 = NEW_array__NativeArray(var203, &type_array__NativeArraykernel__Object);
3794 ((struct instance_array__NativeArray*)var204)->values[0] = (val*) var198;
3795 ((struct instance_array__NativeArray*)var204)->values[1] = (val*) var_a;
3796 {
3797 ((void (*)(val*, val*, long))(var202->class->vft[COLOR_array__Array__with_native]))(var202, var204, var203) /* with_native on <var202:Array[Object]>*/;
3798 }
3799 }
3800 {
3801 var205 = ((val* (*)(val*))(var202->class->vft[COLOR_string__Object__to_s]))(var202) /* to_s on <var202:Array[Object]>*/;
3802 }
3803 {
3804 string__FlatBuffer__append(var_ss, var205); /* Direct call string#FlatBuffer#append on <var_ss:FlatBuffer>*/
3805 }
3806 var206 = 1;
3807 {
3808 var207 = kernel__Int__successor(var_i, var206);
3809 }
3810 var_i = var207;
3811 } else {
3812 goto BREAK_label;
3813 }
3814 }
3815 BREAK_label: (void)0;
3816 var208 = NULL;
3817 if (var_ret == NULL) {
3818 var209 = 1; /* is null */
3819 } else {
3820 var209 = 0; /* arg is null but recv is not */
3821 }
3822 if (0) {
3823 { /* Inline kernel#Object#== (var_ret,var208) on <var_ret:nullable MType> */
3824 var_other = var208;
3825 {
3826 { /* Inline kernel#Object#is_same_instance (var_ret,var_other) on <var_ret:nullable MType(MType)> */
3827 var214 = var_ret == var_other;
3828 var212 = var214;
3829 goto RET_LABEL213;
3830 RET_LABEL213:(void)0;
3831 }
3832 }
3833 var210 = var212;
3834 goto RET_LABEL211;
3835 RET_LABEL211:(void)0;
3836 }
3837 var209 = var210;
3838 }
3839 if (var209){
3840 if (varonce215) {
3841 var216 = varonce215;
3842 } else {
3843 var217 = "void";
3844 var218 = 4;
3845 var219 = string__NativeString__to_s_with_length(var217, var218);
3846 var216 = var219;
3847 varonce215 = var216;
3848 }
3849 var_r = var216;
3850 } else {
3851 {
3852 var220 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:nullable MType(MType)>*/;
3853 }
3854 var_r = var220;
3855 }
3856 {
3857 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var_const_color); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
3858 }
3859 if (varonce221) {
3860 var222 = varonce221;
3861 } else {
3862 var223 = "((";
3863 var224 = 2;
3864 var225 = string__NativeString__to_s_with_length(var223, var224);
3865 var222 = var225;
3866 varonce221 = var222;
3867 }
3868 if (varonce226) {
3869 var227 = varonce226;
3870 } else {
3871 var228 = " (*)(";
3872 var229 = 5;
3873 var230 = string__NativeString__to_s_with_length(var228, var229);
3874 var227 = var230;
3875 varonce226 = var227;
3876 }
3877 if (varonce231) {
3878 var232 = varonce231;
3879 } else {
3880 var233 = "))(";
3881 var234 = 3;
3882 var235 = string__NativeString__to_s_with_length(var233, var234);
3883 var232 = var235;
3884 varonce231 = var232;
3885 }
3886 {
3887 var236 = abstract_collection__SequenceRead__first(var_arguments);
3888 }
3889 if (varonce237) {
3890 var238 = varonce237;
3891 } else {
3892 var239 = "->class->vft[";
3893 var240 = 13;
3894 var241 = string__NativeString__to_s_with_length(var239, var240);
3895 var238 = var241;
3896 varonce237 = var238;
3897 }
3898 if (varonce242) {
3899 var243 = varonce242;
3900 } else {
3901 var244 = "]))(";
3902 var245 = 4;
3903 var246 = string__NativeString__to_s_with_length(var244, var245);
3904 var243 = var246;
3905 varonce242 = var243;
3906 }
3907 if (varonce247) {
3908 var248 = varonce247;
3909 } else {
3910 var249 = ") /* ";
3911 var250 = 5;
3912 var251 = string__NativeString__to_s_with_length(var249, var250);
3913 var248 = var251;
3914 varonce247 = var248;
3915 }
3916 if (varonce252) {
3917 var253 = varonce252;
3918 } else {
3919 var254 = " on ";
3920 var255 = 4;
3921 var256 = string__NativeString__to_s_with_length(var254, var255);
3922 var253 = var256;
3923 varonce252 = var253;
3924 }
3925 {
3926 var257 = abstract_collection__SequenceRead__first(var_arguments);
3927 }
3928 {
3929 var258 = abstract_compiler__RuntimeVariable__inspect(var257);
3930 }
3931 if (varonce259) {
3932 var260 = varonce259;
3933 } else {
3934 var261 = "*/";
3935 var262 = 2;
3936 var263 = string__NativeString__to_s_with_length(var261, var262);
3937 var260 = var263;
3938 varonce259 = var260;
3939 }
3940 var264 = NEW_array__Array(&type_array__Arraykernel__Object);
3941 { /* var264 = array_instance Array[Object] */
3942 var265 = 15;
3943 var266 = NEW_array__NativeArray(var265, &type_array__NativeArraykernel__Object);
3944 ((struct instance_array__NativeArray*)var266)->values[0] = (val*) var222;
3945 ((struct instance_array__NativeArray*)var266)->values[1] = (val*) var_r;
3946 ((struct instance_array__NativeArray*)var266)->values[2] = (val*) var227;
3947 ((struct instance_array__NativeArray*)var266)->values[3] = (val*) var_s;
3948 ((struct instance_array__NativeArray*)var266)->values[4] = (val*) var232;
3949 ((struct instance_array__NativeArray*)var266)->values[5] = (val*) var236;
3950 ((struct instance_array__NativeArray*)var266)->values[6] = (val*) var238;
3951 ((struct instance_array__NativeArray*)var266)->values[7] = (val*) var_const_color;
3952 ((struct instance_array__NativeArray*)var266)->values[8] = (val*) var243;
3953 ((struct instance_array__NativeArray*)var266)->values[9] = (val*) var_ss;
3954 ((struct instance_array__NativeArray*)var266)->values[10] = (val*) var248;
3955 ((struct instance_array__NativeArray*)var266)->values[11] = (val*) var_mmethod;
3956 ((struct instance_array__NativeArray*)var266)->values[12] = (val*) var253;
3957 ((struct instance_array__NativeArray*)var266)->values[13] = (val*) var258;
3958 ((struct instance_array__NativeArray*)var266)->values[14] = (val*) var260;
3959 {
3960 ((void (*)(val*, val*, long))(var264->class->vft[COLOR_array__Array__with_native]))(var264, var266, var265) /* with_native on <var264:Array[Object]>*/;
3961 }
3962 }
3963 {
3964 var267 = ((val* (*)(val*))(var264->class->vft[COLOR_string__Object__to_s]))(var264) /* to_s on <var264:Array[Object]>*/;
3965 }
3966 var_call = var267;
3967 var268 = NULL;
3968 if (var_res == NULL) {
3969 var269 = 0; /* is null */
3970 } else {
3971 var269 = 1; /* arg is null and recv is not */
3972 }
3973 if (0) {
3974 { /* Inline kernel#Object#!= (var_res,var268) on <var_res:nullable RuntimeVariable> */
3975 var_other272 = var268;
3976 {
3977 var274 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other272) /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/;
3978 var273 = var274;
3979 }
3980 var275 = !var273;
3981 var270 = var275;
3982 goto RET_LABEL271;
3983 RET_LABEL271:(void)0;
3984 }
3985 var269 = var270;
3986 }
3987 if (var269){
3988 if (varonce276) {
3989 var277 = varonce276;
3990 } else {
3991 var278 = " = ";
3992 var279 = 3;
3993 var280 = string__NativeString__to_s_with_length(var278, var279);
3994 var277 = var280;
3995 varonce276 = var277;
3996 }
3997 if (varonce281) {
3998 var282 = varonce281;
3999 } else {
4000 var283 = ";";
4001 var284 = 1;
4002 var285 = string__NativeString__to_s_with_length(var283, var284);
4003 var282 = var285;
4004 varonce281 = var282;
4005 }
4006 var286 = NEW_array__Array(&type_array__Arraykernel__Object);
4007 { /* var286 = array_instance Array[Object] */
4008 var287 = 4;
4009 var288 = NEW_array__NativeArray(var287, &type_array__NativeArraykernel__Object);
4010 ((struct instance_array__NativeArray*)var288)->values[0] = (val*) var_res;
4011 ((struct instance_array__NativeArray*)var288)->values[1] = (val*) var277;
4012 ((struct instance_array__NativeArray*)var288)->values[2] = (val*) var_call;
4013 ((struct instance_array__NativeArray*)var288)->values[3] = (val*) var282;
4014 {
4015 ((void (*)(val*, val*, long))(var286->class->vft[COLOR_array__Array__with_native]))(var286, var288, var287) /* with_native on <var286:Array[Object]>*/;
4016 }
4017 }
4018 {
4019 var289 = ((val* (*)(val*))(var286->class->vft[COLOR_string__Object__to_s]))(var286) /* to_s on <var286:Array[Object]>*/;
4020 }
4021 {
4022 abstract_compiler__AbstractCompilerVisitor__add(self, var289); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4023 }
4024 } else {
4025 if (varonce290) {
4026 var291 = varonce290;
4027 } else {
4028 var292 = ";";
4029 var293 = 1;
4030 var294 = string__NativeString__to_s_with_length(var292, var293);
4031 var291 = var294;
4032 varonce290 = var291;
4033 }
4034 var295 = NEW_array__Array(&type_array__Arraykernel__Object);
4035 { /* var295 = array_instance Array[Object] */
4036 var296 = 2;
4037 var297 = NEW_array__NativeArray(var296, &type_array__NativeArraykernel__Object);
4038 ((struct instance_array__NativeArray*)var297)->values[0] = (val*) var_call;
4039 ((struct instance_array__NativeArray*)var297)->values[1] = (val*) var291;
4040 {
4041 ((void (*)(val*, val*, long))(var295->class->vft[COLOR_array__Array__with_native]))(var295, var297, var296) /* with_native on <var295:Array[Object]>*/;
4042 }
4043 }
4044 {
4045 var298 = ((val* (*)(val*))(var295->class->vft[COLOR_string__Object__to_s]))(var295) /* to_s on <var295:Array[Object]>*/;
4046 }
4047 {
4048 abstract_compiler__AbstractCompilerVisitor__add(self, var298); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4049 }
4050 }
4051 var299 = NULL;
4052 if (var_res0 == NULL) {
4053 var300 = 0; /* is null */
4054 } else {
4055 var300 = 1; /* arg is null and recv is not */
4056 }
4057 if (0) {
4058 { /* Inline kernel#Object#!= (var_res0,var299) on <var_res0:nullable RuntimeVariable> */
4059 var_other272 = var299;
4060 {
4061 var304 = ((short int (*)(val*, val*))(var_res0->class->vft[COLOR_kernel__Object___61d_61d]))(var_res0, var_other272) /* == on <var_res0:nullable RuntimeVariable(RuntimeVariable)>*/;
4062 var303 = var304;
4063 }
4064 var305 = !var303;
4065 var301 = var305;
4066 goto RET_LABEL302;
4067 RET_LABEL302:(void)0;
4068 }
4069 var300 = var301;
4070 }
4071 if (var300){
4072 var306 = NULL;
4073 if (var_res == NULL) {
4074 var307 = 0; /* is null */
4075 } else {
4076 var307 = 1; /* arg is null and recv is not */
4077 }
4078 if (0) {
4079 { /* Inline kernel#Object#!= (var_res,var306) on <var_res:nullable RuntimeVariable> */
4080 var_other272 = var306;
4081 {
4082 var311 = ((short int (*)(val*, val*))(var_res->class->vft[COLOR_kernel__Object___61d_61d]))(var_res, var_other272) /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/;
4083 var310 = var311;
4084 }
4085 var312 = !var310;
4086 var308 = var312;
4087 goto RET_LABEL309;
4088 RET_LABEL309:(void)0;
4089 }
4090 var307 = var308;
4091 }
4092 if (unlikely(!var307)) {
4093 PRINT_ERROR("Runtime error: %s", "Assert failed");
4094 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1210);
4095 show_backtrace(1);
4096 }
4097 {
4098 abstract_compiler__AbstractCompilerVisitor__assign(self, var_res0, var_res); /* Direct call abstract_compiler#AbstractCompilerVisitor#assign on <self:SeparateCompilerVisitor>*/
4099 }
4100 var_res = var_res0;
4101 } else {
4102 }
4103 if (varonce313) {
4104 var314 = varonce313;
4105 } else {
4106 var315 = "}";
4107 var316 = 1;
4108 var317 = string__NativeString__to_s_with_length(var315, var316);
4109 var314 = var317;
4110 varonce313 = var314;
4111 }
4112 {
4113 abstract_compiler__AbstractCompilerVisitor__add(self, var314); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4114 }
4115 var = var_res;
4116 goto RET_LABEL;
4117 RET_LABEL:;
4118 return var;
4119 }
4120 /* method separate_compiler#SeparateCompilerVisitor#table_send for (self: Object, MMethod, Array[RuntimeVariable], String): nullable RuntimeVariable */
4121 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__table_send(val* self, val* p0, val* p1, val* p2) {
4122 val* var /* : nullable RuntimeVariable */;
4123 val* var1 /* : nullable RuntimeVariable */;
4124 var1 = separate_compiler__SeparateCompilerVisitor__table_send(self, p0, p1, p2);
4125 var = var1;
4126 RET_LABEL:;
4127 return var;
4128 }
4129 /* method separate_compiler#SeparateCompilerVisitor#call for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
4130 val* separate_compiler__SeparateCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
4131 val* var /* : nullable RuntimeVariable */;
4132 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
4133 val* var_recvtype /* var recvtype: MClassType */;
4134 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
4135 long var1 /* : Int */;
4136 long var3 /* : Int */;
4137 val* var4 /* : nullable MSignature */;
4138 val* var6 /* : nullable MSignature */;
4139 long var7 /* : Int */;
4140 long var8 /* : Int */;
4141 long var9 /* : Int */;
4142 short int var11 /* : Bool */;
4143 int cltype;
4144 int idtype;
4145 const char* var_class_name;
4146 long var12 /* : Int */;
4147 short int var13 /* : Bool */;
4148 short int var14 /* : Bool */;
4149 short int var16 /* : Bool */;
4150 static val* varonce;
4151 val* var17 /* : String */;
4152 char* var18 /* : NativeString */;
4153 long var19 /* : Int */;
4154 val* var20 /* : FlatString */;
4155 static val* varonce21;
4156 val* var22 /* : String */;
4157 char* var23 /* : NativeString */;
4158 long var24 /* : Int */;
4159 val* var25 /* : FlatString */;
4160 long var26 /* : Int */;
4161 long var28 /* : Int */;
4162 static val* varonce29;
4163 val* var30 /* : String */;
4164 char* var31 /* : NativeString */;
4165 long var32 /* : Int */;
4166 val* var33 /* : FlatString */;
4167 val* var34 /* : Array[Object] */;
4168 long var35 /* : Int */;
4169 val* var36 /* : NativeArray[Object] */;
4170 val* var37 /* : Object */;
4171 val* var38 /* : String */;
4172 val* var39 /* : nullable MSignature */;
4173 val* var41 /* : nullable MSignature */;
4174 val* var42 /* : nullable MType */;
4175 val* var44 /* : nullable MType */;
4176 val* var_ret /* var ret: nullable MType */;
4177 val* var45 /* : null */;
4178 short int var46 /* : Bool */;
4179 short int var47 /* : Bool */;
4180 val* var_other /* var other: nullable Object */;
4181 short int var49 /* : Bool */;
4182 short int var51 /* : Bool */;
4183 val* var52 /* : null */;
4184 val* var_res /* var res: nullable RuntimeVariable */;
4185 val* var53 /* : MClassDef */;
4186 val* var55 /* : MClassDef */;
4187 val* var56 /* : MClassType */;
4188 val* var58 /* : MClassType */;
4189 val* var59 /* : MClassDef */;
4190 val* var61 /* : MClassDef */;
4191 val* var62 /* : MClassType */;
4192 val* var64 /* : MClassType */;
4193 val* var65 /* : MClassDef */;
4194 val* var67 /* : MClassDef */;
4195 val* var68 /* : MModule */;
4196 val* var70 /* : MModule */;
4197 short int var71 /* : Bool */;
4198 val* var72 /* : MType */;
4199 val* var73 /* : RuntimeVariable */;
4200 short int var74 /* : Bool */;
4201 short int var75 /* : Bool */;
4202 short int var76 /* : Bool */;
4203 short int var78 /* : Bool */;
4204 short int var_ /* var : Bool */;
4205 val* var79 /* : AbstractCompiler */;
4206 val* var81 /* : AbstractCompiler */;
4207 val* var82 /* : ModelBuilder */;
4208 val* var84 /* : ModelBuilder */;
4209 val* var85 /* : ToolContext */;
4210 val* var87 /* : ToolContext */;
4211 val* var88 /* : OptionBool */;
4212 val* var90 /* : OptionBool */;
4213 val* var91 /* : nullable Object */;
4214 val* var93 /* : nullable Object */;
4215 short int var94 /* : Bool */;
4216 short int var95 /* : Bool */;
4217 short int var_96 /* var : Bool */;
4218 short int var97 /* : Bool */;
4219 val* var98 /* : AbstractCompiler */;
4220 val* var100 /* : AbstractCompiler */;
4221 val* var101 /* : ModelBuilder */;
4222 val* var103 /* : ModelBuilder */;
4223 val* var104 /* : ToolContext */;
4224 val* var106 /* : ToolContext */;
4225 val* var107 /* : OptionBool */;
4226 val* var109 /* : OptionBool */;
4227 val* var110 /* : nullable Object */;
4228 val* var112 /* : nullable Object */;
4229 short int var113 /* : Bool */;
4230 short int var_114 /* var : Bool */;
4231 short int var115 /* : Bool */;
4232 val* var116 /* : AbstractCompiler */;
4233 val* var118 /* : AbstractCompiler */;
4234 val* var119 /* : ModelBuilder */;
4235 val* var121 /* : ModelBuilder */;
4236 val* var_122 /* var : ModelBuilder */;
4237 long var123 /* : Int */;
4238 long var125 /* : Int */;
4239 long var126 /* : Int */;
4240 long var127 /* : Int */;
4241 short int var129 /* : Bool */;
4242 int cltype130;
4243 int idtype131;
4244 const char* var_class_name132;
4245 long var133 /* : Int */;
4246 val* var135 /* : AbstractCompiler */;
4247 val* var137 /* : AbstractCompiler */;
4248 val* var138 /* : ModelBuilder */;
4249 val* var140 /* : ModelBuilder */;
4250 val* var141 /* : ToolContext */;
4251 val* var143 /* : ToolContext */;
4252 val* var144 /* : OptionBool */;
4253 val* var146 /* : OptionBool */;
4254 val* var147 /* : nullable Object */;
4255 val* var149 /* : nullable Object */;
4256 short int var150 /* : Bool */;
4257 static val* varonce151;
4258 val* var152 /* : String */;
4259 char* var153 /* : NativeString */;
4260 long var154 /* : Int */;
4261 val* var155 /* : FlatString */;
4262 val* var156 /* : Frame */;
4263 val* var_frame /* var frame: Frame */;
4264 static val* varonce157;
4265 val* var158 /* : String */;
4266 char* var159 /* : NativeString */;
4267 long var160 /* : Int */;
4268 val* var161 /* : FlatString */;
4269 val* var162 /* : String */;
4270 val* var165 /* : nullable Frame */;
4271 val* var167 /* : nullable Frame */;
4272 val* var_old_frame /* var old_frame: nullable Frame */;
4273 static val* varonce169;
4274 val* var170 /* : String */;
4275 char* var171 /* : NativeString */;
4276 long var172 /* : Int */;
4277 val* var173 /* : FlatString */;
4278 static val* varonce174;
4279 val* var175 /* : String */;
4280 char* var176 /* : NativeString */;
4281 long var177 /* : Int */;
4282 val* var178 /* : FlatString */;
4283 static val* varonce179;
4284 val* var180 /* : String */;
4285 char* var181 /* : NativeString */;
4286 long var182 /* : Int */;
4287 val* var183 /* : FlatString */;
4288 val* var184 /* : String */;
4289 static val* varonce185;
4290 val* var186 /* : String */;
4291 char* var187 /* : NativeString */;
4292 long var188 /* : Int */;
4293 val* var189 /* : FlatString */;
4294 val* var190 /* : nullable Object */;
4295 val* var191 /* : String */;
4296 static val* varonce192;
4297 val* var193 /* : String */;
4298 char* var194 /* : NativeString */;
4299 long var195 /* : Int */;
4300 val* var196 /* : FlatString */;
4301 val* var197 /* : Array[Object] */;
4302 long var198 /* : Int */;
4303 val* var199 /* : NativeArray[Object] */;
4304 val* var200 /* : String */;
4305 val* var201 /* : nullable RuntimeVariable */;
4306 val* var202 /* : nullable String */;
4307 val* var204 /* : nullable String */;
4308 static val* varonce205;
4309 val* var206 /* : String */;
4310 char* var207 /* : NativeString */;
4311 long var208 /* : Int */;
4312 val* var209 /* : FlatString */;
4313 val* var210 /* : Array[Object] */;
4314 long var211 /* : Int */;
4315 val* var212 /* : NativeArray[Object] */;
4316 val* var213 /* : String */;
4317 static val* varonce214;
4318 val* var215 /* : String */;
4319 char* var216 /* : NativeString */;
4320 long var217 /* : Int */;
4321 val* var218 /* : FlatString */;
4322 val* var220 /* : AbstractCompiler */;
4323 val* var222 /* : AbstractCompiler */;
4324 val* var223 /* : ModelBuilder */;
4325 val* var225 /* : ModelBuilder */;
4326 val* var_226 /* var : ModelBuilder */;
4327 long var227 /* : Int */;
4328 long var229 /* : Int */;
4329 long var230 /* : Int */;
4330 long var231 /* : Int */;
4331 short int var233 /* : Bool */;
4332 int cltype234;
4333 int idtype235;
4334 const char* var_class_name236;
4335 long var237 /* : Int */;
4336 val* var239 /* : AbstractCompiler */;
4337 val* var241 /* : AbstractCompiler */;
4338 val* var242 /* : ModelBuilder */;
4339 val* var244 /* : ModelBuilder */;
4340 val* var245 /* : ToolContext */;
4341 val* var247 /* : ToolContext */;
4342 val* var248 /* : OptionBool */;
4343 val* var250 /* : OptionBool */;
4344 val* var251 /* : nullable Object */;
4345 val* var253 /* : nullable Object */;
4346 short int var254 /* : Bool */;
4347 static val* varonce255;
4348 val* var256 /* : String */;
4349 char* var257 /* : NativeString */;
4350 long var258 /* : Int */;
4351 val* var259 /* : FlatString */;
4352 val* var260 /* : String */;
4353 val* var261 /* : null */;
4354 short int var262 /* : Bool */;
4355 short int var263 /* : Bool */;
4356 short int var265 /* : Bool */;
4357 short int var267 /* : Bool */;
4358 val* var268 /* : String */;
4359 static val* varonce269;
4360 val* var270 /* : String */;
4361 char* var271 /* : NativeString */;
4362 long var272 /* : Int */;
4363 val* var273 /* : FlatString */;
4364 static val* varonce274;
4365 val* var275 /* : String */;
4366 char* var276 /* : NativeString */;
4367 long var277 /* : Int */;
4368 val* var278 /* : FlatString */;
4369 val* var279 /* : String */;
4370 static val* varonce280;
4371 val* var281 /* : String */;
4372 char* var282 /* : NativeString */;
4373 long var283 /* : Int */;
4374 val* var284 /* : FlatString */;
4375 static val* varonce285;
4376 val* var286 /* : String */;
4377 char* var287 /* : NativeString */;
4378 long var288 /* : Int */;
4379 val* var289 /* : FlatString */;
4380 val* var290 /* : nullable Object */;
4381 val* var291 /* : String */;
4382 static val* varonce292;
4383 val* var293 /* : String */;
4384 char* var294 /* : NativeString */;
4385 long var295 /* : Int */;
4386 val* var296 /* : FlatString */;
4387 val* var297 /* : Array[Object] */;
4388 long var298 /* : Int */;
4389 val* var299 /* : NativeArray[Object] */;
4390 val* var300 /* : String */;
4391 val* var301 /* : null */;
4392 static val* varonce302;
4393 val* var303 /* : String */;
4394 char* var304 /* : NativeString */;
4395 long var305 /* : Int */;
4396 val* var306 /* : FlatString */;
4397 val* var307 /* : String */;
4398 static val* varonce308;
4399 val* var309 /* : String */;
4400 char* var310 /* : NativeString */;
4401 long var311 /* : Int */;
4402 val* var312 /* : FlatString */;
4403 static val* varonce313;
4404 val* var314 /* : String */;
4405 char* var315 /* : NativeString */;
4406 long var316 /* : Int */;
4407 val* var317 /* : FlatString */;
4408 val* var318 /* : String */;
4409 static val* varonce319;
4410 val* var320 /* : String */;
4411 char* var321 /* : NativeString */;
4412 long var322 /* : Int */;
4413 val* var323 /* : FlatString */;
4414 val* var324 /* : Array[Object] */;
4415 long var325 /* : Int */;
4416 val* var326 /* : NativeArray[Object] */;
4417 val* var327 /* : String */;
4418 var_mmethoddef = p0;
4419 var_recvtype = p1;
4420 var_arguments = p2;
4421 {
4422 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
4423 var3 = var_arguments->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
4424 var1 = var3;
4425 RET_LABEL2:(void)0;
4426 }
4427 }
4428 {
4429 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4430 var6 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
4431 var4 = var6;
4432 RET_LABEL5:(void)0;
4433 }
4434 }
4435 if (var4 == NULL) {
4436 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4437 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1222);
4438 show_backtrace(1);
4439 } else {
4440 var7 = model__MSignature__arity(var4);
4441 }
4442 var8 = 1;
4443 {
4444 { /* Inline kernel#Int#+ (var7,var8) on <var7:Int> */
4445 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
4446 /* <var8:Int> isa OTHER */
4447 var11 = 1; /* easy <var8:Int> isa OTHER*/
4448 if (unlikely(!var11)) {
4449 var_class_name = type_kernel__Int.name;
4450 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4451 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
4452 show_backtrace(1);
4453 }
4454 var12 = var7 + var8;
4455 var9 = var12;
4456 goto RET_LABEL10;
4457 RET_LABEL10:(void)0;
4458 }
4459 }
4460 {
4461 { /* Inline kernel#Int#== (var1,var9) on <var1:Int> */
4462 var16 = var1 == var9;
4463 var14 = var16;
4464 goto RET_LABEL15;
4465 RET_LABEL15:(void)0;
4466 }
4467 var13 = var14;
4468 }
4469 if (unlikely(!var13)) {
4470 if (varonce) {
4471 var17 = varonce;
4472 } else {
4473 var18 = "Invalid arity for ";
4474 var19 = 18;
4475 var20 = string__NativeString__to_s_with_length(var18, var19);
4476 var17 = var20;
4477 varonce = var17;
4478 }
4479 if (varonce21) {
4480 var22 = varonce21;
4481 } else {
4482 var23 = ". ";
4483 var24 = 2;
4484 var25 = string__NativeString__to_s_with_length(var23, var24);
4485 var22 = var25;
4486 varonce21 = var22;
4487 }
4488 {
4489 { /* Inline array#AbstractArrayRead#length (var_arguments) on <var_arguments:Array[RuntimeVariable]> */
4490 var28 = var_arguments->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_arguments:Array[RuntimeVariable]> */
4491 var26 = var28;
4492 RET_LABEL27:(void)0;
4493 }
4494 }
4495 if (varonce29) {
4496 var30 = varonce29;
4497 } else {
4498 var31 = " arguments given.";
4499 var32 = 17;
4500 var33 = string__NativeString__to_s_with_length(var31, var32);
4501 var30 = var33;
4502 varonce29 = var30;
4503 }
4504 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
4505 { /* var34 = array_instance Array[Object] */
4506 var35 = 5;
4507 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
4508 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var17;
4509 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var_mmethoddef;
4510 ((struct instance_array__NativeArray*)var36)->values[2] = (val*) var22;
4511 var37 = BOX_kernel__Int(var26); /* autobox from Int to Object */
4512 ((struct instance_array__NativeArray*)var36)->values[3] = (val*) var37;
4513 ((struct instance_array__NativeArray*)var36)->values[4] = (val*) var30;
4514 {
4515 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
4516 }
4517 }
4518 {
4519 var38 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
4520 }
4521 {
4522 abstract_compiler__AbstractCompilerVisitor__debug(self, var38); /* Direct call abstract_compiler#AbstractCompilerVisitor#debug on <self:SeparateCompilerVisitor>*/
4523 }
4524 PRINT_ERROR("Runtime error: %s", "Assert failed");
4525 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1222);
4526 show_backtrace(1);
4527 }
4528 {
4529 { /* Inline model#MMethodDef#msignature (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4530 var41 = var_mmethoddef->attrs[COLOR_model__MMethodDef___msignature].val; /* _msignature on <var_mmethoddef:MMethodDef> */
4531 var39 = var41;
4532 RET_LABEL40:(void)0;
4533 }
4534 }
4535 if (var39 == NULL) {
4536 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4537 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1225);
4538 show_backtrace(1);
4539 } else {
4540 { /* Inline model#MSignature#return_mtype (var39) on <var39:nullable MSignature> */
4541 if (unlikely(var39 == NULL)) {
4542 PRINT_ERROR("Runtime error: %s", "Receiver is null");
4543 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1468);
4544 show_backtrace(1);
4545 }
4546 var44 = var39->attrs[COLOR_model__MSignature___return_mtype].val; /* _return_mtype on <var39:nullable MSignature> */
4547 var42 = var44;
4548 RET_LABEL43:(void)0;
4549 }
4550 }
4551 var_ret = var42;
4552 var45 = NULL;
4553 if (var_ret == NULL) {
4554 var46 = 1; /* is null */
4555 } else {
4556 var46 = 0; /* arg is null but recv is not */
4557 }
4558 if (0) {
4559 { /* Inline kernel#Object#== (var_ret,var45) on <var_ret:nullable MType> */
4560 var_other = var45;
4561 {
4562 { /* Inline kernel#Object#is_same_instance (var_ret,var_other) on <var_ret:nullable MType(MType)> */
4563 var51 = var_ret == var_other;
4564 var49 = var51;
4565 goto RET_LABEL50;
4566 RET_LABEL50:(void)0;
4567 }
4568 }
4569 var47 = var49;
4570 goto RET_LABEL48;
4571 RET_LABEL48:(void)0;
4572 }
4573 var46 = var47;
4574 }
4575 if (var46){
4576 var52 = NULL;
4577 var_res = var52;
4578 } else {
4579 {
4580 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4581 var55 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
4582 if (unlikely(var55 == NULL)) {
4583 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4584 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
4585 show_backtrace(1);
4586 }
4587 var53 = var55;
4588 RET_LABEL54:(void)0;
4589 }
4590 }
4591 {
4592 { /* Inline model#MClassDef#bound_mtype (var53) on <var53:MClassDef> */
4593 var58 = var53->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var53:MClassDef> */
4594 if (unlikely(var58 == NULL)) {
4595 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4596 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
4597 show_backtrace(1);
4598 }
4599 var56 = var58;
4600 RET_LABEL57:(void)0;
4601 }
4602 }
4603 {
4604 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4605 var61 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
4606 if (unlikely(var61 == NULL)) {
4607 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4608 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
4609 show_backtrace(1);
4610 }
4611 var59 = var61;
4612 RET_LABEL60:(void)0;
4613 }
4614 }
4615 {
4616 { /* Inline model#MClassDef#bound_mtype (var59) on <var59:MClassDef> */
4617 var64 = var59->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var59:MClassDef> */
4618 if (unlikely(var64 == NULL)) {
4619 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4620 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
4621 show_backtrace(1);
4622 }
4623 var62 = var64;
4624 RET_LABEL63:(void)0;
4625 }
4626 }
4627 {
4628 { /* Inline model#MPropDef#mclassdef (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4629 var67 = var_mmethoddef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mmethoddef:MMethodDef> */
4630 if (unlikely(var67 == NULL)) {
4631 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4632 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
4633 show_backtrace(1);
4634 }
4635 var65 = var67;
4636 RET_LABEL66:(void)0;
4637 }
4638 }
4639 {
4640 { /* Inline model#MClassDef#mmodule (var65) on <var65:MClassDef> */
4641 var70 = var65->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var65:MClassDef> */
4642 if (unlikely(var70 == NULL)) {
4643 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
4644 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
4645 show_backtrace(1);
4646 }
4647 var68 = var70;
4648 RET_LABEL69:(void)0;
4649 }
4650 }
4651 var71 = 1;
4652 {
4653 var72 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var56, var62, var68, var71) /* resolve_for on <var_ret:nullable MType(MType)>*/;
4654 }
4655 var_ret = var72;
4656 {
4657 var73 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_ret);
4658 }
4659 var_res = var73;
4660 }
4661 {
4662 { /* Inline model#MMethodDef#is_intern (var_mmethoddef) on <var_mmethoddef:MMethodDef> */
4663 var78 = var_mmethoddef->attrs[COLOR_model__MMethodDef___is_intern].s; /* _is_intern on <var_mmethoddef:MMethodDef> */
4664 var76 = var78;
4665 RET_LABEL77:(void)0;
4666 }
4667 }
4668 var_ = var76;
4669 if (var76){
4670 {
4671 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4672 var81 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4673 if (unlikely(var81 == NULL)) {
4674 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4675 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
4676 show_backtrace(1);
4677 }
4678 var79 = var81;
4679 RET_LABEL80:(void)0;
4680 }
4681 }
4682 {
4683 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var79) on <var79:AbstractCompiler(SeparateCompiler)> */
4684 var84 = var79->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var79:AbstractCompiler(SeparateCompiler)> */
4685 if (unlikely(var84 == NULL)) {
4686 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4687 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
4688 show_backtrace(1);
4689 }
4690 var82 = var84;
4691 RET_LABEL83:(void)0;
4692 }
4693 }
4694 {
4695 { /* Inline modelbuilder#ModelBuilder#toolcontext (var82) on <var82:ModelBuilder> */
4696 var87 = var82->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var82:ModelBuilder> */
4697 if (unlikely(var87 == NULL)) {
4698 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4699 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
4700 show_backtrace(1);
4701 }
4702 var85 = var87;
4703 RET_LABEL86:(void)0;
4704 }
4705 }
4706 {
4707 { /* Inline separate_compiler#ToolContext#opt_no_inline_intern (var85) on <var85:ToolContext> */
4708 var90 = var85->attrs[COLOR_separate_compiler__ToolContext___opt_no_inline_intern].val; /* _opt_no_inline_intern on <var85:ToolContext> */
4709 if (unlikely(var90 == NULL)) {
4710 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_inline_intern");
4711 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 26);
4712 show_backtrace(1);
4713 }
4714 var88 = var90;
4715 RET_LABEL89:(void)0;
4716 }
4717 }
4718 {
4719 { /* Inline opts#Option#value (var88) on <var88:OptionBool> */
4720 var93 = var88->attrs[COLOR_opts__Option___value].val; /* _value on <var88:OptionBool> */
4721 var91 = var93;
4722 RET_LABEL92:(void)0;
4723 }
4724 }
4725 var94 = ((struct instance_kernel__Bool*)var91)->value; /* autounbox from nullable Object to Bool */;
4726 var95 = !var94;
4727 var75 = var95;
4728 } else {
4729 var75 = var_;
4730 }
4731 var_96 = var75;
4732 if (var75){
4733 var74 = var_96;
4734 } else {
4735 {
4736 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4737 var100 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4738 if (unlikely(var100 == NULL)) {
4739 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4740 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
4741 show_backtrace(1);
4742 }
4743 var98 = var100;
4744 RET_LABEL99:(void)0;
4745 }
4746 }
4747 {
4748 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var98) on <var98:AbstractCompiler(SeparateCompiler)> */
4749 var103 = var98->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var98:AbstractCompiler(SeparateCompiler)> */
4750 if (unlikely(var103 == NULL)) {
4751 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4752 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
4753 show_backtrace(1);
4754 }
4755 var101 = var103;
4756 RET_LABEL102:(void)0;
4757 }
4758 }
4759 {
4760 { /* Inline modelbuilder#ModelBuilder#toolcontext (var101) on <var101:ModelBuilder> */
4761 var106 = var101->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var101:ModelBuilder> */
4762 if (unlikely(var106 == NULL)) {
4763 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4764 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
4765 show_backtrace(1);
4766 }
4767 var104 = var106;
4768 RET_LABEL105:(void)0;
4769 }
4770 }
4771 {
4772 { /* Inline separate_compiler#ToolContext#opt_inline_some_methods (var104) on <var104:ToolContext> */
4773 var109 = var104->attrs[COLOR_separate_compiler__ToolContext___opt_inline_some_methods].val; /* _opt_inline_some_methods on <var104:ToolContext> */
4774 if (unlikely(var109 == NULL)) {
4775 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_inline_some_methods");
4776 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 34);
4777 show_backtrace(1);
4778 }
4779 var107 = var109;
4780 RET_LABEL108:(void)0;
4781 }
4782 }
4783 {
4784 { /* Inline opts#Option#value (var107) on <var107:OptionBool> */
4785 var112 = var107->attrs[COLOR_opts__Option___value].val; /* _value on <var107:OptionBool> */
4786 var110 = var112;
4787 RET_LABEL111:(void)0;
4788 }
4789 }
4790 var113 = ((struct instance_kernel__Bool*)var110)->value; /* autounbox from nullable Object to Bool */;
4791 var_114 = var113;
4792 if (var113){
4793 {
4794 var115 = abstract_compiler__MMethodDef__can_inline(var_mmethoddef, self);
4795 }
4796 var97 = var115;
4797 } else {
4798 var97 = var_114;
4799 }
4800 var74 = var97;
4801 }
4802 if (var74){
4803 {
4804 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4805 var118 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4806 if (unlikely(var118 == NULL)) {
4807 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4808 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
4809 show_backtrace(1);
4810 }
4811 var116 = var118;
4812 RET_LABEL117:(void)0;
4813 }
4814 }
4815 {
4816 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var116) on <var116:AbstractCompiler(SeparateCompiler)> */
4817 var121 = var116->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var116:AbstractCompiler(SeparateCompiler)> */
4818 if (unlikely(var121 == NULL)) {
4819 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4820 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
4821 show_backtrace(1);
4822 }
4823 var119 = var121;
4824 RET_LABEL120:(void)0;
4825 }
4826 }
4827 var_122 = var119;
4828 {
4829 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline (var_122) on <var_122:ModelBuilder> */
4830 var125 = var_122->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on <var_122:ModelBuilder> */
4831 var123 = var125;
4832 RET_LABEL124:(void)0;
4833 }
4834 }
4835 var126 = 1;
4836 {
4837 { /* Inline kernel#Int#+ (var123,var126) on <var123:Int> */
4838 /* Covariant cast for argument 0 (i) <var126:Int> isa OTHER */
4839 /* <var126:Int> isa OTHER */
4840 var129 = 1; /* easy <var126:Int> isa OTHER*/
4841 if (unlikely(!var129)) {
4842 var_class_name132 = type_kernel__Int.name;
4843 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name132);
4844 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
4845 show_backtrace(1);
4846 }
4847 var133 = var123 + var126;
4848 var127 = var133;
4849 goto RET_LABEL128;
4850 RET_LABEL128:(void)0;
4851 }
4852 }
4853 {
4854 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline= (var_122,var127) on <var_122:ModelBuilder> */
4855 var_122->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_inline].l = var127; /* _nb_invok_by_inline on <var_122:ModelBuilder> */
4856 RET_LABEL134:(void)0;
4857 }
4858 }
4859 {
4860 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
4861 var137 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
4862 if (unlikely(var137 == NULL)) {
4863 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
4864 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
4865 show_backtrace(1);
4866 }
4867 var135 = var137;
4868 RET_LABEL136:(void)0;
4869 }
4870 }
4871 {
4872 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var135) on <var135:AbstractCompiler(SeparateCompiler)> */
4873 var140 = var135->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var135:AbstractCompiler(SeparateCompiler)> */
4874 if (unlikely(var140 == NULL)) {
4875 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
4876 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
4877 show_backtrace(1);
4878 }
4879 var138 = var140;
4880 RET_LABEL139:(void)0;
4881 }
4882 }
4883 {
4884 { /* Inline modelbuilder#ModelBuilder#toolcontext (var138) on <var138:ModelBuilder> */
4885 var143 = var138->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var138:ModelBuilder> */
4886 if (unlikely(var143 == NULL)) {
4887 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
4888 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
4889 show_backtrace(1);
4890 }
4891 var141 = var143;
4892 RET_LABEL142:(void)0;
4893 }
4894 }
4895 {
4896 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var141) on <var141:ToolContext> */
4897 var146 = var141->attrs[COLOR_abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var141:ToolContext> */
4898 if (unlikely(var146 == NULL)) {
4899 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
4900 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 63);
4901 show_backtrace(1);
4902 }
4903 var144 = var146;
4904 RET_LABEL145:(void)0;
4905 }
4906 }
4907 {
4908 { /* Inline opts#Option#value (var144) on <var144:OptionBool> */
4909 var149 = var144->attrs[COLOR_opts__Option___value].val; /* _value on <var144:OptionBool> */
4910 var147 = var149;
4911 RET_LABEL148:(void)0;
4912 }
4913 }
4914 var150 = ((struct instance_kernel__Bool*)var147)->value; /* autounbox from nullable Object to Bool */;
4915 if (var150){
4916 if (varonce151) {
4917 var152 = varonce151;
4918 } else {
4919 var153 = "count_invoke_by_inline++;";
4920 var154 = 25;
4921 var155 = string__NativeString__to_s_with_length(var153, var154);
4922 var152 = var155;
4923 varonce151 = var152;
4924 }
4925 {
4926 abstract_compiler__AbstractCompilerVisitor__add(self, var152); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
4927 }
4928 } else {
4929 }
4930 var156 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
4931 {
4932 ((void (*)(val*, val*))(var156->class->vft[COLOR_abstract_compiler__Frame__visitor_61d]))(var156, self) /* visitor= on <var156:Frame>*/;
4933 }
4934 {
4935 ((void (*)(val*, val*))(var156->class->vft[COLOR_abstract_compiler__Frame__mpropdef_61d]))(var156, var_mmethoddef) /* mpropdef= on <var156:Frame>*/;
4936 }
4937 {
4938 ((void (*)(val*, val*))(var156->class->vft[COLOR_abstract_compiler__Frame__receiver_61d]))(var156, var_recvtype) /* receiver= on <var156:Frame>*/;
4939 }
4940 {
4941 ((void (*)(val*, val*))(var156->class->vft[COLOR_abstract_compiler__Frame__arguments_61d]))(var156, var_arguments) /* arguments= on <var156:Frame>*/;
4942 }
4943 {
4944 ((void (*)(val*))(var156->class->vft[COLOR_kernel__Object__init]))(var156) /* init on <var156:Frame>*/;
4945 }
4946 var_frame = var156;
4947 if (varonce157) {
4948 var158 = varonce157;
4949 } else {
4950 var159 = "RET_LABEL";
4951 var160 = 9;
4952 var161 = string__NativeString__to_s_with_length(var159, var160);
4953 var158 = var161;
4954 varonce157 = var158;
4955 }
4956 {
4957 var162 = abstract_compiler__AbstractCompilerVisitor__get_name(self, var158);
4958 }
4959 {
4960 { /* Inline abstract_compiler#Frame#returnlabel= (var_frame,var162) on <var_frame:Frame> */
4961 var_frame->attrs[COLOR_abstract_compiler__Frame___returnlabel].val = var162; /* _returnlabel on <var_frame:Frame> */
4962 RET_LABEL163:(void)0;
4963 }
4964 }
4965 {
4966 { /* Inline abstract_compiler#Frame#returnvar= (var_frame,var_res) on <var_frame:Frame> */
4967 var_frame->attrs[COLOR_abstract_compiler__Frame___returnvar].val = var_res; /* _returnvar on <var_frame:Frame> */
4968 RET_LABEL164:(void)0;
4969 }
4970 }
4971 {
4972 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
4973 var167 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
4974 var165 = var167;
4975 RET_LABEL166:(void)0;
4976 }
4977 }
4978 var_old_frame = var165;
4979 {
4980 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_frame) on <self:SeparateCompilerVisitor> */
4981 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val = var_frame; /* _frame on <self:SeparateCompilerVisitor> */
4982 RET_LABEL168:(void)0;
4983 }
4984 }
4985 if (varonce169) {
4986 var170 = varonce169;
4987 } else {
4988 var171 = "{ /* Inline ";
4989 var172 = 12;
4990 var173 = string__NativeString__to_s_with_length(var171, var172);
4991 var170 = var173;
4992 varonce169 = var170;
4993 }
4994 if (varonce174) {
4995 var175 = varonce174;
4996 } else {
4997 var176 = " (";
4998 var177 = 2;
4999 var178 = string__NativeString__to_s_with_length(var176, var177);
5000 var175 = var178;
5001 varonce174 = var175;
5002 }
5003 if (varonce179) {
5004 var180 = varonce179;
5005 } else {
5006 var181 = ",";
5007 var182 = 1;
5008 var183 = string__NativeString__to_s_with_length(var181, var182);
5009 var180 = var183;
5010 varonce179 = var180;
5011 }
5012 {
5013 var184 = string__Collection__join(var_arguments, var180);
5014 }
5015 if (varonce185) {
5016 var186 = varonce185;
5017 } else {
5018 var187 = ") on ";
5019 var188 = 5;
5020 var189 = string__NativeString__to_s_with_length(var187, var188);
5021 var186 = var189;
5022 varonce185 = var186;
5023 }
5024 {
5025 var190 = abstract_collection__SequenceRead__first(var_arguments);
5026 }
5027 {
5028 var191 = abstract_compiler__RuntimeVariable__inspect(var190);
5029 }
5030 if (varonce192) {
5031 var193 = varonce192;
5032 } else {
5033 var194 = " */";
5034 var195 = 3;
5035 var196 = string__NativeString__to_s_with_length(var194, var195);
5036 var193 = var196;
5037 varonce192 = var193;
5038 }
5039 var197 = NEW_array__Array(&type_array__Arraykernel__Object);
5040 { /* var197 = array_instance Array[Object] */
5041 var198 = 7;
5042 var199 = NEW_array__NativeArray(var198, &type_array__NativeArraykernel__Object);
5043 ((struct instance_array__NativeArray*)var199)->values[0] = (val*) var170;
5044 ((struct instance_array__NativeArray*)var199)->values[1] = (val*) var_mmethoddef;
5045 ((struct instance_array__NativeArray*)var199)->values[2] = (val*) var175;
5046 ((struct instance_array__NativeArray*)var199)->values[3] = (val*) var184;
5047 ((struct instance_array__NativeArray*)var199)->values[4] = (val*) var186;
5048 ((struct instance_array__NativeArray*)var199)->values[5] = (val*) var191;
5049 ((struct instance_array__NativeArray*)var199)->values[6] = (val*) var193;
5050 {
5051 ((void (*)(val*, val*, long))(var197->class->vft[COLOR_array__Array__with_native]))(var197, var199, var198) /* with_native on <var197:Array[Object]>*/;
5052 }
5053 }
5054 {
5055 var200 = ((val* (*)(val*))(var197->class->vft[COLOR_string__Object__to_s]))(var197) /* to_s on <var197:Array[Object]>*/;
5056 }
5057 {
5058 abstract_compiler__AbstractCompilerVisitor__add(self, var200); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5059 }
5060 {
5061 var201 = abstract_compiler__MMethodDef__compile_inside_to_c(var_mmethoddef, self, var_arguments);
5062 }
5063 {
5064 { /* Inline abstract_compiler#Frame#returnlabel (var_frame) on <var_frame:Frame> */
5065 var204 = var_frame->attrs[COLOR_abstract_compiler__Frame___returnlabel].val; /* _returnlabel on <var_frame:Frame> */
5066 var202 = var204;
5067 RET_LABEL203:(void)0;
5068 }
5069 }
5070 if (unlikely(var202 == NULL)) {
5071 PRINT_ERROR("Runtime error: %s", "Cast failed");
5072 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1244);
5073 show_backtrace(1);
5074 }
5075 if (varonce205) {
5076 var206 = varonce205;
5077 } else {
5078 var207 = ":(void)0;";
5079 var208 = 9;
5080 var209 = string__NativeString__to_s_with_length(var207, var208);
5081 var206 = var209;
5082 varonce205 = var206;
5083 }
5084 var210 = NEW_array__Array(&type_array__Arraykernel__Object);
5085 { /* var210 = array_instance Array[Object] */
5086 var211 = 2;
5087 var212 = NEW_array__NativeArray(var211, &type_array__NativeArraykernel__Object);
5088 ((struct instance_array__NativeArray*)var212)->values[0] = (val*) var202;
5089 ((struct instance_array__NativeArray*)var212)->values[1] = (val*) var206;
5090 {
5091 ((void (*)(val*, val*, long))(var210->class->vft[COLOR_array__Array__with_native]))(var210, var212, var211) /* with_native on <var210:Array[Object]>*/;
5092 }
5093 }
5094 {
5095 var213 = ((val* (*)(val*))(var210->class->vft[COLOR_string__Object__to_s]))(var210) /* to_s on <var210:Array[Object]>*/;
5096 }
5097 {
5098 abstract_compiler__AbstractCompilerVisitor__add(self, var213); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5099 }
5100 if (varonce214) {
5101 var215 = varonce214;
5102 } else {
5103 var216 = "}";
5104 var217 = 1;
5105 var218 = string__NativeString__to_s_with_length(var216, var217);
5106 var215 = var218;
5107 varonce214 = var215;
5108 }
5109 {
5110 abstract_compiler__AbstractCompilerVisitor__add(self, var215); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5111 }
5112 {
5113 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_old_frame) on <self:SeparateCompilerVisitor> */
5114 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val = var_old_frame; /* _frame on <self:SeparateCompilerVisitor> */
5115 RET_LABEL219:(void)0;
5116 }
5117 }
5118 var = var_res;
5119 goto RET_LABEL;
5120 } else {
5121 }
5122 {
5123 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5124 var222 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5125 if (unlikely(var222 == NULL)) {
5126 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5127 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
5128 show_backtrace(1);
5129 }
5130 var220 = var222;
5131 RET_LABEL221:(void)0;
5132 }
5133 }
5134 {
5135 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var220) on <var220:AbstractCompiler(SeparateCompiler)> */
5136 var225 = var220->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var220:AbstractCompiler(SeparateCompiler)> */
5137 if (unlikely(var225 == NULL)) {
5138 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5139 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
5140 show_backtrace(1);
5141 }
5142 var223 = var225;
5143 RET_LABEL224:(void)0;
5144 }
5145 }
5146 var_226 = var223;
5147 {
5148 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct (var_226) on <var_226:ModelBuilder> */
5149 var229 = var_226->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on <var_226:ModelBuilder> */
5150 var227 = var229;
5151 RET_LABEL228:(void)0;
5152 }
5153 }
5154 var230 = 1;
5155 {
5156 { /* Inline kernel#Int#+ (var227,var230) on <var227:Int> */
5157 /* Covariant cast for argument 0 (i) <var230:Int> isa OTHER */
5158 /* <var230:Int> isa OTHER */
5159 var233 = 1; /* easy <var230:Int> isa OTHER*/
5160 if (unlikely(!var233)) {
5161 var_class_name236 = type_kernel__Int.name;
5162 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name236);
5163 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
5164 show_backtrace(1);
5165 }
5166 var237 = var227 + var230;
5167 var231 = var237;
5168 goto RET_LABEL232;
5169 RET_LABEL232:(void)0;
5170 }
5171 }
5172 {
5173 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct= (var_226,var231) on <var_226:ModelBuilder> */
5174 var_226->attrs[COLOR_separate_compiler__ModelBuilder___nb_invok_by_direct].l = var231; /* _nb_invok_by_direct on <var_226:ModelBuilder> */
5175 RET_LABEL238:(void)0;
5176 }
5177 }
5178 {
5179 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5180 var241 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5181 if (unlikely(var241 == NULL)) {
5182 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5183 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
5184 show_backtrace(1);
5185 }
5186 var239 = var241;
5187 RET_LABEL240:(void)0;
5188 }
5189 }
5190 {
5191 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var239) on <var239:AbstractCompiler(SeparateCompiler)> */
5192 var244 = var239->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var239:AbstractCompiler(SeparateCompiler)> */
5193 if (unlikely(var244 == NULL)) {
5194 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5195 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
5196 show_backtrace(1);
5197 }
5198 var242 = var244;
5199 RET_LABEL243:(void)0;
5200 }
5201 }
5202 {
5203 { /* Inline modelbuilder#ModelBuilder#toolcontext (var242) on <var242:ModelBuilder> */
5204 var247 = var242->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var242:ModelBuilder> */
5205 if (unlikely(var247 == NULL)) {
5206 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5207 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
5208 show_backtrace(1);
5209 }
5210 var245 = var247;
5211 RET_LABEL246:(void)0;
5212 }
5213 }
5214 {
5215 { /* Inline abstract_compiler#ToolContext#opt_invocation_metrics (var245) on <var245:ToolContext> */
5216 var250 = var245->attrs[COLOR_abstract_compiler__ToolContext___opt_invocation_metrics].val; /* _opt_invocation_metrics on <var245:ToolContext> */
5217 if (unlikely(var250 == NULL)) {
5218 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_invocation_metrics");
5219 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 63);
5220 show_backtrace(1);
5221 }
5222 var248 = var250;
5223 RET_LABEL249:(void)0;
5224 }
5225 }
5226 {
5227 { /* Inline opts#Option#value (var248) on <var248:OptionBool> */
5228 var253 = var248->attrs[COLOR_opts__Option___value].val; /* _value on <var248:OptionBool> */
5229 var251 = var253;
5230 RET_LABEL252:(void)0;
5231 }
5232 }
5233 var254 = ((struct instance_kernel__Bool*)var251)->value; /* autounbox from nullable Object to Bool */;
5234 if (var254){
5235 if (varonce255) {
5236 var256 = varonce255;
5237 } else {
5238 var257 = "count_invoke_by_direct++;";
5239 var258 = 25;
5240 var259 = string__NativeString__to_s_with_length(var257, var258);
5241 var256 = var259;
5242 varonce255 = var256;
5243 }
5244 {
5245 abstract_compiler__AbstractCompilerVisitor__add(self, var256); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5246 }
5247 } else {
5248 }
5249 {
5250 separate_compiler__SeparateCompilerVisitor__adapt_signature(self, var_mmethoddef, var_arguments); /* Direct call separate_compiler#SeparateCompilerVisitor#adapt_signature on <self:SeparateCompilerVisitor>*/
5251 }
5252 {
5253 var260 = abstract_compiler__MPropDef__c_name(var_mmethoddef);
5254 }
5255 {
5256 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var260); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
5257 }
5258 var261 = NULL;
5259 if (var_res == NULL) {
5260 var262 = 1; /* is null */
5261 } else {
5262 var262 = 0; /* arg is null but recv is not */
5263 }
5264 if (0) {
5265 { /* Inline kernel#Object#== (var_res,var261) on <var_res:nullable RuntimeVariable> */
5266 var_other = var261;
5267 {
5268 { /* Inline kernel#Object#is_same_instance (var_res,var_other) on <var_res:nullable RuntimeVariable(RuntimeVariable)> */
5269 var267 = var_res == var_other;
5270 var265 = var267;
5271 goto RET_LABEL266;
5272 RET_LABEL266:(void)0;
5273 }
5274 }
5275 var263 = var265;
5276 goto RET_LABEL264;
5277 RET_LABEL264:(void)0;
5278 }
5279 var262 = var263;
5280 }
5281 if (var262){
5282 {
5283 var268 = abstract_compiler__MPropDef__c_name(var_mmethoddef);
5284 }
5285 if (varonce269) {
5286 var270 = varonce269;
5287 } else {
5288 var271 = "(";
5289 var272 = 1;
5290 var273 = string__NativeString__to_s_with_length(var271, var272);
5291 var270 = var273;
5292 varonce269 = var270;
5293 }
5294 if (varonce274) {
5295 var275 = varonce274;
5296 } else {
5297 var276 = ", ";
5298 var277 = 2;
5299 var278 = string__NativeString__to_s_with_length(var276, var277);
5300 var275 = var278;
5301 varonce274 = var275;
5302 }
5303 {
5304 var279 = string__Collection__join(var_arguments, var275);
5305 }
5306 if (varonce280) {
5307 var281 = varonce280;
5308 } else {
5309 var282 = "); /* Direct call ";
5310 var283 = 18;
5311 var284 = string__NativeString__to_s_with_length(var282, var283);
5312 var281 = var284;
5313 varonce280 = var281;
5314 }
5315 if (varonce285) {
5316 var286 = varonce285;
5317 } else {
5318 var287 = " on ";
5319 var288 = 4;
5320 var289 = string__NativeString__to_s_with_length(var287, var288);
5321 var286 = var289;
5322 varonce285 = var286;
5323 }
5324 {
5325 var290 = abstract_collection__SequenceRead__first(var_arguments);
5326 }
5327 {
5328 var291 = abstract_compiler__RuntimeVariable__inspect(var290);
5329 }
5330 if (varonce292) {
5331 var293 = varonce292;
5332 } else {
5333 var294 = "*/";
5334 var295 = 2;
5335 var296 = string__NativeString__to_s_with_length(var294, var295);
5336 var293 = var296;
5337 varonce292 = var293;
5338 }
5339 var297 = NEW_array__Array(&type_array__Arraykernel__Object);
5340 { /* var297 = array_instance Array[Object] */
5341 var298 = 8;
5342 var299 = NEW_array__NativeArray(var298, &type_array__NativeArraykernel__Object);
5343 ((struct instance_array__NativeArray*)var299)->values[0] = (val*) var268;
5344 ((struct instance_array__NativeArray*)var299)->values[1] = (val*) var270;
5345 ((struct instance_array__NativeArray*)var299)->values[2] = (val*) var279;
5346 ((struct instance_array__NativeArray*)var299)->values[3] = (val*) var281;
5347 ((struct instance_array__NativeArray*)var299)->values[4] = (val*) var_mmethoddef;
5348 ((struct instance_array__NativeArray*)var299)->values[5] = (val*) var286;
5349 ((struct instance_array__NativeArray*)var299)->values[6] = (val*) var291;
5350 ((struct instance_array__NativeArray*)var299)->values[7] = (val*) var293;
5351 {
5352 ((void (*)(val*, val*, long))(var297->class->vft[COLOR_array__Array__with_native]))(var297, var299, var298) /* with_native on <var297:Array[Object]>*/;
5353 }
5354 }
5355 {
5356 var300 = ((val* (*)(val*))(var297->class->vft[COLOR_string__Object__to_s]))(var297) /* to_s on <var297:Array[Object]>*/;
5357 }
5358 {
5359 abstract_compiler__AbstractCompilerVisitor__add(self, var300); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5360 }
5361 var301 = NULL;
5362 var = var301;
5363 goto RET_LABEL;
5364 } else {
5365 if (varonce302) {
5366 var303 = varonce302;
5367 } else {
5368 var304 = " = ";
5369 var305 = 3;
5370 var306 = string__NativeString__to_s_with_length(var304, var305);
5371 var303 = var306;
5372 varonce302 = var303;
5373 }
5374 {
5375 var307 = abstract_compiler__MPropDef__c_name(var_mmethoddef);
5376 }
5377 if (varonce308) {
5378 var309 = varonce308;
5379 } else {
5380 var310 = "(";
5381 var311 = 1;
5382 var312 = string__NativeString__to_s_with_length(var310, var311);
5383 var309 = var312;
5384 varonce308 = var309;
5385 }
5386 if (varonce313) {
5387 var314 = varonce313;
5388 } else {
5389 var315 = ", ";
5390 var316 = 2;
5391 var317 = string__NativeString__to_s_with_length(var315, var316);
5392 var314 = var317;
5393 varonce313 = var314;
5394 }
5395 {
5396 var318 = string__Collection__join(var_arguments, var314);
5397 }
5398 if (varonce319) {
5399 var320 = varonce319;
5400 } else {
5401 var321 = ");";
5402 var322 = 2;
5403 var323 = string__NativeString__to_s_with_length(var321, var322);
5404 var320 = var323;
5405 varonce319 = var320;
5406 }
5407 var324 = NEW_array__Array(&type_array__Arraykernel__Object);
5408 { /* var324 = array_instance Array[Object] */
5409 var325 = 6;
5410 var326 = NEW_array__NativeArray(var325, &type_array__NativeArraykernel__Object);
5411 ((struct instance_array__NativeArray*)var326)->values[0] = (val*) var_res;
5412 ((struct instance_array__NativeArray*)var326)->values[1] = (val*) var303;
5413 ((struct instance_array__NativeArray*)var326)->values[2] = (val*) var307;
5414 ((struct instance_array__NativeArray*)var326)->values[3] = (val*) var309;
5415 ((struct instance_array__NativeArray*)var326)->values[4] = (val*) var318;
5416 ((struct instance_array__NativeArray*)var326)->values[5] = (val*) var320;
5417 {
5418 ((void (*)(val*, val*, long))(var324->class->vft[COLOR_array__Array__with_native]))(var324, var326, var325) /* with_native on <var324:Array[Object]>*/;
5419 }
5420 }
5421 {
5422 var327 = ((val* (*)(val*))(var324->class->vft[COLOR_string__Object__to_s]))(var324) /* to_s on <var324:Array[Object]>*/;
5423 }
5424 {
5425 abstract_compiler__AbstractCompilerVisitor__add(self, var327); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
5426 }
5427 }
5428 var = var_res;
5429 goto RET_LABEL;
5430 RET_LABEL:;
5431 return var;
5432 }
5433 /* method separate_compiler#SeparateCompilerVisitor#call for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
5434 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__call(val* self, val* p0, val* p1, val* p2) {
5435 val* var /* : nullable RuntimeVariable */;
5436 val* var1 /* : nullable RuntimeVariable */;
5437 var1 = separate_compiler__SeparateCompilerVisitor__call(self, p0, p1, p2);
5438 var = var1;
5439 RET_LABEL:;
5440 return var;
5441 }
5442 /* method separate_compiler#SeparateCompilerVisitor#supercall for (self: SeparateCompilerVisitor, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
5443 val* separate_compiler__SeparateCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
5444 val* var /* : nullable RuntimeVariable */;
5445 val* var_m /* var m: MMethodDef */;
5446 val* var_recvtype /* var recvtype: MClassType */;
5447 val* var_arguments /* var arguments: Array[RuntimeVariable] */;
5448 val* var1 /* : nullable Object */;
5449 val* var2 /* : MType */;
5450 val* var4 /* : MType */;
5451 val* var5 /* : String */;
5452 static val* varonce;
5453 val* var6 /* : String */;
5454 char* var7 /* : NativeString */;
5455 long var8 /* : Int */;
5456 val* var9 /* : FlatString */;
5457 short int var10 /* : Bool */;
5458 short int var11 /* : Bool */;
5459 val* var_other /* var other: nullable Object */;
5460 short int var13 /* : Bool */;
5461 short int var14 /* : Bool */;
5462 short int var15 /* : Bool */;
5463 val* var16 /* : AbstractCompiler */;
5464 val* var18 /* : AbstractCompiler */;
5465 val* var19 /* : MModule */;
5466 val* var21 /* : MModule */;
5467 val* var_main /* var main: MModule */;
5468 val* var22 /* : AbstractCompiler */;
5469 val* var24 /* : AbstractCompiler */;
5470 val* var25 /* : AbstractCompiler */;
5471 val* var27 /* : AbstractCompiler */;
5472 val* var28 /* : MModule */;
5473 val* var30 /* : MModule */;
5474 val* var32 /* : nullable RuntimeVariable */;
5475 val* var_res /* var res: nullable RuntimeVariable */;
5476 val* var33 /* : AbstractCompiler */;
5477 val* var35 /* : AbstractCompiler */;
5478 val* var37 /* : MProperty */;
5479 val* var39 /* : MProperty */;
5480 val* var40 /* : String */;
5481 val* var41 /* : nullable RuntimeVariable */;
5482 var_m = p0;
5483 var_recvtype = p1;
5484 var_arguments = p2;
5485 {
5486 var1 = abstract_collection__SequenceRead__first(var_arguments);
5487 }
5488 {
5489 { /* Inline abstract_compiler#RuntimeVariable#mcasttype (var1) on <var1:nullable Object(RuntimeVariable)> */
5490 var4 = var1->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val; /* _mcasttype on <var1:nullable Object(RuntimeVariable)> */
5491 if (unlikely(var4 == NULL)) {
5492 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mcasttype");
5493 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1637);
5494 show_backtrace(1);
5495 }
5496 var2 = var4;
5497 RET_LABEL3:(void)0;
5498 }
5499 }
5500 {
5501 var5 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_compiler__MType__ctype]))(var2) /* ctype on <var2:MType>*/;
5502 }
5503 if (varonce) {
5504 var6 = varonce;
5505 } else {
5506 var7 = "val*";
5507 var8 = 4;
5508 var9 = string__NativeString__to_s_with_length(var7, var8);
5509 var6 = var9;
5510 varonce = var6;
5511 }
5512 {
5513 { /* Inline kernel#Object#!= (var5,var6) on <var5:String> */
5514 var_other = var6;
5515 {
5516 var14 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var_other) /* == on <var5:String>*/;
5517 var13 = var14;
5518 }
5519 var15 = !var13;
5520 var11 = var15;
5521 goto RET_LABEL12;
5522 RET_LABEL12:(void)0;
5523 }
5524 var10 = var11;
5525 }
5526 if (var10){
5527 {
5528 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5529 var18 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5530 if (unlikely(var18 == NULL)) {
5531 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5532 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
5533 show_backtrace(1);
5534 }
5535 var16 = var18;
5536 RET_LABEL17:(void)0;
5537 }
5538 }
5539 {
5540 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (var16) on <var16:AbstractCompiler(SeparateCompiler)> */
5541 var21 = var16->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <var16:AbstractCompiler(SeparateCompiler)> */
5542 if (unlikely(var21 == NULL)) {
5543 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
5544 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 463);
5545 show_backtrace(1);
5546 }
5547 var19 = var21;
5548 RET_LABEL20:(void)0;
5549 }
5550 }
5551 var_main = var19;
5552 {
5553 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5554 var24 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5555 if (unlikely(var24 == NULL)) {
5556 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5557 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
5558 show_backtrace(1);
5559 }
5560 var22 = var24;
5561 RET_LABEL23:(void)0;
5562 }
5563 }
5564 {
5565 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5566 var27 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5567 if (unlikely(var27 == NULL)) {
5568 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5569 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
5570 show_backtrace(1);
5571 }
5572 var25 = var27;
5573 RET_LABEL26:(void)0;
5574 }
5575 }
5576 {
5577 { /* Inline abstract_compiler#AbstractCompiler#realmainmodule (var25) on <var25:AbstractCompiler(SeparateCompiler)> */
5578 var30 = var25->attrs[COLOR_abstract_compiler__AbstractCompiler___realmainmodule].val; /* _realmainmodule on <var25:AbstractCompiler(SeparateCompiler)> */
5579 if (unlikely(var30 == NULL)) {
5580 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _realmainmodule");
5581 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 467);
5582 show_backtrace(1);
5583 }
5584 var28 = var30;
5585 RET_LABEL29:(void)0;
5586 }
5587 }
5588 {
5589 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var22,var28) on <var22:AbstractCompiler(SeparateCompiler)> */
5590 var22->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var28; /* _mainmodule on <var22:AbstractCompiler(SeparateCompiler)> */
5591 RET_LABEL31:(void)0;
5592 }
5593 }
5594 {
5595 var32 = abstract_compiler__AbstractCompilerVisitor__monomorphic_super_send(self, var_m, var_recvtype, var_arguments);
5596 }
5597 var_res = var32;
5598 {
5599 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
5600 var35 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
5601 if (unlikely(var35 == NULL)) {
5602 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5603 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
5604 show_backtrace(1);
5605 }
5606 var33 = var35;
5607 RET_LABEL34:(void)0;
5608 }
5609 }
5610 {
5611 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (var33,var_main) on <var33:AbstractCompiler(SeparateCompiler)> */
5612 var33->attrs[COLOR_abstract_compiler__AbstractCompiler___mainmodule].val = var_main; /* _mainmodule on <var33:AbstractCompiler(SeparateCompiler)> */
5613 RET_LABEL36:(void)0;
5614 }
5615 }
5616 var = var_res;
5617 goto RET_LABEL;
5618 } else {
5619 }
5620 {
5621 { /* Inline model#MPropDef#mproperty (var_m) on <var_m:MMethodDef> */
5622 var39 = var_m->attrs[COLOR_model__MPropDef___mproperty].val; /* _mproperty on <var_m:MMethodDef> */
5623 if (unlikely(var39 == NULL)) {
5624 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
5625 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1898);
5626 show_backtrace(1);
5627 }
5628 var37 = var39;
5629 RET_LABEL38:(void)0;
5630 }
5631 }
5632 {
5633 var40 = separate_compiler__MPropDef__const_color(var_m);
5634 }
5635 {
5636 var41 = separate_compiler__SeparateCompilerVisitor__table_send(self, var37, var_arguments, var40);
5637 }
5638 var = var41;
5639 goto RET_LABEL;
5640 RET_LABEL:;
5641 return var;
5642 }
5643 /* method separate_compiler#SeparateCompilerVisitor#supercall for (self: Object, MMethodDef, MClassType, Array[RuntimeVariable]): nullable RuntimeVariable */
5644 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__supercall(val* self, val* p0, val* p1, val* p2) {
5645 val* var /* : nullable RuntimeVariable */;
5646 val* var1 /* : nullable RuntimeVariable */;
5647 var1 = separate_compiler__SeparateCompilerVisitor__supercall(self, p0, p1, p2);
5648 var = var1;
5649 RET_LABEL:;
5650 return var;
5651 }
5652 /* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: SeparateCompilerVisitor, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
5653 val* separate_compiler__SeparateCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
5654 val* var /* : RuntimeVariable */;
5655 val* var_mpropdef /* var mpropdef: MPropDef */;
5656 val* var_recv /* var recv: RuntimeVariable */;
5657 val* var_varargs /* var varargs: Array[RuntimeVariable] */;
5658 val* var_elttype /* var elttype: MType */;
5659 val* var1 /* : nullable Frame */;
5660 val* var3 /* : nullable Frame */;
5661 val* var_old_frame /* var old_frame: nullable Frame */;
5662 val* var4 /* : Frame */;
5663 val* var5 /* : MClassDef */;
5664 val* var7 /* : MClassDef */;
5665 val* var8 /* : MClassType */;
5666 val* var10 /* : MClassType */;
5667 val* var11 /* : Array[RuntimeVariable] */;
5668 long var12 /* : Int */;
5669 val* var_ /* var : Array[RuntimeVariable] */;
5670 val* var_frame /* var frame: Frame */;
5671 val* var14 /* : RuntimeVariable */;
5672 val* var_res /* var res: RuntimeVariable */;
5673 var_mpropdef = p0;
5674 var_recv = p1;
5675 var_varargs = p2;
5676 var_elttype = p3;
5677 {
5678 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
5679 var3 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
5680 var1 = var3;
5681 RET_LABEL2:(void)0;
5682 }
5683 }
5684 var_old_frame = var1;
5685 var4 = NEW_abstract_compiler__Frame(&type_abstract_compiler__Frame);
5686 {
5687 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MPropDef> */
5688 var7 = var_mpropdef->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var_mpropdef:MPropDef> */
5689 if (unlikely(var7 == NULL)) {
5690 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5691 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
5692 show_backtrace(1);
5693 }
5694 var5 = var7;
5695 RET_LABEL6:(void)0;
5696 }
5697 }
5698 {
5699 { /* Inline model#MClassDef#bound_mtype (var5) on <var5:MClassDef> */
5700 var10 = var5->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var5:MClassDef> */
5701 if (unlikely(var10 == NULL)) {
5702 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
5703 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
5704 show_backtrace(1);
5705 }
5706 var8 = var10;
5707 RET_LABEL9:(void)0;
5708 }
5709 }
5710 var11 = NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable);
5711 var12 = 1;
5712 {
5713 array__Array__with_capacity(var11, var12); /* Direct call array#Array#with_capacity on <var11:Array[RuntimeVariable]>*/
5714 }
5715 var_ = var11;
5716 {
5717 array__AbstractArray__push(var_, var_recv); /* Direct call array#AbstractArray#push on <var_:Array[RuntimeVariable]>*/
5718 }
5719 {
5720 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__Frame__visitor_61d]))(var4, self) /* visitor= on <var4:Frame>*/;
5721 }
5722 {
5723 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__Frame__mpropdef_61d]))(var4, var_mpropdef) /* mpropdef= on <var4:Frame>*/;
5724 }
5725 {
5726 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__Frame__receiver_61d]))(var4, var8) /* receiver= on <var4:Frame>*/;
5727 }
5728 {
5729 ((void (*)(val*, val*))(var4->class->vft[COLOR_abstract_compiler__Frame__arguments_61d]))(var4, var_) /* arguments= on <var4:Frame>*/;
5730 }
5731 {
5732 ((void (*)(val*))(var4->class->vft[COLOR_kernel__Object__init]))(var4) /* init on <var4:Frame>*/;
5733 }
5734 var_frame = var4;
5735 {
5736 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_frame) on <self:SeparateCompilerVisitor> */
5737 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val = var_frame; /* _frame on <self:SeparateCompilerVisitor> */
5738 RET_LABEL13:(void)0;
5739 }
5740 }
5741 {
5742 var14 = separate_compiler__SeparateCompilerVisitor__array_instance(self, var_varargs, var_elttype);
5743 }
5744 var_res = var14;
5745 {
5746 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame= (self,var_old_frame) on <self:SeparateCompilerVisitor> */
5747 self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val = var_old_frame; /* _frame on <self:SeparateCompilerVisitor> */
5748 RET_LABEL15:(void)0;
5749 }
5750 }
5751 var = var_res;
5752 goto RET_LABEL;
5753 RET_LABEL:;
5754 return var;
5755 }
5756 /* method separate_compiler#SeparateCompilerVisitor#vararg_instance for (self: Object, MPropDef, RuntimeVariable, Array[RuntimeVariable], MType): RuntimeVariable */
5757 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__vararg_instance(val* self, val* p0, val* p1, val* p2, val* p3) {
5758 val* var /* : RuntimeVariable */;
5759 val* var1 /* : RuntimeVariable */;
5760 var1 = separate_compiler__SeparateCompilerVisitor__vararg_instance(self, p0, p1, p2, p3);
5761 var = var1;
5762 RET_LABEL:;
5763 return var;
5764 }
5765 /* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
5766 val* separate_compiler__SeparateCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
5767 val* var /* : RuntimeVariable */;
5768 val* var_a /* var a: MAttribute */;
5769 val* var_recv /* var recv: RuntimeVariable */;
5770 val* var1 /* : MClassType */;
5771 val* var2 /* : RuntimeVariable */;
5772 val* var_res /* var res: RuntimeVariable */;
5773 val* var3 /* : MPropDef */;
5774 val* var5 /* : MPropDef */;
5775 val* var6 /* : nullable MType */;
5776 val* var8 /* : nullable MType */;
5777 val* var_mtype /* var mtype: MType */;
5778 val* var9 /* : MPropDef */;
5779 val* var11 /* : MPropDef */;
5780 val* var12 /* : MClassDef */;
5781 val* var14 /* : MClassDef */;
5782 val* var_intromclassdef /* var intromclassdef: MClassDef */;
5783 val* var15 /* : MClassType */;
5784 val* var17 /* : MClassType */;
5785 val* var18 /* : MClassType */;
5786 val* var20 /* : MClassType */;
5787 val* var21 /* : MModule */;
5788 val* var23 /* : MModule */;
5789 short int var24 /* : Bool */;
5790 val* var25 /* : MType */;
5791 short int var26 /* : Bool */;
5792 int cltype;
5793 int idtype;
5794 static val* varonce;
5795 val* var27 /* : String */;
5796 char* var28 /* : NativeString */;
5797 long var29 /* : Int */;
5798 val* var30 /* : FlatString */;
5799 static val* varonce31;
5800 val* var32 /* : String */;
5801 char* var33 /* : NativeString */;
5802 long var34 /* : Int */;
5803 val* var35 /* : FlatString */;
5804 val* var36 /* : String */;
5805 static val* varonce37;
5806 val* var38 /* : String */;
5807 char* var39 /* : NativeString */;
5808 long var40 /* : Int */;
5809 val* var41 /* : FlatString */;
5810 val* var42 /* : Array[Object] */;
5811 long var43 /* : Int */;
5812 val* var44 /* : NativeArray[Object] */;
5813 val* var45 /* : String */;
5814 val* var46 /* : String */;
5815 val* var47 /* : AbstractCompiler */;
5816 val* var49 /* : AbstractCompiler */;
5817 val* var50 /* : ModelBuilder */;
5818 val* var52 /* : ModelBuilder */;
5819 val* var53 /* : ToolContext */;
5820 val* var55 /* : ToolContext */;
5821 val* var56 /* : OptionBool */;
5822 val* var58 /* : OptionBool */;
5823 val* var59 /* : nullable Object */;
5824 val* var61 /* : nullable Object */;
5825 short int var62 /* : Bool */;
5826 static val* varonce63;
5827 val* var64 /* : String */;
5828 char* var65 /* : NativeString */;
5829 long var66 /* : Int */;
5830 val* var67 /* : FlatString */;
5831 static val* varonce68;
5832 val* var69 /* : String */;
5833 char* var70 /* : NativeString */;
5834 long var71 /* : Int */;
5835 val* var72 /* : FlatString */;
5836 val* var73 /* : String */;
5837 static val* varonce74;
5838 val* var75 /* : String */;
5839 char* var76 /* : NativeString */;
5840 long var77 /* : Int */;
5841 val* var78 /* : FlatString */;
5842 static val* varonce79;
5843 val* var80 /* : String */;
5844 char* var81 /* : NativeString */;
5845 long var82 /* : Int */;
5846 val* var83 /* : FlatString */;
5847 val* var84 /* : String */;
5848 static val* varonce85;
5849 val* var86 /* : String */;
5850 char* var87 /* : NativeString */;
5851 long var88 /* : Int */;
5852 val* var89 /* : FlatString */;
5853 val* var90 /* : Array[Object] */;
5854 long var91 /* : Int */;
5855 val* var92 /* : NativeArray[Object] */;
5856 val* var93 /* : String */;
5857 val* var94 /* : String */;
5858 static val* varonce95;
5859 val* var96 /* : String */;
5860 char* var97 /* : NativeString */;
5861 long var98 /* : Int */;
5862 val* var99 /* : FlatString */;
5863 short int var100 /* : Bool */;
5864 short int var101 /* : Bool */;
5865 static val* varonce102;
5866 val* var103 /* : String */;
5867 char* var104 /* : NativeString */;
5868 long var105 /* : Int */;
5869 val* var106 /* : FlatString */;
5870 static val* varonce107;
5871 val* var108 /* : String */;
5872 char* var109 /* : NativeString */;
5873 long var110 /* : Int */;
5874 val* var111 /* : FlatString */;
5875 val* var112 /* : String */;
5876 static val* varonce113;
5877 val* var114 /* : String */;
5878 char* var115 /* : NativeString */;
5879 long var116 /* : Int */;
5880 val* var117 /* : FlatString */;
5881 static val* varonce118;
5882 val* var119 /* : String */;
5883 char* var120 /* : NativeString */;
5884 long var121 /* : Int */;
5885 val* var122 /* : FlatString */;
5886 val* var123 /* : String */;
5887 static val* varonce124;
5888 val* var125 /* : String */;
5889 char* var126 /* : NativeString */;
5890 long var127 /* : Int */;
5891 val* var128 /* : FlatString */;
5892 val* var129 /* : Array[Object] */;
5893 long var130 /* : Int */;
5894 val* var131 /* : NativeArray[Object] */;
5895 val* var132 /* : String */;
5896 static val* varonce133;
5897 val* var134 /* : String */;
5898 char* var135 /* : NativeString */;
5899 long var136 /* : Int */;
5900 val* var137 /* : FlatString */;
5901 static val* varonce138;
5902 val* var139 /* : String */;
5903 char* var140 /* : NativeString */;
5904 long var141 /* : Int */;
5905 val* var142 /* : FlatString */;
5906 val* var143 /* : String */;
5907 static val* varonce144;
5908 val* var145 /* : String */;
5909 char* var146 /* : NativeString */;
5910 long var147 /* : Int */;
5911 val* var148 /* : FlatString */;
5912 val* var149 /* : Array[Object] */;
5913 long var150 /* : Int */;
5914 val* var151 /* : NativeArray[Object] */;
5915 val* var152 /* : String */;
5916 var_a = p0;
5917 var_recv = p1;
5918 {
5919 abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(self, var_recv); /* Direct call abstract_compiler#AbstractCompilerVisitor#check_recv_notnull on <self:SeparateCompilerVisitor>*/
5920 }
5921 {
5922 var1 = abstract_compiler__AbstractCompilerVisitor__bool_type(self);
5923 }
5924 {
5925 var2 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var1);
5926 }
5927 var_res = var2;
5928 {
5929 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
5930 var5 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
5931 if (unlikely(var5 == NULL)) {
5932 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
5933 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
5934 show_backtrace(1);
5935 }
5936 var3 = var5;
5937 RET_LABEL4:(void)0;
5938 }
5939 }
5940 {
5941 { /* Inline model#MAttributeDef#static_mtype (var3) on <var3:MPropDef(MAttributeDef)> */
5942 var8 = var3->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <var3:MPropDef(MAttributeDef)> */
5943 var6 = var8;
5944 RET_LABEL7:(void)0;
5945 }
5946 }
5947 if (unlikely(var6 == NULL)) {
5948 PRINT_ERROR("Runtime error: %s", "Cast failed");
5949 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1305);
5950 show_backtrace(1);
5951 }
5952 var_mtype = var6;
5953 {
5954 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
5955 var11 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
5956 if (unlikely(var11 == NULL)) {
5957 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
5958 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
5959 show_backtrace(1);
5960 }
5961 var9 = var11;
5962 RET_LABEL10:(void)0;
5963 }
5964 }
5965 {
5966 { /* Inline model#MPropDef#mclassdef (var9) on <var9:MPropDef(MAttributeDef)> */
5967 var14 = var9->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var9:MPropDef(MAttributeDef)> */
5968 if (unlikely(var14 == NULL)) {
5969 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
5970 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
5971 show_backtrace(1);
5972 }
5973 var12 = var14;
5974 RET_LABEL13:(void)0;
5975 }
5976 }
5977 var_intromclassdef = var12;
5978 {
5979 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
5980 var17 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
5981 if (unlikely(var17 == NULL)) {
5982 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
5983 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
5984 show_backtrace(1);
5985 }
5986 var15 = var17;
5987 RET_LABEL16:(void)0;
5988 }
5989 }
5990 {
5991 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
5992 var20 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
5993 if (unlikely(var20 == NULL)) {
5994 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
5995 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
5996 show_backtrace(1);
5997 }
5998 var18 = var20;
5999 RET_LABEL19:(void)0;
6000 }
6001 }
6002 {
6003 { /* Inline model#MClassDef#mmodule (var_intromclassdef) on <var_intromclassdef:MClassDef> */
6004 var23 = var_intromclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_intromclassdef:MClassDef> */
6005 if (unlikely(var23 == NULL)) {
6006 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
6007 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
6008 show_backtrace(1);
6009 }
6010 var21 = var23;
6011 RET_LABEL22:(void)0;
6012 }
6013 }
6014 var24 = 1;
6015 {
6016 var25 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var15, var18, var21, var24) /* resolve_for on <var_mtype:MType>*/;
6017 }
6018 var_mtype = var25;
6019 /* <var_mtype:MType> isa MNullableType */
6020 cltype = type_model__MNullableType.color;
6021 idtype = type_model__MNullableType.id;
6022 if(cltype >= var_mtype->type->table_size) {
6023 var26 = 0;
6024 } else {
6025 var26 = var_mtype->type->type_table[cltype] == idtype;
6026 }
6027 if (var26){
6028 if (varonce) {
6029 var27 = varonce;
6030 } else {
6031 var28 = " = 1; /* easy isset: ";
6032 var29 = 21;
6033 var30 = string__NativeString__to_s_with_length(var28, var29);
6034 var27 = var30;
6035 varonce = var27;
6036 }
6037 if (varonce31) {
6038 var32 = varonce31;
6039 } else {
6040 var33 = " on ";
6041 var34 = 4;
6042 var35 = string__NativeString__to_s_with_length(var33, var34);
6043 var32 = var35;
6044 varonce31 = var32;
6045 }
6046 {
6047 var36 = abstract_compiler__RuntimeVariable__inspect(var_recv);
6048 }
6049 if (varonce37) {
6050 var38 = varonce37;
6051 } else {
6052 var39 = " */";
6053 var40 = 3;
6054 var41 = string__NativeString__to_s_with_length(var39, var40);
6055 var38 = var41;
6056 varonce37 = var38;
6057 }
6058 var42 = NEW_array__Array(&type_array__Arraykernel__Object);
6059 { /* var42 = array_instance Array[Object] */
6060 var43 = 6;
6061 var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
6062 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var_res;
6063 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var27;
6064 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var_a;
6065 ((struct instance_array__NativeArray*)var44)->values[3] = (val*) var32;
6066 ((struct instance_array__NativeArray*)var44)->values[4] = (val*) var36;
6067 ((struct instance_array__NativeArray*)var44)->values[5] = (val*) var38;
6068 {
6069 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
6070 }
6071 }
6072 {
6073 var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
6074 }
6075 {
6076 abstract_compiler__AbstractCompilerVisitor__add(self, var45); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6077 }
6078 var = var_res;
6079 goto RET_LABEL;
6080 } else {
6081 }
6082 {
6083 var46 = separate_compiler__MProperty__const_color(var_a);
6084 }
6085 {
6086 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var46); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6087 }
6088 {
6089 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6090 var49 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6091 if (unlikely(var49 == NULL)) {
6092 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6093 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
6094 show_backtrace(1);
6095 }
6096 var47 = var49;
6097 RET_LABEL48:(void)0;
6098 }
6099 }
6100 {
6101 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var47) on <var47:AbstractCompiler(SeparateCompiler)> */
6102 var52 = var47->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var47:AbstractCompiler(SeparateCompiler)> */
6103 if (unlikely(var52 == NULL)) {
6104 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6105 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
6106 show_backtrace(1);
6107 }
6108 var50 = var52;
6109 RET_LABEL51:(void)0;
6110 }
6111 }
6112 {
6113 { /* Inline modelbuilder#ModelBuilder#toolcontext (var50) on <var50:ModelBuilder> */
6114 var55 = var50->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var50:ModelBuilder> */
6115 if (unlikely(var55 == NULL)) {
6116 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6117 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
6118 show_backtrace(1);
6119 }
6120 var53 = var55;
6121 RET_LABEL54:(void)0;
6122 }
6123 }
6124 {
6125 { /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var53) on <var53:ToolContext> */
6126 var58 = var53->attrs[COLOR_separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on <var53:ToolContext> */
6127 if (unlikely(var58 == NULL)) {
6128 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute");
6129 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 28);
6130 show_backtrace(1);
6131 }
6132 var56 = var58;
6133 RET_LABEL57:(void)0;
6134 }
6135 }
6136 {
6137 { /* Inline opts#Option#value (var56) on <var56:OptionBool> */
6138 var61 = var56->attrs[COLOR_opts__Option___value].val; /* _value on <var56:OptionBool> */
6139 var59 = var61;
6140 RET_LABEL60:(void)0;
6141 }
6142 }
6143 var62 = ((struct instance_kernel__Bool*)var59)->value; /* autounbox from nullable Object to Bool */;
6144 if (var62){
6145 if (varonce63) {
6146 var64 = varonce63;
6147 } else {
6148 var65 = " = ";
6149 var66 = 3;
6150 var67 = string__NativeString__to_s_with_length(var65, var66);
6151 var64 = var67;
6152 varonce63 = var64;
6153 }
6154 if (varonce68) {
6155 var69 = varonce68;
6156 } else {
6157 var70 = "->attrs[";
6158 var71 = 8;
6159 var72 = string__NativeString__to_s_with_length(var70, var71);
6160 var69 = var72;
6161 varonce68 = var69;
6162 }
6163 {
6164 var73 = separate_compiler__MProperty__const_color(var_a);
6165 }
6166 if (varonce74) {
6167 var75 = varonce74;
6168 } else {
6169 var76 = "] != NULL; /* ";
6170 var77 = 14;
6171 var78 = string__NativeString__to_s_with_length(var76, var77);
6172 var75 = var78;
6173 varonce74 = var75;
6174 }
6175 if (varonce79) {
6176 var80 = varonce79;
6177 } else {
6178 var81 = " on ";
6179 var82 = 4;
6180 var83 = string__NativeString__to_s_with_length(var81, var82);
6181 var80 = var83;
6182 varonce79 = var80;
6183 }
6184 {
6185 var84 = abstract_compiler__RuntimeVariable__inspect(var_recv);
6186 }
6187 if (varonce85) {
6188 var86 = varonce85;
6189 } else {
6190 var87 = "*/";
6191 var88 = 2;
6192 var89 = string__NativeString__to_s_with_length(var87, var88);
6193 var86 = var89;
6194 varonce85 = var86;
6195 }
6196 var90 = NEW_array__Array(&type_array__Arraykernel__Object);
6197 { /* var90 = array_instance Array[Object] */
6198 var91 = 10;
6199 var92 = NEW_array__NativeArray(var91, &type_array__NativeArraykernel__Object);
6200 ((struct instance_array__NativeArray*)var92)->values[0] = (val*) var_res;
6201 ((struct instance_array__NativeArray*)var92)->values[1] = (val*) var64;
6202 ((struct instance_array__NativeArray*)var92)->values[2] = (val*) var_recv;
6203 ((struct instance_array__NativeArray*)var92)->values[3] = (val*) var69;
6204 ((struct instance_array__NativeArray*)var92)->values[4] = (val*) var73;
6205 ((struct instance_array__NativeArray*)var92)->values[5] = (val*) var75;
6206 ((struct instance_array__NativeArray*)var92)->values[6] = (val*) var_a;
6207 ((struct instance_array__NativeArray*)var92)->values[7] = (val*) var80;
6208 ((struct instance_array__NativeArray*)var92)->values[8] = (val*) var84;
6209 ((struct instance_array__NativeArray*)var92)->values[9] = (val*) var86;
6210 {
6211 ((void (*)(val*, val*, long))(var90->class->vft[COLOR_array__Array__with_native]))(var90, var92, var91) /* with_native on <var90:Array[Object]>*/;
6212 }
6213 }
6214 {
6215 var93 = ((val* (*)(val*))(var90->class->vft[COLOR_string__Object__to_s]))(var90) /* to_s on <var90:Array[Object]>*/;
6216 }
6217 {
6218 abstract_compiler__AbstractCompilerVisitor__add(self, var93); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6219 }
6220 } else {
6221 {
6222 var94 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
6223 }
6224 if (varonce95) {
6225 var96 = varonce95;
6226 } else {
6227 var97 = "val*";
6228 var98 = 4;
6229 var99 = string__NativeString__to_s_with_length(var97, var98);
6230 var96 = var99;
6231 varonce95 = var96;
6232 }
6233 {
6234 var101 = string__FlatString___61d_61d(var94, var96);
6235 var100 = var101;
6236 }
6237 if (var100){
6238 if (varonce102) {
6239 var103 = varonce102;
6240 } else {
6241 var104 = " = ";
6242 var105 = 3;
6243 var106 = string__NativeString__to_s_with_length(var104, var105);
6244 var103 = var106;
6245 varonce102 = var103;
6246 }
6247 if (varonce107) {
6248 var108 = varonce107;
6249 } else {
6250 var109 = "->attrs[";
6251 var110 = 8;
6252 var111 = string__NativeString__to_s_with_length(var109, var110);
6253 var108 = var111;
6254 varonce107 = var108;
6255 }
6256 {
6257 var112 = separate_compiler__MProperty__const_color(var_a);
6258 }
6259 if (varonce113) {
6260 var114 = varonce113;
6261 } else {
6262 var115 = "].val != NULL; /* ";
6263 var116 = 18;
6264 var117 = string__NativeString__to_s_with_length(var115, var116);
6265 var114 = var117;
6266 varonce113 = var114;
6267 }
6268 if (varonce118) {
6269 var119 = varonce118;
6270 } else {
6271 var120 = " on ";
6272 var121 = 4;
6273 var122 = string__NativeString__to_s_with_length(var120, var121);
6274 var119 = var122;
6275 varonce118 = var119;
6276 }
6277 {
6278 var123 = abstract_compiler__RuntimeVariable__inspect(var_recv);
6279 }
6280 if (varonce124) {
6281 var125 = varonce124;
6282 } else {
6283 var126 = " */";
6284 var127 = 3;
6285 var128 = string__NativeString__to_s_with_length(var126, var127);
6286 var125 = var128;
6287 varonce124 = var125;
6288 }
6289 var129 = NEW_array__Array(&type_array__Arraykernel__Object);
6290 { /* var129 = array_instance Array[Object] */
6291 var130 = 10;
6292 var131 = NEW_array__NativeArray(var130, &type_array__NativeArraykernel__Object);
6293 ((struct instance_array__NativeArray*)var131)->values[0] = (val*) var_res;
6294 ((struct instance_array__NativeArray*)var131)->values[1] = (val*) var103;
6295 ((struct instance_array__NativeArray*)var131)->values[2] = (val*) var_recv;
6296 ((struct instance_array__NativeArray*)var131)->values[3] = (val*) var108;
6297 ((struct instance_array__NativeArray*)var131)->values[4] = (val*) var112;
6298 ((struct instance_array__NativeArray*)var131)->values[5] = (val*) var114;
6299 ((struct instance_array__NativeArray*)var131)->values[6] = (val*) var_a;
6300 ((struct instance_array__NativeArray*)var131)->values[7] = (val*) var119;
6301 ((struct instance_array__NativeArray*)var131)->values[8] = (val*) var123;
6302 ((struct instance_array__NativeArray*)var131)->values[9] = (val*) var125;
6303 {
6304 ((void (*)(val*, val*, long))(var129->class->vft[COLOR_array__Array__with_native]))(var129, var131, var130) /* with_native on <var129:Array[Object]>*/;
6305 }
6306 }
6307 {
6308 var132 = ((val* (*)(val*))(var129->class->vft[COLOR_string__Object__to_s]))(var129) /* to_s on <var129:Array[Object]>*/;
6309 }
6310 {
6311 abstract_compiler__AbstractCompilerVisitor__add(self, var132); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6312 }
6313 } else {
6314 if (varonce133) {
6315 var134 = varonce133;
6316 } else {
6317 var135 = " = 1; /* NOT YET IMPLEMENTED: isset of primitives: ";
6318 var136 = 51;
6319 var137 = string__NativeString__to_s_with_length(var135, var136);
6320 var134 = var137;
6321 varonce133 = var134;
6322 }
6323 if (varonce138) {
6324 var139 = varonce138;
6325 } else {
6326 var140 = " on ";
6327 var141 = 4;
6328 var142 = string__NativeString__to_s_with_length(var140, var141);
6329 var139 = var142;
6330 varonce138 = var139;
6331 }
6332 {
6333 var143 = abstract_compiler__RuntimeVariable__inspect(var_recv);
6334 }
6335 if (varonce144) {
6336 var145 = varonce144;
6337 } else {
6338 var146 = " */";
6339 var147 = 3;
6340 var148 = string__NativeString__to_s_with_length(var146, var147);
6341 var145 = var148;
6342 varonce144 = var145;
6343 }
6344 var149 = NEW_array__Array(&type_array__Arraykernel__Object);
6345 { /* var149 = array_instance Array[Object] */
6346 var150 = 6;
6347 var151 = NEW_array__NativeArray(var150, &type_array__NativeArraykernel__Object);
6348 ((struct instance_array__NativeArray*)var151)->values[0] = (val*) var_res;
6349 ((struct instance_array__NativeArray*)var151)->values[1] = (val*) var134;
6350 ((struct instance_array__NativeArray*)var151)->values[2] = (val*) var_a;
6351 ((struct instance_array__NativeArray*)var151)->values[3] = (val*) var139;
6352 ((struct instance_array__NativeArray*)var151)->values[4] = (val*) var143;
6353 ((struct instance_array__NativeArray*)var151)->values[5] = (val*) var145;
6354 {
6355 ((void (*)(val*, val*, long))(var149->class->vft[COLOR_array__Array__with_native]))(var149, var151, var150) /* with_native on <var149:Array[Object]>*/;
6356 }
6357 }
6358 {
6359 var152 = ((val* (*)(val*))(var149->class->vft[COLOR_string__Object__to_s]))(var149) /* to_s on <var149:Array[Object]>*/;
6360 }
6361 {
6362 abstract_compiler__AbstractCompilerVisitor__add(self, var152); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6363 }
6364 }
6365 }
6366 var = var_res;
6367 goto RET_LABEL;
6368 RET_LABEL:;
6369 return var;
6370 }
6371 /* method separate_compiler#SeparateCompilerVisitor#isset_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
6372 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__isset_attribute(val* self, val* p0, val* p1) {
6373 val* var /* : RuntimeVariable */;
6374 val* var1 /* : RuntimeVariable */;
6375 var1 = separate_compiler__SeparateCompilerVisitor__isset_attribute(self, p0, p1);
6376 var = var1;
6377 RET_LABEL:;
6378 return var;
6379 }
6380 /* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable): RuntimeVariable */
6381 val* separate_compiler__SeparateCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
6382 val* var /* : RuntimeVariable */;
6383 val* var_a /* var a: MAttribute */;
6384 val* var_recv /* var recv: RuntimeVariable */;
6385 val* var1 /* : MPropDef */;
6386 val* var3 /* : MPropDef */;
6387 val* var4 /* : nullable MType */;
6388 val* var6 /* : nullable MType */;
6389 val* var_ret /* var ret: MType */;
6390 val* var7 /* : MPropDef */;
6391 val* var9 /* : MPropDef */;
6392 val* var10 /* : MClassDef */;
6393 val* var12 /* : MClassDef */;
6394 val* var_intromclassdef /* var intromclassdef: MClassDef */;
6395 val* var13 /* : MClassType */;
6396 val* var15 /* : MClassType */;
6397 val* var16 /* : MClassType */;
6398 val* var18 /* : MClassType */;
6399 val* var19 /* : MModule */;
6400 val* var21 /* : MModule */;
6401 short int var22 /* : Bool */;
6402 val* var23 /* : MType */;
6403 val* var24 /* : AbstractCompiler */;
6404 val* var26 /* : AbstractCompiler */;
6405 val* var27 /* : ModelBuilder */;
6406 val* var29 /* : ModelBuilder */;
6407 val* var30 /* : ToolContext */;
6408 val* var32 /* : ToolContext */;
6409 val* var33 /* : OptionBool */;
6410 val* var35 /* : OptionBool */;
6411 val* var36 /* : nullable Object */;
6412 val* var38 /* : nullable Object */;
6413 short int var39 /* : Bool */;
6414 val* var40 /* : AbstractCompiler */;
6415 val* var42 /* : AbstractCompiler */;
6416 val* var_ /* var : SeparateCompiler */;
6417 long var43 /* : Int */;
6418 long var45 /* : Int */;
6419 long var46 /* : Int */;
6420 long var47 /* : Int */;
6421 short int var49 /* : Bool */;
6422 int cltype;
6423 int idtype;
6424 const char* var_class_name;
6425 long var50 /* : Int */;
6426 static val* varonce;
6427 val* var52 /* : String */;
6428 char* var53 /* : NativeString */;
6429 long var54 /* : Int */;
6430 val* var55 /* : FlatString */;
6431 val* var56 /* : String */;
6432 val* var57 /* : AbstractCompiler */;
6433 val* var59 /* : AbstractCompiler */;
6434 val* var60 /* : ModelBuilder */;
6435 val* var62 /* : ModelBuilder */;
6436 val* var63 /* : ToolContext */;
6437 val* var65 /* : ToolContext */;
6438 val* var66 /* : OptionBool */;
6439 val* var68 /* : OptionBool */;
6440 val* var69 /* : nullable Object */;
6441 val* var71 /* : nullable Object */;
6442 short int var72 /* : Bool */;
6443 val* var73 /* : MClassType */;
6444 val* var74 /* : MType */;
6445 val* var_cret /* var cret: MType */;
6446 val* var75 /* : RuntimeVariable */;
6447 val* var_res /* var res: RuntimeVariable */;
6448 static val* varonce77;
6449 val* var78 /* : String */;
6450 char* var79 /* : NativeString */;
6451 long var80 /* : Int */;
6452 val* var81 /* : FlatString */;
6453 static val* varonce82;
6454 val* var83 /* : String */;
6455 char* var84 /* : NativeString */;
6456 long var85 /* : Int */;
6457 val* var86 /* : FlatString */;
6458 val* var87 /* : String */;
6459 static val* varonce88;
6460 val* var89 /* : String */;
6461 char* var90 /* : NativeString */;
6462 long var91 /* : Int */;
6463 val* var92 /* : FlatString */;
6464 static val* varonce93;
6465 val* var94 /* : String */;
6466 char* var95 /* : NativeString */;
6467 long var96 /* : Int */;
6468 val* var97 /* : FlatString */;
6469 val* var98 /* : String */;
6470 static val* varonce99;
6471 val* var100 /* : String */;
6472 char* var101 /* : NativeString */;
6473 long var102 /* : Int */;
6474 val* var103 /* : FlatString */;
6475 val* var104 /* : Array[Object] */;
6476 long var105 /* : Int */;
6477 val* var106 /* : NativeArray[Object] */;
6478 val* var107 /* : String */;
6479 short int var108 /* : Bool */;
6480 short int var109 /* : Bool */;
6481 int cltype110;
6482 int idtype111;
6483 short int var112 /* : Bool */;
6484 short int var_113 /* var : Bool */;
6485 val* var114 /* : AbstractCompiler */;
6486 val* var116 /* : AbstractCompiler */;
6487 val* var117 /* : ModelBuilder */;
6488 val* var119 /* : ModelBuilder */;
6489 val* var120 /* : ToolContext */;
6490 val* var122 /* : ToolContext */;
6491 val* var123 /* : OptionBool */;
6492 val* var125 /* : OptionBool */;
6493 val* var126 /* : nullable Object */;
6494 val* var128 /* : nullable Object */;
6495 short int var129 /* : Bool */;
6496 short int var130 /* : Bool */;
6497 static val* varonce131;
6498 val* var132 /* : String */;
6499 char* var133 /* : NativeString */;
6500 long var134 /* : Int */;
6501 val* var135 /* : FlatString */;
6502 static val* varonce136;
6503 val* var137 /* : String */;
6504 char* var138 /* : NativeString */;
6505 long var139 /* : Int */;
6506 val* var140 /* : FlatString */;
6507 val* var141 /* : Array[Object] */;
6508 long var142 /* : Int */;
6509 val* var143 /* : NativeArray[Object] */;
6510 val* var144 /* : String */;
6511 static val* varonce145;
6512 val* var146 /* : String */;
6513 char* var147 /* : NativeString */;
6514 long var148 /* : Int */;
6515 val* var149 /* : FlatString */;
6516 val* var150 /* : String */;
6517 val* var152 /* : String */;
6518 val* var153 /* : Array[Object] */;
6519 long var154 /* : Int */;
6520 val* var155 /* : NativeArray[Object] */;
6521 val* var156 /* : String */;
6522 static val* varonce157;
6523 val* var158 /* : String */;
6524 char* var159 /* : NativeString */;
6525 long var160 /* : Int */;
6526 val* var161 /* : FlatString */;
6527 val* var162 /* : AbstractCompiler */;
6528 val* var164 /* : AbstractCompiler */;
6529 val* var165 /* : ModelBuilder */;
6530 val* var167 /* : ModelBuilder */;
6531 val* var168 /* : ToolContext */;
6532 val* var170 /* : ToolContext */;
6533 val* var171 /* : OptionBool */;
6534 val* var173 /* : OptionBool */;
6535 val* var174 /* : nullable Object */;
6536 val* var176 /* : nullable Object */;
6537 short int var177 /* : Bool */;
6538 val* var178 /* : AbstractCompiler */;
6539 val* var180 /* : AbstractCompiler */;
6540 val* var_181 /* var : SeparateCompiler */;
6541 long var182 /* : Int */;
6542 long var184 /* : Int */;
6543 long var185 /* : Int */;
6544 long var186 /* : Int */;
6545 short int var188 /* : Bool */;
6546 int cltype189;
6547 int idtype190;
6548 const char* var_class_name191;
6549 long var192 /* : Int */;
6550 static val* varonce194;
6551 val* var195 /* : String */;
6552 char* var196 /* : NativeString */;
6553 long var197 /* : Int */;
6554 val* var198 /* : FlatString */;
6555 val* var199 /* : RuntimeVariable */;
6556 val* var200 /* : RuntimeVariable */;
6557 val* var_res201 /* var res: RuntimeVariable */;
6558 static val* varonce202;
6559 val* var203 /* : String */;
6560 char* var204 /* : NativeString */;
6561 long var205 /* : Int */;
6562 val* var206 /* : FlatString */;
6563 static val* varonce207;
6564 val* var208 /* : String */;
6565 char* var209 /* : NativeString */;
6566 long var210 /* : Int */;
6567 val* var211 /* : FlatString */;
6568 val* var212 /* : String */;
6569 static val* varonce213;
6570 val* var214 /* : String */;
6571 char* var215 /* : NativeString */;
6572 long var216 /* : Int */;
6573 val* var217 /* : FlatString */;
6574 val* var218 /* : String */;
6575 static val* varonce219;
6576 val* var220 /* : String */;
6577 char* var221 /* : NativeString */;
6578 long var222 /* : Int */;
6579 val* var223 /* : FlatString */;
6580 static val* varonce224;
6581 val* var225 /* : String */;
6582 char* var226 /* : NativeString */;
6583 long var227 /* : Int */;
6584 val* var228 /* : FlatString */;
6585 val* var229 /* : String */;
6586 static val* varonce230;
6587 val* var231 /* : String */;
6588 char* var232 /* : NativeString */;
6589 long var233 /* : Int */;
6590 val* var234 /* : FlatString */;
6591 val* var235 /* : Array[Object] */;
6592 long var236 /* : Int */;
6593 val* var237 /* : NativeArray[Object] */;
6594 val* var238 /* : String */;
6595 short int var239 /* : Bool */;
6596 short int var240 /* : Bool */;
6597 val* var241 /* : String */;
6598 static val* varonce242;
6599 val* var243 /* : String */;
6600 char* var244 /* : NativeString */;
6601 long var245 /* : Int */;
6602 val* var246 /* : FlatString */;
6603 short int var247 /* : Bool */;
6604 short int var248 /* : Bool */;
6605 short int var_249 /* var : Bool */;
6606 short int var250 /* : Bool */;
6607 int cltype251;
6608 int idtype252;
6609 short int var253 /* : Bool */;
6610 short int var_254 /* var : Bool */;
6611 val* var255 /* : AbstractCompiler */;
6612 val* var257 /* : AbstractCompiler */;
6613 val* var258 /* : ModelBuilder */;
6614 val* var260 /* : ModelBuilder */;
6615 val* var261 /* : ToolContext */;
6616 val* var263 /* : ToolContext */;
6617 val* var264 /* : OptionBool */;
6618 val* var266 /* : OptionBool */;
6619 val* var267 /* : nullable Object */;
6620 val* var269 /* : nullable Object */;
6621 short int var270 /* : Bool */;
6622 short int var271 /* : Bool */;
6623 static val* varonce272;
6624 val* var273 /* : String */;
6625 char* var274 /* : NativeString */;
6626 long var275 /* : Int */;
6627 val* var276 /* : FlatString */;
6628 static val* varonce277;
6629 val* var278 /* : String */;
6630 char* var279 /* : NativeString */;
6631 long var280 /* : Int */;
6632 val* var281 /* : FlatString */;
6633 val* var282 /* : Array[Object] */;
6634 long var283 /* : Int */;
6635 val* var284 /* : NativeArray[Object] */;
6636 val* var285 /* : String */;
6637 static val* varonce286;
6638 val* var287 /* : String */;
6639 char* var288 /* : NativeString */;
6640 long var289 /* : Int */;
6641 val* var290 /* : FlatString */;
6642 val* var291 /* : String */;
6643 val* var293 /* : String */;
6644 val* var294 /* : Array[Object] */;
6645 long var295 /* : Int */;
6646 val* var296 /* : NativeArray[Object] */;
6647 val* var297 /* : String */;
6648 static val* varonce298;
6649 val* var299 /* : String */;
6650 char* var300 /* : NativeString */;
6651 long var301 /* : Int */;
6652 val* var302 /* : FlatString */;
6653 val* var303 /* : AbstractCompiler */;
6654 val* var305 /* : AbstractCompiler */;
6655 val* var306 /* : ModelBuilder */;
6656 val* var308 /* : ModelBuilder */;
6657 val* var309 /* : ToolContext */;
6658 val* var311 /* : ToolContext */;
6659 val* var312 /* : OptionBool */;
6660 val* var314 /* : OptionBool */;
6661 val* var315 /* : nullable Object */;
6662 val* var317 /* : nullable Object */;
6663 short int var318 /* : Bool */;
6664 val* var319 /* : AbstractCompiler */;
6665 val* var321 /* : AbstractCompiler */;
6666 val* var_322 /* var : SeparateCompiler */;
6667 long var323 /* : Int */;
6668 long var325 /* : Int */;
6669 long var326 /* : Int */;
6670 long var327 /* : Int */;
6671 short int var329 /* : Bool */;
6672 int cltype330;
6673 int idtype331;
6674 const char* var_class_name332;
6675 long var333 /* : Int */;
6676 static val* varonce335;
6677 val* var336 /* : String */;
6678 char* var337 /* : NativeString */;
6679 long var338 /* : Int */;
6680 val* var339 /* : FlatString */;
6681 var_a = p0;
6682 var_recv = p1;
6683 {
6684 abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(self, var_recv); /* Direct call abstract_compiler#AbstractCompilerVisitor#check_recv_notnull on <self:SeparateCompilerVisitor>*/
6685 }
6686 {
6687 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
6688 var3 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
6689 if (unlikely(var3 == NULL)) {
6690 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
6691 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
6692 show_backtrace(1);
6693 }
6694 var1 = var3;
6695 RET_LABEL2:(void)0;
6696 }
6697 }
6698 {
6699 { /* Inline model#MAttributeDef#static_mtype (var1) on <var1:MPropDef(MAttributeDef)> */
6700 var6 = var1->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <var1:MPropDef(MAttributeDef)> */
6701 var4 = var6;
6702 RET_LABEL5:(void)0;
6703 }
6704 }
6705 if (unlikely(var4 == NULL)) {
6706 PRINT_ERROR("Runtime error: %s", "Cast failed");
6707 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1333);
6708 show_backtrace(1);
6709 }
6710 var_ret = var4;
6711 {
6712 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
6713 var9 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
6714 if (unlikely(var9 == NULL)) {
6715 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
6716 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
6717 show_backtrace(1);
6718 }
6719 var7 = var9;
6720 RET_LABEL8:(void)0;
6721 }
6722 }
6723 {
6724 { /* Inline model#MPropDef#mclassdef (var7) on <var7:MPropDef(MAttributeDef)> */
6725 var12 = var7->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var7:MPropDef(MAttributeDef)> */
6726 if (unlikely(var12 == NULL)) {
6727 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
6728 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
6729 show_backtrace(1);
6730 }
6731 var10 = var12;
6732 RET_LABEL11:(void)0;
6733 }
6734 }
6735 var_intromclassdef = var10;
6736 {
6737 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
6738 var15 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
6739 if (unlikely(var15 == NULL)) {
6740 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
6741 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
6742 show_backtrace(1);
6743 }
6744 var13 = var15;
6745 RET_LABEL14:(void)0;
6746 }
6747 }
6748 {
6749 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
6750 var18 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
6751 if (unlikely(var18 == NULL)) {
6752 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
6753 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
6754 show_backtrace(1);
6755 }
6756 var16 = var18;
6757 RET_LABEL17:(void)0;
6758 }
6759 }
6760 {
6761 { /* Inline model#MClassDef#mmodule (var_intromclassdef) on <var_intromclassdef:MClassDef> */
6762 var21 = var_intromclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_intromclassdef:MClassDef> */
6763 if (unlikely(var21 == NULL)) {
6764 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
6765 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
6766 show_backtrace(1);
6767 }
6768 var19 = var21;
6769 RET_LABEL20:(void)0;
6770 }
6771 }
6772 var22 = 1;
6773 {
6774 var23 = ((val* (*)(val*, val*, val*, val*, short int))(var_ret->class->vft[COLOR_model__MType__resolve_for]))(var_ret, var13, var16, var19, var22) /* resolve_for on <var_ret:MType>*/;
6775 }
6776 var_ret = var23;
6777 {
6778 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6779 var26 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6780 if (unlikely(var26 == NULL)) {
6781 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6782 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
6783 show_backtrace(1);
6784 }
6785 var24 = var26;
6786 RET_LABEL25:(void)0;
6787 }
6788 }
6789 {
6790 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var24) on <var24:AbstractCompiler(SeparateCompiler)> */
6791 var29 = var24->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var24:AbstractCompiler(SeparateCompiler)> */
6792 if (unlikely(var29 == NULL)) {
6793 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6794 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
6795 show_backtrace(1);
6796 }
6797 var27 = var29;
6798 RET_LABEL28:(void)0;
6799 }
6800 }
6801 {
6802 { /* Inline modelbuilder#ModelBuilder#toolcontext (var27) on <var27:ModelBuilder> */
6803 var32 = var27->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var27:ModelBuilder> */
6804 if (unlikely(var32 == NULL)) {
6805 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6806 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
6807 show_backtrace(1);
6808 }
6809 var30 = var32;
6810 RET_LABEL31:(void)0;
6811 }
6812 }
6813 {
6814 { /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var30) on <var30:ToolContext> */
6815 var35 = var30->attrs[COLOR_abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var30:ToolContext> */
6816 if (unlikely(var35 == NULL)) {
6817 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
6818 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 65);
6819 show_backtrace(1);
6820 }
6821 var33 = var35;
6822 RET_LABEL34:(void)0;
6823 }
6824 }
6825 {
6826 { /* Inline opts#Option#value (var33) on <var33:OptionBool> */
6827 var38 = var33->attrs[COLOR_opts__Option___value].val; /* _value on <var33:OptionBool> */
6828 var36 = var38;
6829 RET_LABEL37:(void)0;
6830 }
6831 }
6832 var39 = ((struct instance_kernel__Bool*)var36)->value; /* autounbox from nullable Object to Bool */;
6833 if (var39){
6834 {
6835 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6836 var42 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6837 if (unlikely(var42 == NULL)) {
6838 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6839 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
6840 show_backtrace(1);
6841 }
6842 var40 = var42;
6843 RET_LABEL41:(void)0;
6844 }
6845 }
6846 var_ = var40;
6847 {
6848 { /* Inline separate_compiler#SeparateCompiler#attr_read_count (var_) on <var_:SeparateCompiler> */
6849 var45 = var_->attrs[COLOR_separate_compiler__SeparateCompiler___attr_read_count].l; /* _attr_read_count on <var_:SeparateCompiler> */
6850 var43 = var45;
6851 RET_LABEL44:(void)0;
6852 }
6853 }
6854 var46 = 1;
6855 {
6856 { /* Inline kernel#Int#+ (var43,var46) on <var43:Int> */
6857 /* Covariant cast for argument 0 (i) <var46:Int> isa OTHER */
6858 /* <var46:Int> isa OTHER */
6859 var49 = 1; /* easy <var46:Int> isa OTHER*/
6860 if (unlikely(!var49)) {
6861 var_class_name = type_kernel__Int.name;
6862 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6863 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
6864 show_backtrace(1);
6865 }
6866 var50 = var43 + var46;
6867 var47 = var50;
6868 goto RET_LABEL48;
6869 RET_LABEL48:(void)0;
6870 }
6871 }
6872 {
6873 { /* Inline separate_compiler#SeparateCompiler#attr_read_count= (var_,var47) on <var_:SeparateCompiler> */
6874 var_->attrs[COLOR_separate_compiler__SeparateCompiler___attr_read_count].l = var47; /* _attr_read_count on <var_:SeparateCompiler> */
6875 RET_LABEL51:(void)0;
6876 }
6877 }
6878 if (varonce) {
6879 var52 = varonce;
6880 } else {
6881 var53 = "count_attr_reads++;";
6882 var54 = 19;
6883 var55 = string__NativeString__to_s_with_length(var53, var54);
6884 var52 = var55;
6885 varonce = var52;
6886 }
6887 {
6888 abstract_compiler__AbstractCompilerVisitor__add(self, var52); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
6889 }
6890 } else {
6891 }
6892 {
6893 var56 = separate_compiler__MProperty__const_color(var_a);
6894 }
6895 {
6896 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var56); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
6897 }
6898 {
6899 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
6900 var59 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
6901 if (unlikely(var59 == NULL)) {
6902 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
6903 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
6904 show_backtrace(1);
6905 }
6906 var57 = var59;
6907 RET_LABEL58:(void)0;
6908 }
6909 }
6910 {
6911 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var57) on <var57:AbstractCompiler(SeparateCompiler)> */
6912 var62 = var57->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var57:AbstractCompiler(SeparateCompiler)> */
6913 if (unlikely(var62 == NULL)) {
6914 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6915 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
6916 show_backtrace(1);
6917 }
6918 var60 = var62;
6919 RET_LABEL61:(void)0;
6920 }
6921 }
6922 {
6923 { /* Inline modelbuilder#ModelBuilder#toolcontext (var60) on <var60:ModelBuilder> */
6924 var65 = var60->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var60:ModelBuilder> */
6925 if (unlikely(var65 == NULL)) {
6926 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6927 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
6928 show_backtrace(1);
6929 }
6930 var63 = var65;
6931 RET_LABEL64:(void)0;
6932 }
6933 }
6934 {
6935 { /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var63) on <var63:ToolContext> */
6936 var68 = var63->attrs[COLOR_separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on <var63:ToolContext> */
6937 if (unlikely(var68 == NULL)) {
6938 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute");
6939 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 28);
6940 show_backtrace(1);
6941 }
6942 var66 = var68;
6943 RET_LABEL67:(void)0;
6944 }
6945 }
6946 {
6947 { /* Inline opts#Option#value (var66) on <var66:OptionBool> */
6948 var71 = var66->attrs[COLOR_opts__Option___value].val; /* _value on <var66:OptionBool> */
6949 var69 = var71;
6950 RET_LABEL70:(void)0;
6951 }
6952 }
6953 var72 = ((struct instance_kernel__Bool*)var69)->value; /* autounbox from nullable Object to Bool */;
6954 if (var72){
6955 {
6956 var73 = abstract_compiler__AbstractCompilerVisitor__object_type(self);
6957 }
6958 {
6959 var74 = model__MType__as_nullable(var73);
6960 }
6961 var_cret = var74;
6962 {
6963 var75 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_cret);
6964 }
6965 var_res = var75;
6966 {
6967 { /* Inline abstract_compiler#RuntimeVariable#mcasttype= (var_res,var_ret) on <var_res:RuntimeVariable> */
6968 var_res->attrs[COLOR_abstract_compiler__RuntimeVariable___mcasttype].val = var_ret; /* _mcasttype on <var_res:RuntimeVariable> */
6969 RET_LABEL76:(void)0;
6970 }
6971 }
6972 if (varonce77) {
6973 var78 = varonce77;
6974 } else {
6975 var79 = " = ";
6976 var80 = 3;
6977 var81 = string__NativeString__to_s_with_length(var79, var80);
6978 var78 = var81;
6979 varonce77 = var78;
6980 }
6981 if (varonce82) {
6982 var83 = varonce82;
6983 } else {
6984 var84 = "->attrs[";
6985 var85 = 8;
6986 var86 = string__NativeString__to_s_with_length(var84, var85);
6987 var83 = var86;
6988 varonce82 = var83;
6989 }
6990 {
6991 var87 = separate_compiler__MProperty__const_color(var_a);
6992 }
6993 if (varonce88) {
6994 var89 = varonce88;
6995 } else {
6996 var90 = "]; /* ";
6997 var91 = 6;
6998 var92 = string__NativeString__to_s_with_length(var90, var91);
6999 var89 = var92;
7000 varonce88 = var89;
7001 }
7002 if (varonce93) {
7003 var94 = varonce93;
7004 } else {
7005 var95 = " on ";
7006 var96 = 4;
7007 var97 = string__NativeString__to_s_with_length(var95, var96);
7008 var94 = var97;
7009 varonce93 = var94;
7010 }
7011 {
7012 var98 = abstract_compiler__RuntimeVariable__inspect(var_recv);
7013 }
7014 if (varonce99) {
7015 var100 = varonce99;
7016 } else {
7017 var101 = " */";
7018 var102 = 3;
7019 var103 = string__NativeString__to_s_with_length(var101, var102);
7020 var100 = var103;
7021 varonce99 = var100;
7022 }
7023 var104 = NEW_array__Array(&type_array__Arraykernel__Object);
7024 { /* var104 = array_instance Array[Object] */
7025 var105 = 10;
7026 var106 = NEW_array__NativeArray(var105, &type_array__NativeArraykernel__Object);
7027 ((struct instance_array__NativeArray*)var106)->values[0] = (val*) var_res;
7028 ((struct instance_array__NativeArray*)var106)->values[1] = (val*) var78;
7029 ((struct instance_array__NativeArray*)var106)->values[2] = (val*) var_recv;
7030 ((struct instance_array__NativeArray*)var106)->values[3] = (val*) var83;
7031 ((struct instance_array__NativeArray*)var106)->values[4] = (val*) var87;
7032 ((struct instance_array__NativeArray*)var106)->values[5] = (val*) var89;
7033 ((struct instance_array__NativeArray*)var106)->values[6] = (val*) var_a;
7034 ((struct instance_array__NativeArray*)var106)->values[7] = (val*) var94;
7035 ((struct instance_array__NativeArray*)var106)->values[8] = (val*) var98;
7036 ((struct instance_array__NativeArray*)var106)->values[9] = (val*) var100;
7037 {
7038 ((void (*)(val*, val*, long))(var104->class->vft[COLOR_array__Array__with_native]))(var104, var106, var105) /* with_native on <var104:Array[Object]>*/;
7039 }
7040 }
7041 {
7042 var107 = ((val* (*)(val*))(var104->class->vft[COLOR_string__Object__to_s]))(var104) /* to_s on <var104:Array[Object]>*/;
7043 }
7044 {
7045 abstract_compiler__AbstractCompilerVisitor__add(self, var107); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7046 }
7047 /* <var_ret:MType> isa MNullableType */
7048 cltype110 = type_model__MNullableType.color;
7049 idtype111 = type_model__MNullableType.id;
7050 if(cltype110 >= var_ret->type->table_size) {
7051 var109 = 0;
7052 } else {
7053 var109 = var_ret->type->type_table[cltype110] == idtype111;
7054 }
7055 var112 = !var109;
7056 var_113 = var112;
7057 if (var112){
7058 {
7059 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7060 var116 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7061 if (unlikely(var116 == NULL)) {
7062 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7063 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
7064 show_backtrace(1);
7065 }
7066 var114 = var116;
7067 RET_LABEL115:(void)0;
7068 }
7069 }
7070 {
7071 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var114) on <var114:AbstractCompiler(SeparateCompiler)> */
7072 var119 = var114->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var114:AbstractCompiler(SeparateCompiler)> */
7073 if (unlikely(var119 == NULL)) {
7074 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7075 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
7076 show_backtrace(1);
7077 }
7078 var117 = var119;
7079 RET_LABEL118:(void)0;
7080 }
7081 }
7082 {
7083 { /* Inline modelbuilder#ModelBuilder#toolcontext (var117) on <var117:ModelBuilder> */
7084 var122 = var117->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var117:ModelBuilder> */
7085 if (unlikely(var122 == NULL)) {
7086 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7087 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
7088 show_backtrace(1);
7089 }
7090 var120 = var122;
7091 RET_LABEL121:(void)0;
7092 }
7093 }
7094 {
7095 { /* Inline abstract_compiler#ToolContext#opt_no_check_attr_isset (var120) on <var120:ToolContext> */
7096 var125 = var120->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on <var120:ToolContext> */
7097 if (unlikely(var125 == NULL)) {
7098 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset");
7099 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 51);
7100 show_backtrace(1);
7101 }
7102 var123 = var125;
7103 RET_LABEL124:(void)0;
7104 }
7105 }
7106 {
7107 { /* Inline opts#Option#value (var123) on <var123:OptionBool> */
7108 var128 = var123->attrs[COLOR_opts__Option___value].val; /* _value on <var123:OptionBool> */
7109 var126 = var128;
7110 RET_LABEL127:(void)0;
7111 }
7112 }
7113 var129 = ((struct instance_kernel__Bool*)var126)->value; /* autounbox from nullable Object to Bool */;
7114 var130 = !var129;
7115 var108 = var130;
7116 } else {
7117 var108 = var_113;
7118 }
7119 if (var108){
7120 if (varonce131) {
7121 var132 = varonce131;
7122 } else {
7123 var133 = "if (unlikely(";
7124 var134 = 13;
7125 var135 = string__NativeString__to_s_with_length(var133, var134);
7126 var132 = var135;
7127 varonce131 = var132;
7128 }
7129 if (varonce136) {
7130 var137 = varonce136;
7131 } else {
7132 var138 = " == NULL)) {";
7133 var139 = 12;
7134 var140 = string__NativeString__to_s_with_length(var138, var139);
7135 var137 = var140;
7136 varonce136 = var137;
7137 }
7138 var141 = NEW_array__Array(&type_array__Arraykernel__Object);
7139 { /* var141 = array_instance Array[Object] */
7140 var142 = 3;
7141 var143 = NEW_array__NativeArray(var142, &type_array__NativeArraykernel__Object);
7142 ((struct instance_array__NativeArray*)var143)->values[0] = (val*) var132;
7143 ((struct instance_array__NativeArray*)var143)->values[1] = (val*) var_res;
7144 ((struct instance_array__NativeArray*)var143)->values[2] = (val*) var137;
7145 {
7146 ((void (*)(val*, val*, long))(var141->class->vft[COLOR_array__Array__with_native]))(var141, var143, var142) /* with_native on <var141:Array[Object]>*/;
7147 }
7148 }
7149 {
7150 var144 = ((val* (*)(val*))(var141->class->vft[COLOR_string__Object__to_s]))(var141) /* to_s on <var141:Array[Object]>*/;
7151 }
7152 {
7153 abstract_compiler__AbstractCompilerVisitor__add(self, var144); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7154 }
7155 if (varonce145) {
7156 var146 = varonce145;
7157 } else {
7158 var147 = "Uninitialized attribute ";
7159 var148 = 24;
7160 var149 = string__NativeString__to_s_with_length(var147, var148);
7161 var146 = var149;
7162 varonce145 = var146;
7163 }
7164 {
7165 { /* Inline model#MProperty#name (var_a) on <var_a:MAttribute> */
7166 var152 = var_a->attrs[COLOR_model__MProperty___name].val; /* _name on <var_a:MAttribute> */
7167 if (unlikely(var152 == NULL)) {
7168 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
7169 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
7170 show_backtrace(1);
7171 }
7172 var150 = var152;
7173 RET_LABEL151:(void)0;
7174 }
7175 }
7176 var153 = NEW_array__Array(&type_array__Arraykernel__Object);
7177 { /* var153 = array_instance Array[Object] */
7178 var154 = 2;
7179 var155 = NEW_array__NativeArray(var154, &type_array__NativeArraykernel__Object);
7180 ((struct instance_array__NativeArray*)var155)->values[0] = (val*) var146;
7181 ((struct instance_array__NativeArray*)var155)->values[1] = (val*) var150;
7182 {
7183 ((void (*)(val*, val*, long))(var153->class->vft[COLOR_array__Array__with_native]))(var153, var155, var154) /* with_native on <var153:Array[Object]>*/;
7184 }
7185 }
7186 {
7187 var156 = ((val* (*)(val*))(var153->class->vft[COLOR_string__Object__to_s]))(var153) /* to_s on <var153:Array[Object]>*/;
7188 }
7189 {
7190 abstract_compiler__AbstractCompilerVisitor__add_abort(self, var156); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
7191 }
7192 if (varonce157) {
7193 var158 = varonce157;
7194 } else {
7195 var159 = "}";
7196 var160 = 1;
7197 var161 = string__NativeString__to_s_with_length(var159, var160);
7198 var158 = var161;
7199 varonce157 = var158;
7200 }
7201 {
7202 abstract_compiler__AbstractCompilerVisitor__add(self, var158); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7203 }
7204 {
7205 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7206 var164 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7207 if (unlikely(var164 == NULL)) {
7208 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7209 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
7210 show_backtrace(1);
7211 }
7212 var162 = var164;
7213 RET_LABEL163:(void)0;
7214 }
7215 }
7216 {
7217 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var162) on <var162:AbstractCompiler(SeparateCompiler)> */
7218 var167 = var162->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var162:AbstractCompiler(SeparateCompiler)> */
7219 if (unlikely(var167 == NULL)) {
7220 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7221 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
7222 show_backtrace(1);
7223 }
7224 var165 = var167;
7225 RET_LABEL166:(void)0;
7226 }
7227 }
7228 {
7229 { /* Inline modelbuilder#ModelBuilder#toolcontext (var165) on <var165:ModelBuilder> */
7230 var170 = var165->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var165:ModelBuilder> */
7231 if (unlikely(var170 == NULL)) {
7232 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7233 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
7234 show_backtrace(1);
7235 }
7236 var168 = var170;
7237 RET_LABEL169:(void)0;
7238 }
7239 }
7240 {
7241 { /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var168) on <var168:ToolContext> */
7242 var173 = var168->attrs[COLOR_abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var168:ToolContext> */
7243 if (unlikely(var173 == NULL)) {
7244 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
7245 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 65);
7246 show_backtrace(1);
7247 }
7248 var171 = var173;
7249 RET_LABEL172:(void)0;
7250 }
7251 }
7252 {
7253 { /* Inline opts#Option#value (var171) on <var171:OptionBool> */
7254 var176 = var171->attrs[COLOR_opts__Option___value].val; /* _value on <var171:OptionBool> */
7255 var174 = var176;
7256 RET_LABEL175:(void)0;
7257 }
7258 }
7259 var177 = ((struct instance_kernel__Bool*)var174)->value; /* autounbox from nullable Object to Bool */;
7260 if (var177){
7261 {
7262 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7263 var180 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7264 if (unlikely(var180 == NULL)) {
7265 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7266 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
7267 show_backtrace(1);
7268 }
7269 var178 = var180;
7270 RET_LABEL179:(void)0;
7271 }
7272 }
7273 var_181 = var178;
7274 {
7275 { /* Inline separate_compiler#SeparateCompiler#isset_checks_count (var_181) on <var_181:SeparateCompiler> */
7276 var184 = var_181->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on <var_181:SeparateCompiler> */
7277 var182 = var184;
7278 RET_LABEL183:(void)0;
7279 }
7280 }
7281 var185 = 1;
7282 {
7283 { /* Inline kernel#Int#+ (var182,var185) on <var182:Int> */
7284 /* Covariant cast for argument 0 (i) <var185:Int> isa OTHER */
7285 /* <var185:Int> isa OTHER */
7286 var188 = 1; /* easy <var185:Int> isa OTHER*/
7287 if (unlikely(!var188)) {
7288 var_class_name191 = type_kernel__Int.name;
7289 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name191);
7290 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
7291 show_backtrace(1);
7292 }
7293 var192 = var182 + var185;
7294 var186 = var192;
7295 goto RET_LABEL187;
7296 RET_LABEL187:(void)0;
7297 }
7298 }
7299 {
7300 { /* Inline separate_compiler#SeparateCompiler#isset_checks_count= (var_181,var186) on <var_181:SeparateCompiler> */
7301 var_181->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l = var186; /* _isset_checks_count on <var_181:SeparateCompiler> */
7302 RET_LABEL193:(void)0;
7303 }
7304 }
7305 if (varonce194) {
7306 var195 = varonce194;
7307 } else {
7308 var196 = "count_isset_checks++;";
7309 var197 = 21;
7310 var198 = string__NativeString__to_s_with_length(var196, var197);
7311 var195 = var198;
7312 varonce194 = var195;
7313 }
7314 {
7315 abstract_compiler__AbstractCompilerVisitor__add(self, var195); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7316 }
7317 } else {
7318 }
7319 } else {
7320 }
7321 {
7322 var199 = separate_compiler__SeparateCompilerVisitor__autobox(self, var_res, var_ret);
7323 }
7324 var = var199;
7325 goto RET_LABEL;
7326 } else {
7327 {
7328 var200 = abstract_compiler__AbstractCompilerVisitor__new_var(self, var_ret);
7329 }
7330 var_res201 = var200;
7331 if (varonce202) {
7332 var203 = varonce202;
7333 } else {
7334 var204 = " = ";
7335 var205 = 3;
7336 var206 = string__NativeString__to_s_with_length(var204, var205);
7337 var203 = var206;
7338 varonce202 = var203;
7339 }
7340 if (varonce207) {
7341 var208 = varonce207;
7342 } else {
7343 var209 = "->attrs[";
7344 var210 = 8;
7345 var211 = string__NativeString__to_s_with_length(var209, var210);
7346 var208 = var211;
7347 varonce207 = var208;
7348 }
7349 {
7350 var212 = separate_compiler__MProperty__const_color(var_a);
7351 }
7352 if (varonce213) {
7353 var214 = varonce213;
7354 } else {
7355 var215 = "].";
7356 var216 = 2;
7357 var217 = string__NativeString__to_s_with_length(var215, var216);
7358 var214 = var217;
7359 varonce213 = var214;
7360 }
7361 {
7362 var218 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_ret) /* ctypename on <var_ret:MType>*/;
7363 }
7364 if (varonce219) {
7365 var220 = varonce219;
7366 } else {
7367 var221 = "; /* ";
7368 var222 = 5;
7369 var223 = string__NativeString__to_s_with_length(var221, var222);
7370 var220 = var223;
7371 varonce219 = var220;
7372 }
7373 if (varonce224) {
7374 var225 = varonce224;
7375 } else {
7376 var226 = " on ";
7377 var227 = 4;
7378 var228 = string__NativeString__to_s_with_length(var226, var227);
7379 var225 = var228;
7380 varonce224 = var225;
7381 }
7382 {
7383 var229 = abstract_compiler__RuntimeVariable__inspect(var_recv);
7384 }
7385 if (varonce230) {
7386 var231 = varonce230;
7387 } else {
7388 var232 = " */";
7389 var233 = 3;
7390 var234 = string__NativeString__to_s_with_length(var232, var233);
7391 var231 = var234;
7392 varonce230 = var231;
7393 }
7394 var235 = NEW_array__Array(&type_array__Arraykernel__Object);
7395 { /* var235 = array_instance Array[Object] */
7396 var236 = 12;
7397 var237 = NEW_array__NativeArray(var236, &type_array__NativeArraykernel__Object);
7398 ((struct instance_array__NativeArray*)var237)->values[0] = (val*) var_res201;
7399 ((struct instance_array__NativeArray*)var237)->values[1] = (val*) var203;
7400 ((struct instance_array__NativeArray*)var237)->values[2] = (val*) var_recv;
7401 ((struct instance_array__NativeArray*)var237)->values[3] = (val*) var208;
7402 ((struct instance_array__NativeArray*)var237)->values[4] = (val*) var212;
7403 ((struct instance_array__NativeArray*)var237)->values[5] = (val*) var214;
7404 ((struct instance_array__NativeArray*)var237)->values[6] = (val*) var218;
7405 ((struct instance_array__NativeArray*)var237)->values[7] = (val*) var220;
7406 ((struct instance_array__NativeArray*)var237)->values[8] = (val*) var_a;
7407 ((struct instance_array__NativeArray*)var237)->values[9] = (val*) var225;
7408 ((struct instance_array__NativeArray*)var237)->values[10] = (val*) var229;
7409 ((struct instance_array__NativeArray*)var237)->values[11] = (val*) var231;
7410 {
7411 ((void (*)(val*, val*, long))(var235->class->vft[COLOR_array__Array__with_native]))(var235, var237, var236) /* with_native on <var235:Array[Object]>*/;
7412 }
7413 }
7414 {
7415 var238 = ((val* (*)(val*))(var235->class->vft[COLOR_string__Object__to_s]))(var235) /* to_s on <var235:Array[Object]>*/;
7416 }
7417 {
7418 abstract_compiler__AbstractCompilerVisitor__add(self, var238); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7419 }
7420 {
7421 var241 = ((val* (*)(val*))(var_ret->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_ret) /* ctype on <var_ret:MType>*/;
7422 }
7423 if (varonce242) {
7424 var243 = varonce242;
7425 } else {
7426 var244 = "val*";
7427 var245 = 4;
7428 var246 = string__NativeString__to_s_with_length(var244, var245);
7429 var243 = var246;
7430 varonce242 = var243;
7431 }
7432 {
7433 var248 = string__FlatString___61d_61d(var241, var243);
7434 var247 = var248;
7435 }
7436 var_249 = var247;
7437 if (var247){
7438 /* <var_ret:MType> isa MNullableType */
7439 cltype251 = type_model__MNullableType.color;
7440 idtype252 = type_model__MNullableType.id;
7441 if(cltype251 >= var_ret->type->table_size) {
7442 var250 = 0;
7443 } else {
7444 var250 = var_ret->type->type_table[cltype251] == idtype252;
7445 }
7446 var253 = !var250;
7447 var240 = var253;
7448 } else {
7449 var240 = var_249;
7450 }
7451 var_254 = var240;
7452 if (var240){
7453 {
7454 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7455 var257 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7456 if (unlikely(var257 == NULL)) {
7457 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7458 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
7459 show_backtrace(1);
7460 }
7461 var255 = var257;
7462 RET_LABEL256:(void)0;
7463 }
7464 }
7465 {
7466 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var255) on <var255:AbstractCompiler(SeparateCompiler)> */
7467 var260 = var255->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var255:AbstractCompiler(SeparateCompiler)> */
7468 if (unlikely(var260 == NULL)) {
7469 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7470 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
7471 show_backtrace(1);
7472 }
7473 var258 = var260;
7474 RET_LABEL259:(void)0;
7475 }
7476 }
7477 {
7478 { /* Inline modelbuilder#ModelBuilder#toolcontext (var258) on <var258:ModelBuilder> */
7479 var263 = var258->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var258:ModelBuilder> */
7480 if (unlikely(var263 == NULL)) {
7481 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7482 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
7483 show_backtrace(1);
7484 }
7485 var261 = var263;
7486 RET_LABEL262:(void)0;
7487 }
7488 }
7489 {
7490 { /* Inline abstract_compiler#ToolContext#opt_no_check_attr_isset (var261) on <var261:ToolContext> */
7491 var266 = var261->attrs[COLOR_abstract_compiler__ToolContext___opt_no_check_attr_isset].val; /* _opt_no_check_attr_isset on <var261:ToolContext> */
7492 if (unlikely(var266 == NULL)) {
7493 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_attr_isset");
7494 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 51);
7495 show_backtrace(1);
7496 }
7497 var264 = var266;
7498 RET_LABEL265:(void)0;
7499 }
7500 }
7501 {
7502 { /* Inline opts#Option#value (var264) on <var264:OptionBool> */
7503 var269 = var264->attrs[COLOR_opts__Option___value].val; /* _value on <var264:OptionBool> */
7504 var267 = var269;
7505 RET_LABEL268:(void)0;
7506 }
7507 }
7508 var270 = ((struct instance_kernel__Bool*)var267)->value; /* autounbox from nullable Object to Bool */;
7509 var271 = !var270;
7510 var239 = var271;
7511 } else {
7512 var239 = var_254;
7513 }
7514 if (var239){
7515 if (varonce272) {
7516 var273 = varonce272;
7517 } else {
7518 var274 = "if (unlikely(";
7519 var275 = 13;
7520 var276 = string__NativeString__to_s_with_length(var274, var275);
7521 var273 = var276;
7522 varonce272 = var273;
7523 }
7524 if (varonce277) {
7525 var278 = varonce277;
7526 } else {
7527 var279 = " == NULL)) {";
7528 var280 = 12;
7529 var281 = string__NativeString__to_s_with_length(var279, var280);
7530 var278 = var281;
7531 varonce277 = var278;
7532 }
7533 var282 = NEW_array__Array(&type_array__Arraykernel__Object);
7534 { /* var282 = array_instance Array[Object] */
7535 var283 = 3;
7536 var284 = NEW_array__NativeArray(var283, &type_array__NativeArraykernel__Object);
7537 ((struct instance_array__NativeArray*)var284)->values[0] = (val*) var273;
7538 ((struct instance_array__NativeArray*)var284)->values[1] = (val*) var_res201;
7539 ((struct instance_array__NativeArray*)var284)->values[2] = (val*) var278;
7540 {
7541 ((void (*)(val*, val*, long))(var282->class->vft[COLOR_array__Array__with_native]))(var282, var284, var283) /* with_native on <var282:Array[Object]>*/;
7542 }
7543 }
7544 {
7545 var285 = ((val* (*)(val*))(var282->class->vft[COLOR_string__Object__to_s]))(var282) /* to_s on <var282:Array[Object]>*/;
7546 }
7547 {
7548 abstract_compiler__AbstractCompilerVisitor__add(self, var285); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7549 }
7550 if (varonce286) {
7551 var287 = varonce286;
7552 } else {
7553 var288 = "Uninitialized attribute ";
7554 var289 = 24;
7555 var290 = string__NativeString__to_s_with_length(var288, var289);
7556 var287 = var290;
7557 varonce286 = var287;
7558 }
7559 {
7560 { /* Inline model#MProperty#name (var_a) on <var_a:MAttribute> */
7561 var293 = var_a->attrs[COLOR_model__MProperty___name].val; /* _name on <var_a:MAttribute> */
7562 if (unlikely(var293 == NULL)) {
7563 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
7564 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1620);
7565 show_backtrace(1);
7566 }
7567 var291 = var293;
7568 RET_LABEL292:(void)0;
7569 }
7570 }
7571 var294 = NEW_array__Array(&type_array__Arraykernel__Object);
7572 { /* var294 = array_instance Array[Object] */
7573 var295 = 2;
7574 var296 = NEW_array__NativeArray(var295, &type_array__NativeArraykernel__Object);
7575 ((struct instance_array__NativeArray*)var296)->values[0] = (val*) var287;
7576 ((struct instance_array__NativeArray*)var296)->values[1] = (val*) var291;
7577 {
7578 ((void (*)(val*, val*, long))(var294->class->vft[COLOR_array__Array__with_native]))(var294, var296, var295) /* with_native on <var294:Array[Object]>*/;
7579 }
7580 }
7581 {
7582 var297 = ((val* (*)(val*))(var294->class->vft[COLOR_string__Object__to_s]))(var294) /* to_s on <var294:Array[Object]>*/;
7583 }
7584 {
7585 abstract_compiler__AbstractCompilerVisitor__add_abort(self, var297); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
7586 }
7587 if (varonce298) {
7588 var299 = varonce298;
7589 } else {
7590 var300 = "}";
7591 var301 = 1;
7592 var302 = string__NativeString__to_s_with_length(var300, var301);
7593 var299 = var302;
7594 varonce298 = var299;
7595 }
7596 {
7597 abstract_compiler__AbstractCompilerVisitor__add(self, var299); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7598 }
7599 {
7600 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7601 var305 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7602 if (unlikely(var305 == NULL)) {
7603 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7604 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
7605 show_backtrace(1);
7606 }
7607 var303 = var305;
7608 RET_LABEL304:(void)0;
7609 }
7610 }
7611 {
7612 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var303) on <var303:AbstractCompiler(SeparateCompiler)> */
7613 var308 = var303->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var303:AbstractCompiler(SeparateCompiler)> */
7614 if (unlikely(var308 == NULL)) {
7615 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
7616 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
7617 show_backtrace(1);
7618 }
7619 var306 = var308;
7620 RET_LABEL307:(void)0;
7621 }
7622 }
7623 {
7624 { /* Inline modelbuilder#ModelBuilder#toolcontext (var306) on <var306:ModelBuilder> */
7625 var311 = var306->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var306:ModelBuilder> */
7626 if (unlikely(var311 == NULL)) {
7627 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
7628 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
7629 show_backtrace(1);
7630 }
7631 var309 = var311;
7632 RET_LABEL310:(void)0;
7633 }
7634 }
7635 {
7636 { /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var309) on <var309:ToolContext> */
7637 var314 = var309->attrs[COLOR_abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var309:ToolContext> */
7638 if (unlikely(var314 == NULL)) {
7639 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
7640 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 65);
7641 show_backtrace(1);
7642 }
7643 var312 = var314;
7644 RET_LABEL313:(void)0;
7645 }
7646 }
7647 {
7648 { /* Inline opts#Option#value (var312) on <var312:OptionBool> */
7649 var317 = var312->attrs[COLOR_opts__Option___value].val; /* _value on <var312:OptionBool> */
7650 var315 = var317;
7651 RET_LABEL316:(void)0;
7652 }
7653 }
7654 var318 = ((struct instance_kernel__Bool*)var315)->value; /* autounbox from nullable Object to Bool */;
7655 if (var318){
7656 {
7657 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
7658 var321 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
7659 if (unlikely(var321 == NULL)) {
7660 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
7661 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
7662 show_backtrace(1);
7663 }
7664 var319 = var321;
7665 RET_LABEL320:(void)0;
7666 }
7667 }
7668 var_322 = var319;
7669 {
7670 { /* Inline separate_compiler#SeparateCompiler#isset_checks_count (var_322) on <var_322:SeparateCompiler> */
7671 var325 = var_322->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on <var_322:SeparateCompiler> */
7672 var323 = var325;
7673 RET_LABEL324:(void)0;
7674 }
7675 }
7676 var326 = 1;
7677 {
7678 { /* Inline kernel#Int#+ (var323,var326) on <var323:Int> */
7679 /* Covariant cast for argument 0 (i) <var326:Int> isa OTHER */
7680 /* <var326:Int> isa OTHER */
7681 var329 = 1; /* easy <var326:Int> isa OTHER*/
7682 if (unlikely(!var329)) {
7683 var_class_name332 = type_kernel__Int.name;
7684 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name332);
7685 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
7686 show_backtrace(1);
7687 }
7688 var333 = var323 + var326;
7689 var327 = var333;
7690 goto RET_LABEL328;
7691 RET_LABEL328:(void)0;
7692 }
7693 }
7694 {
7695 { /* Inline separate_compiler#SeparateCompiler#isset_checks_count= (var_322,var327) on <var_322:SeparateCompiler> */
7696 var_322->attrs[COLOR_separate_compiler__SeparateCompiler___isset_checks_count].l = var327; /* _isset_checks_count on <var_322:SeparateCompiler> */
7697 RET_LABEL334:(void)0;
7698 }
7699 }
7700 if (varonce335) {
7701 var336 = varonce335;
7702 } else {
7703 var337 = "count_isset_checks++;";
7704 var338 = 21;
7705 var339 = string__NativeString__to_s_with_length(var337, var338);
7706 var336 = var339;
7707 varonce335 = var336;
7708 }
7709 {
7710 abstract_compiler__AbstractCompilerVisitor__add(self, var336); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
7711 }
7712 } else {
7713 }
7714 } else {
7715 }
7716 var = var_res201;
7717 goto RET_LABEL;
7718 }
7719 RET_LABEL:;
7720 return var;
7721 }
7722 /* method separate_compiler#SeparateCompilerVisitor#read_attribute for (self: Object, MAttribute, RuntimeVariable): RuntimeVariable */
7723 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__read_attribute(val* self, val* p0, val* p1) {
7724 val* var /* : RuntimeVariable */;
7725 val* var1 /* : RuntimeVariable */;
7726 var1 = separate_compiler__SeparateCompilerVisitor__read_attribute(self, p0, p1);
7727 var = var1;
7728 RET_LABEL:;
7729 return var;
7730 }
7731 /* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: SeparateCompilerVisitor, MAttribute, RuntimeVariable, RuntimeVariable) */
7732 void separate_compiler__SeparateCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
7733 val* var_a /* var a: MAttribute */;
7734 val* var_recv /* var recv: RuntimeVariable */;
7735 val* var_value /* var value: RuntimeVariable */;
7736 val* var /* : MPropDef */;
7737 val* var2 /* : MPropDef */;
7738 val* var3 /* : nullable MType */;
7739 val* var5 /* : nullable MType */;
7740 val* var_mtype /* var mtype: MType */;
7741 val* var6 /* : MPropDef */;
7742 val* var8 /* : MPropDef */;
7743 val* var9 /* : MClassDef */;
7744 val* var11 /* : MClassDef */;
7745 val* var_intromclassdef /* var intromclassdef: MClassDef */;
7746 val* var12 /* : MClassType */;
7747 val* var14 /* : MClassType */;
7748 val* var15 /* : MClassType */;
7749 val* var17 /* : MClassType */;
7750 val* var18 /* : MModule */;
7751 val* var20 /* : MModule */;
7752 short int var21 /* : Bool */;
7753 val* var22 /* : MType */;
7754 val* var23 /* : RuntimeVariable */;
7755 val* var24 /* : String */;
7756 val* var25 /* : AbstractCompiler */;
7757 val* var27 /* : AbstractCompiler */;
7758 val* var28 /* : ModelBuilder */;
7759 val* var30 /* : ModelBuilder */;
7760 val* var31 /* : ToolContext */;
7761 val* var33 /* : ToolContext */;
7762 val* var34 /* : OptionBool */;
7763 val* var36 /* : OptionBool */;
7764 val* var37 /* : nullable Object */;
7765 val* var39 /* : nullable Object */;
7766 short int var40 /* : Bool */;
7767 static val* varonce;
7768 val* var41 /* : String */;
7769 char* var42 /* : NativeString */;
7770 long var43 /* : Int */;
7771 val* var44 /* : FlatString */;
7772 val* var45 /* : String */;
7773 static val* varonce46;
7774 val* var47 /* : String */;
7775 char* var48 /* : NativeString */;
7776 long var49 /* : Int */;
7777 val* var50 /* : FlatString */;
7778 val* var51 /* : Array[Object] */;
7779 long var52 /* : Int */;
7780 val* var53 /* : NativeArray[Object] */;
7781 val* var54 /* : String */;
7782 val* var_attr /* var attr: String */;
7783 val* var55 /* : String */;
7784 static val* varonce56;
7785 val* var57 /* : String */;
7786 char* var58 /* : NativeString */;
7787 long var59 /* : Int */;
7788 val* var60 /* : FlatString */;
7789 short int var61 /* : Bool */;
7790 short int var62 /* : Bool */;
7791 val* var_other /* var other: nullable Object */;
7792 short int var64 /* : Bool */;
7793 short int var65 /* : Bool */;
7794 short int var66 /* : Bool */;
7795 short int var67 /* : Bool */;
7796 int cltype;
7797 int idtype;
7798 static val* varonce68;
7799 val* var69 /* : String */;
7800 char* var70 /* : NativeString */;
7801 long var71 /* : Int */;
7802 val* var72 /* : FlatString */;
7803 static val* varonce73;
7804 val* var74 /* : String */;
7805 char* var75 /* : NativeString */;
7806 long var76 /* : Int */;
7807 val* var77 /* : FlatString */;
7808 val* var78 /* : Array[Object] */;
7809 long var79 /* : Int */;
7810 val* var80 /* : NativeArray[Object] */;
7811 val* var81 /* : String */;
7812 static val* varonce82;
7813 val* var83 /* : String */;
7814 char* var84 /* : NativeString */;
7815 long var85 /* : Int */;
7816 val* var86 /* : FlatString */;
7817 val* var87 /* : String */;
7818 static val* varonce88;
7819 val* var89 /* : String */;
7820 char* var90 /* : NativeString */;
7821 long var91 /* : Int */;
7822 val* var92 /* : FlatString */;
7823 static val* varonce93;
7824 val* var94 /* : String */;
7825 char* var95 /* : NativeString */;
7826 long var96 /* : Int */;
7827 val* var97 /* : FlatString */;
7828 static val* varonce98;
7829 val* var99 /* : String */;
7830 char* var100 /* : NativeString */;
7831 long var101 /* : Int */;
7832 val* var102 /* : FlatString */;
7833 static val* varonce103;
7834 val* var104 /* : String */;
7835 char* var105 /* : NativeString */;
7836 long var106 /* : Int */;
7837 val* var107 /* : FlatString */;
7838 val* var108 /* : String */;
7839 static val* varonce109;
7840 val* var110 /* : String */;
7841 char* var111 /* : NativeString */;
7842 long var112 /* : Int */;
7843 val* var113 /* : FlatString */;
7844 val* var114 /* : Array[Object] */;
7845 long var115 /* : Int */;
7846 val* var116 /* : NativeArray[Object] */;
7847 val* var117 /* : String */;
7848 static val* varonce118;
7849 val* var119 /* : String */;
7850 char* var120 /* : NativeString */;
7851 long var121 /* : Int */;
7852 val* var122 /* : FlatString */;
7853 val* var123 /* : MClassType */;
7854 val* var124 /* : MType */;
7855 val* var125 /* : RuntimeVariable */;
7856 static val* varonce126;
7857 val* var127 /* : String */;
7858 char* var128 /* : NativeString */;
7859 long var129 /* : Int */;
7860 val* var130 /* : FlatString */;
7861 static val* varonce131;
7862 val* var132 /* : String */;
7863 char* var133 /* : NativeString */;
7864 long var134 /* : Int */;
7865 val* var135 /* : FlatString */;
7866 static val* varonce136;
7867 val* var137 /* : String */;
7868 char* var138 /* : NativeString */;
7869 long var139 /* : Int */;
7870 val* var140 /* : FlatString */;
7871 val* var141 /* : String */;
7872 static val* varonce142;
7873 val* var143 /* : String */;
7874 char* var144 /* : NativeString */;
7875 long var145 /* : Int */;
7876 val* var146 /* : FlatString */;
7877 val* var147 /* : Array[Object] */;
7878 long var148 /* : Int */;
7879 val* var149 /* : NativeArray[Object] */;
7880 val* var150 /* : String */;
7881 static val* varonce151;
7882 val* var152 /* : String */;
7883 char* var153 /* : NativeString */;
7884 long var154 /* : Int */;
7885 val* var155 /* : FlatString */;
7886 static val* varonce156;
7887 val* var157 /* : String */;
7888 char* var158 /* : NativeString */;
7889 long var159 /* : Int */;
7890 val* var160 /* : FlatString */;
7891 static val* varonce161;
7892 val* var162 /* : String */;
7893 char* var163 /* : NativeString */;
7894 long var164 /* : Int */;
7895 val* var165 /* : FlatString */;
7896 static val* varonce166;
7897 val* var167 /* : String */;
7898 char* var168 /* : NativeString */;
7899 long var169 /* : Int */;
7900 val* var170 /* : FlatString */;
7901 val* var171 /* : String */;
7902 static val* varonce172;
7903 val* var173 /* : String */;
7904 char* var174 /* : NativeString */;
7905 long var175 /* : Int */;
7906 val* var176 /* : FlatString */;
7907 val* var177 /* : Array[Object] */;
7908 long var178 /* : Int */;
7909 val* var179 /* : NativeArray[Object] */;
7910 val* var180 /* : String */;
7911 static val* varonce181;
7912 val* var182 /* : String */;
7913 char* var183 /* : NativeString */;
7914 long var184 /* : Int */;
7915 val* var185 /* : FlatString */;
7916 val* var186 /* : String */;
7917 static val* varonce187;
7918 val* var188 /* : String */;
7919 char* var189 /* : NativeString */;
7920 long var190 /* : Int */;
7921 val* var191 /* : FlatString */;
7922 val* var192 /* : String */;
7923 static val* varonce193;
7924 val* var194 /* : String */;
7925 char* var195 /* : NativeString */;
7926 long var196 /* : Int */;
7927 val* var197 /* : FlatString */;
7928 static val* varonce198;
7929 val* var199 /* : String */;
7930 char* var200 /* : NativeString */;
7931 long var201 /* : Int */;
7932 val* var202 /* : FlatString */;
7933 static val* varonce203;
7934 val* var204 /* : String */;
7935 char* var205 /* : NativeString */;
7936 long var206 /* : Int */;
7937 val* var207 /* : FlatString */;
7938 val* var208 /* : String */;
7939 static val* varonce209;
7940 val* var210 /* : String */;
7941 char* var211 /* : NativeString */;
7942 long var212 /* : Int */;
7943 val* var213 /* : FlatString */;
7944 val* var214 /* : Array[Object] */;
7945 long var215 /* : Int */;
7946 val* var216 /* : NativeArray[Object] */;
7947 val* var217 /* : String */;
7948 var_a = p0;
7949 var_recv = p1;
7950 var_value = p2;
7951 {
7952 abstract_compiler__AbstractCompilerVisitor__check_recv_notnull(self, var_recv); /* Direct call abstract_compiler#AbstractCompilerVisitor#check_recv_notnull on <self:SeparateCompilerVisitor>*/
7953 }
7954 {
7955 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
7956 var2 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
7957 if (unlikely(var2 == NULL)) {
7958 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
7959 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
7960 show_backtrace(1);
7961 }
7962 var = var2;
7963 RET_LABEL1:(void)0;
7964 }
7965 }
7966 {
7967 { /* Inline model#MAttributeDef#static_mtype (var) on <var:MPropDef(MAttributeDef)> */
7968 var5 = var->attrs[COLOR_model__MAttributeDef___static_mtype].val; /* _static_mtype on <var:MPropDef(MAttributeDef)> */
7969 var3 = var5;
7970 RET_LABEL4:(void)0;
7971 }
7972 }
7973 if (unlikely(var3 == NULL)) {
7974 PRINT_ERROR("Runtime error: %s", "Cast failed");
7975 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1390);
7976 show_backtrace(1);
7977 }
7978 var_mtype = var3;
7979 {
7980 { /* Inline model#MProperty#intro (var_a) on <var_a:MAttribute> */
7981 var8 = var_a->attrs[COLOR_model__MProperty___intro].val; /* _intro on <var_a:MAttribute> */
7982 if (unlikely(var8 == NULL)) {
7983 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
7984 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1649);
7985 show_backtrace(1);
7986 }
7987 var6 = var8;
7988 RET_LABEL7:(void)0;
7989 }
7990 }
7991 {
7992 { /* Inline model#MPropDef#mclassdef (var6) on <var6:MPropDef(MAttributeDef)> */
7993 var11 = var6->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var6:MPropDef(MAttributeDef)> */
7994 if (unlikely(var11 == NULL)) {
7995 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7996 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
7997 show_backtrace(1);
7998 }
7999 var9 = var11;
8000 RET_LABEL10:(void)0;
8001 }
8002 }
8003 var_intromclassdef = var9;
8004 {
8005 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
8006 var14 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
8007 if (unlikely(var14 == NULL)) {
8008 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8009 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
8010 show_backtrace(1);
8011 }
8012 var12 = var14;
8013 RET_LABEL13:(void)0;
8014 }
8015 }
8016 {
8017 { /* Inline model#MClassDef#bound_mtype (var_intromclassdef) on <var_intromclassdef:MClassDef> */
8018 var17 = var_intromclassdef->attrs[COLOR_model__MClassDef___bound_mtype].val; /* _bound_mtype on <var_intromclassdef:MClassDef> */
8019 if (unlikely(var17 == NULL)) {
8020 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8021 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 495);
8022 show_backtrace(1);
8023 }
8024 var15 = var17;
8025 RET_LABEL16:(void)0;
8026 }
8027 }
8028 {
8029 { /* Inline model#MClassDef#mmodule (var_intromclassdef) on <var_intromclassdef:MClassDef> */
8030 var20 = var_intromclassdef->attrs[COLOR_model__MClassDef___mmodule].val; /* _mmodule on <var_intromclassdef:MClassDef> */
8031 if (unlikely(var20 == NULL)) {
8032 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
8033 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 489);
8034 show_backtrace(1);
8035 }
8036 var18 = var20;
8037 RET_LABEL19:(void)0;
8038 }
8039 }
8040 var21 = 1;
8041 {
8042 var22 = ((val* (*)(val*, val*, val*, val*, short int))(var_mtype->class->vft[COLOR_model__MType__resolve_for]))(var_mtype, var12, var15, var18, var21) /* resolve_for on <var_mtype:MType>*/;
8043 }
8044 var_mtype = var22;
8045 {
8046 var23 = separate_compiler__SeparateCompilerVisitor__autobox(self, var_value, var_mtype);
8047 }
8048 var_value = var23;
8049 {
8050 var24 = separate_compiler__MProperty__const_color(var_a);
8051 }
8052 {
8053 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var24); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
8054 }
8055 {
8056 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8057 var27 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8058 if (unlikely(var27 == NULL)) {
8059 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8060 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
8061 show_backtrace(1);
8062 }
8063 var25 = var27;
8064 RET_LABEL26:(void)0;
8065 }
8066 }
8067 {
8068 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var25) on <var25:AbstractCompiler(SeparateCompiler)> */
8069 var30 = var25->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var25:AbstractCompiler(SeparateCompiler)> */
8070 if (unlikely(var30 == NULL)) {
8071 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8072 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
8073 show_backtrace(1);
8074 }
8075 var28 = var30;
8076 RET_LABEL29:(void)0;
8077 }
8078 }
8079 {
8080 { /* Inline modelbuilder#ModelBuilder#toolcontext (var28) on <var28:ModelBuilder> */
8081 var33 = var28->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var28:ModelBuilder> */
8082 if (unlikely(var33 == NULL)) {
8083 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8084 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
8085 show_backtrace(1);
8086 }
8087 var31 = var33;
8088 RET_LABEL32:(void)0;
8089 }
8090 }
8091 {
8092 { /* Inline separate_compiler#ToolContext#opt_no_union_attribute (var31) on <var31:ToolContext> */
8093 var36 = var31->attrs[COLOR_separate_compiler__ToolContext___opt_no_union_attribute].val; /* _opt_no_union_attribute on <var31:ToolContext> */
8094 if (unlikely(var36 == NULL)) {
8095 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_union_attribute");
8096 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 28);
8097 show_backtrace(1);
8098 }
8099 var34 = var36;
8100 RET_LABEL35:(void)0;
8101 }
8102 }
8103 {
8104 { /* Inline opts#Option#value (var34) on <var34:OptionBool> */
8105 var39 = var34->attrs[COLOR_opts__Option___value].val; /* _value on <var34:OptionBool> */
8106 var37 = var39;
8107 RET_LABEL38:(void)0;
8108 }
8109 }
8110 var40 = ((struct instance_kernel__Bool*)var37)->value; /* autounbox from nullable Object to Bool */;
8111 if (var40){
8112 if (varonce) {
8113 var41 = varonce;
8114 } else {
8115 var42 = "->attrs[";
8116 var43 = 8;
8117 var44 = string__NativeString__to_s_with_length(var42, var43);
8118 var41 = var44;
8119 varonce = var41;
8120 }
8121 {
8122 var45 = separate_compiler__MProperty__const_color(var_a);
8123 }
8124 if (varonce46) {
8125 var47 = varonce46;
8126 } else {
8127 var48 = "]";
8128 var49 = 1;
8129 var50 = string__NativeString__to_s_with_length(var48, var49);
8130 var47 = var50;
8131 varonce46 = var47;
8132 }
8133 var51 = NEW_array__Array(&type_array__Arraykernel__Object);
8134 { /* var51 = array_instance Array[Object] */
8135 var52 = 4;
8136 var53 = NEW_array__NativeArray(var52, &type_array__NativeArraykernel__Object);
8137 ((struct instance_array__NativeArray*)var53)->values[0] = (val*) var_recv;
8138 ((struct instance_array__NativeArray*)var53)->values[1] = (val*) var41;
8139 ((struct instance_array__NativeArray*)var53)->values[2] = (val*) var45;
8140 ((struct instance_array__NativeArray*)var53)->values[3] = (val*) var47;
8141 {
8142 ((void (*)(val*, val*, long))(var51->class->vft[COLOR_array__Array__with_native]))(var51, var53, var52) /* with_native on <var51:Array[Object]>*/;
8143 }
8144 }
8145 {
8146 var54 = ((val* (*)(val*))(var51->class->vft[COLOR_string__Object__to_s]))(var51) /* to_s on <var51:Array[Object]>*/;
8147 }
8148 var_attr = var54;
8149 {
8150 var55 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
8151 }
8152 if (varonce56) {
8153 var57 = varonce56;
8154 } else {
8155 var58 = "val*";
8156 var59 = 4;
8157 var60 = string__NativeString__to_s_with_length(var58, var59);
8158 var57 = var60;
8159 varonce56 = var57;
8160 }
8161 {
8162 { /* Inline kernel#Object#!= (var55,var57) on <var55:String> */
8163 var_other = var57;
8164 {
8165 var65 = ((short int (*)(val*, val*))(var55->class->vft[COLOR_kernel__Object___61d_61d]))(var55, var_other) /* == on <var55:String>*/;
8166 var64 = var65;
8167 }
8168 var66 = !var64;
8169 var62 = var66;
8170 goto RET_LABEL63;
8171 RET_LABEL63:(void)0;
8172 }
8173 var61 = var62;
8174 }
8175 if (var61){
8176 /* <var_mtype:MType> isa MClassType */
8177 cltype = type_model__MClassType.color;
8178 idtype = type_model__MClassType.id;
8179 if(cltype >= var_mtype->type->table_size) {
8180 var67 = 0;
8181 } else {
8182 var67 = var_mtype->type->type_table[cltype] == idtype;
8183 }
8184 if (unlikely(!var67)) {
8185 PRINT_ERROR("Runtime error: %s", "Assert failed");
8186 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1401);
8187 show_backtrace(1);
8188 }
8189 if (varonce68) {
8190 var69 = varonce68;
8191 } else {
8192 var70 = "if (";
8193 var71 = 4;
8194 var72 = string__NativeString__to_s_with_length(var70, var71);
8195 var69 = var72;
8196 varonce68 = var69;
8197 }
8198 if (varonce73) {
8199 var74 = varonce73;
8200 } else {
8201 var75 = " != NULL) {";
8202 var76 = 11;
8203 var77 = string__NativeString__to_s_with_length(var75, var76);
8204 var74 = var77;
8205 varonce73 = var74;
8206 }
8207 var78 = NEW_array__Array(&type_array__Arraykernel__Object);
8208 { /* var78 = array_instance Array[Object] */
8209 var79 = 3;
8210 var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
8211 ((struct instance_array__NativeArray*)var80)->values[0] = (val*) var69;
8212 ((struct instance_array__NativeArray*)var80)->values[1] = (val*) var_attr;
8213 ((struct instance_array__NativeArray*)var80)->values[2] = (val*) var74;
8214 {
8215 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
8216 }
8217 }
8218 {
8219 var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
8220 }
8221 {
8222 abstract_compiler__AbstractCompilerVisitor__add(self, var81); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8223 }
8224 if (varonce82) {
8225 var83 = varonce82;
8226 } else {
8227 var84 = "((struct instance_";
8228 var85 = 18;
8229 var86 = string__NativeString__to_s_with_length(var84, var85);
8230 var83 = var86;
8231 varonce82 = var83;
8232 }
8233 {
8234 var87 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType(MClassType)>*/;
8235 }
8236 if (varonce88) {
8237 var89 = varonce88;
8238 } else {
8239 var90 = "*)";
8240 var91 = 2;
8241 var92 = string__NativeString__to_s_with_length(var90, var91);
8242 var89 = var92;
8243 varonce88 = var89;
8244 }
8245 if (varonce93) {
8246 var94 = varonce93;
8247 } else {
8248 var95 = ")->value = ";
8249 var96 = 11;
8250 var97 = string__NativeString__to_s_with_length(var95, var96);
8251 var94 = var97;
8252 varonce93 = var94;
8253 }
8254 if (varonce98) {
8255 var99 = varonce98;
8256 } else {
8257 var100 = "; /* ";
8258 var101 = 5;
8259 var102 = string__NativeString__to_s_with_length(var100, var101);
8260 var99 = var102;
8261 varonce98 = var99;
8262 }
8263 if (varonce103) {
8264 var104 = varonce103;
8265 } else {
8266 var105 = " on ";
8267 var106 = 4;
8268 var107 = string__NativeString__to_s_with_length(var105, var106);
8269 var104 = var107;
8270 varonce103 = var104;
8271 }
8272 {
8273 var108 = abstract_compiler__RuntimeVariable__inspect(var_recv);
8274 }
8275 if (varonce109) {
8276 var110 = varonce109;
8277 } else {
8278 var111 = " */";
8279 var112 = 3;
8280 var113 = string__NativeString__to_s_with_length(var111, var112);
8281 var110 = var113;
8282 varonce109 = var110;
8283 }
8284 var114 = NEW_array__Array(&type_array__Arraykernel__Object);
8285 { /* var114 = array_instance Array[Object] */
8286 var115 = 11;
8287 var116 = NEW_array__NativeArray(var115, &type_array__NativeArraykernel__Object);
8288 ((struct instance_array__NativeArray*)var116)->values[0] = (val*) var83;
8289 ((struct instance_array__NativeArray*)var116)->values[1] = (val*) var87;
8290 ((struct instance_array__NativeArray*)var116)->values[2] = (val*) var89;
8291 ((struct instance_array__NativeArray*)var116)->values[3] = (val*) var_attr;
8292 ((struct instance_array__NativeArray*)var116)->values[4] = (val*) var94;
8293 ((struct instance_array__NativeArray*)var116)->values[5] = (val*) var_value;
8294 ((struct instance_array__NativeArray*)var116)->values[6] = (val*) var99;
8295 ((struct instance_array__NativeArray*)var116)->values[7] = (val*) var_a;
8296 ((struct instance_array__NativeArray*)var116)->values[8] = (val*) var104;
8297 ((struct instance_array__NativeArray*)var116)->values[9] = (val*) var108;
8298 ((struct instance_array__NativeArray*)var116)->values[10] = (val*) var110;
8299 {
8300 ((void (*)(val*, val*, long))(var114->class->vft[COLOR_array__Array__with_native]))(var114, var116, var115) /* with_native on <var114:Array[Object]>*/;
8301 }
8302 }
8303 {
8304 var117 = ((val* (*)(val*))(var114->class->vft[COLOR_string__Object__to_s]))(var114) /* to_s on <var114:Array[Object]>*/;
8305 }
8306 {
8307 abstract_compiler__AbstractCompilerVisitor__add(self, var117); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8308 }
8309 if (varonce118) {
8310 var119 = varonce118;
8311 } else {
8312 var120 = "} else {";
8313 var121 = 8;
8314 var122 = string__NativeString__to_s_with_length(var120, var121);
8315 var119 = var122;
8316 varonce118 = var119;
8317 }
8318 {
8319 abstract_compiler__AbstractCompilerVisitor__add(self, var119); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8320 }
8321 {
8322 var123 = abstract_compiler__AbstractCompilerVisitor__object_type(self);
8323 }
8324 {
8325 var124 = model__MType__as_nullable(var123);
8326 }
8327 {
8328 var125 = separate_compiler__SeparateCompilerVisitor__autobox(self, var_value, var124);
8329 }
8330 var_value = var125;
8331 if (varonce126) {
8332 var127 = varonce126;
8333 } else {
8334 var128 = " = ";
8335 var129 = 3;
8336 var130 = string__NativeString__to_s_with_length(var128, var129);
8337 var127 = var130;
8338 varonce126 = var127;
8339 }
8340 if (varonce131) {
8341 var132 = varonce131;
8342 } else {
8343 var133 = "; /* ";
8344 var134 = 5;
8345 var135 = string__NativeString__to_s_with_length(var133, var134);
8346 var132 = var135;
8347 varonce131 = var132;
8348 }
8349 if (varonce136) {
8350 var137 = varonce136;
8351 } else {
8352 var138 = " on ";
8353 var139 = 4;
8354 var140 = string__NativeString__to_s_with_length(var138, var139);
8355 var137 = var140;
8356 varonce136 = var137;
8357 }
8358 {
8359 var141 = abstract_compiler__RuntimeVariable__inspect(var_recv);
8360 }
8361 if (varonce142) {
8362 var143 = varonce142;
8363 } else {
8364 var144 = " */";
8365 var145 = 3;
8366 var146 = string__NativeString__to_s_with_length(var144, var145);
8367 var143 = var146;
8368 varonce142 = var143;
8369 }
8370 var147 = NEW_array__Array(&type_array__Arraykernel__Object);
8371 { /* var147 = array_instance Array[Object] */
8372 var148 = 8;
8373 var149 = NEW_array__NativeArray(var148, &type_array__NativeArraykernel__Object);
8374 ((struct instance_array__NativeArray*)var149)->values[0] = (val*) var_attr;
8375 ((struct instance_array__NativeArray*)var149)->values[1] = (val*) var127;
8376 ((struct instance_array__NativeArray*)var149)->values[2] = (val*) var_value;
8377 ((struct instance_array__NativeArray*)var149)->values[3] = (val*) var132;
8378 ((struct instance_array__NativeArray*)var149)->values[4] = (val*) var_a;
8379 ((struct instance_array__NativeArray*)var149)->values[5] = (val*) var137;
8380 ((struct instance_array__NativeArray*)var149)->values[6] = (val*) var141;
8381 ((struct instance_array__NativeArray*)var149)->values[7] = (val*) var143;
8382 {
8383 ((void (*)(val*, val*, long))(var147->class->vft[COLOR_array__Array__with_native]))(var147, var149, var148) /* with_native on <var147:Array[Object]>*/;
8384 }
8385 }
8386 {
8387 var150 = ((val* (*)(val*))(var147->class->vft[COLOR_string__Object__to_s]))(var147) /* to_s on <var147:Array[Object]>*/;
8388 }
8389 {
8390 abstract_compiler__AbstractCompilerVisitor__add(self, var150); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8391 }
8392 if (varonce151) {
8393 var152 = varonce151;
8394 } else {
8395 var153 = "}";
8396 var154 = 1;
8397 var155 = string__NativeString__to_s_with_length(var153, var154);
8398 var152 = var155;
8399 varonce151 = var152;
8400 }
8401 {
8402 abstract_compiler__AbstractCompilerVisitor__add(self, var152); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8403 }
8404 } else {
8405 if (varonce156) {
8406 var157 = varonce156;
8407 } else {
8408 var158 = " = ";
8409 var159 = 3;
8410 var160 = string__NativeString__to_s_with_length(var158, var159);
8411 var157 = var160;
8412 varonce156 = var157;
8413 }
8414 if (varonce161) {
8415 var162 = varonce161;
8416 } else {
8417 var163 = "; /* ";
8418 var164 = 5;
8419 var165 = string__NativeString__to_s_with_length(var163, var164);
8420 var162 = var165;
8421 varonce161 = var162;
8422 }
8423 if (varonce166) {
8424 var167 = varonce166;
8425 } else {
8426 var168 = " on ";
8427 var169 = 4;
8428 var170 = string__NativeString__to_s_with_length(var168, var169);
8429 var167 = var170;
8430 varonce166 = var167;
8431 }
8432 {
8433 var171 = abstract_compiler__RuntimeVariable__inspect(var_recv);
8434 }
8435 if (varonce172) {
8436 var173 = varonce172;
8437 } else {
8438 var174 = " */";
8439 var175 = 3;
8440 var176 = string__NativeString__to_s_with_length(var174, var175);
8441 var173 = var176;
8442 varonce172 = var173;
8443 }
8444 var177 = NEW_array__Array(&type_array__Arraykernel__Object);
8445 { /* var177 = array_instance Array[Object] */
8446 var178 = 8;
8447 var179 = NEW_array__NativeArray(var178, &type_array__NativeArraykernel__Object);
8448 ((struct instance_array__NativeArray*)var179)->values[0] = (val*) var_attr;
8449 ((struct instance_array__NativeArray*)var179)->values[1] = (val*) var157;
8450 ((struct instance_array__NativeArray*)var179)->values[2] = (val*) var_value;
8451 ((struct instance_array__NativeArray*)var179)->values[3] = (val*) var162;
8452 ((struct instance_array__NativeArray*)var179)->values[4] = (val*) var_a;
8453 ((struct instance_array__NativeArray*)var179)->values[5] = (val*) var167;
8454 ((struct instance_array__NativeArray*)var179)->values[6] = (val*) var171;
8455 ((struct instance_array__NativeArray*)var179)->values[7] = (val*) var173;
8456 {
8457 ((void (*)(val*, val*, long))(var177->class->vft[COLOR_array__Array__with_native]))(var177, var179, var178) /* with_native on <var177:Array[Object]>*/;
8458 }
8459 }
8460 {
8461 var180 = ((val* (*)(val*))(var177->class->vft[COLOR_string__Object__to_s]))(var177) /* to_s on <var177:Array[Object]>*/;
8462 }
8463 {
8464 abstract_compiler__AbstractCompilerVisitor__add(self, var180); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8465 }
8466 }
8467 } else {
8468 if (varonce181) {
8469 var182 = varonce181;
8470 } else {
8471 var183 = "->attrs[";
8472 var184 = 8;
8473 var185 = string__NativeString__to_s_with_length(var183, var184);
8474 var182 = var185;
8475 varonce181 = var182;
8476 }
8477 {
8478 var186 = separate_compiler__MProperty__const_color(var_a);
8479 }
8480 if (varonce187) {
8481 var188 = varonce187;
8482 } else {
8483 var189 = "].";
8484 var190 = 2;
8485 var191 = string__NativeString__to_s_with_length(var189, var190);
8486 var188 = var191;
8487 varonce187 = var188;
8488 }
8489 {
8490 var192 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_mtype) /* ctypename on <var_mtype:MType>*/;
8491 }
8492 if (varonce193) {
8493 var194 = varonce193;
8494 } else {
8495 var195 = " = ";
8496 var196 = 3;
8497 var197 = string__NativeString__to_s_with_length(var195, var196);
8498 var194 = var197;
8499 varonce193 = var194;
8500 }
8501 if (varonce198) {
8502 var199 = varonce198;
8503 } else {
8504 var200 = "; /* ";
8505 var201 = 5;
8506 var202 = string__NativeString__to_s_with_length(var200, var201);
8507 var199 = var202;
8508 varonce198 = var199;
8509 }
8510 if (varonce203) {
8511 var204 = varonce203;
8512 } else {
8513 var205 = " on ";
8514 var206 = 4;
8515 var207 = string__NativeString__to_s_with_length(var205, var206);
8516 var204 = var207;
8517 varonce203 = var204;
8518 }
8519 {
8520 var208 = abstract_compiler__RuntimeVariable__inspect(var_recv);
8521 }
8522 if (varonce209) {
8523 var210 = varonce209;
8524 } else {
8525 var211 = " */";
8526 var212 = 3;
8527 var213 = string__NativeString__to_s_with_length(var211, var212);
8528 var210 = var213;
8529 varonce209 = var210;
8530 }
8531 var214 = NEW_array__Array(&type_array__Arraykernel__Object);
8532 { /* var214 = array_instance Array[Object] */
8533 var215 = 12;
8534 var216 = NEW_array__NativeArray(var215, &type_array__NativeArraykernel__Object);
8535 ((struct instance_array__NativeArray*)var216)->values[0] = (val*) var_recv;
8536 ((struct instance_array__NativeArray*)var216)->values[1] = (val*) var182;
8537 ((struct instance_array__NativeArray*)var216)->values[2] = (val*) var186;
8538 ((struct instance_array__NativeArray*)var216)->values[3] = (val*) var188;
8539 ((struct instance_array__NativeArray*)var216)->values[4] = (val*) var192;
8540 ((struct instance_array__NativeArray*)var216)->values[5] = (val*) var194;
8541 ((struct instance_array__NativeArray*)var216)->values[6] = (val*) var_value;
8542 ((struct instance_array__NativeArray*)var216)->values[7] = (val*) var199;
8543 ((struct instance_array__NativeArray*)var216)->values[8] = (val*) var_a;
8544 ((struct instance_array__NativeArray*)var216)->values[9] = (val*) var204;
8545 ((struct instance_array__NativeArray*)var216)->values[10] = (val*) var208;
8546 ((struct instance_array__NativeArray*)var216)->values[11] = (val*) var210;
8547 {
8548 ((void (*)(val*, val*, long))(var214->class->vft[COLOR_array__Array__with_native]))(var214, var216, var215) /* with_native on <var214:Array[Object]>*/;
8549 }
8550 }
8551 {
8552 var217 = ((val* (*)(val*))(var214->class->vft[COLOR_string__Object__to_s]))(var214) /* to_s on <var214:Array[Object]>*/;
8553 }
8554 {
8555 abstract_compiler__AbstractCompilerVisitor__add(self, var217); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8556 }
8557 }
8558 RET_LABEL:;
8559 }
8560 /* method separate_compiler#SeparateCompilerVisitor#write_attribute for (self: Object, MAttribute, RuntimeVariable, RuntimeVariable) */
8561 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__write_attribute(val* self, val* p0, val* p1, val* p2) {
8562 separate_compiler__SeparateCompilerVisitor__write_attribute(self, p0, p1, p2); /* Direct call separate_compiler#SeparateCompilerVisitor#write_attribute on <self:Object(SeparateCompilerVisitor)>*/
8563 RET_LABEL:;
8564 }
8565 /* method separate_compiler#SeparateCompilerVisitor#hardening_live_open_type for (self: SeparateCompilerVisitor, MType) */
8566 void separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(val* self, val* p0) {
8567 val* var_mtype /* var mtype: MType */;
8568 val* var /* : AbstractCompiler */;
8569 val* var2 /* : AbstractCompiler */;
8570 val* var3 /* : ModelBuilder */;
8571 val* var5 /* : ModelBuilder */;
8572 val* var6 /* : ToolContext */;
8573 val* var8 /* : ToolContext */;
8574 val* var9 /* : OptionBool */;
8575 val* var11 /* : OptionBool */;
8576 val* var12 /* : nullable Object */;
8577 val* var14 /* : nullable Object */;
8578 short int var15 /* : Bool */;
8579 short int var16 /* : Bool */;
8580 val* var17 /* : String */;
8581 val* var18 /* : String */;
8582 val* var_col /* var col: String */;
8583 static val* varonce;
8584 val* var19 /* : String */;
8585 char* var20 /* : NativeString */;
8586 long var21 /* : Int */;
8587 val* var22 /* : FlatString */;
8588 static val* varonce23;
8589 val* var24 /* : String */;
8590 char* var25 /* : NativeString */;
8591 long var26 /* : Int */;
8592 val* var27 /* : FlatString */;
8593 val* var28 /* : Array[Object] */;
8594 long var29 /* : Int */;
8595 val* var30 /* : NativeArray[Object] */;
8596 val* var31 /* : String */;
8597 static val* varonce32;
8598 val* var33 /* : String */;
8599 char* var34 /* : NativeString */;
8600 long var35 /* : Int */;
8601 val* var36 /* : FlatString */;
8602 val* var37 /* : String */;
8603 val* var38 /* : String */;
8604 static val* varonce39;
8605 val* var40 /* : String */;
8606 char* var41 /* : NativeString */;
8607 long var42 /* : Int */;
8608 val* var43 /* : FlatString */;
8609 val* var44 /* : Array[Object] */;
8610 long var45 /* : Int */;
8611 val* var46 /* : NativeArray[Object] */;
8612 val* var47 /* : String */;
8613 static val* varonce48;
8614 val* var49 /* : String */;
8615 char* var50 /* : NativeString */;
8616 long var51 /* : Int */;
8617 val* var52 /* : FlatString */;
8618 static val* varonce53;
8619 val* var54 /* : String */;
8620 char* var55 /* : NativeString */;
8621 long var56 /* : Int */;
8622 val* var57 /* : FlatString */;
8623 var_mtype = p0;
8624 {
8625 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8626 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8627 if (unlikely(var2 == NULL)) {
8628 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8629 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
8630 show_backtrace(1);
8631 }
8632 var = var2;
8633 RET_LABEL1:(void)0;
8634 }
8635 }
8636 {
8637 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var) on <var:AbstractCompiler(SeparateCompiler)> */
8638 var5 = var->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var:AbstractCompiler(SeparateCompiler)> */
8639 if (unlikely(var5 == NULL)) {
8640 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8641 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
8642 show_backtrace(1);
8643 }
8644 var3 = var5;
8645 RET_LABEL4:(void)0;
8646 }
8647 }
8648 {
8649 { /* Inline modelbuilder#ModelBuilder#toolcontext (var3) on <var3:ModelBuilder> */
8650 var8 = var3->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var3:ModelBuilder> */
8651 if (unlikely(var8 == NULL)) {
8652 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8653 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
8654 show_backtrace(1);
8655 }
8656 var6 = var8;
8657 RET_LABEL7:(void)0;
8658 }
8659 }
8660 {
8661 { /* Inline abstract_compiler#ToolContext#opt_hardening (var6) on <var6:ToolContext> */
8662 var11 = var6->attrs[COLOR_abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <var6:ToolContext> */
8663 if (unlikely(var11 == NULL)) {
8664 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
8665 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 47);
8666 show_backtrace(1);
8667 }
8668 var9 = var11;
8669 RET_LABEL10:(void)0;
8670 }
8671 }
8672 {
8673 { /* Inline opts#Option#value (var9) on <var9:OptionBool> */
8674 var14 = var9->attrs[COLOR_opts__Option___value].val; /* _value on <var9:OptionBool> */
8675 var12 = var14;
8676 RET_LABEL13:(void)0;
8677 }
8678 }
8679 var15 = ((struct instance_kernel__Bool*)var12)->value; /* autounbox from nullable Object to Bool */;
8680 var16 = !var15;
8681 if (var16){
8682 goto RET_LABEL;
8683 } else {
8684 }
8685 {
8686 var17 = separate_compiler__MType__const_color(var_mtype);
8687 }
8688 {
8689 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var17); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
8690 }
8691 {
8692 var18 = separate_compiler__MType__const_color(var_mtype);
8693 }
8694 var_col = var18;
8695 if (varonce) {
8696 var19 = varonce;
8697 } else {
8698 var20 = "if(";
8699 var21 = 3;
8700 var22 = string__NativeString__to_s_with_length(var20, var21);
8701 var19 = var22;
8702 varonce = var19;
8703 }
8704 if (varonce23) {
8705 var24 = varonce23;
8706 } else {
8707 var25 = " == -1) {";
8708 var26 = 9;
8709 var27 = string__NativeString__to_s_with_length(var25, var26);
8710 var24 = var27;
8711 varonce23 = var24;
8712 }
8713 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
8714 { /* var28 = array_instance Array[Object] */
8715 var29 = 3;
8716 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
8717 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var19;
8718 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var_col;
8719 ((struct instance_array__NativeArray*)var30)->values[2] = (val*) var24;
8720 {
8721 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
8722 }
8723 }
8724 {
8725 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
8726 }
8727 {
8728 abstract_compiler__AbstractCompilerVisitor__add(self, var31); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8729 }
8730 if (varonce32) {
8731 var33 = varonce32;
8732 } else {
8733 var34 = "PRINT_ERROR(\"Resolution of a dead open type: %s\\n\", \"";
8734 var35 = 53;
8735 var36 = string__NativeString__to_s_with_length(var34, var35);
8736 var33 = var36;
8737 varonce32 = var33;
8738 }
8739 {
8740 var37 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_string__Object__to_s]))(var_mtype) /* to_s on <var_mtype:MType>*/;
8741 }
8742 {
8743 var38 = string__Text__escape_to_c(var37);
8744 }
8745 if (varonce39) {
8746 var40 = varonce39;
8747 } else {
8748 var41 = "\");";
8749 var42 = 3;
8750 var43 = string__NativeString__to_s_with_length(var41, var42);
8751 var40 = var43;
8752 varonce39 = var40;
8753 }
8754 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
8755 { /* var44 = array_instance Array[Object] */
8756 var45 = 3;
8757 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
8758 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var33;
8759 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var38;
8760 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var40;
8761 {
8762 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
8763 }
8764 }
8765 {
8766 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
8767 }
8768 {
8769 abstract_compiler__AbstractCompilerVisitor__add(self, var47); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8770 }
8771 if (varonce48) {
8772 var49 = varonce48;
8773 } else {
8774 var50 = "open type dead";
8775 var51 = 14;
8776 var52 = string__NativeString__to_s_with_length(var50, var51);
8777 var49 = var52;
8778 varonce48 = var49;
8779 }
8780 {
8781 abstract_compiler__AbstractCompilerVisitor__add_abort(self, var49); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
8782 }
8783 if (varonce53) {
8784 var54 = varonce53;
8785 } else {
8786 var55 = "}";
8787 var56 = 1;
8788 var57 = string__NativeString__to_s_with_length(var55, var56);
8789 var54 = var57;
8790 varonce53 = var54;
8791 }
8792 {
8793 abstract_compiler__AbstractCompilerVisitor__add(self, var54); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8794 }
8795 RET_LABEL:;
8796 }
8797 /* method separate_compiler#SeparateCompilerVisitor#hardening_live_open_type for (self: Object, MType) */
8798 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(val* self, val* p0) {
8799 separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(self, p0); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_live_open_type on <self:Object(SeparateCompilerVisitor)>*/
8800 RET_LABEL:;
8801 }
8802 /* method separate_compiler#SeparateCompilerVisitor#hardening_cast_type for (self: SeparateCompilerVisitor, String) */
8803 void separate_compiler__SeparateCompilerVisitor__hardening_cast_type(val* self, val* p0) {
8804 val* var_t /* var t: String */;
8805 val* var /* : AbstractCompiler */;
8806 val* var2 /* : AbstractCompiler */;
8807 val* var3 /* : ModelBuilder */;
8808 val* var5 /* : ModelBuilder */;
8809 val* var6 /* : ToolContext */;
8810 val* var8 /* : ToolContext */;
8811 val* var9 /* : OptionBool */;
8812 val* var11 /* : OptionBool */;
8813 val* var12 /* : nullable Object */;
8814 val* var14 /* : nullable Object */;
8815 short int var15 /* : Bool */;
8816 short int var16 /* : Bool */;
8817 static val* varonce;
8818 val* var17 /* : String */;
8819 char* var18 /* : NativeString */;
8820 long var19 /* : Int */;
8821 val* var20 /* : FlatString */;
8822 static val* varonce21;
8823 val* var22 /* : String */;
8824 char* var23 /* : NativeString */;
8825 long var24 /* : Int */;
8826 val* var25 /* : FlatString */;
8827 val* var26 /* : Array[Object] */;
8828 long var27 /* : Int */;
8829 val* var28 /* : NativeArray[Object] */;
8830 val* var29 /* : String */;
8831 static val* varonce30;
8832 val* var31 /* : String */;
8833 char* var32 /* : NativeString */;
8834 long var33 /* : Int */;
8835 val* var34 /* : FlatString */;
8836 static val* varonce35;
8837 val* var36 /* : String */;
8838 char* var37 /* : NativeString */;
8839 long var38 /* : Int */;
8840 val* var39 /* : FlatString */;
8841 static val* varonce40;
8842 val* var41 /* : String */;
8843 char* var42 /* : NativeString */;
8844 long var43 /* : Int */;
8845 val* var44 /* : FlatString */;
8846 static val* varonce45;
8847 val* var46 /* : String */;
8848 char* var47 /* : NativeString */;
8849 long var48 /* : Int */;
8850 val* var49 /* : FlatString */;
8851 static val* varonce50;
8852 val* var51 /* : String */;
8853 char* var52 /* : NativeString */;
8854 long var53 /* : Int */;
8855 val* var54 /* : FlatString */;
8856 val* var55 /* : Array[Object] */;
8857 long var56 /* : Int */;
8858 val* var57 /* : NativeArray[Object] */;
8859 val* var58 /* : String */;
8860 static val* varonce59;
8861 val* var60 /* : String */;
8862 char* var61 /* : NativeString */;
8863 long var62 /* : Int */;
8864 val* var63 /* : FlatString */;
8865 static val* varonce64;
8866 val* var65 /* : String */;
8867 char* var66 /* : NativeString */;
8868 long var67 /* : Int */;
8869 val* var68 /* : FlatString */;
8870 val* var69 /* : Array[Object] */;
8871 long var70 /* : Int */;
8872 val* var71 /* : NativeArray[Object] */;
8873 val* var72 /* : String */;
8874 static val* varonce73;
8875 val* var74 /* : String */;
8876 char* var75 /* : NativeString */;
8877 long var76 /* : Int */;
8878 val* var77 /* : FlatString */;
8879 static val* varonce78;
8880 val* var79 /* : String */;
8881 char* var80 /* : NativeString */;
8882 long var81 /* : Int */;
8883 val* var82 /* : FlatString */;
8884 var_t = p0;
8885 {
8886 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
8887 var2 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
8888 if (unlikely(var2 == NULL)) {
8889 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8890 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
8891 show_backtrace(1);
8892 }
8893 var = var2;
8894 RET_LABEL1:(void)0;
8895 }
8896 }
8897 {
8898 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var) on <var:AbstractCompiler(SeparateCompiler)> */
8899 var5 = var->attrs[COLOR_abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var:AbstractCompiler(SeparateCompiler)> */
8900 if (unlikely(var5 == NULL)) {
8901 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8902 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 470);
8903 show_backtrace(1);
8904 }
8905 var3 = var5;
8906 RET_LABEL4:(void)0;
8907 }
8908 }
8909 {
8910 { /* Inline modelbuilder#ModelBuilder#toolcontext (var3) on <var3:ModelBuilder> */
8911 var8 = var3->attrs[COLOR_modelbuilder__ModelBuilder___toolcontext].val; /* _toolcontext on <var3:ModelBuilder> */
8912 if (unlikely(var8 == NULL)) {
8913 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8914 PRINT_ERROR(" (%s:%d)\n", "modelbuilder.nit", 106);
8915 show_backtrace(1);
8916 }
8917 var6 = var8;
8918 RET_LABEL7:(void)0;
8919 }
8920 }
8921 {
8922 { /* Inline abstract_compiler#ToolContext#opt_hardening (var6) on <var6:ToolContext> */
8923 var11 = var6->attrs[COLOR_abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <var6:ToolContext> */
8924 if (unlikely(var11 == NULL)) {
8925 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
8926 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 47);
8927 show_backtrace(1);
8928 }
8929 var9 = var11;
8930 RET_LABEL10:(void)0;
8931 }
8932 }
8933 {
8934 { /* Inline opts#Option#value (var9) on <var9:OptionBool> */
8935 var14 = var9->attrs[COLOR_opts__Option___value].val; /* _value on <var9:OptionBool> */
8936 var12 = var14;
8937 RET_LABEL13:(void)0;
8938 }
8939 }
8940 var15 = ((struct instance_kernel__Bool*)var12)->value; /* autounbox from nullable Object to Bool */;
8941 var16 = !var15;
8942 if (var16){
8943 goto RET_LABEL;
8944 } else {
8945 }
8946 if (varonce) {
8947 var17 = varonce;
8948 } else {
8949 var18 = "if(";
8950 var19 = 3;
8951 var20 = string__NativeString__to_s_with_length(var18, var19);
8952 var17 = var20;
8953 varonce = var17;
8954 }
8955 if (varonce21) {
8956 var22 = varonce21;
8957 } else {
8958 var23 = " == NULL) {";
8959 var24 = 11;
8960 var25 = string__NativeString__to_s_with_length(var23, var24);
8961 var22 = var25;
8962 varonce21 = var22;
8963 }
8964 var26 = NEW_array__Array(&type_array__Arraykernel__Object);
8965 { /* var26 = array_instance Array[Object] */
8966 var27 = 3;
8967 var28 = NEW_array__NativeArray(var27, &type_array__NativeArraykernel__Object);
8968 ((struct instance_array__NativeArray*)var28)->values[0] = (val*) var17;
8969 ((struct instance_array__NativeArray*)var28)->values[1] = (val*) var_t;
8970 ((struct instance_array__NativeArray*)var28)->values[2] = (val*) var22;
8971 {
8972 ((void (*)(val*, val*, long))(var26->class->vft[COLOR_array__Array__with_native]))(var26, var28, var27) /* with_native on <var26:Array[Object]>*/;
8973 }
8974 }
8975 {
8976 var29 = ((val* (*)(val*))(var26->class->vft[COLOR_string__Object__to_s]))(var26) /* to_s on <var26:Array[Object]>*/;
8977 }
8978 {
8979 abstract_compiler__AbstractCompilerVisitor__add(self, var29); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
8980 }
8981 if (varonce30) {
8982 var31 = varonce30;
8983 } else {
8984 var32 = "cast type null";
8985 var33 = 14;
8986 var34 = string__NativeString__to_s_with_length(var32, var33);
8987 var31 = var34;
8988 varonce30 = var31;
8989 }
8990 {
8991 abstract_compiler__AbstractCompilerVisitor__add_abort(self, var31); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
8992 }
8993 if (varonce35) {
8994 var36 = varonce35;
8995 } else {
8996 var37 = "}";
8997 var38 = 1;
8998 var39 = string__NativeString__to_s_with_length(var37, var38);
8999 var36 = var39;
9000 varonce35 = var36;
9001 }
9002 {
9003 abstract_compiler__AbstractCompilerVisitor__add(self, var36); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
9004 }
9005 if (varonce40) {
9006 var41 = varonce40;
9007 } else {
9008 var42 = "if(";
9009 var43 = 3;
9010 var44 = string__NativeString__to_s_with_length(var42, var43);
9011 var41 = var44;
9012 varonce40 = var41;
9013 }
9014 if (varonce45) {
9015 var46 = varonce45;
9016 } else {
9017 var47 = "->id == -1 || ";
9018 var48 = 14;
9019 var49 = string__NativeString__to_s_with_length(var47, var48);
9020 var46 = var49;
9021 varonce45 = var46;
9022 }
9023 if (varonce50) {
9024 var51 = varonce50;
9025 } else {
9026 var52 = "->color == -1) {";
9027 var53 = 16;
9028 var54 = string__NativeString__to_s_with_length(var52, var53);
9029 var51 = var54;
9030 varonce50 = var51;
9031 }
9032 var55 = NEW_array__Array(&type_array__Arraykernel__Object);
9033 { /* var55 = array_instance Array[Object] */
9034 var56 = 5;
9035 var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
9036 ((struct instance_array__NativeArray*)var57)->values[0] = (val*) var41;
9037 ((struct instance_array__NativeArray*)var57)->values[1] = (val*) var_t;
9038 ((struct instance_array__NativeArray*)var57)->values[2] = (val*) var46;
9039 ((struct instance_array__NativeArray*)var57)->values[3] = (val*) var_t;
9040 ((struct instance_array__NativeArray*)var57)->values[4] = (val*) var51;
9041 {
9042 ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
9043 }
9044 }
9045 {
9046 var58 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
9047 }
9048 {
9049 abstract_compiler__AbstractCompilerVisitor__add(self, var58); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
9050 }
9051 if (varonce59) {
9052 var60 = varonce59;
9053 } else {
9054 var61 = "PRINT_ERROR(\"Try to cast on a dead cast type: %s\\n\", ";
9055 var62 = 53;
9056 var63 = string__NativeString__to_s_with_length(var61, var62);
9057 var60 = var63;
9058 varonce59 = var60;
9059 }
9060 if (varonce64) {
9061 var65 = varonce64;
9062 } else {
9063 var66 = "->name);";
9064 var67 = 8;
9065 var68 = string__NativeString__to_s_with_length(var66, var67);
9066 var65 = var68;
9067 varonce64 = var65;
9068 }
9069 var69 = NEW_array__Array(&type_array__Arraykernel__Object);
9070 { /* var69 = array_instance Array[Object] */
9071 var70 = 3;
9072 var71 = NEW_array__NativeArray(var70, &type_array__NativeArraykernel__Object);
9073 ((struct instance_array__NativeArray*)var71)->values[0] = (val*) var60;
9074 ((struct instance_array__NativeArray*)var71)->values[1] = (val*) var_t;
9075 ((struct instance_array__NativeArray*)var71)->values[2] = (val*) var65;
9076 {
9077 ((void (*)(val*, val*, long))(var69->class->vft[COLOR_array__Array__with_native]))(var69, var71, var70) /* with_native on <var69:Array[Object]>*/;
9078 }
9079 }
9080 {
9081 var72 = ((val* (*)(val*))(var69->class->vft[COLOR_string__Object__to_s]))(var69) /* to_s on <var69:Array[Object]>*/;
9082 }
9083 {
9084 abstract_compiler__AbstractCompilerVisitor__add(self, var72); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
9085 }
9086 if (varonce73) {
9087 var74 = varonce73;
9088 } else {
9089 var75 = "cast type dead";
9090 var76 = 14;
9091 var77 = string__NativeString__to_s_with_length(var75, var76);
9092 var74 = var77;
9093 varonce73 = var74;
9094 }
9095 {
9096 abstract_compiler__AbstractCompilerVisitor__add_abort(self, var74); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateCompilerVisitor>*/
9097 }
9098 if (varonce78) {
9099 var79 = varonce78;
9100 } else {
9101 var80 = "}";
9102 var81 = 1;
9103 var82 = string__NativeString__to_s_with_length(var80, var81);
9104 var79 = var82;
9105 varonce78 = var79;
9106 }
9107 {
9108 abstract_compiler__AbstractCompilerVisitor__add(self, var79); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateCompilerVisitor>*/
9109 }
9110 RET_LABEL:;
9111 }
9112 /* method separate_compiler#SeparateCompilerVisitor#hardening_cast_type for (self: Object, String) */
9113 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__hardening_cast_type(val* self, val* p0) {
9114 separate_compiler__SeparateCompilerVisitor__hardening_cast_type(self, p0); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_cast_type on <self:Object(SeparateCompilerVisitor)>*/
9115 RET_LABEL:;
9116 }
9117 /* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: SeparateCompilerVisitor, MClassType): RuntimeVariable */
9118 val* separate_compiler__SeparateCompilerVisitor__init_instance(val* self, val* p0) {
9119 val* var /* : RuntimeVariable */;
9120 val* var_mtype /* var mtype: MClassType */;
9121 static val* varonce;
9122 val* var1 /* : String */;
9123 char* var2 /* : NativeString */;
9124 long var3 /* : Int */;
9125 val* var4 /* : FlatString */;
9126 val* var5 /* : MClass */;
9127 val* var7 /* : MClass */;
9128 val* var8 /* : String */;
9129 val* var9 /* : Array[Object] */;
9130 long var10 /* : Int */;
9131 val* var11 /* : NativeArray[Object] */;
9132 val* var12 /* : String */;
9133 val* var13 /* : AbstractCompiler */;
9134 val* var15 /* : AbstractCompiler */;
9135 val* var_compiler /* var compiler: SeparateCompiler */;
9136 short int var16 /* : Bool */;
9137 short int var17 /* : Bool */;
9138 int cltype;
9139 int idtype;
9140 short int var_ /* var : Bool */;
9141 short int var18 /* : Bool */;
9142 short int var20 /* : Bool */;
9143 val* var21 /* : nullable Frame */;
9144 val* var23 /* : nullable Frame */;
9145 val* var24 /* : MPropDef */;
9146 val* var26 /* : MPropDef */;
9147 val* var27 /* : MClassDef */;
9148 val* var29 /* : MClassDef */;
9149 val* var30 /* : nullable Frame */;
9150 val* var32 /* : nullable Frame */;
9151 val* var33 /* : Array[RuntimeVariable] */;
9152 val* var35 /* : Array[RuntimeVariable] */;
9153 val* var36 /* : nullable Object */;
9154 val* var_recv /* var recv: RuntimeVariable */;
9155 val* var37 /* : String */;
9156 val* var_recv_type_info /* var recv_type_info: String */;
9157 val* var38 /* : String */;
9158 static val* varonce39;
9159 val* var40 /* : String */;
9160 char* var41 /* : NativeString */;
9161 long var42 /* : Int */;
9162 val* var43 /* : FlatString */;
9163 val* var44 /* : MClass */;
9164 val* var46 /* : MClass */;
9165 val* var47 /* : String */;
9166 static val* varonce48;
9167 val* var49 /* : String */;
9168 char* var50 /* : NativeString */;
9169 long var51 /* : Int */;
9170 val* var52 /* : FlatString */;
9171 static val* varonce53;
9172 val* var54 /* : String */;
9173 char* var55 /* : NativeString */;
9174 long var56 /* : Int */;
9175 val* var57 /* : FlatString */;
9176 val* var58 /* : String */;
9177 static val* varonce59;
9178 val* var60 /* : String */;
9179 char* var61 /* : NativeString */;
9180 long var62 /* : Int */;
9181 val* var63 /* : FlatString */;
9182 val* var64 /* : Array[Object] */;
9183 long var65 /* : Int */;
9184 val* var66 /* : NativeArray[Object] */;
9185 val* var67 /* : String */;
9186 val* var68 /* : RuntimeVariable */;
9187 val* var69 /* : Set[MType] */;
9188 val* var71 /* : Set[MType] */;
9189 static val* varonce72;
9190 val* var73 /* : String */;
9191 char* var74 /* : NativeString */;
9192 long var75 /* : Int */;
9193 val* var76 /* : FlatString */;
9194 val* var77 /* : String */;
9195 val* var78 /* : Array[Object] */;
9196 long var79 /* : Int */;
9197 val* var80 /* : NativeArray[Object] */;
9198 val* var81 /* : String */;
9199 static val* varonce82;
9200 val* var83 /* : String */;
9201 char* var84 /* : NativeString */;
9202 long var85 /* : Int */;
9203 val* var86 /* : FlatString */;
9204 val* var87 /* : MClass */;
9205 val* var89 /* : MClass */;
9206 val* var90 /* : String */;
9207 static val* varonce91;
9208 val* var92 /* : String */;
9209 char* var93 /* : NativeString */;
9210 long var94 /* : Int */;
9211 val* var95 /* : FlatString */;
9212 val* var96 /* : String */;
9213 static val* varonce97;
9214 val* var98 /* : String */;
9215 char* var99 /* : NativeString */;
9216 long var100 /* : Int */;
9217 val* var101 /* : FlatString */;
9218 val* var102 /* : Array[Object] */;
9219 long var103 /* : Int */;
9220 val* var104 /* : NativeArray[Object] */;
9221 val* var105 /* : String */;
9222 val* var106 /* : RuntimeVariable */;
9223 var_mtype = p0;
9224 if (varonce) {
9225 var1 = varonce;
9226 } else {
9227 var2 = "NEW_";
9228 var3 = 4;
9229 var4 = string__NativeString__to_s_with_length(var2, var3);
9230 var1 = var4;
9231 varonce = var1;
9232 }
9233 {
9234 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
9235 var7 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
9236 if (unlikely(var7 == NULL)) {
9237 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
9238 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
9239 show_backtrace(1);
9240 }
9241 var5 = var7;
9242 RET_LABEL6:(void)0;
9243 }
9244 }
9245 {
9246 var8 = abstract_compiler__MClass__c_name(var5);
9247 }
9248 var9 = NEW_array__Array(&type_array__Arraykernel__Object);
9249 { /* var9 = array_instance Array[Object] */
9250 var10 = 2;
9251 var11 = NEW_array__NativeArray(var10, &type_array__NativeArraykernel__Object);
9252 ((struct instance_array__NativeArray*)var11)->values[0] = (val*) var1;
9253 ((struct instance_array__NativeArray*)var11)->values[1] = (val*) var8;
9254 {
9255 ((void (*)(val*, val*, long))(var9->class->vft[COLOR_array__Array__with_native]))(var9, var11, var10) /* with_native on <var9:Array[Object]>*/;
9256 }
9257 }
9258 {
9259 var12 = ((val* (*)(val*))(var9->class->vft[COLOR_string__Object__to_s]))(var9) /* to_s on <var9:Array[Object]>*/;
9260 }
9261 {
9262 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var12); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
9263 }
9264 {
9265 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateCompilerVisitor> */
9266 var15 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <self:SeparateCompilerVisitor> */
9267 if (unlikely(var15 == NULL)) {
9268 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
9269 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1041);
9270 show_backtrace(1);
9271 }
9272 var13 = var15;
9273 RET_LABEL14:(void)0;
9274 }
9275 }
9276 var_compiler = var13;
9277 /* <var_mtype:MClassType> isa MGenericType */
9278 cltype = type_model__MGenericType.color;
9279 idtype = type_model__MGenericType.id;
9280 if(cltype >= var_mtype->type->table_size) {
9281 var17 = 0;
9282 } else {
9283 var17 = var_mtype->type->type_table[cltype] == idtype;
9284 }
9285 var_ = var17;
9286 if (var17){
9287 {
9288 { /* Inline model#MGenericType#need_anchor (var_mtype) on <var_mtype:MClassType(MGenericType)> */
9289 var20 = var_mtype->attrs[COLOR_model__MGenericType___need_anchor].s; /* _need_anchor on <var_mtype:MClassType(MGenericType)> */
9290 var18 = var20;
9291 RET_LABEL19:(void)0;
9292 }
9293 }
9294 var16 = var18;
9295 } else {
9296 var16 = var_;
9297 }
9298 if (var16){
9299 {
9300 separate_compiler__SeparateCompilerVisitor__hardening_live_open_type(self, var_mtype); /* Direct call separate_compiler#SeparateCompilerVisitor#hardening_live_open_type on <self:SeparateCompilerVisitor>*/
9301 }
9302 {
9303 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
9304 var23 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
9305 var21 = var23;
9306 RET_LABEL22:(void)0;
9307 }
9308 }
9309 if (var21 == NULL) {
9310 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9311 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1450);
9312 show_backtrace(1);
9313 } else {
9314 { /* Inline abstract_compiler#Frame#mpropdef (var21) on <var21:nullable Frame> */
9315 if (unlikely(var21 == NULL)) {
9316 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9317 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
9318 show_backtrace(1);
9319 }
9320 var26 = var21->attrs[COLOR_abstract_compiler__Frame___mpropdef].val; /* _mpropdef on <var21:nullable Frame> */
9321 if (unlikely(var26 == NULL)) {
9322 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
9323 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1681);
9324 show_backtrace(1);
9325 }
9326 var24 = var26;
9327 RET_LABEL25:(void)0;
9328 }
9329 }
9330 {
9331 { /* Inline model#MPropDef#mclassdef (var24) on <var24:MPropDef> */
9332 var29 = var24->attrs[COLOR_model__MPropDef___mclassdef].val; /* _mclassdef on <var24:MPropDef> */
9333 if (unlikely(var29 == NULL)) {
9334 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
9335 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 1895);
9336 show_backtrace(1);
9337 }
9338 var27 = var29;
9339 RET_LABEL28:(void)0;
9340 }
9341 }
9342 {
9343 separate_compiler__SeparateCompilerVisitor__link_unresolved_type(self, var27, var_mtype); /* Direct call separate_compiler#SeparateCompilerVisitor#link_unresolved_type on <self:SeparateCompilerVisitor>*/
9344 }
9345 {
9346 { /* Inline abstract_compiler#AbstractCompilerVisitor#frame (self) on <self:SeparateCompilerVisitor> */
9347 var32 = self->attrs[COLOR_abstract_compiler__AbstractCompilerVisitor___frame].val; /* _frame on <self:SeparateCompilerVisitor> */
9348 var30 = var32;
9349 RET_LABEL31:(void)0;
9350 }
9351 }
9352 if (var30 == NULL) {
9353 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9354 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 1451);
9355 show_backtrace(1);
9356 } else {
9357 { /* Inline abstract_compiler#Frame#arguments (var30) on <var30:nullable Frame> */
9358 if (unlikely(var30 == NULL)) {
9359 PRINT_ERROR("Runtime error: %s", "Receiver is null");
9360 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1688);
9361 show_backtrace(1);
9362 }
9363 var35 = var30->attrs[COLOR_abstract_compiler__Frame___arguments].val; /* _arguments on <var30:nullable Frame> */
9364 if (unlikely(var35 == NULL)) {
9365 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
9366 PRINT_ERROR(" (%s:%d)\n", "compiler/abstract_compiler.nit", 1688);
9367 show_backtrace(1);
9368 }
9369 var33 = var35;
9370 RET_LABEL34:(void)0;
9371 }
9372 }
9373 {
9374 var36 = abstract_collection__SequenceRead__first(var33);
9375 }
9376 var_recv = var36;
9377 {
9378 var37 = separate_compiler__SeparateCompilerVisitor__type_info(self, var_recv);
9379 }
9380 var_recv_type_info = var37;
9381 {
9382 var38 = separate_compiler__MType__const_color(var_mtype);
9383 }
9384 {
9385 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var38); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
9386 }
9387 if (varonce39) {
9388 var40 = varonce39;
9389 } else {
9390 var41 = "NEW_";
9391 var42 = 4;
9392 var43 = string__NativeString__to_s_with_length(var41, var42);
9393 var40 = var43;
9394 varonce39 = var40;
9395 }
9396 {
9397 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType(MGenericType)> */
9398 var46 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType(MGenericType)> */
9399 if (unlikely(var46 == NULL)) {
9400 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
9401 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
9402 show_backtrace(1);
9403 }
9404 var44 = var46;
9405 RET_LABEL45:(void)0;
9406 }
9407 }
9408 {
9409 var47 = abstract_compiler__MClass__c_name(var44);
9410 }
9411 if (varonce48) {
9412 var49 = varonce48;
9413 } else {
9414 var50 = "(";
9415 var51 = 1;
9416 var52 = string__NativeString__to_s_with_length(var50, var51);
9417 var49 = var52;
9418 varonce48 = var49;
9419 }
9420 if (varonce53) {
9421 var54 = varonce53;
9422 } else {
9423 var55 = "->resolution_table->types[";
9424 var56 = 26;
9425 var57 = string__NativeString__to_s_with_length(var55, var56);
9426 var54 = var57;
9427 varonce53 = var54;
9428 }
9429 {
9430 var58 = separate_compiler__MType__const_color(var_mtype);
9431 }
9432 if (varonce59) {
9433 var60 = varonce59;
9434 } else {
9435 var61 = "])";
9436 var62 = 2;
9437 var63 = string__NativeString__to_s_with_length(var61, var62);
9438 var60 = var63;
9439 varonce59 = var60;
9440 }
9441 var64 = NEW_array__Array(&type_array__Arraykernel__Object);
9442 { /* var64 = array_instance Array[Object] */
9443 var65 = 7;
9444 var66 = NEW_array__NativeArray(var65, &type_array__NativeArraykernel__Object);
9445 ((struct instance_array__NativeArray*)var66)->values[0] = (val*) var40;
9446 ((struct instance_array__NativeArray*)var66)->values[1] = (val*) var47;
9447 ((struct instance_array__NativeArray*)var66)->values[2] = (val*) var49;
9448 ((struct instance_array__NativeArray*)var66)->values[3] = (val*) var_recv_type_info;
9449 ((struct instance_array__NativeArray*)var66)->values[4] = (val*) var54;
9450 ((struct instance_array__NativeArray*)var66)->values[5] = (val*) var58;
9451 ((struct instance_array__NativeArray*)var66)->values[6] = (val*) var60;
9452 {
9453 ((void (*)(val*, val*, long))(var64->class->vft[COLOR_array__Array__with_native]))(var64, var66, var65) /* with_native on <var64:Array[Object]>*/;
9454 }
9455 }
9456 {
9457 var67 = ((val* (*)(val*))(var64->class->vft[COLOR_string__Object__to_s]))(var64) /* to_s on <var64:Array[Object]>*/;
9458 }
9459 {
9460 var68 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, var67, var_mtype);
9461 }
9462 var = var68;
9463 goto RET_LABEL;
9464 } else {
9465 }
9466 {
9467 { /* Inline separate_compiler#SeparateCompiler#undead_types (var_compiler) on <var_compiler:SeparateCompiler> */
9468 var71 = var_compiler->attrs[COLOR_separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var_compiler:SeparateCompiler> */
9469 if (unlikely(var71 == NULL)) {
9470 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
9471 PRINT_ERROR(" (%s:%d)\n", "compiler/separate_compiler.nit", 156);
9472 show_backtrace(1);
9473 }
9474 var69 = var71;
9475 RET_LABEL70:(void)0;
9476 }
9477 }
9478 {
9479 ((void (*)(val*, val*))(var69->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var69, var_mtype) /* add on <var69:Set[MType]>*/;
9480 }
9481 if (varonce72) {
9482 var73 = varonce72;
9483 } else {
9484 var74 = "type_";
9485 var75 = 5;
9486 var76 = string__NativeString__to_s_with_length(var74, var75);
9487 var73 = var76;
9488 varonce72 = var73;
9489 }
9490 {
9491 var77 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
9492 }
9493 var78 = NEW_array__Array(&type_array__Arraykernel__Object);
9494 { /* var78 = array_instance Array[Object] */
9495 var79 = 2;
9496 var80 = NEW_array__NativeArray(var79, &type_array__NativeArraykernel__Object);
9497 ((struct instance_array__NativeArray*)var80)->values[0] = (val*) var73;
9498 ((struct instance_array__NativeArray*)var80)->values[1] = (val*) var77;
9499 {
9500 ((void (*)(val*, val*, long))(var78->class->vft[COLOR_array__Array__with_native]))(var78, var80, var79) /* with_native on <var78:Array[Object]>*/;
9501 }
9502 }
9503 {
9504 var81 = ((val* (*)(val*))(var78->class->vft[COLOR_string__Object__to_s]))(var78) /* to_s on <var78:Array[Object]>*/;
9505 }
9506 {
9507 abstract_compiler__AbstractCompilerVisitor__require_declaration(self, var81); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateCompilerVisitor>*/
9508 }
9509 if (varonce82) {
9510 var83 = varonce82;
9511 } else {
9512 var84 = "NEW_";
9513 var85 = 4;
9514 var86 = string__NativeString__to_s_with_length(var84, var85);
9515 var83 = var86;
9516 varonce82 = var83;
9517 }
9518 {
9519 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
9520 var89 = var_mtype->attrs[COLOR_model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
9521 if (unlikely(var89 == NULL)) {
9522 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
9523 PRINT_ERROR(" (%s:%d)\n", "model/model.nit", 986);
9524 show_backtrace(1);
9525 }
9526 var87 = var89;
9527 RET_LABEL88:(void)0;
9528 }
9529 }
9530 {
9531 var90 = abstract_compiler__MClass__c_name(var87);
9532 }
9533 if (varonce91) {
9534 var92 = varonce91;
9535 } else {
9536 var93 = "(&type_";
9537 var94 = 7;
9538 var95 = string__NativeString__to_s_with_length(var93, var94);
9539 var92 = var95;
9540 varonce91 = var92;
9541 }
9542 {
9543 var96 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
9544 }
9545 if (varonce97) {
9546 var98 = varonce97;
9547 } else {
9548 var99 = ")";
9549 var100 = 1;
9550 var101 = string__NativeString__to_s_with_length(var99, var100);
9551 var98 = var101;
9552 varonce97 = var98;
9553 }
9554 var102 = NEW_array__Array(&type_array__Arraykernel__Object);
9555 { /* var102 = array_instance Array[Object] */
9556 var103 = 5;
9557 var104 = NEW_array__NativeArray(var103, &type_array__NativeArraykernel__Object);
9558 ((struct instance_array__NativeArray*)var104)->values[0] = (val*) var83;
9559 ((struct instance_array__NativeArray*)var104)->values[1] = (val*) var90;
9560 ((struct instance_array__NativeArray*)var104)->values[2] = (val*) var92;
9561 ((struct instance_array__NativeArray*)var104)->values[3] = (val*) var96;
9562 ((struct instance_array__NativeArray*)var104)->values[4] = (val*) var98;
9563 {
9564 ((void (*)(val*, val*, long))(var102->class->vft[COLOR_array__Array__with_native]))(var102, var104, var103) /* with_native on <var102:Array[Object]>*/;
9565 }
9566 }
9567 {
9568 var105 = ((val* (*)(val*))(var102->class->vft[COLOR_string__Object__to_s]))(var102) /* to_s on <var102:Array[Object]>*/;
9569 }
9570 {
9571 var106 = abstract_compiler__AbstractCompilerVisitor__new_expr(self, var105, var_mtype);
9572 }
9573 var = var106;
9574 goto RET_LABEL;
9575 RET_LABEL:;
9576 return var;
9577 }
9578 /* method separate_compiler#SeparateCompilerVisitor#init_instance for (self: Object, MClassType): RuntimeVariable */
9579 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__init_instance(val* self, val* p0) {
9580 val* var /* : RuntimeVariable */;
9581 val* var1 /* : RuntimeVariable */;
9582 var1 = separate_compiler__SeparateCompilerVisitor__init_instance(self, p0);
9583 var = var1;
9584 RET_LABEL:;
9585 return var;
9586 }