README: document nit_env.sh
[nit.git] / c_src / nit__separate_compiler.sep.2.c
1 #include "nit__separate_compiler.sep.0.h"
2 /* method separate_compiler#SeparateCompiler#compile_type_resolution_table for (self: SeparateCompiler, MType) */
3 void nit___nit__SeparateCompiler___compile_type_resolution_table(val* self, val* p0) {
4 val* var_mtype /* var mtype: MType */;
5 val* var /* : MType */;
6 short int var1 /* : Bool */;
7 int cltype;
8 int idtype;
9 const char* var_class_name;
10 val* var_mclass_type /* var mclass_type: MClassType */;
11 val* var2 /* : NativeArray[String] */;
12 static val* varonce;
13 static val* varonce3;
14 val* var4 /* : String */;
15 char* var5 /* : NativeString */;
16 val* var6 /* : FlatString */;
17 val* var7 /* : String */;
18 val* var8 /* : String */;
19 val* var10 /* : NativeArray[String] */;
20 static val* varonce9;
21 static val* varonce11;
22 val* var12 /* : String */;
23 char* var13 /* : NativeString */;
24 val* var14 /* : FlatString */;
25 static val* varonce15;
26 val* var16 /* : String */;
27 char* var17 /* : NativeString */;
28 val* var18 /* : FlatString */;
29 val* var19 /* : String */;
30 val* var20 /* : String */;
31 val* var21 /* : AbstractCompilerVisitor */;
32 val* var_v /* var v: SeparateCompilerVisitor */;
33 val* var23 /* : NativeArray[String] */;
34 static val* varonce22;
35 static val* varonce24;
36 val* var25 /* : String */;
37 char* var26 /* : NativeString */;
38 val* var27 /* : FlatString */;
39 static val* varonce28;
40 val* var29 /* : String */;
41 char* var30 /* : NativeString */;
42 val* var31 /* : FlatString */;
43 val* var32 /* : String */;
44 val* var33 /* : String */;
45 static val* varonce34;
46 val* var35 /* : String */;
47 char* var36 /* : NativeString */;
48 val* var37 /* : FlatString */;
49 static val* varonce38;
50 val* var39 /* : String */;
51 char* var40 /* : NativeString */;
52 val* var41 /* : FlatString */;
53 val* var42 /* : Map[MClassType, Array[nullable MType]] */;
54 val* var44 /* : Map[MClassType, Array[nullable MType]] */;
55 val* var45 /* : nullable Object */;
56 val* var_ /* var : Array[nullable MType] */;
57 val* var46 /* : ArrayIterator[nullable Object] */;
58 val* var_47 /* var : ArrayIterator[nullable MType] */;
59 short int var48 /* : Bool */;
60 val* var49 /* : nullable Object */;
61 val* var_t /* var t: nullable MType */;
62 short int var50 /* : Bool */;
63 short int var51 /* : Bool */;
64 val* var_other /* var other: nullable Object */;
65 short int var53 /* : Bool */;
66 short int var55 /* : Bool */;
67 static val* varonce56;
68 val* var57 /* : String */;
69 char* var58 /* : NativeString */;
70 val* var59 /* : FlatString */;
71 val* var60 /* : MModule */;
72 val* var62 /* : MModule */;
73 val* var63 /* : MType */;
74 val* var_tv /* var tv: MType */;
75 val* var64 /* : Map[MType, Int] */;
76 val* var66 /* : Map[MType, Int] */;
77 short int var67 /* : Bool */;
78 val* var69 /* : NativeArray[String] */;
79 static val* varonce68;
80 static val* varonce70;
81 val* var71 /* : String */;
82 char* var72 /* : NativeString */;
83 val* var73 /* : FlatString */;
84 val* var74 /* : String */;
85 val* var75 /* : String */;
86 val* var77 /* : NativeArray[String] */;
87 static val* varonce76;
88 static val* varonce78;
89 val* var79 /* : String */;
90 char* var80 /* : NativeString */;
91 val* var81 /* : FlatString */;
92 static val* varonce82;
93 val* var83 /* : String */;
94 char* var84 /* : NativeString */;
95 val* var85 /* : FlatString */;
96 static val* varonce86;
97 val* var87 /* : String */;
98 char* var88 /* : NativeString */;
99 val* var89 /* : FlatString */;
100 static val* varonce90;
101 val* var91 /* : String */;
102 char* var92 /* : NativeString */;
103 val* var93 /* : FlatString */;
104 val* var94 /* : String */;
105 val* var95 /* : String */;
106 val* var96 /* : String */;
107 val* var97 /* : String */;
108 val* var99 /* : NativeArray[String] */;
109 static val* varonce98;
110 static val* varonce100;
111 val* var101 /* : String */;
112 char* var102 /* : NativeString */;
113 val* var103 /* : FlatString */;
114 static val* varonce104;
115 val* var105 /* : String */;
116 char* var106 /* : NativeString */;
117 val* var107 /* : FlatString */;
118 static val* varonce108;
119 val* var109 /* : String */;
120 char* var110 /* : NativeString */;
121 val* var111 /* : FlatString */;
122 val* var112 /* : String */;
123 val* var113 /* : String */;
124 val* var114 /* : String */;
125 static val* varonce115;
126 val* var116 /* : String */;
127 char* var117 /* : NativeString */;
128 val* var118 /* : FlatString */;
129 static val* varonce119;
130 val* var120 /* : String */;
131 char* var121 /* : NativeString */;
132 val* var122 /* : FlatString */;
133 var_mtype = p0;
134 {
135 var = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MType__undecorate]))(var_mtype); /* undecorate on <var_mtype:MType>*/
136 }
137 /* <var:MType> isa MClassType */
138 cltype = type_nit__MClassType.color;
139 idtype = type_nit__MClassType.id;
140 if(cltype >= var->type->table_size) {
141 var1 = 0;
142 } else {
143 var1 = var->type->type_table[cltype] == idtype;
144 }
145 if (unlikely(!var1)) {
146 var_class_name = var == NULL ? "null" : var->type->name;
147 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
148 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 780);
149 fatal_exit(1);
150 }
151 var_mclass_type = var;
152 if (unlikely(varonce==NULL)) {
153 var2 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
154 if (likely(varonce3!=NULL)) {
155 var4 = varonce3;
156 } else {
157 var5 = "resolution_table_";
158 var6 = standard___standard__NativeString___to_s_with_length(var5, 17l);
159 var4 = var6;
160 varonce3 = var4;
161 }
162 ((struct instance_standard__NativeArray*)var2)->values[0]=var4;
163 } else {
164 var2 = varonce;
165 varonce = NULL;
166 }
167 {
168 var7 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType>*/
169 }
170 ((struct instance_standard__NativeArray*)var2)->values[1]=var7;
171 {
172 var8 = ((val*(*)(val* self))(var2->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var2); /* native_to_s on <var2:NativeArray[String]>*/
173 }
174 varonce = var2;
175 if (unlikely(varonce9==NULL)) {
176 var10 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
177 if (likely(varonce11!=NULL)) {
178 var12 = varonce11;
179 } else {
180 var13 = "extern const struct types resolution_table_";
181 var14 = standard___standard__NativeString___to_s_with_length(var13, 43l);
182 var12 = var14;
183 varonce11 = var12;
184 }
185 ((struct instance_standard__NativeArray*)var10)->values[0]=var12;
186 if (likely(varonce15!=NULL)) {
187 var16 = varonce15;
188 } else {
189 var17 = ";";
190 var18 = standard___standard__NativeString___to_s_with_length(var17, 1l);
191 var16 = var18;
192 varonce15 = var16;
193 }
194 ((struct instance_standard__NativeArray*)var10)->values[2]=var16;
195 } else {
196 var10 = varonce9;
197 varonce9 = NULL;
198 }
199 {
200 var19 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType>*/
201 }
202 ((struct instance_standard__NativeArray*)var10)->values[1]=var19;
203 {
204 var20 = ((val*(*)(val* self))(var10->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var10); /* native_to_s on <var10:NativeArray[String]>*/
205 }
206 varonce9 = var10;
207 {
208 nit___nit__AbstractCompiler___provide_declaration(self, var8, var20); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
209 }
210 {
211 var21 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompiler__new_visitor]))(self); /* new_visitor on <self:SeparateCompiler>*/
212 }
213 var_v = var21;
214 if (unlikely(varonce22==NULL)) {
215 var23 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
216 if (likely(varonce24!=NULL)) {
217 var25 = varonce24;
218 } else {
219 var26 = "const struct types resolution_table_";
220 var27 = standard___standard__NativeString___to_s_with_length(var26, 36l);
221 var25 = var27;
222 varonce24 = var25;
223 }
224 ((struct instance_standard__NativeArray*)var23)->values[0]=var25;
225 if (likely(varonce28!=NULL)) {
226 var29 = varonce28;
227 } else {
228 var30 = " = {";
229 var31 = standard___standard__NativeString___to_s_with_length(var30, 4l);
230 var29 = var31;
231 varonce28 = var29;
232 }
233 ((struct instance_standard__NativeArray*)var23)->values[2]=var29;
234 } else {
235 var23 = varonce22;
236 varonce22 = NULL;
237 }
238 {
239 var32 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MType>*/
240 }
241 ((struct instance_standard__NativeArray*)var23)->values[1]=var32;
242 {
243 var33 = ((val*(*)(val* self))(var23->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var23); /* native_to_s on <var23:NativeArray[String]>*/
244 }
245 varonce22 = var23;
246 {
247 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var33); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
248 }
249 if (likely(varonce34!=NULL)) {
250 var35 = varonce34;
251 } else {
252 var36 = "0, /* dummy */";
253 var37 = standard___standard__NativeString___to_s_with_length(var36, 14l);
254 var35 = var37;
255 varonce34 = var35;
256 }
257 {
258 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var35); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
259 }
260 if (likely(varonce38!=NULL)) {
261 var39 = varonce38;
262 } else {
263 var40 = "{";
264 var41 = standard___standard__NativeString___to_s_with_length(var40, 1l);
265 var39 = var41;
266 varonce38 = var39;
267 }
268 {
269 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var39); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
270 }
271 {
272 { /* Inline separate_compiler#SeparateCompiler#resolution_tables (self) on <self:SeparateCompiler> */
273 var44 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___resolution_tables].val; /* _resolution_tables on <self:SeparateCompiler> */
274 if (unlikely(var44 == NULL)) {
275 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _resolution_tables");
276 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1052);
277 fatal_exit(1);
278 }
279 var42 = var44;
280 RET_LABEL43:(void)0;
281 }
282 }
283 {
284 var45 = ((val*(*)(val* self, val* p0))((((long)var42&3)?class_info[((long)var42&3)]:var42->class)->vft[COLOR_standard__abstract_collection__MapRead___91d_93d]))(var42, var_mclass_type); /* [] on <var42:Map[MClassType, Array[nullable MType]]>*/
285 }
286 var_ = var45;
287 {
288 var46 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
289 }
290 var_47 = var46;
291 for(;;) {
292 {
293 var48 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_47);
294 }
295 if (var48){
296 {
297 var49 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_47);
298 }
299 var_t = var49;
300 if (var_t == NULL) {
301 var50 = 1; /* is null */
302 } else {
303 var50 = 0; /* arg is null but recv is not */
304 }
305 if (0) {
306 { /* Inline kernel#Object#== (var_t,((val*)NULL)) on <var_t:nullable MType> */
307 var_other = ((val*)NULL);
308 {
309 { /* Inline kernel#Object#is_same_instance (var_t,var_other) on <var_t:nullable MType(MType)> */
310 var55 = var_t == var_other;
311 var53 = var55;
312 goto RET_LABEL54;
313 RET_LABEL54:(void)0;
314 }
315 }
316 var51 = var53;
317 goto RET_LABEL52;
318 RET_LABEL52:(void)0;
319 }
320 var50 = var51;
321 }
322 if (var50){
323 if (likely(varonce56!=NULL)) {
324 var57 = varonce56;
325 } else {
326 var58 = "NULL, /* empty */";
327 var59 = standard___standard__NativeString___to_s_with_length(var58, 17l);
328 var57 = var59;
329 varonce56 = var57;
330 }
331 {
332 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var57); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
333 }
334 } else {
335 {
336 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
337 var62 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
338 if (unlikely(var62 == NULL)) {
339 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
340 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
341 fatal_exit(1);
342 }
343 var60 = var62;
344 RET_LABEL61:(void)0;
345 }
346 }
347 {
348 var63 = ((val*(*)(val* self, val* p0, val* p1, val* p2, short int p3))(var_t->class->vft[COLOR_nit__model__MType__resolve_for]))(var_t, var_mclass_type, var_mclass_type, var60, 1); /* resolve_for on <var_t:nullable MType(MType)>*/
349 }
350 var_tv = var63;
351 {
352 { /* Inline separate_compiler#SeparateCompiler#type_ids (self) on <self:SeparateCompiler> */
353 var66 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___type_ids].val; /* _type_ids on <self:SeparateCompiler> */
354 if (unlikely(var66 == NULL)) {
355 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_ids");
356 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 149);
357 fatal_exit(1);
358 }
359 var64 = var66;
360 RET_LABEL65:(void)0;
361 }
362 }
363 {
364 var67 = ((short int(*)(val* self, val* p0))((((long)var64&3)?class_info[((long)var64&3)]:var64->class)->vft[COLOR_standard__abstract_collection__MapRead__has_key]))(var64, var_tv); /* has_key on <var64:Map[MType, Int]>*/
365 }
366 if (var67){
367 if (unlikely(varonce68==NULL)) {
368 var69 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
369 if (likely(varonce70!=NULL)) {
370 var71 = varonce70;
371 } else {
372 var72 = "type_";
373 var73 = standard___standard__NativeString___to_s_with_length(var72, 5l);
374 var71 = var73;
375 varonce70 = var71;
376 }
377 ((struct instance_standard__NativeArray*)var69)->values[0]=var71;
378 } else {
379 var69 = varonce68;
380 varonce68 = NULL;
381 }
382 {
383 var74 = ((val*(*)(val* self))(var_tv->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_tv); /* c_name on <var_tv:MType>*/
384 }
385 ((struct instance_standard__NativeArray*)var69)->values[1]=var74;
386 {
387 var75 = ((val*(*)(val* self))(var69->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var69); /* native_to_s on <var69:NativeArray[String]>*/
388 }
389 varonce68 = var69;
390 {
391 nit___nit__AbstractCompilerVisitor___require_declaration(var_v, var75); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
392 }
393 if (unlikely(varonce76==NULL)) {
394 var77 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String);
395 if (likely(varonce78!=NULL)) {
396 var79 = varonce78;
397 } else {
398 var80 = "&type_";
399 var81 = standard___standard__NativeString___to_s_with_length(var80, 6l);
400 var79 = var81;
401 varonce78 = var79;
402 }
403 ((struct instance_standard__NativeArray*)var77)->values[0]=var79;
404 if (likely(varonce82!=NULL)) {
405 var83 = varonce82;
406 } else {
407 var84 = ", /* ";
408 var85 = standard___standard__NativeString___to_s_with_length(var84, 5l);
409 var83 = var85;
410 varonce82 = var83;
411 }
412 ((struct instance_standard__NativeArray*)var77)->values[2]=var83;
413 if (likely(varonce86!=NULL)) {
414 var87 = varonce86;
415 } else {
416 var88 = ": ";
417 var89 = standard___standard__NativeString___to_s_with_length(var88, 2l);
418 var87 = var89;
419 varonce86 = var87;
420 }
421 ((struct instance_standard__NativeArray*)var77)->values[4]=var87;
422 if (likely(varonce90!=NULL)) {
423 var91 = varonce90;
424 } else {
425 var92 = " */";
426 var93 = standard___standard__NativeString___to_s_with_length(var92, 3l);
427 var91 = var93;
428 varonce90 = var91;
429 }
430 ((struct instance_standard__NativeArray*)var77)->values[6]=var91;
431 } else {
432 var77 = varonce76;
433 varonce76 = NULL;
434 }
435 {
436 var94 = ((val*(*)(val* self))(var_tv->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_tv); /* c_name on <var_tv:MType>*/
437 }
438 ((struct instance_standard__NativeArray*)var77)->values[1]=var94;
439 {
440 var95 = ((val*(*)(val* self))(var_t->class->vft[COLOR_standard__string__Object__to_s]))(var_t); /* to_s on <var_t:nullable MType(MType)>*/
441 }
442 ((struct instance_standard__NativeArray*)var77)->values[3]=var95;
443 {
444 var96 = ((val*(*)(val* self))(var_tv->class->vft[COLOR_standard__string__Object__to_s]))(var_tv); /* to_s on <var_tv:MType>*/
445 }
446 ((struct instance_standard__NativeArray*)var77)->values[5]=var96;
447 {
448 var97 = ((val*(*)(val* self))(var77->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var77); /* native_to_s on <var77:NativeArray[String]>*/
449 }
450 varonce76 = var77;
451 {
452 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var97); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
453 }
454 } else {
455 if (unlikely(varonce98==NULL)) {
456 var99 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
457 if (likely(varonce100!=NULL)) {
458 var101 = varonce100;
459 } else {
460 var102 = "NULL, /* empty (";
461 var103 = standard___standard__NativeString___to_s_with_length(var102, 16l);
462 var101 = var103;
463 varonce100 = var101;
464 }
465 ((struct instance_standard__NativeArray*)var99)->values[0]=var101;
466 if (likely(varonce104!=NULL)) {
467 var105 = varonce104;
468 } else {
469 var106 = ": ";
470 var107 = standard___standard__NativeString___to_s_with_length(var106, 2l);
471 var105 = var107;
472 varonce104 = var105;
473 }
474 ((struct instance_standard__NativeArray*)var99)->values[2]=var105;
475 if (likely(varonce108!=NULL)) {
476 var109 = varonce108;
477 } else {
478 var110 = " not a live type) */";
479 var111 = standard___standard__NativeString___to_s_with_length(var110, 20l);
480 var109 = var111;
481 varonce108 = var109;
482 }
483 ((struct instance_standard__NativeArray*)var99)->values[4]=var109;
484 } else {
485 var99 = varonce98;
486 varonce98 = NULL;
487 }
488 {
489 var112 = ((val*(*)(val* self))(var_t->class->vft[COLOR_standard__string__Object__to_s]))(var_t); /* to_s on <var_t:nullable MType(MType)>*/
490 }
491 ((struct instance_standard__NativeArray*)var99)->values[1]=var112;
492 {
493 var113 = ((val*(*)(val* self))(var_tv->class->vft[COLOR_standard__string__Object__to_s]))(var_tv); /* to_s on <var_tv:MType>*/
494 }
495 ((struct instance_standard__NativeArray*)var99)->values[3]=var113;
496 {
497 var114 = ((val*(*)(val* self))(var99->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var99); /* native_to_s on <var99:NativeArray[String]>*/
498 }
499 varonce98 = var99;
500 {
501 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var114); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
502 }
503 }
504 }
505 {
506 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_47); /* Direct call array#ArrayIterator#next on <var_47:ArrayIterator[nullable MType]>*/
507 }
508 } else {
509 goto BREAK_label;
510 }
511 }
512 BREAK_label: (void)0;
513 {
514 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_47); /* Direct call array#ArrayIterator#finish on <var_47:ArrayIterator[nullable MType]>*/
515 }
516 if (likely(varonce115!=NULL)) {
517 var116 = varonce115;
518 } else {
519 var117 = "}";
520 var118 = standard___standard__NativeString___to_s_with_length(var117, 1l);
521 var116 = var118;
522 varonce115 = var116;
523 }
524 {
525 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var116); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
526 }
527 if (likely(varonce119!=NULL)) {
528 var120 = varonce119;
529 } else {
530 var121 = "};";
531 var122 = standard___standard__NativeString___to_s_with_length(var121, 2l);
532 var120 = var122;
533 varonce119 = var120;
534 }
535 {
536 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var120); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
537 }
538 RET_LABEL:;
539 }
540 /* method separate_compiler#SeparateCompiler#compile_class_to_c for (self: SeparateCompiler, MClass) */
541 void nit___nit__SeparateCompiler___compile_class_to_c(val* self, val* p0) {
542 val* var_mclass /* var mclass: MClass */;
543 val* var /* : MClassDef */;
544 val* var2 /* : MClassDef */;
545 val* var3 /* : MClassType */;
546 val* var5 /* : MClassType */;
547 val* var_mtype /* var mtype: MClassType */;
548 val* var6 /* : String */;
549 val* var_c_name /* var c_name: String */;
550 val* var7 /* : AbstractCompilerVisitor */;
551 val* var_v /* var v: SeparateCompilerVisitor */;
552 val* var8 /* : nullable RapidTypeAnalysis */;
553 val* var10 /* : nullable RapidTypeAnalysis */;
554 val* var_rta /* var rta: nullable RapidTypeAnalysis */;
555 short int var11 /* : Bool */;
556 short int var12 /* : Bool */;
557 short int var13 /* : Bool */;
558 short int var14 /* : Bool */;
559 short int var15 /* : Bool */;
560 short int var16 /* : Bool */;
561 val* var_other /* var other: nullable Object */;
562 short int var18 /* : Bool */;
563 short int var19 /* : Bool */;
564 short int var_ /* var : Bool */;
565 val* var20 /* : HashSet[MClass] */;
566 val* var22 /* : HashSet[MClass] */;
567 short int var23 /* : Bool */;
568 short int var24 /* : Bool */;
569 short int var_25 /* var : Bool */;
570 short int var26 /* : Bool */;
571 short int var27 /* : Bool */;
572 short int var_28 /* var : Bool */;
573 val* var29 /* : String */;
574 val* var31 /* : String */;
575 static val* varonce;
576 val* var32 /* : String */;
577 char* var33 /* : NativeString */;
578 val* var34 /* : FlatString */;
579 short int var35 /* : Bool */;
580 short int var37 /* : Bool */;
581 short int var38 /* : Bool */;
582 short int var_39 /* var : Bool */;
583 val* var40 /* : String */;
584 val* var42 /* : String */;
585 static val* varonce43;
586 val* var44 /* : String */;
587 char* var45 /* : NativeString */;
588 val* var46 /* : FlatString */;
589 short int var47 /* : Bool */;
590 short int var49 /* : Bool */;
591 short int var50 /* : Bool */;
592 short int var_is_dead /* var is_dead: Bool */;
593 val* var52 /* : NativeArray[String] */;
594 static val* varonce51;
595 static val* varonce53;
596 val* var54 /* : String */;
597 char* var55 /* : NativeString */;
598 val* var56 /* : FlatString */;
599 static val* varonce57;
600 val* var58 /* : String */;
601 char* var59 /* : NativeString */;
602 val* var60 /* : FlatString */;
603 val* var61 /* : String */;
604 short int var62 /* : Bool */;
605 val* var64 /* : NativeArray[String] */;
606 static val* varonce63;
607 static val* varonce65;
608 val* var66 /* : String */;
609 char* var67 /* : NativeString */;
610 val* var68 /* : FlatString */;
611 val* var69 /* : String */;
612 val* var71 /* : NativeArray[String] */;
613 static val* varonce70;
614 static val* varonce72;
615 val* var73 /* : String */;
616 char* var74 /* : NativeString */;
617 val* var75 /* : FlatString */;
618 static val* varonce76;
619 val* var77 /* : String */;
620 char* var78 /* : NativeString */;
621 val* var79 /* : FlatString */;
622 val* var80 /* : String */;
623 val* var82 /* : NativeArray[String] */;
624 static val* varonce81;
625 static val* varonce83;
626 val* var84 /* : String */;
627 char* var85 /* : NativeString */;
628 val* var86 /* : FlatString */;
629 static val* varonce87;
630 val* var88 /* : String */;
631 char* var89 /* : NativeString */;
632 val* var90 /* : FlatString */;
633 val* var91 /* : String */;
634 val* var93 /* : NativeArray[String] */;
635 static val* varonce92;
636 static val* varonce94;
637 val* var95 /* : String */;
638 char* var96 /* : NativeString */;
639 val* var97 /* : FlatString */;
640 long var98 /* : Int */;
641 val* var99 /* : String */;
642 val* var100 /* : String */;
643 static val* varonce101;
644 val* var102 /* : String */;
645 char* var103 /* : NativeString */;
646 val* var104 /* : FlatString */;
647 val* var105 /* : Map[MClass, Array[nullable MPropDef]] */;
648 val* var107 /* : Map[MClass, Array[nullable MPropDef]] */;
649 val* var108 /* : nullable Object */;
650 val* var_vft /* var vft: nullable Array[nullable MPropDef] */;
651 short int var109 /* : Bool */;
652 short int var110 /* : Bool */;
653 short int var112 /* : Bool */;
654 short int var113 /* : Bool */;
655 long var_i /* var i: Int */;
656 long var114 /* : Int */;
657 long var116 /* : Int */;
658 long var_117 /* var : Int */;
659 short int var118 /* : Bool */;
660 short int var120 /* : Bool */;
661 int cltype;
662 int idtype;
663 const char* var_class_name;
664 short int var121 /* : Bool */;
665 val* var122 /* : nullable Object */;
666 val* var_mpropdef /* var mpropdef: nullable MPropDef */;
667 short int var123 /* : Bool */;
668 short int var124 /* : Bool */;
669 val* var_other126 /* var other: nullable Object */;
670 short int var127 /* : Bool */;
671 short int var129 /* : Bool */;
672 static val* varonce130;
673 val* var131 /* : String */;
674 char* var132 /* : NativeString */;
675 val* var133 /* : FlatString */;
676 short int var134 /* : Bool */;
677 int cltype135;
678 int idtype136;
679 short int var137 /* : Bool */;
680 short int var138 /* : Bool */;
681 short int var139 /* : Bool */;
682 short int var141 /* : Bool */;
683 short int var142 /* : Bool */;
684 short int var_143 /* var : Bool */;
685 val* var144 /* : HashSet[MMethodDef] */;
686 val* var146 /* : HashSet[MMethodDef] */;
687 short int var147 /* : Bool */;
688 short int var148 /* : Bool */;
689 val* var150 /* : NativeArray[String] */;
690 static val* varonce149;
691 static val* varonce151;
692 val* var152 /* : String */;
693 char* var153 /* : NativeString */;
694 val* var154 /* : FlatString */;
695 static val* varonce155;
696 val* var156 /* : String */;
697 char* var157 /* : NativeString */;
698 val* var158 /* : FlatString */;
699 static val* varonce159;
700 val* var160 /* : String */;
701 char* var161 /* : NativeString */;
702 val* var162 /* : FlatString */;
703 static val* varonce163;
704 val* var164 /* : String */;
705 char* var165 /* : NativeString */;
706 val* var166 /* : FlatString */;
707 val* var167 /* : MModule */;
708 val* var169 /* : MModule */;
709 val* var170 /* : String */;
710 val* var171 /* : String */;
711 val* var172 /* : String */;
712 val* var173 /* : String */;
713 val* var174 /* : SeparateRuntimeFunction */;
714 val* var_rf /* var rf: SeparateRuntimeFunction */;
715 val* var175 /* : String */;
716 val* var177 /* : NativeArray[String] */;
717 static val* varonce176;
718 static val* varonce178;
719 val* var179 /* : String */;
720 char* var180 /* : NativeString */;
721 val* var181 /* : FlatString */;
722 static val* varonce182;
723 val* var183 /* : String */;
724 char* var184 /* : NativeString */;
725 val* var185 /* : FlatString */;
726 static val* varonce186;
727 val* var187 /* : String */;
728 char* var188 /* : NativeString */;
729 val* var189 /* : FlatString */;
730 static val* varonce190;
731 val* var191 /* : String */;
732 char* var192 /* : NativeString */;
733 val* var193 /* : FlatString */;
734 static val* varonce194;
735 val* var195 /* : String */;
736 char* var196 /* : NativeString */;
737 val* var197 /* : FlatString */;
738 val* var198 /* : String */;
739 val* var199 /* : MModule */;
740 val* var201 /* : MModule */;
741 val* var202 /* : String */;
742 val* var203 /* : String */;
743 val* var204 /* : String */;
744 val* var205 /* : String */;
745 long var206 /* : Int */;
746 static val* varonce208;
747 val* var209 /* : String */;
748 char* var210 /* : NativeString */;
749 val* var211 /* : FlatString */;
750 static val* varonce212;
751 val* var213 /* : String */;
752 char* var214 /* : NativeString */;
753 val* var215 /* : FlatString */;
754 short int var216 /* : Bool */;
755 short int var217 /* : Bool */;
756 short int var_218 /* var : Bool */;
757 val* var219 /* : MClass */;
758 val* var221 /* : MClass */;
759 val* var222 /* : String */;
760 val* var224 /* : String */;
761 static val* varonce225;
762 val* var226 /* : String */;
763 char* var227 /* : NativeString */;
764 val* var228 /* : FlatString */;
765 short int var229 /* : Bool */;
766 short int var230 /* : Bool */;
767 short int var232 /* : Bool */;
768 val* var233 /* : CodeWriter */;
769 val* var235 /* : CodeWriter */;
770 val* var237 /* : NativeArray[String] */;
771 static val* varonce236;
772 static val* varonce238;
773 val* var239 /* : String */;
774 char* var240 /* : NativeString */;
775 val* var241 /* : FlatString */;
776 static val* varonce242;
777 val* var243 /* : String */;
778 char* var244 /* : NativeString */;
779 val* var245 /* : FlatString */;
780 val* var246 /* : String */;
781 val* var247 /* : CodeWriter */;
782 val* var249 /* : CodeWriter */;
783 static val* varonce250;
784 val* var251 /* : String */;
785 char* var252 /* : NativeString */;
786 val* var253 /* : FlatString */;
787 val* var254 /* : CodeWriter */;
788 val* var256 /* : CodeWriter */;
789 static val* varonce257;
790 val* var258 /* : String */;
791 char* var259 /* : NativeString */;
792 val* var260 /* : FlatString */;
793 val* var261 /* : CodeWriter */;
794 val* var263 /* : CodeWriter */;
795 val* var265 /* : NativeArray[String] */;
796 static val* varonce264;
797 static val* varonce266;
798 val* var267 /* : String */;
799 char* var268 /* : NativeString */;
800 val* var269 /* : FlatString */;
801 val* var270 /* : String */;
802 val* var271 /* : String */;
803 val* var272 /* : CodeWriter */;
804 val* var274 /* : CodeWriter */;
805 static val* varonce275;
806 val* var276 /* : String */;
807 char* var277 /* : NativeString */;
808 val* var278 /* : FlatString */;
809 short int var279 /* : Bool */;
810 val* var280 /* : HashSet[MClassType] */;
811 val* var282 /* : HashSet[MClassType] */;
812 short int var283 /* : Bool */;
813 short int var284 /* : Bool */;
814 short int var_285 /* var : Bool */;
815 val* var286 /* : MClass */;
816 val* var288 /* : MClass */;
817 val* var289 /* : String */;
818 val* var291 /* : String */;
819 static val* varonce292;
820 val* var293 /* : String */;
821 char* var294 /* : NativeString */;
822 val* var295 /* : FlatString */;
823 short int var296 /* : Bool */;
824 short int var298 /* : Bool */;
825 short int var299 /* : Bool */;
826 val* var301 /* : NativeArray[String] */;
827 static val* varonce300;
828 static val* varonce302;
829 val* var303 /* : String */;
830 char* var304 /* : NativeString */;
831 val* var305 /* : FlatString */;
832 val* var306 /* : String */;
833 val* var308 /* : NativeArray[String] */;
834 static val* varonce307;
835 static val* varonce309;
836 val* var310 /* : String */;
837 char* var311 /* : NativeString */;
838 val* var312 /* : FlatString */;
839 static val* varonce313;
840 val* var314 /* : String */;
841 char* var315 /* : NativeString */;
842 val* var316 /* : FlatString */;
843 static val* varonce317;
844 val* var318 /* : String */;
845 char* var319 /* : NativeString */;
846 val* var320 /* : FlatString */;
847 val* var321 /* : String */;
848 val* var322 /* : String */;
849 val* var324 /* : NativeArray[String] */;
850 static val* varonce323;
851 static val* varonce325;
852 val* var326 /* : String */;
853 char* var327 /* : NativeString */;
854 val* var328 /* : FlatString */;
855 static val* varonce329;
856 val* var330 /* : String */;
857 char* var331 /* : NativeString */;
858 val* var332 /* : FlatString */;
859 val* var333 /* : String */;
860 val* var334 /* : String */;
861 val* var336 /* : NativeArray[String] */;
862 static val* varonce335;
863 static val* varonce337;
864 val* var338 /* : String */;
865 char* var339 /* : NativeString */;
866 val* var340 /* : FlatString */;
867 static val* varonce341;
868 val* var342 /* : String */;
869 char* var343 /* : NativeString */;
870 val* var344 /* : FlatString */;
871 static val* varonce345;
872 val* var346 /* : String */;
873 char* var347 /* : NativeString */;
874 val* var348 /* : FlatString */;
875 val* var349 /* : String */;
876 val* var350 /* : String */;
877 val* var351 /* : String */;
878 val* var353 /* : NativeArray[String] */;
879 static val* varonce352;
880 static val* varonce354;
881 val* var355 /* : String */;
882 char* var356 /* : NativeString */;
883 val* var357 /* : FlatString */;
884 static val* varonce358;
885 val* var359 /* : String */;
886 char* var360 /* : NativeString */;
887 val* var361 /* : FlatString */;
888 static val* varonce362;
889 val* var363 /* : String */;
890 char* var364 /* : NativeString */;
891 val* var365 /* : FlatString */;
892 val* var366 /* : String */;
893 val* var367 /* : AbstractCompiler */;
894 val* var369 /* : AbstractCompiler */;
895 val* var370 /* : Set[MType] */;
896 val* var372 /* : Set[MType] */;
897 val* var374 /* : NativeArray[String] */;
898 static val* varonce373;
899 static val* varonce375;
900 val* var376 /* : String */;
901 char* var377 /* : NativeString */;
902 val* var378 /* : FlatString */;
903 val* var379 /* : String */;
904 val* var381 /* : NativeArray[String] */;
905 static val* varonce380;
906 static val* varonce382;
907 val* var383 /* : String */;
908 char* var384 /* : NativeString */;
909 val* var385 /* : FlatString */;
910 static val* varonce386;
911 val* var387 /* : String */;
912 char* var388 /* : NativeString */;
913 val* var389 /* : FlatString */;
914 val* var390 /* : String */;
915 val* var392 /* : NativeArray[String] */;
916 static val* varonce391;
917 static val* varonce393;
918 val* var394 /* : String */;
919 char* var395 /* : NativeString */;
920 val* var396 /* : FlatString */;
921 val* var397 /* : String */;
922 val* var399 /* : NativeArray[String] */;
923 static val* varonce398;
924 static val* varonce400;
925 val* var401 /* : String */;
926 char* var402 /* : NativeString */;
927 val* var403 /* : FlatString */;
928 static val* varonce404;
929 val* var405 /* : String */;
930 char* var406 /* : NativeString */;
931 val* var407 /* : FlatString */;
932 val* var408 /* : String */;
933 static val* varonce409;
934 val* var410 /* : String */;
935 char* var411 /* : NativeString */;
936 val* var412 /* : FlatString */;
937 static val* varonce413;
938 val* var414 /* : String */;
939 char* var415 /* : NativeString */;
940 val* var416 /* : FlatString */;
941 static val* varonce417;
942 val* var418 /* : String */;
943 char* var419 /* : NativeString */;
944 val* var420 /* : FlatString */;
945 val* var421 /* : MClass */;
946 val* var423 /* : MClass */;
947 val* var424 /* : String */;
948 val* var426 /* : String */;
949 static val* varonce427;
950 val* var428 /* : String */;
951 char* var429 /* : NativeString */;
952 val* var430 /* : FlatString */;
953 short int var431 /* : Bool */;
954 short int var433 /* : Bool */;
955 short int var434 /* : Bool */;
956 val* var435 /* : AbstractCompilerVisitor */;
957 val* var437 /* : NativeArray[String] */;
958 static val* varonce436;
959 static val* varonce438;
960 val* var439 /* : String */;
961 char* var440 /* : NativeString */;
962 val* var441 /* : FlatString */;
963 val* var442 /* : String */;
964 val* var444 /* : NativeArray[String] */;
965 static val* varonce443;
966 static val* varonce445;
967 val* var446 /* : String */;
968 char* var447 /* : NativeString */;
969 val* var448 /* : FlatString */;
970 static val* varonce449;
971 val* var450 /* : String */;
972 char* var451 /* : NativeString */;
973 val* var452 /* : FlatString */;
974 val* var453 /* : String */;
975 val* var454 /* : String */;
976 val* var456 /* : NativeArray[String] */;
977 static val* varonce455;
978 static val* varonce457;
979 val* var458 /* : String */;
980 char* var459 /* : NativeString */;
981 val* var460 /* : FlatString */;
982 static val* varonce461;
983 val* var462 /* : String */;
984 char* var463 /* : NativeString */;
985 val* var464 /* : FlatString */;
986 val* var465 /* : String */;
987 val* var466 /* : String */;
988 val* var468 /* : NativeArray[String] */;
989 static val* varonce467;
990 static val* varonce469;
991 val* var470 /* : String */;
992 char* var471 /* : NativeString */;
993 val* var472 /* : FlatString */;
994 static val* varonce473;
995 val* var474 /* : String */;
996 char* var475 /* : NativeString */;
997 val* var476 /* : FlatString */;
998 val* var477 /* : String */;
999 val* var478 /* : String */;
1000 val* var480 /* : NativeArray[String] */;
1001 static val* varonce479;
1002 static val* varonce481;
1003 val* var482 /* : String */;
1004 char* var483 /* : NativeString */;
1005 val* var484 /* : FlatString */;
1006 val* var485 /* : String */;
1007 val* var486 /* : String */;
1008 static val* varonce487;
1009 val* var488 /* : String */;
1010 char* var489 /* : NativeString */;
1011 val* var490 /* : FlatString */;
1012 val* var491 /* : RuntimeVariable */;
1013 val* var_res /* var res: RuntimeVariable */;
1014 val* var494 /* : NativeArray[String] */;
1015 static val* varonce493;
1016 static val* varonce495;
1017 val* var496 /* : String */;
1018 char* var497 /* : NativeString */;
1019 val* var498 /* : FlatString */;
1020 static val* varonce499;
1021 val* var500 /* : String */;
1022 char* var501 /* : NativeString */;
1023 val* var502 /* : FlatString */;
1024 val* var503 /* : String */;
1025 val* var504 /* : String */;
1026 val* var505 /* : String */;
1027 val* var507 /* : NativeArray[String] */;
1028 static val* varonce506;
1029 static val* varonce508;
1030 val* var509 /* : String */;
1031 char* var510 /* : NativeString */;
1032 val* var511 /* : FlatString */;
1033 val* var512 /* : String */;
1034 val* var513 /* : String */;
1035 static val* varonce514;
1036 val* var515 /* : String */;
1037 char* var516 /* : NativeString */;
1038 val* var517 /* : FlatString */;
1039 val* var519 /* : NativeArray[String] */;
1040 static val* varonce518;
1041 static val* varonce520;
1042 val* var521 /* : String */;
1043 char* var522 /* : NativeString */;
1044 val* var523 /* : FlatString */;
1045 val* var524 /* : String */;
1046 val* var526 /* : NativeArray[String] */;
1047 static val* varonce525;
1048 static val* varonce527;
1049 val* var528 /* : String */;
1050 char* var529 /* : NativeString */;
1051 val* var530 /* : FlatString */;
1052 static val* varonce531;
1053 val* var532 /* : String */;
1054 char* var533 /* : NativeString */;
1055 val* var534 /* : FlatString */;
1056 val* var535 /* : String */;
1057 val* var536 /* : String */;
1058 val* var538 /* : NativeArray[String] */;
1059 static val* varonce537;
1060 static val* varonce539;
1061 val* var540 /* : String */;
1062 char* var541 /* : NativeString */;
1063 val* var542 /* : FlatString */;
1064 static val* varonce543;
1065 val* var544 /* : String */;
1066 char* var545 /* : NativeString */;
1067 val* var546 /* : FlatString */;
1068 static val* varonce547;
1069 val* var548 /* : String */;
1070 char* var549 /* : NativeString */;
1071 val* var550 /* : FlatString */;
1072 val* var551 /* : String */;
1073 val* var552 /* : String */;
1074 val* var553 /* : String */;
1075 val* var555 /* : NativeArray[String] */;
1076 static val* varonce554;
1077 static val* varonce556;
1078 val* var557 /* : String */;
1079 char* var558 /* : NativeString */;
1080 val* var559 /* : FlatString */;
1081 static val* varonce560;
1082 val* var561 /* : String */;
1083 char* var562 /* : NativeString */;
1084 val* var563 /* : FlatString */;
1085 val* var564 /* : String */;
1086 val* var565 /* : String */;
1087 static val* varonce566;
1088 val* var567 /* : String */;
1089 char* var568 /* : NativeString */;
1090 val* var569 /* : FlatString */;
1091 val* var570 /* : String */;
1092 val* var572 /* : String */;
1093 static val* varonce573;
1094 val* var574 /* : String */;
1095 char* var575 /* : NativeString */;
1096 val* var576 /* : FlatString */;
1097 short int var577 /* : Bool */;
1098 val* var578 /* : CodeWriter */;
1099 val* var580 /* : CodeWriter */;
1100 val* var582 /* : NativeArray[String] */;
1101 static val* varonce581;
1102 static val* varonce583;
1103 val* var584 /* : String */;
1104 char* var585 /* : NativeString */;
1105 val* var586 /* : FlatString */;
1106 static val* varonce587;
1107 val* var588 /* : String */;
1108 char* var589 /* : NativeString */;
1109 val* var590 /* : FlatString */;
1110 val* var591 /* : String */;
1111 val* var592 /* : CodeWriter */;
1112 val* var594 /* : CodeWriter */;
1113 static val* varonce595;
1114 val* var596 /* : String */;
1115 char* var597 /* : NativeString */;
1116 val* var598 /* : FlatString */;
1117 val* var599 /* : CodeWriter */;
1118 val* var601 /* : CodeWriter */;
1119 static val* varonce602;
1120 val* var603 /* : String */;
1121 char* var604 /* : NativeString */;
1122 val* var605 /* : FlatString */;
1123 val* var606 /* : CodeWriter */;
1124 val* var608 /* : CodeWriter */;
1125 static val* varonce609;
1126 val* var610 /* : String */;
1127 char* var611 /* : NativeString */;
1128 val* var612 /* : FlatString */;
1129 val* var613 /* : CodeWriter */;
1130 val* var615 /* : CodeWriter */;
1131 static val* varonce616;
1132 val* var617 /* : String */;
1133 char* var618 /* : NativeString */;
1134 val* var619 /* : FlatString */;
1135 val* var620 /* : CodeWriter */;
1136 val* var622 /* : CodeWriter */;
1137 static val* varonce623;
1138 val* var624 /* : String */;
1139 char* var625 /* : NativeString */;
1140 val* var626 /* : FlatString */;
1141 val* var628 /* : NativeArray[String] */;
1142 static val* varonce627;
1143 static val* varonce629;
1144 val* var630 /* : String */;
1145 char* var631 /* : NativeString */;
1146 val* var632 /* : FlatString */;
1147 val* var633 /* : String */;
1148 val* var635 /* : NativeArray[String] */;
1149 static val* varonce634;
1150 static val* varonce636;
1151 val* var637 /* : String */;
1152 char* var638 /* : NativeString */;
1153 val* var639 /* : FlatString */;
1154 static val* varonce640;
1155 val* var641 /* : String */;
1156 char* var642 /* : NativeString */;
1157 val* var643 /* : FlatString */;
1158 val* var644 /* : String */;
1159 val* var645 /* : String */;
1160 val* var647 /* : NativeArray[String] */;
1161 static val* varonce646;
1162 static val* varonce648;
1163 val* var649 /* : String */;
1164 char* var650 /* : NativeString */;
1165 val* var651 /* : FlatString */;
1166 static val* varonce652;
1167 val* var653 /* : String */;
1168 char* var654 /* : NativeString */;
1169 val* var655 /* : FlatString */;
1170 val* var656 /* : String */;
1171 val* var657 /* : String */;
1172 val* var659 /* : NativeArray[String] */;
1173 static val* varonce658;
1174 static val* varonce660;
1175 val* var661 /* : String */;
1176 char* var662 /* : NativeString */;
1177 val* var663 /* : FlatString */;
1178 static val* varonce664;
1179 val* var665 /* : String */;
1180 char* var666 /* : NativeString */;
1181 val* var667 /* : FlatString */;
1182 val* var668 /* : String */;
1183 val* var669 /* : String */;
1184 static val* varonce670;
1185 val* var671 /* : String */;
1186 char* var672 /* : NativeString */;
1187 val* var673 /* : FlatString */;
1188 val* var674 /* : String */;
1189 val* var_res675 /* var res: String */;
1190 val* var677 /* : NativeArray[String] */;
1191 static val* varonce676;
1192 static val* varonce678;
1193 val* var679 /* : String */;
1194 char* var680 /* : NativeString */;
1195 val* var681 /* : FlatString */;
1196 static val* varonce682;
1197 val* var683 /* : String */;
1198 char* var684 /* : NativeString */;
1199 val* var685 /* : FlatString */;
1200 static val* varonce686;
1201 val* var687 /* : String */;
1202 char* var688 /* : NativeString */;
1203 val* var689 /* : FlatString */;
1204 val* var690 /* : String */;
1205 val* var691 /* : Array[MType] */;
1206 val* var692 /* : nullable Object */;
1207 val* var_mtype_elt /* var mtype_elt: MType */;
1208 val* var694 /* : NativeArray[String] */;
1209 static val* varonce693;
1210 static val* varonce695;
1211 val* var696 /* : String */;
1212 char* var697 /* : NativeString */;
1213 val* var698 /* : FlatString */;
1214 static val* varonce699;
1215 val* var700 /* : String */;
1216 char* var701 /* : NativeString */;
1217 val* var702 /* : FlatString */;
1218 static val* varonce703;
1219 val* var704 /* : String */;
1220 char* var705 /* : NativeString */;
1221 val* var706 /* : FlatString */;
1222 val* var707 /* : String */;
1223 val* var708 /* : String */;
1224 val* var710 /* : NativeArray[String] */;
1225 static val* varonce709;
1226 static val* varonce711;
1227 val* var712 /* : String */;
1228 char* var713 /* : NativeString */;
1229 val* var714 /* : FlatString */;
1230 val* var715 /* : String */;
1231 static val* varonce716;
1232 val* var717 /* : String */;
1233 char* var718 /* : NativeString */;
1234 val* var719 /* : FlatString */;
1235 val* var721 /* : NativeArray[String] */;
1236 static val* varonce720;
1237 static val* varonce722;
1238 val* var723 /* : String */;
1239 char* var724 /* : NativeString */;
1240 val* var725 /* : FlatString */;
1241 val* var726 /* : String */;
1242 val* var728 /* : NativeArray[String] */;
1243 static val* varonce727;
1244 static val* varonce729;
1245 val* var730 /* : String */;
1246 char* var731 /* : NativeString */;
1247 val* var732 /* : FlatString */;
1248 static val* varonce733;
1249 val* var734 /* : String */;
1250 char* var735 /* : NativeString */;
1251 val* var736 /* : FlatString */;
1252 val* var737 /* : String */;
1253 val* var739 /* : NativeArray[String] */;
1254 static val* varonce738;
1255 static val* varonce740;
1256 val* var741 /* : String */;
1257 char* var742 /* : NativeString */;
1258 val* var743 /* : FlatString */;
1259 val* var744 /* : String */;
1260 val* var746 /* : NativeArray[String] */;
1261 static val* varonce745;
1262 static val* varonce747;
1263 val* var748 /* : String */;
1264 char* var749 /* : NativeString */;
1265 val* var750 /* : FlatString */;
1266 static val* varonce751;
1267 val* var752 /* : String */;
1268 char* var753 /* : NativeString */;
1269 val* var754 /* : FlatString */;
1270 val* var755 /* : String */;
1271 static val* varonce756;
1272 val* var757 /* : String */;
1273 char* var758 /* : NativeString */;
1274 val* var759 /* : FlatString */;
1275 short int var760 /* : Bool */;
1276 val* var761 /* : MClass */;
1277 val* var763 /* : MClass */;
1278 val* var764 /* : MClassKind */;
1279 val* var766 /* : MClassKind */;
1280 val* var767 /* : Sys */;
1281 val* var768 /* : MClassKind */;
1282 short int var769 /* : Bool */;
1283 short int var771 /* : Bool */;
1284 short int var773 /* : Bool */;
1285 short int var_774 /* var : Bool */;
1286 val* var775 /* : MClass */;
1287 val* var777 /* : MClass */;
1288 val* var778 /* : String */;
1289 val* var780 /* : String */;
1290 static val* varonce781;
1291 val* var782 /* : String */;
1292 char* var783 /* : NativeString */;
1293 val* var784 /* : FlatString */;
1294 short int var785 /* : Bool */;
1295 short int var787 /* : Bool */;
1296 short int var788 /* : Bool */;
1297 val* var789 /* : MModule */;
1298 val* var791 /* : MModule */;
1299 val* var792 /* : MClassType */;
1300 val* var_pointer_type /* var pointer_type: MClassType */;
1301 val* var794 /* : NativeArray[String] */;
1302 static val* varonce793;
1303 static val* varonce795;
1304 val* var796 /* : String */;
1305 char* var797 /* : NativeString */;
1306 val* var798 /* : FlatString */;
1307 val* var799 /* : String */;
1308 val* var801 /* : NativeArray[String] */;
1309 static val* varonce800;
1310 static val* varonce802;
1311 val* var803 /* : String */;
1312 char* var804 /* : NativeString */;
1313 val* var805 /* : FlatString */;
1314 static val* varonce806;
1315 val* var807 /* : String */;
1316 char* var808 /* : NativeString */;
1317 val* var809 /* : FlatString */;
1318 val* var810 /* : String */;
1319 val* var811 /* : String */;
1320 val* var813 /* : NativeArray[String] */;
1321 static val* varonce812;
1322 static val* varonce814;
1323 val* var815 /* : String */;
1324 char* var816 /* : NativeString */;
1325 val* var817 /* : FlatString */;
1326 static val* varonce818;
1327 val* var819 /* : String */;
1328 char* var820 /* : NativeString */;
1329 val* var821 /* : FlatString */;
1330 val* var822 /* : String */;
1331 val* var823 /* : String */;
1332 val* var825 /* : NativeArray[String] */;
1333 static val* varonce824;
1334 static val* varonce826;
1335 val* var827 /* : String */;
1336 char* var828 /* : NativeString */;
1337 val* var829 /* : FlatString */;
1338 static val* varonce830;
1339 val* var831 /* : String */;
1340 char* var832 /* : NativeString */;
1341 val* var833 /* : FlatString */;
1342 val* var834 /* : String */;
1343 val* var835 /* : String */;
1344 val* var837 /* : NativeArray[String] */;
1345 static val* varonce836;
1346 static val* varonce838;
1347 val* var839 /* : String */;
1348 char* var840 /* : NativeString */;
1349 val* var841 /* : FlatString */;
1350 val* var842 /* : String */;
1351 val* var843 /* : String */;
1352 static val* varonce844;
1353 val* var845 /* : String */;
1354 char* var846 /* : NativeString */;
1355 val* var847 /* : FlatString */;
1356 val* var848 /* : RuntimeVariable */;
1357 val* var_res849 /* var res: RuntimeVariable */;
1358 val* var852 /* : NativeArray[String] */;
1359 static val* varonce851;
1360 static val* varonce853;
1361 val* var854 /* : String */;
1362 char* var855 /* : NativeString */;
1363 val* var856 /* : FlatString */;
1364 static val* varonce857;
1365 val* var858 /* : String */;
1366 char* var859 /* : NativeString */;
1367 val* var860 /* : FlatString */;
1368 val* var861 /* : String */;
1369 val* var862 /* : String */;
1370 val* var863 /* : String */;
1371 val* var865 /* : NativeArray[String] */;
1372 static val* varonce864;
1373 static val* varonce866;
1374 val* var867 /* : String */;
1375 char* var868 /* : NativeString */;
1376 val* var869 /* : FlatString */;
1377 val* var870 /* : String */;
1378 val* var871 /* : String */;
1379 static val* varonce872;
1380 val* var873 /* : String */;
1381 char* var874 /* : NativeString */;
1382 val* var875 /* : FlatString */;
1383 val* var877 /* : NativeArray[String] */;
1384 static val* varonce876;
1385 static val* varonce878;
1386 val* var879 /* : String */;
1387 char* var880 /* : NativeString */;
1388 val* var881 /* : FlatString */;
1389 val* var882 /* : String */;
1390 val* var884 /* : NativeArray[String] */;
1391 static val* varonce883;
1392 static val* varonce885;
1393 val* var886 /* : String */;
1394 char* var887 /* : NativeString */;
1395 val* var888 /* : FlatString */;
1396 static val* varonce889;
1397 val* var890 /* : String */;
1398 char* var891 /* : NativeString */;
1399 val* var892 /* : FlatString */;
1400 val* var893 /* : String */;
1401 val* var894 /* : String */;
1402 val* var896 /* : NativeArray[String] */;
1403 static val* varonce895;
1404 static val* varonce897;
1405 val* var898 /* : String */;
1406 char* var899 /* : NativeString */;
1407 val* var900 /* : FlatString */;
1408 static val* varonce901;
1409 val* var902 /* : String */;
1410 char* var903 /* : NativeString */;
1411 val* var904 /* : FlatString */;
1412 static val* varonce905;
1413 val* var906 /* : String */;
1414 char* var907 /* : NativeString */;
1415 val* var908 /* : FlatString */;
1416 val* var909 /* : String */;
1417 val* var910 /* : String */;
1418 val* var911 /* : String */;
1419 val* var913 /* : NativeArray[String] */;
1420 static val* varonce912;
1421 static val* varonce914;
1422 val* var915 /* : String */;
1423 char* var916 /* : NativeString */;
1424 val* var917 /* : FlatString */;
1425 static val* varonce918;
1426 val* var919 /* : String */;
1427 char* var920 /* : NativeString */;
1428 val* var921 /* : FlatString */;
1429 val* var922 /* : String */;
1430 val* var923 /* : String */;
1431 static val* varonce924;
1432 val* var925 /* : String */;
1433 char* var926 /* : NativeString */;
1434 val* var927 /* : FlatString */;
1435 val* var929 /* : NativeArray[String] */;
1436 static val* varonce928;
1437 static val* varonce930;
1438 val* var931 /* : String */;
1439 char* var932 /* : NativeString */;
1440 val* var933 /* : FlatString */;
1441 val* var934 /* : String */;
1442 val* var936 /* : NativeArray[String] */;
1443 static val* varonce935;
1444 static val* varonce937;
1445 val* var938 /* : String */;
1446 char* var939 /* : NativeString */;
1447 val* var940 /* : FlatString */;
1448 static val* varonce941;
1449 val* var942 /* : String */;
1450 char* var943 /* : NativeString */;
1451 val* var944 /* : FlatString */;
1452 val* var945 /* : String */;
1453 val* var946 /* : String */;
1454 val* var948 /* : NativeArray[String] */;
1455 static val* varonce947;
1456 static val* varonce949;
1457 val* var950 /* : String */;
1458 char* var951 /* : NativeString */;
1459 val* var952 /* : FlatString */;
1460 static val* varonce953;
1461 val* var954 /* : String */;
1462 char* var955 /* : NativeString */;
1463 val* var956 /* : FlatString */;
1464 val* var957 /* : String */;
1465 val* var958 /* : String */;
1466 val* var960 /* : NativeArray[String] */;
1467 static val* varonce959;
1468 static val* varonce961;
1469 val* var962 /* : String */;
1470 char* var963 /* : NativeString */;
1471 val* var964 /* : FlatString */;
1472 static val* varonce965;
1473 val* var966 /* : String */;
1474 char* var967 /* : NativeString */;
1475 val* var968 /* : FlatString */;
1476 val* var969 /* : String */;
1477 val* var970 /* : String */;
1478 val* var972 /* : NativeArray[String] */;
1479 static val* varonce971;
1480 static val* varonce973;
1481 val* var974 /* : String */;
1482 char* var975 /* : NativeString */;
1483 val* var976 /* : FlatString */;
1484 val* var977 /* : String */;
1485 val* var978 /* : String */;
1486 static val* varonce979;
1487 val* var980 /* : String */;
1488 char* var981 /* : NativeString */;
1489 val* var982 /* : FlatString */;
1490 val* var983 /* : RuntimeVariable */;
1491 val* var_res984 /* var res: RuntimeVariable */;
1492 val* var986 /* : Map[MClass, Array[nullable MProperty]] */;
1493 val* var988 /* : Map[MClass, Array[nullable MProperty]] */;
1494 val* var989 /* : nullable Object */;
1495 val* var_attrs /* var attrs: nullable Array[nullable MProperty] */;
1496 short int var990 /* : Bool */;
1497 short int var991 /* : Bool */;
1498 val* var993 /* : NativeArray[String] */;
1499 static val* varonce992;
1500 static val* varonce994;
1501 val* var995 /* : String */;
1502 char* var996 /* : NativeString */;
1503 val* var997 /* : FlatString */;
1504 val* var998 /* : String */;
1505 val* var999 /* : String */;
1506 val* var1001 /* : NativeArray[String] */;
1507 static val* varonce1000;
1508 static val* varonce1002;
1509 val* var1003 /* : String */;
1510 char* var1004 /* : NativeString */;
1511 val* var1005 /* : FlatString */;
1512 static val* varonce1006;
1513 val* var1007 /* : String */;
1514 char* var1008 /* : NativeString */;
1515 val* var1009 /* : FlatString */;
1516 val* var1010 /* : String */;
1517 long var1011 /* : Int */;
1518 long var1013 /* : Int */;
1519 val* var1014 /* : String */;
1520 val* var1015 /* : String */;
1521 val* var1017 /* : NativeArray[String] */;
1522 static val* varonce1016;
1523 static val* varonce1018;
1524 val* var1019 /* : String */;
1525 char* var1020 /* : NativeString */;
1526 val* var1021 /* : FlatString */;
1527 val* var1022 /* : String */;
1528 val* var1023 /* : String */;
1529 static val* varonce1024;
1530 val* var1025 /* : String */;
1531 char* var1026 /* : NativeString */;
1532 val* var1027 /* : FlatString */;
1533 val* var1029 /* : NativeArray[String] */;
1534 static val* varonce1028;
1535 static val* varonce1030;
1536 val* var1031 /* : String */;
1537 char* var1032 /* : NativeString */;
1538 val* var1033 /* : FlatString */;
1539 val* var1034 /* : String */;
1540 val* var1036 /* : NativeArray[String] */;
1541 static val* varonce1035;
1542 static val* varonce1037;
1543 val* var1038 /* : String */;
1544 char* var1039 /* : NativeString */;
1545 val* var1040 /* : FlatString */;
1546 static val* varonce1041;
1547 val* var1042 /* : String */;
1548 char* var1043 /* : NativeString */;
1549 val* var1044 /* : FlatString */;
1550 val* var1045 /* : String */;
1551 val* var1046 /* : String */;
1552 short int var1047 /* : Bool */;
1553 short int var1048 /* : Bool */;
1554 short int var1050 /* : Bool */;
1555 short int var1051 /* : Bool */;
1556 val* var1053 /* : NativeArray[String] */;
1557 static val* varonce1052;
1558 static val* varonce1054;
1559 val* var1055 /* : String */;
1560 char* var1056 /* : NativeString */;
1561 val* var1057 /* : FlatString */;
1562 static val* varonce1058;
1563 val* var1059 /* : String */;
1564 char* var1060 /* : NativeString */;
1565 val* var1061 /* : FlatString */;
1566 val* var1062 /* : String */;
1567 val* var1063 /* : String */;
1568 static val* varonce1064;
1569 val* var1065 /* : String */;
1570 char* var1066 /* : NativeString */;
1571 val* var1067 /* : FlatString */;
1572 var_mclass = p0;
1573 {
1574 { /* Inline model#MClass#intro (var_mclass) on <var_mclass:MClass> */
1575 var2 = var_mclass->attrs[COLOR_nit__model__MClass___intro].val; /* _intro on <var_mclass:MClass> */
1576 if (unlikely(var2 == NULL)) {
1577 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro");
1578 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 460);
1579 fatal_exit(1);
1580 }
1581 var = var2;
1582 RET_LABEL1:(void)0;
1583 }
1584 }
1585 {
1586 { /* Inline model#MClassDef#bound_mtype (var) on <var:MClassDef> */
1587 var5 = var->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var:MClassDef> */
1588 if (unlikely(var5 == NULL)) {
1589 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
1590 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
1591 fatal_exit(1);
1592 }
1593 var3 = var5;
1594 RET_LABEL4:(void)0;
1595 }
1596 }
1597 var_mtype = var3;
1598 {
1599 var6 = nit___nit__MClass___nit__model_base__MEntity__c_name(var_mclass);
1600 }
1601 var_c_name = var6;
1602 {
1603 var7 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompiler__new_visitor]))(self); /* new_visitor on <self:SeparateCompiler>*/
1604 }
1605 var_v = var7;
1606 {
1607 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateCompiler> */
1608 var10 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___runtime_type_analysis].val; /* _runtime_type_analysis on <self:SeparateCompiler> */
1609 var8 = var10;
1610 RET_LABEL9:(void)0;
1611 }
1612 }
1613 var_rta = var8;
1614 if (var_rta == NULL) {
1615 var15 = 0; /* is null */
1616 } else {
1617 var15 = 1; /* arg is null and recv is not */
1618 }
1619 if (0) {
1620 { /* Inline kernel#Object#!= (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
1621 var_other = ((val*)NULL);
1622 {
1623 var18 = ((short int(*)(val* self, val* p0))(var_rta->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_rta, var_other); /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/
1624 }
1625 var19 = !var18;
1626 var16 = var19;
1627 goto RET_LABEL17;
1628 RET_LABEL17:(void)0;
1629 }
1630 var15 = var16;
1631 }
1632 var_ = var15;
1633 if (var15){
1634 {
1635 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
1636 var22 = var_rta->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_classes].val; /* _live_classes on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
1637 if (unlikely(var22 == NULL)) {
1638 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
1639 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 69);
1640 fatal_exit(1);
1641 }
1642 var20 = var22;
1643 RET_LABEL21:(void)0;
1644 }
1645 }
1646 {
1647 var23 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var20, var_mclass);
1648 }
1649 var24 = !var23;
1650 var14 = var24;
1651 } else {
1652 var14 = var_;
1653 }
1654 var_25 = var14;
1655 if (var14){
1656 {
1657 var26 = nit__abstract_compiler___MClassType___MType__is_c_primitive(var_mtype);
1658 }
1659 var27 = !var26;
1660 var13 = var27;
1661 } else {
1662 var13 = var_25;
1663 }
1664 var_28 = var13;
1665 if (var13){
1666 {
1667 { /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
1668 var31 = var_mclass->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var_mclass:MClass> */
1669 if (unlikely(var31 == NULL)) {
1670 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1671 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
1672 fatal_exit(1);
1673 }
1674 var29 = var31;
1675 RET_LABEL30:(void)0;
1676 }
1677 }
1678 if (likely(varonce!=NULL)) {
1679 var32 = varonce;
1680 } else {
1681 var33 = "NativeArray";
1682 var34 = standard___standard__NativeString___to_s_with_length(var33, 11l);
1683 var32 = var34;
1684 varonce = var32;
1685 }
1686 {
1687 { /* Inline kernel#Object#!= (var29,var32) on <var29:String> */
1688 var_other = var32;
1689 {
1690 var37 = ((short int(*)(val* self, val* p0))(var29->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var29, var_other); /* == on <var29:String>*/
1691 }
1692 var38 = !var37;
1693 var35 = var38;
1694 goto RET_LABEL36;
1695 RET_LABEL36:(void)0;
1696 }
1697 }
1698 var12 = var35;
1699 } else {
1700 var12 = var_28;
1701 }
1702 var_39 = var12;
1703 if (var12){
1704 {
1705 { /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
1706 var42 = var_mclass->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var_mclass:MClass> */
1707 if (unlikely(var42 == NULL)) {
1708 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
1709 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
1710 fatal_exit(1);
1711 }
1712 var40 = var42;
1713 RET_LABEL41:(void)0;
1714 }
1715 }
1716 if (likely(varonce43!=NULL)) {
1717 var44 = varonce43;
1718 } else {
1719 var45 = "Pointer";
1720 var46 = standard___standard__NativeString___to_s_with_length(var45, 7l);
1721 var44 = var46;
1722 varonce43 = var44;
1723 }
1724 {
1725 { /* Inline kernel#Object#!= (var40,var44) on <var40:String> */
1726 var_other = var44;
1727 {
1728 var49 = ((short int(*)(val* self, val* p0))(var40->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var40, var_other); /* == on <var40:String>*/
1729 }
1730 var50 = !var49;
1731 var47 = var50;
1732 goto RET_LABEL48;
1733 RET_LABEL48:(void)0;
1734 }
1735 }
1736 var11 = var47;
1737 } else {
1738 var11 = var_39;
1739 }
1740 var_is_dead = var11;
1741 if (unlikely(varonce51==NULL)) {
1742 var52 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
1743 if (likely(varonce53!=NULL)) {
1744 var54 = varonce53;
1745 } else {
1746 var55 = "/* runtime class ";
1747 var56 = standard___standard__NativeString___to_s_with_length(var55, 17l);
1748 var54 = var56;
1749 varonce53 = var54;
1750 }
1751 ((struct instance_standard__NativeArray*)var52)->values[0]=var54;
1752 if (likely(varonce57!=NULL)) {
1753 var58 = varonce57;
1754 } else {
1755 var59 = " */";
1756 var60 = standard___standard__NativeString___to_s_with_length(var59, 3l);
1757 var58 = var60;
1758 varonce57 = var58;
1759 }
1760 ((struct instance_standard__NativeArray*)var52)->values[2]=var58;
1761 } else {
1762 var52 = varonce51;
1763 varonce51 = NULL;
1764 }
1765 ((struct instance_standard__NativeArray*)var52)->values[1]=var_c_name;
1766 {
1767 var61 = ((val*(*)(val* self))(var52->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var52); /* native_to_s on <var52:NativeArray[String]>*/
1768 }
1769 varonce51 = var52;
1770 {
1771 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var61); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
1772 }
1773 var62 = !var_is_dead;
1774 if (var62){
1775 if (unlikely(varonce63==NULL)) {
1776 var64 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
1777 if (likely(varonce65!=NULL)) {
1778 var66 = varonce65;
1779 } else {
1780 var67 = "class_";
1781 var68 = standard___standard__NativeString___to_s_with_length(var67, 6l);
1782 var66 = var68;
1783 varonce65 = var66;
1784 }
1785 ((struct instance_standard__NativeArray*)var64)->values[0]=var66;
1786 } else {
1787 var64 = varonce63;
1788 varonce63 = NULL;
1789 }
1790 ((struct instance_standard__NativeArray*)var64)->values[1]=var_c_name;
1791 {
1792 var69 = ((val*(*)(val* self))(var64->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var64); /* native_to_s on <var64:NativeArray[String]>*/
1793 }
1794 varonce63 = var64;
1795 if (unlikely(varonce70==NULL)) {
1796 var71 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
1797 if (likely(varonce72!=NULL)) {
1798 var73 = varonce72;
1799 } else {
1800 var74 = "extern const struct class class_";
1801 var75 = standard___standard__NativeString___to_s_with_length(var74, 32l);
1802 var73 = var75;
1803 varonce72 = var73;
1804 }
1805 ((struct instance_standard__NativeArray*)var71)->values[0]=var73;
1806 if (likely(varonce76!=NULL)) {
1807 var77 = varonce76;
1808 } else {
1809 var78 = ";";
1810 var79 = standard___standard__NativeString___to_s_with_length(var78, 1l);
1811 var77 = var79;
1812 varonce76 = var77;
1813 }
1814 ((struct instance_standard__NativeArray*)var71)->values[2]=var77;
1815 } else {
1816 var71 = varonce70;
1817 varonce70 = NULL;
1818 }
1819 ((struct instance_standard__NativeArray*)var71)->values[1]=var_c_name;
1820 {
1821 var80 = ((val*(*)(val* self))(var71->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var71); /* native_to_s on <var71:NativeArray[String]>*/
1822 }
1823 varonce70 = var71;
1824 {
1825 nit___nit__AbstractCompiler___provide_declaration(self, var69, var80); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
1826 }
1827 if (unlikely(varonce81==NULL)) {
1828 var82 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
1829 if (likely(varonce83!=NULL)) {
1830 var84 = varonce83;
1831 } else {
1832 var85 = "const struct class class_";
1833 var86 = standard___standard__NativeString___to_s_with_length(var85, 25l);
1834 var84 = var86;
1835 varonce83 = var84;
1836 }
1837 ((struct instance_standard__NativeArray*)var82)->values[0]=var84;
1838 if (likely(varonce87!=NULL)) {
1839 var88 = varonce87;
1840 } else {
1841 var89 = " = {";
1842 var90 = standard___standard__NativeString___to_s_with_length(var89, 4l);
1843 var88 = var90;
1844 varonce87 = var88;
1845 }
1846 ((struct instance_standard__NativeArray*)var82)->values[2]=var88;
1847 } else {
1848 var82 = varonce81;
1849 varonce81 = NULL;
1850 }
1851 ((struct instance_standard__NativeArray*)var82)->values[1]=var_c_name;
1852 {
1853 var91 = ((val*(*)(val* self))(var82->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var82); /* native_to_s on <var82:NativeArray[String]>*/
1854 }
1855 varonce81 = var82;
1856 {
1857 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var91); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
1858 }
1859 if (unlikely(varonce92==NULL)) {
1860 var93 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
1861 if (likely(varonce94!=NULL)) {
1862 var95 = varonce94;
1863 } else {
1864 var96 = ", /* box_kind */";
1865 var97 = standard___standard__NativeString___to_s_with_length(var96, 16l);
1866 var95 = var97;
1867 varonce94 = var95;
1868 }
1869 ((struct instance_standard__NativeArray*)var93)->values[1]=var95;
1870 } else {
1871 var93 = varonce92;
1872 varonce92 = NULL;
1873 }
1874 {
1875 var98 = nit___nit__SeparateCompiler___box_kind_of(self, var_mclass);
1876 }
1877 var99 = standard__string___Int___Object__to_s(var98);
1878 ((struct instance_standard__NativeArray*)var93)->values[0]=var99;
1879 {
1880 var100 = ((val*(*)(val* self))(var93->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var93); /* native_to_s on <var93:NativeArray[String]>*/
1881 }
1882 varonce92 = var93;
1883 {
1884 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var100); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
1885 }
1886 if (likely(varonce101!=NULL)) {
1887 var102 = varonce101;
1888 } else {
1889 var103 = "{";
1890 var104 = standard___standard__NativeString___to_s_with_length(var103, 1l);
1891 var102 = var104;
1892 varonce101 = var102;
1893 }
1894 {
1895 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var102); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
1896 }
1897 {
1898 { /* Inline separate_compiler#SeparateCompiler#method_tables (self) on <self:SeparateCompiler> */
1899 var107 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:SeparateCompiler> */
1900 if (unlikely(var107 == NULL)) {
1901 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
1902 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1053);
1903 fatal_exit(1);
1904 }
1905 var105 = var107;
1906 RET_LABEL106:(void)0;
1907 }
1908 }
1909 {
1910 var108 = ((val*(*)(val* self, val* p0))((((long)var105&3)?class_info[((long)var105&3)]:var105->class)->vft[COLOR_standard__abstract_collection__MapRead__get_or_null]))(var105, var_mclass); /* get_or_null on <var105:Map[MClass, Array[nullable MPropDef]]>*/
1911 }
1912 var_vft = var108;
1913 if (var_vft == NULL) {
1914 var109 = 0; /* is null */
1915 } else {
1916 var109 = 1; /* arg is null and recv is not */
1917 }
1918 if (0) {
1919 { /* Inline kernel#Object#!= (var_vft,((val*)NULL)) on <var_vft:nullable Array[nullable MPropDef]> */
1920 var_other = ((val*)NULL);
1921 {
1922 var112 = ((short int(*)(val* self, val* p0))(var_vft->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_vft, var_other); /* == on <var_vft:nullable Array[nullable MPropDef](Array[nullable MPropDef])>*/
1923 }
1924 var113 = !var112;
1925 var110 = var113;
1926 goto RET_LABEL111;
1927 RET_LABEL111:(void)0;
1928 }
1929 var109 = var110;
1930 }
1931 if (var109){
1932 var_i = 0l;
1933 {
1934 { /* Inline array#AbstractArrayRead#length (var_vft) on <var_vft:nullable Array[nullable MPropDef](Array[nullable MPropDef])> */
1935 var116 = var_vft->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_vft:nullable Array[nullable MPropDef](Array[nullable MPropDef])> */
1936 var114 = var116;
1937 RET_LABEL115:(void)0;
1938 }
1939 }
1940 var_117 = var114;
1941 for(;;) {
1942 {
1943 { /* Inline kernel#Int#< (var_i,var_117) on <var_i:Int> */
1944 /* Covariant cast for argument 0 (i) <var_117:Int> isa OTHER */
1945 /* <var_117:Int> isa OTHER */
1946 var120 = 1; /* easy <var_117:Int> isa OTHER*/
1947 if (unlikely(!var120)) {
1948 var_class_name = type_standard__Int.name;
1949 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
1950 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
1951 fatal_exit(1);
1952 }
1953 var121 = var_i < var_117;
1954 var118 = var121;
1955 goto RET_LABEL119;
1956 RET_LABEL119:(void)0;
1957 }
1958 }
1959 if (var118){
1960 {
1961 var122 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_vft, var_i);
1962 }
1963 var_mpropdef = var122;
1964 if (var_mpropdef == NULL) {
1965 var123 = 1; /* is null */
1966 } else {
1967 var123 = 0; /* arg is null but recv is not */
1968 }
1969 if (0) {
1970 { /* Inline kernel#Object#== (var_mpropdef,((val*)NULL)) on <var_mpropdef:nullable MPropDef> */
1971 var_other126 = ((val*)NULL);
1972 {
1973 { /* Inline kernel#Object#is_same_instance (var_mpropdef,var_other126) on <var_mpropdef:nullable MPropDef(MPropDef)> */
1974 var129 = var_mpropdef == var_other126;
1975 var127 = var129;
1976 goto RET_LABEL128;
1977 RET_LABEL128:(void)0;
1978 }
1979 }
1980 var124 = var127;
1981 goto RET_LABEL125;
1982 RET_LABEL125:(void)0;
1983 }
1984 var123 = var124;
1985 }
1986 if (var123){
1987 if (likely(varonce130!=NULL)) {
1988 var131 = varonce130;
1989 } else {
1990 var132 = "NULL, /* empty */";
1991 var133 = standard___standard__NativeString___to_s_with_length(var132, 17l);
1992 var131 = var133;
1993 varonce130 = var131;
1994 }
1995 {
1996 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var131); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
1997 }
1998 } else {
1999 /* <var_mpropdef:nullable MPropDef(MPropDef)> isa MMethodDef */
2000 cltype135 = type_nit__MMethodDef.color;
2001 idtype136 = type_nit__MMethodDef.id;
2002 if(cltype135 >= var_mpropdef->type->table_size) {
2003 var134 = 0;
2004 } else {
2005 var134 = var_mpropdef->type->type_table[cltype135] == idtype136;
2006 }
2007 if (unlikely(!var134)) {
2008 PRINT_ERROR("Runtime error: %s", "Assert failed");
2009 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 838);
2010 fatal_exit(1);
2011 }
2012 if (var_rta == NULL) {
2013 var138 = 0; /* is null */
2014 } else {
2015 var138 = 1; /* arg is null and recv is not */
2016 }
2017 if (0) {
2018 { /* Inline kernel#Object#!= (var_rta,((val*)NULL)) on <var_rta:nullable RapidTypeAnalysis> */
2019 var_other = ((val*)NULL);
2020 {
2021 var141 = ((short int(*)(val* self, val* p0))(var_rta->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_rta, var_other); /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/
2022 }
2023 var142 = !var141;
2024 var139 = var142;
2025 goto RET_LABEL140;
2026 RET_LABEL140:(void)0;
2027 }
2028 var138 = var139;
2029 }
2030 var_143 = var138;
2031 if (var138){
2032 {
2033 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
2034 var146 = var_rta->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_methoddefs].val; /* _live_methoddefs on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
2035 if (unlikely(var146 == NULL)) {
2036 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
2037 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 79);
2038 fatal_exit(1);
2039 }
2040 var144 = var146;
2041 RET_LABEL145:(void)0;
2042 }
2043 }
2044 {
2045 var147 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var144, var_mpropdef);
2046 }
2047 var148 = !var147;
2048 var137 = var148;
2049 } else {
2050 var137 = var_143;
2051 }
2052 if (var137){
2053 if (unlikely(varonce149==NULL)) {
2054 var150 = NEW_standard__NativeArray(7l, &type_standard__NativeArray__standard__String);
2055 if (likely(varonce151!=NULL)) {
2056 var152 = varonce151;
2057 } else {
2058 var153 = "NULL, /* DEAD ";
2059 var154 = standard___standard__NativeString___to_s_with_length(var153, 14l);
2060 var152 = var154;
2061 varonce151 = var152;
2062 }
2063 ((struct instance_standard__NativeArray*)var150)->values[0]=var152;
2064 if (likely(varonce155!=NULL)) {
2065 var156 = varonce155;
2066 } else {
2067 var157 = ":";
2068 var158 = standard___standard__NativeString___to_s_with_length(var157, 1l);
2069 var156 = var158;
2070 varonce155 = var156;
2071 }
2072 ((struct instance_standard__NativeArray*)var150)->values[2]=var156;
2073 if (likely(varonce159!=NULL)) {
2074 var160 = varonce159;
2075 } else {
2076 var161 = ":";
2077 var162 = standard___standard__NativeString___to_s_with_length(var161, 1l);
2078 var160 = var162;
2079 varonce159 = var160;
2080 }
2081 ((struct instance_standard__NativeArray*)var150)->values[4]=var160;
2082 if (likely(varonce163!=NULL)) {
2083 var164 = varonce163;
2084 } else {
2085 var165 = " */";
2086 var166 = standard___standard__NativeString___to_s_with_length(var165, 3l);
2087 var164 = var166;
2088 varonce163 = var164;
2089 }
2090 ((struct instance_standard__NativeArray*)var150)->values[6]=var164;
2091 } else {
2092 var150 = varonce149;
2093 varonce149 = NULL;
2094 }
2095 {
2096 { /* Inline model#MClass#intro_mmodule (var_mclass) on <var_mclass:MClass> */
2097 var169 = var_mclass->attrs[COLOR_nit__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_mclass:MClass> */
2098 if (unlikely(var169 == NULL)) {
2099 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
2100 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 357);
2101 fatal_exit(1);
2102 }
2103 var167 = var169;
2104 RET_LABEL168:(void)0;
2105 }
2106 }
2107 {
2108 var170 = ((val*(*)(val* self))(var167->class->vft[COLOR_standard__string__Object__to_s]))(var167); /* to_s on <var167:MModule>*/
2109 }
2110 ((struct instance_standard__NativeArray*)var150)->values[1]=var170;
2111 {
2112 var171 = ((val*(*)(val* self))(var_mclass->class->vft[COLOR_standard__string__Object__to_s]))(var_mclass); /* to_s on <var_mclass:MClass>*/
2113 }
2114 ((struct instance_standard__NativeArray*)var150)->values[3]=var171;
2115 {
2116 var172 = ((val*(*)(val* self))(var_mpropdef->class->vft[COLOR_standard__string__Object__to_s]))(var_mpropdef); /* to_s on <var_mpropdef:nullable MPropDef(MMethodDef)>*/
2117 }
2118 ((struct instance_standard__NativeArray*)var150)->values[5]=var172;
2119 {
2120 var173 = ((val*(*)(val* self))(var150->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var150); /* native_to_s on <var150:NativeArray[String]>*/
2121 }
2122 varonce149 = var150;
2123 {
2124 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var173); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
2125 }
2126 goto BREAK_label;
2127 } else {
2128 }
2129 {
2130 var174 = nit__separate_compiler___MMethodDef___virtual_runtime_function(var_mpropdef);
2131 }
2132 var_rf = var174;
2133 {
2134 var175 = nit___nit__AbstractRuntimeFunction___c_name(var_rf);
2135 }
2136 {
2137 nit___nit__AbstractCompilerVisitor___require_declaration(var_v, var175); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
2138 }
2139 if (unlikely(varonce176==NULL)) {
2140 var177 = NEW_standard__NativeArray(9l, &type_standard__NativeArray__standard__String);
2141 if (likely(varonce178!=NULL)) {
2142 var179 = varonce178;
2143 } else {
2144 var180 = "(nitmethod_t)";
2145 var181 = standard___standard__NativeString___to_s_with_length(var180, 13l);
2146 var179 = var181;
2147 varonce178 = var179;
2148 }
2149 ((struct instance_standard__NativeArray*)var177)->values[0]=var179;
2150 if (likely(varonce182!=NULL)) {
2151 var183 = varonce182;
2152 } else {
2153 var184 = ", /* pointer to ";
2154 var185 = standard___standard__NativeString___to_s_with_length(var184, 16l);
2155 var183 = var185;
2156 varonce182 = var183;
2157 }
2158 ((struct instance_standard__NativeArray*)var177)->values[2]=var183;
2159 if (likely(varonce186!=NULL)) {
2160 var187 = varonce186;
2161 } else {
2162 var188 = ":";
2163 var189 = standard___standard__NativeString___to_s_with_length(var188, 1l);
2164 var187 = var189;
2165 varonce186 = var187;
2166 }
2167 ((struct instance_standard__NativeArray*)var177)->values[4]=var187;
2168 if (likely(varonce190!=NULL)) {
2169 var191 = varonce190;
2170 } else {
2171 var192 = ":";
2172 var193 = standard___standard__NativeString___to_s_with_length(var192, 1l);
2173 var191 = var193;
2174 varonce190 = var191;
2175 }
2176 ((struct instance_standard__NativeArray*)var177)->values[6]=var191;
2177 if (likely(varonce194!=NULL)) {
2178 var195 = varonce194;
2179 } else {
2180 var196 = " */";
2181 var197 = standard___standard__NativeString___to_s_with_length(var196, 3l);
2182 var195 = var197;
2183 varonce194 = var195;
2184 }
2185 ((struct instance_standard__NativeArray*)var177)->values[8]=var195;
2186 } else {
2187 var177 = varonce176;
2188 varonce176 = NULL;
2189 }
2190 {
2191 var198 = nit___nit__AbstractRuntimeFunction___c_name(var_rf);
2192 }
2193 ((struct instance_standard__NativeArray*)var177)->values[1]=var198;
2194 {
2195 { /* Inline model#MClass#intro_mmodule (var_mclass) on <var_mclass:MClass> */
2196 var201 = var_mclass->attrs[COLOR_nit__model__MClass___intro_mmodule].val; /* _intro_mmodule on <var_mclass:MClass> */
2197 if (unlikely(var201 == NULL)) {
2198 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
2199 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 357);
2200 fatal_exit(1);
2201 }
2202 var199 = var201;
2203 RET_LABEL200:(void)0;
2204 }
2205 }
2206 {
2207 var202 = ((val*(*)(val* self))(var199->class->vft[COLOR_standard__string__Object__to_s]))(var199); /* to_s on <var199:MModule>*/
2208 }
2209 ((struct instance_standard__NativeArray*)var177)->values[3]=var202;
2210 {
2211 var203 = ((val*(*)(val* self))(var_mclass->class->vft[COLOR_standard__string__Object__to_s]))(var_mclass); /* to_s on <var_mclass:MClass>*/
2212 }
2213 ((struct instance_standard__NativeArray*)var177)->values[5]=var203;
2214 {
2215 var204 = ((val*(*)(val* self))(var_mpropdef->class->vft[COLOR_standard__string__Object__to_s]))(var_mpropdef); /* to_s on <var_mpropdef:nullable MPropDef(MMethodDef)>*/
2216 }
2217 ((struct instance_standard__NativeArray*)var177)->values[7]=var204;
2218 {
2219 var205 = ((val*(*)(val* self))(var177->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var177); /* native_to_s on <var177:NativeArray[String]>*/
2220 }
2221 varonce176 = var177;
2222 {
2223 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var205); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
2224 }
2225 }
2226 BREAK_label: (void)0;
2227 {
2228 var206 = standard___standard__Int___Discrete__successor(var_i, 1l);
2229 }
2230 var_i = var206;
2231 } else {
2232 goto BREAK_label207;
2233 }
2234 }
2235 BREAK_label207: (void)0;
2236 } else {
2237 }
2238 if (likely(varonce208!=NULL)) {
2239 var209 = varonce208;
2240 } else {
2241 var210 = "}";
2242 var211 = standard___standard__NativeString___to_s_with_length(var210, 1l);
2243 var209 = var211;
2244 varonce208 = var209;
2245 }
2246 {
2247 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var209); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
2248 }
2249 if (likely(varonce212!=NULL)) {
2250 var213 = varonce212;
2251 } else {
2252 var214 = "};";
2253 var215 = standard___standard__NativeString___to_s_with_length(var214, 2l);
2254 var213 = var215;
2255 varonce212 = var213;
2256 }
2257 {
2258 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var213); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
2259 }
2260 } else {
2261 }
2262 {
2263 var217 = nit__abstract_compiler___MClassType___MType__is_c_primitive(var_mtype);
2264 }
2265 var_218 = var217;
2266 if (var217){
2267 var216 = var_218;
2268 } else {
2269 {
2270 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
2271 var221 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
2272 if (unlikely(var221 == NULL)) {
2273 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2274 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
2275 fatal_exit(1);
2276 }
2277 var219 = var221;
2278 RET_LABEL220:(void)0;
2279 }
2280 }
2281 {
2282 { /* Inline model#MClass#name (var219) on <var219:MClass> */
2283 var224 = var219->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var219:MClass> */
2284 if (unlikely(var224 == NULL)) {
2285 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2286 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
2287 fatal_exit(1);
2288 }
2289 var222 = var224;
2290 RET_LABEL223:(void)0;
2291 }
2292 }
2293 if (likely(varonce225!=NULL)) {
2294 var226 = varonce225;
2295 } else {
2296 var227 = "Pointer";
2297 var228 = standard___standard__NativeString___to_s_with_length(var227, 7l);
2298 var226 = var228;
2299 varonce225 = var226;
2300 }
2301 {
2302 var229 = ((short int(*)(val* self, val* p0))(var222->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var222, var226); /* == on <var222:String>*/
2303 }
2304 var216 = var229;
2305 }
2306 if (var216){
2307 {
2308 { /* Inline separate_compiler#MType#is_tagged (var_mtype) on <var_mtype:MClassType> */
2309 var232 = var_mtype->attrs[COLOR_nit__separate_compiler__MType___is_tagged].s; /* _is_tagged on <var_mtype:MClassType> */
2310 var230 = var232;
2311 RET_LABEL231:(void)0;
2312 }
2313 }
2314 if (var230){
2315 goto RET_LABEL;
2316 } else {
2317 }
2318 {
2319 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
2320 var235 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
2321 if (unlikely(var235 == NULL)) {
2322 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2323 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
2324 fatal_exit(1);
2325 }
2326 var233 = var235;
2327 RET_LABEL234:(void)0;
2328 }
2329 }
2330 if (unlikely(varonce236==NULL)) {
2331 var237 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2332 if (likely(varonce238!=NULL)) {
2333 var239 = varonce238;
2334 } else {
2335 var240 = "struct instance_";
2336 var241 = standard___standard__NativeString___to_s_with_length(var240, 16l);
2337 var239 = var241;
2338 varonce238 = var239;
2339 }
2340 ((struct instance_standard__NativeArray*)var237)->values[0]=var239;
2341 if (likely(varonce242!=NULL)) {
2342 var243 = varonce242;
2343 } else {
2344 var244 = " {";
2345 var245 = standard___standard__NativeString___to_s_with_length(var244, 2l);
2346 var243 = var245;
2347 varonce242 = var243;
2348 }
2349 ((struct instance_standard__NativeArray*)var237)->values[2]=var243;
2350 } else {
2351 var237 = varonce236;
2352 varonce236 = NULL;
2353 }
2354 ((struct instance_standard__NativeArray*)var237)->values[1]=var_c_name;
2355 {
2356 var246 = ((val*(*)(val* self))(var237->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var237); /* native_to_s on <var237:NativeArray[String]>*/
2357 }
2358 varonce236 = var237;
2359 {
2360 nit___nit__CodeWriter___add_decl(var233, var246); /* Direct call abstract_compiler#CodeWriter#add_decl on <var233:CodeWriter>*/
2361 }
2362 {
2363 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
2364 var249 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
2365 if (unlikely(var249 == NULL)) {
2366 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2367 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
2368 fatal_exit(1);
2369 }
2370 var247 = var249;
2371 RET_LABEL248:(void)0;
2372 }
2373 }
2374 if (likely(varonce250!=NULL)) {
2375 var251 = varonce250;
2376 } else {
2377 var252 = "const struct type *type;";
2378 var253 = standard___standard__NativeString___to_s_with_length(var252, 24l);
2379 var251 = var253;
2380 varonce250 = var251;
2381 }
2382 {
2383 nit___nit__CodeWriter___add_decl(var247, var251); /* Direct call abstract_compiler#CodeWriter#add_decl on <var247:CodeWriter>*/
2384 }
2385 {
2386 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
2387 var256 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
2388 if (unlikely(var256 == NULL)) {
2389 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2390 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
2391 fatal_exit(1);
2392 }
2393 var254 = var256;
2394 RET_LABEL255:(void)0;
2395 }
2396 }
2397 if (likely(varonce257!=NULL)) {
2398 var258 = varonce257;
2399 } else {
2400 var259 = "const struct class *class;";
2401 var260 = standard___standard__NativeString___to_s_with_length(var259, 26l);
2402 var258 = var260;
2403 varonce257 = var258;
2404 }
2405 {
2406 nit___nit__CodeWriter___add_decl(var254, var258); /* Direct call abstract_compiler#CodeWriter#add_decl on <var254:CodeWriter>*/
2407 }
2408 {
2409 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
2410 var263 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
2411 if (unlikely(var263 == NULL)) {
2412 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2413 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
2414 fatal_exit(1);
2415 }
2416 var261 = var263;
2417 RET_LABEL262:(void)0;
2418 }
2419 }
2420 if (unlikely(varonce264==NULL)) {
2421 var265 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
2422 if (likely(varonce266!=NULL)) {
2423 var267 = varonce266;
2424 } else {
2425 var268 = " value;";
2426 var269 = standard___standard__NativeString___to_s_with_length(var268, 7l);
2427 var267 = var269;
2428 varonce266 = var267;
2429 }
2430 ((struct instance_standard__NativeArray*)var265)->values[1]=var267;
2431 } else {
2432 var265 = varonce264;
2433 varonce264 = NULL;
2434 }
2435 {
2436 var270 = nit__abstract_compiler___MClassType___MType__ctype_extern(var_mtype);
2437 }
2438 ((struct instance_standard__NativeArray*)var265)->values[0]=var270;
2439 {
2440 var271 = ((val*(*)(val* self))(var265->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var265); /* native_to_s on <var265:NativeArray[String]>*/
2441 }
2442 varonce264 = var265;
2443 {
2444 nit___nit__CodeWriter___add_decl(var261, var271); /* Direct call abstract_compiler#CodeWriter#add_decl on <var261:CodeWriter>*/
2445 }
2446 {
2447 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
2448 var274 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
2449 if (unlikely(var274 == NULL)) {
2450 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2451 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
2452 fatal_exit(1);
2453 }
2454 var272 = var274;
2455 RET_LABEL273:(void)0;
2456 }
2457 }
2458 if (likely(varonce275!=NULL)) {
2459 var276 = varonce275;
2460 } else {
2461 var277 = "};";
2462 var278 = standard___standard__NativeString___to_s_with_length(var277, 2l);
2463 var276 = var278;
2464 varonce275 = var276;
2465 }
2466 {
2467 nit___nit__CodeWriter___add_decl(var272, var276); /* Direct call abstract_compiler#CodeWriter#add_decl on <var272:CodeWriter>*/
2468 }
2469 if (var_rta == NULL) {
2470 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2471 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 864);
2472 fatal_exit(1);
2473 } else {
2474 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_types (var_rta) on <var_rta:nullable RapidTypeAnalysis> */
2475 if (unlikely(var_rta == NULL)) {
2476 PRINT_ERROR("Runtime error: %s", "Receiver is null");
2477 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
2478 fatal_exit(1);
2479 }
2480 var282 = var_rta->attrs[COLOR_nit__rapid_type_analysis__RapidTypeAnalysis___live_types].val; /* _live_types on <var_rta:nullable RapidTypeAnalysis> */
2481 if (unlikely(var282 == NULL)) {
2482 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_types");
2483 PRINT_ERROR(" (%s:%d)\n", FILE_nit__rapid_type_analysis, 60);
2484 fatal_exit(1);
2485 }
2486 var280 = var282;
2487 RET_LABEL281:(void)0;
2488 }
2489 }
2490 {
2491 var283 = standard___standard__HashSet___standard__abstract_collection__Collection__has(var280, var_mtype);
2492 }
2493 var284 = !var283;
2494 var_285 = var284;
2495 if (var284){
2496 {
2497 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
2498 var288 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
2499 if (unlikely(var288 == NULL)) {
2500 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2501 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
2502 fatal_exit(1);
2503 }
2504 var286 = var288;
2505 RET_LABEL287:(void)0;
2506 }
2507 }
2508 {
2509 { /* Inline model#MClass#name (var286) on <var286:MClass> */
2510 var291 = var286->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var286:MClass> */
2511 if (unlikely(var291 == NULL)) {
2512 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2513 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
2514 fatal_exit(1);
2515 }
2516 var289 = var291;
2517 RET_LABEL290:(void)0;
2518 }
2519 }
2520 if (likely(varonce292!=NULL)) {
2521 var293 = varonce292;
2522 } else {
2523 var294 = "Pointer";
2524 var295 = standard___standard__NativeString___to_s_with_length(var294, 7l);
2525 var293 = var295;
2526 varonce292 = var293;
2527 }
2528 {
2529 { /* Inline kernel#Object#!= (var289,var293) on <var289:String> */
2530 var_other = var293;
2531 {
2532 var298 = ((short int(*)(val* self, val* p0))(var289->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var289, var_other); /* == on <var289:String>*/
2533 }
2534 var299 = !var298;
2535 var296 = var299;
2536 goto RET_LABEL297;
2537 RET_LABEL297:(void)0;
2538 }
2539 }
2540 var279 = var296;
2541 } else {
2542 var279 = var_285;
2543 }
2544 if (var279){
2545 goto RET_LABEL;
2546 } else {
2547 }
2548 if (unlikely(varonce300==NULL)) {
2549 var301 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
2550 if (likely(varonce302!=NULL)) {
2551 var303 = varonce302;
2552 } else {
2553 var304 = "BOX_";
2554 var305 = standard___standard__NativeString___to_s_with_length(var304, 4l);
2555 var303 = var305;
2556 varonce302 = var303;
2557 }
2558 ((struct instance_standard__NativeArray*)var301)->values[0]=var303;
2559 } else {
2560 var301 = varonce300;
2561 varonce300 = NULL;
2562 }
2563 ((struct instance_standard__NativeArray*)var301)->values[1]=var_c_name;
2564 {
2565 var306 = ((val*(*)(val* self))(var301->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var301); /* native_to_s on <var301:NativeArray[String]>*/
2566 }
2567 varonce300 = var301;
2568 if (unlikely(varonce307==NULL)) {
2569 var308 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
2570 if (likely(varonce309!=NULL)) {
2571 var310 = varonce309;
2572 } else {
2573 var311 = "val* BOX_";
2574 var312 = standard___standard__NativeString___to_s_with_length(var311, 9l);
2575 var310 = var312;
2576 varonce309 = var310;
2577 }
2578 ((struct instance_standard__NativeArray*)var308)->values[0]=var310;
2579 if (likely(varonce313!=NULL)) {
2580 var314 = varonce313;
2581 } else {
2582 var315 = "(";
2583 var316 = standard___standard__NativeString___to_s_with_length(var315, 1l);
2584 var314 = var316;
2585 varonce313 = var314;
2586 }
2587 ((struct instance_standard__NativeArray*)var308)->values[2]=var314;
2588 if (likely(varonce317!=NULL)) {
2589 var318 = varonce317;
2590 } else {
2591 var319 = ");";
2592 var320 = standard___standard__NativeString___to_s_with_length(var319, 2l);
2593 var318 = var320;
2594 varonce317 = var318;
2595 }
2596 ((struct instance_standard__NativeArray*)var308)->values[4]=var318;
2597 } else {
2598 var308 = varonce307;
2599 varonce307 = NULL;
2600 }
2601 ((struct instance_standard__NativeArray*)var308)->values[1]=var_c_name;
2602 {
2603 var321 = nit__abstract_compiler___MClassType___MType__ctype_extern(var_mtype);
2604 }
2605 ((struct instance_standard__NativeArray*)var308)->values[3]=var321;
2606 {
2607 var322 = ((val*(*)(val* self))(var308->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var308); /* native_to_s on <var308:NativeArray[String]>*/
2608 }
2609 varonce307 = var308;
2610 {
2611 nit___nit__AbstractCompiler___provide_declaration(self, var306, var322); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
2612 }
2613 if (unlikely(varonce323==NULL)) {
2614 var324 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2615 if (likely(varonce325!=NULL)) {
2616 var326 = varonce325;
2617 } else {
2618 var327 = "/* allocate ";
2619 var328 = standard___standard__NativeString___to_s_with_length(var327, 12l);
2620 var326 = var328;
2621 varonce325 = var326;
2622 }
2623 ((struct instance_standard__NativeArray*)var324)->values[0]=var326;
2624 if (likely(varonce329!=NULL)) {
2625 var330 = varonce329;
2626 } else {
2627 var331 = " */";
2628 var332 = standard___standard__NativeString___to_s_with_length(var331, 3l);
2629 var330 = var332;
2630 varonce329 = var330;
2631 }
2632 ((struct instance_standard__NativeArray*)var324)->values[2]=var330;
2633 } else {
2634 var324 = varonce323;
2635 varonce323 = NULL;
2636 }
2637 {
2638 var333 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
2639 }
2640 ((struct instance_standard__NativeArray*)var324)->values[1]=var333;
2641 {
2642 var334 = ((val*(*)(val* self))(var324->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var324); /* native_to_s on <var324:NativeArray[String]>*/
2643 }
2644 varonce323 = var324;
2645 {
2646 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var334); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
2647 }
2648 if (unlikely(varonce335==NULL)) {
2649 var336 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
2650 if (likely(varonce337!=NULL)) {
2651 var338 = varonce337;
2652 } else {
2653 var339 = "val* BOX_";
2654 var340 = standard___standard__NativeString___to_s_with_length(var339, 9l);
2655 var338 = var340;
2656 varonce337 = var338;
2657 }
2658 ((struct instance_standard__NativeArray*)var336)->values[0]=var338;
2659 if (likely(varonce341!=NULL)) {
2660 var342 = varonce341;
2661 } else {
2662 var343 = "(";
2663 var344 = standard___standard__NativeString___to_s_with_length(var343, 1l);
2664 var342 = var344;
2665 varonce341 = var342;
2666 }
2667 ((struct instance_standard__NativeArray*)var336)->values[2]=var342;
2668 if (likely(varonce345!=NULL)) {
2669 var346 = varonce345;
2670 } else {
2671 var347 = " value) {";
2672 var348 = standard___standard__NativeString___to_s_with_length(var347, 9l);
2673 var346 = var348;
2674 varonce345 = var346;
2675 }
2676 ((struct instance_standard__NativeArray*)var336)->values[4]=var346;
2677 } else {
2678 var336 = varonce335;
2679 varonce335 = NULL;
2680 }
2681 {
2682 var349 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MClassType>*/
2683 }
2684 ((struct instance_standard__NativeArray*)var336)->values[1]=var349;
2685 {
2686 var350 = nit__abstract_compiler___MClassType___MType__ctype_extern(var_mtype);
2687 }
2688 ((struct instance_standard__NativeArray*)var336)->values[3]=var350;
2689 {
2690 var351 = ((val*(*)(val* self))(var336->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var336); /* native_to_s on <var336:NativeArray[String]>*/
2691 }
2692 varonce335 = var336;
2693 {
2694 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var351); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
2695 }
2696 if (unlikely(varonce352==NULL)) {
2697 var353 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
2698 if (likely(varonce354!=NULL)) {
2699 var355 = varonce354;
2700 } else {
2701 var356 = "struct instance_";
2702 var357 = standard___standard__NativeString___to_s_with_length(var356, 16l);
2703 var355 = var357;
2704 varonce354 = var355;
2705 }
2706 ((struct instance_standard__NativeArray*)var353)->values[0]=var355;
2707 if (likely(varonce358!=NULL)) {
2708 var359 = varonce358;
2709 } else {
2710 var360 = "*res = nit_alloc(sizeof(struct instance_";
2711 var361 = standard___standard__NativeString___to_s_with_length(var360, 40l);
2712 var359 = var361;
2713 varonce358 = var359;
2714 }
2715 ((struct instance_standard__NativeArray*)var353)->values[2]=var359;
2716 if (likely(varonce362!=NULL)) {
2717 var363 = varonce362;
2718 } else {
2719 var364 = "));";
2720 var365 = standard___standard__NativeString___to_s_with_length(var364, 3l);
2721 var363 = var365;
2722 varonce362 = var363;
2723 }
2724 ((struct instance_standard__NativeArray*)var353)->values[4]=var363;
2725 } else {
2726 var353 = varonce352;
2727 varonce352 = NULL;
2728 }
2729 ((struct instance_standard__NativeArray*)var353)->values[1]=var_c_name;
2730 ((struct instance_standard__NativeArray*)var353)->values[3]=var_c_name;
2731 {
2732 var366 = ((val*(*)(val* self))(var353->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var353); /* native_to_s on <var353:NativeArray[String]>*/
2733 }
2734 varonce352 = var353;
2735 {
2736 nit___nit__AbstractCompilerVisitor___add(var_v, var366); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
2737 }
2738 {
2739 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:SeparateCompilerVisitor> */
2740 var369 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:SeparateCompilerVisitor> */
2741 if (unlikely(var369 == NULL)) {
2742 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
2743 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
2744 fatal_exit(1);
2745 }
2746 var367 = var369;
2747 RET_LABEL368:(void)0;
2748 }
2749 }
2750 {
2751 { /* Inline separate_compiler#SeparateCompiler#undead_types (var367) on <var367:AbstractCompiler(SeparateCompiler)> */
2752 var372 = var367->attrs[COLOR_nit__separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <var367:AbstractCompiler(SeparateCompiler)> */
2753 if (unlikely(var372 == NULL)) {
2754 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
2755 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 146);
2756 fatal_exit(1);
2757 }
2758 var370 = var372;
2759 RET_LABEL371:(void)0;
2760 }
2761 }
2762 {
2763 ((void(*)(val* self, val* p0))((((long)var370&3)?class_info[((long)var370&3)]:var370->class)->vft[COLOR_standard__abstract_collection__SimpleCollection__add]))(var370, var_mtype); /* add on <var370:Set[MType]>*/
2764 }
2765 if (unlikely(varonce373==NULL)) {
2766 var374 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
2767 if (likely(varonce375!=NULL)) {
2768 var376 = varonce375;
2769 } else {
2770 var377 = "type_";
2771 var378 = standard___standard__NativeString___to_s_with_length(var377, 5l);
2772 var376 = var378;
2773 varonce375 = var376;
2774 }
2775 ((struct instance_standard__NativeArray*)var374)->values[0]=var376;
2776 } else {
2777 var374 = varonce373;
2778 varonce373 = NULL;
2779 }
2780 ((struct instance_standard__NativeArray*)var374)->values[1]=var_c_name;
2781 {
2782 var379 = ((val*(*)(val* self))(var374->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var374); /* native_to_s on <var374:NativeArray[String]>*/
2783 }
2784 varonce373 = var374;
2785 {
2786 nit___nit__AbstractCompilerVisitor___require_declaration(var_v, var379); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
2787 }
2788 if (unlikely(varonce380==NULL)) {
2789 var381 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2790 if (likely(varonce382!=NULL)) {
2791 var383 = varonce382;
2792 } else {
2793 var384 = "res->type = &type_";
2794 var385 = standard___standard__NativeString___to_s_with_length(var384, 18l);
2795 var383 = var385;
2796 varonce382 = var383;
2797 }
2798 ((struct instance_standard__NativeArray*)var381)->values[0]=var383;
2799 if (likely(varonce386!=NULL)) {
2800 var387 = varonce386;
2801 } else {
2802 var388 = ";";
2803 var389 = standard___standard__NativeString___to_s_with_length(var388, 1l);
2804 var387 = var389;
2805 varonce386 = var387;
2806 }
2807 ((struct instance_standard__NativeArray*)var381)->values[2]=var387;
2808 } else {
2809 var381 = varonce380;
2810 varonce380 = NULL;
2811 }
2812 ((struct instance_standard__NativeArray*)var381)->values[1]=var_c_name;
2813 {
2814 var390 = ((val*(*)(val* self))(var381->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var381); /* native_to_s on <var381:NativeArray[String]>*/
2815 }
2816 varonce380 = var381;
2817 {
2818 nit___nit__AbstractCompilerVisitor___add(var_v, var390); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
2819 }
2820 if (unlikely(varonce391==NULL)) {
2821 var392 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
2822 if (likely(varonce393!=NULL)) {
2823 var394 = varonce393;
2824 } else {
2825 var395 = "class_";
2826 var396 = standard___standard__NativeString___to_s_with_length(var395, 6l);
2827 var394 = var396;
2828 varonce393 = var394;
2829 }
2830 ((struct instance_standard__NativeArray*)var392)->values[0]=var394;
2831 } else {
2832 var392 = varonce391;
2833 varonce391 = NULL;
2834 }
2835 ((struct instance_standard__NativeArray*)var392)->values[1]=var_c_name;
2836 {
2837 var397 = ((val*(*)(val* self))(var392->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var392); /* native_to_s on <var392:NativeArray[String]>*/
2838 }
2839 varonce391 = var392;
2840 {
2841 nit___nit__AbstractCompilerVisitor___require_declaration(var_v, var397); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
2842 }
2843 if (unlikely(varonce398==NULL)) {
2844 var399 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
2845 if (likely(varonce400!=NULL)) {
2846 var401 = varonce400;
2847 } else {
2848 var402 = "res->class = &class_";
2849 var403 = standard___standard__NativeString___to_s_with_length(var402, 20l);
2850 var401 = var403;
2851 varonce400 = var401;
2852 }
2853 ((struct instance_standard__NativeArray*)var399)->values[0]=var401;
2854 if (likely(varonce404!=NULL)) {
2855 var405 = varonce404;
2856 } else {
2857 var406 = ";";
2858 var407 = standard___standard__NativeString___to_s_with_length(var406, 1l);
2859 var405 = var407;
2860 varonce404 = var405;
2861 }
2862 ((struct instance_standard__NativeArray*)var399)->values[2]=var405;
2863 } else {
2864 var399 = varonce398;
2865 varonce398 = NULL;
2866 }
2867 ((struct instance_standard__NativeArray*)var399)->values[1]=var_c_name;
2868 {
2869 var408 = ((val*(*)(val* self))(var399->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var399); /* native_to_s on <var399:NativeArray[String]>*/
2870 }
2871 varonce398 = var399;
2872 {
2873 nit___nit__AbstractCompilerVisitor___add(var_v, var408); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
2874 }
2875 if (likely(varonce409!=NULL)) {
2876 var410 = varonce409;
2877 } else {
2878 var411 = "res->value = value;";
2879 var412 = standard___standard__NativeString___to_s_with_length(var411, 19l);
2880 var410 = var412;
2881 varonce409 = var410;
2882 }
2883 {
2884 nit___nit__AbstractCompilerVisitor___add(var_v, var410); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
2885 }
2886 if (likely(varonce413!=NULL)) {
2887 var414 = varonce413;
2888 } else {
2889 var415 = "return (val*)res;";
2890 var416 = standard___standard__NativeString___to_s_with_length(var415, 17l);
2891 var414 = var416;
2892 varonce413 = var414;
2893 }
2894 {
2895 nit___nit__AbstractCompilerVisitor___add(var_v, var414); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
2896 }
2897 if (likely(varonce417!=NULL)) {
2898 var418 = varonce417;
2899 } else {
2900 var419 = "}";
2901 var420 = standard___standard__NativeString___to_s_with_length(var419, 1l);
2902 var418 = var420;
2903 varonce417 = var418;
2904 }
2905 {
2906 nit___nit__AbstractCompilerVisitor___add(var_v, var418); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
2907 }
2908 {
2909 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
2910 var423 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
2911 if (unlikely(var423 == NULL)) {
2912 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
2913 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
2914 fatal_exit(1);
2915 }
2916 var421 = var423;
2917 RET_LABEL422:(void)0;
2918 }
2919 }
2920 {
2921 { /* Inline model#MClass#name (var421) on <var421:MClass> */
2922 var426 = var421->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var421:MClass> */
2923 if (unlikely(var426 == NULL)) {
2924 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
2925 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
2926 fatal_exit(1);
2927 }
2928 var424 = var426;
2929 RET_LABEL425:(void)0;
2930 }
2931 }
2932 if (likely(varonce427!=NULL)) {
2933 var428 = varonce427;
2934 } else {
2935 var429 = "Pointer";
2936 var430 = standard___standard__NativeString___to_s_with_length(var429, 7l);
2937 var428 = var430;
2938 varonce427 = var428;
2939 }
2940 {
2941 { /* Inline kernel#Object#!= (var424,var428) on <var424:String> */
2942 var_other = var428;
2943 {
2944 var433 = ((short int(*)(val* self, val* p0))(var424->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var424, var_other); /* == on <var424:String>*/
2945 }
2946 var434 = !var433;
2947 var431 = var434;
2948 goto RET_LABEL432;
2949 RET_LABEL432:(void)0;
2950 }
2951 }
2952 if (var431){
2953 goto RET_LABEL;
2954 } else {
2955 }
2956 {
2957 var435 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompiler__new_visitor]))(self); /* new_visitor on <self:SeparateCompiler>*/
2958 }
2959 var_v = var435;
2960 if (unlikely(varonce436==NULL)) {
2961 var437 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
2962 if (likely(varonce438!=NULL)) {
2963 var439 = varonce438;
2964 } else {
2965 var440 = "NEW_";
2966 var441 = standard___standard__NativeString___to_s_with_length(var440, 4l);
2967 var439 = var441;
2968 varonce438 = var439;
2969 }
2970 ((struct instance_standard__NativeArray*)var437)->values[0]=var439;
2971 } else {
2972 var437 = varonce436;
2973 varonce436 = NULL;
2974 }
2975 ((struct instance_standard__NativeArray*)var437)->values[1]=var_c_name;
2976 {
2977 var442 = ((val*(*)(val* self))(var437->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var437); /* native_to_s on <var437:NativeArray[String]>*/
2978 }
2979 varonce436 = var437;
2980 if (unlikely(varonce443==NULL)) {
2981 var444 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
2982 if (likely(varonce445!=NULL)) {
2983 var446 = varonce445;
2984 } else {
2985 var447 = " NEW_";
2986 var448 = standard___standard__NativeString___to_s_with_length(var447, 5l);
2987 var446 = var448;
2988 varonce445 = var446;
2989 }
2990 ((struct instance_standard__NativeArray*)var444)->values[1]=var446;
2991 if (likely(varonce449!=NULL)) {
2992 var450 = varonce449;
2993 } else {
2994 var451 = "(const struct type* type);";
2995 var452 = standard___standard__NativeString___to_s_with_length(var451, 26l);
2996 var450 = var452;
2997 varonce449 = var450;
2998 }
2999 ((struct instance_standard__NativeArray*)var444)->values[3]=var450;
3000 } else {
3001 var444 = varonce443;
3002 varonce443 = NULL;
3003 }
3004 {
3005 var453 = nit__abstract_compiler___MClassType___MType__ctype(var_mtype);
3006 }
3007 ((struct instance_standard__NativeArray*)var444)->values[0]=var453;
3008 ((struct instance_standard__NativeArray*)var444)->values[2]=var_c_name;
3009 {
3010 var454 = ((val*(*)(val* self))(var444->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var444); /* native_to_s on <var444:NativeArray[String]>*/
3011 }
3012 varonce443 = var444;
3013 {
3014 nit___nit__AbstractCompiler___provide_declaration(self, var442, var454); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
3015 }
3016 if (unlikely(varonce455==NULL)) {
3017 var456 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
3018 if (likely(varonce457!=NULL)) {
3019 var458 = varonce457;
3020 } else {
3021 var459 = "/* allocate ";
3022 var460 = standard___standard__NativeString___to_s_with_length(var459, 12l);
3023 var458 = var460;
3024 varonce457 = var458;
3025 }
3026 ((struct instance_standard__NativeArray*)var456)->values[0]=var458;
3027 if (likely(varonce461!=NULL)) {
3028 var462 = varonce461;
3029 } else {
3030 var463 = " */";
3031 var464 = standard___standard__NativeString___to_s_with_length(var463, 3l);
3032 var462 = var464;
3033 varonce461 = var462;
3034 }
3035 ((struct instance_standard__NativeArray*)var456)->values[2]=var462;
3036 } else {
3037 var456 = varonce455;
3038 varonce455 = NULL;
3039 }
3040 {
3041 var465 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
3042 }
3043 ((struct instance_standard__NativeArray*)var456)->values[1]=var465;
3044 {
3045 var466 = ((val*(*)(val* self))(var456->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var456); /* native_to_s on <var456:NativeArray[String]>*/
3046 }
3047 varonce455 = var456;
3048 {
3049 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var466); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3050 }
3051 if (unlikely(varonce467==NULL)) {
3052 var468 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
3053 if (likely(varonce469!=NULL)) {
3054 var470 = varonce469;
3055 } else {
3056 var471 = " NEW_";
3057 var472 = standard___standard__NativeString___to_s_with_length(var471, 5l);
3058 var470 = var472;
3059 varonce469 = var470;
3060 }
3061 ((struct instance_standard__NativeArray*)var468)->values[1]=var470;
3062 if (likely(varonce473!=NULL)) {
3063 var474 = varonce473;
3064 } else {
3065 var475 = "(const struct type* type) {";
3066 var476 = standard___standard__NativeString___to_s_with_length(var475, 27l);
3067 var474 = var476;
3068 varonce473 = var474;
3069 }
3070 ((struct instance_standard__NativeArray*)var468)->values[3]=var474;
3071 } else {
3072 var468 = varonce467;
3073 varonce467 = NULL;
3074 }
3075 {
3076 var477 = nit__abstract_compiler___MClassType___MType__ctype(var_mtype);
3077 }
3078 ((struct instance_standard__NativeArray*)var468)->values[0]=var477;
3079 ((struct instance_standard__NativeArray*)var468)->values[2]=var_c_name;
3080 {
3081 var478 = ((val*(*)(val* self))(var468->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var468); /* native_to_s on <var468:NativeArray[String]>*/
3082 }
3083 varonce467 = var468;
3084 {
3085 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var478); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3086 }
3087 if (var_is_dead){
3088 if (unlikely(varonce479==NULL)) {
3089 var480 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
3090 if (likely(varonce481!=NULL)) {
3091 var482 = varonce481;
3092 } else {
3093 var483 = " is DEAD";
3094 var484 = standard___standard__NativeString___to_s_with_length(var483, 8l);
3095 var482 = var484;
3096 varonce481 = var482;
3097 }
3098 ((struct instance_standard__NativeArray*)var480)->values[1]=var482;
3099 } else {
3100 var480 = varonce479;
3101 varonce479 = NULL;
3102 }
3103 {
3104 var485 = ((val*(*)(val* self))(var_mclass->class->vft[COLOR_standard__string__Object__to_s]))(var_mclass); /* to_s on <var_mclass:MClass>*/
3105 }
3106 ((struct instance_standard__NativeArray*)var480)->values[0]=var485;
3107 {
3108 var486 = ((val*(*)(val* self))(var480->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var480); /* native_to_s on <var480:NativeArray[String]>*/
3109 }
3110 varonce479 = var480;
3111 {
3112 nit___nit__AbstractCompilerVisitor___add_abort(var_v, var486); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
3113 }
3114 } else {
3115 if (likely(varonce487!=NULL)) {
3116 var488 = varonce487;
3117 } else {
3118 var489 = "self";
3119 var490 = standard___standard__NativeString___to_s_with_length(var489, 4l);
3120 var488 = var490;
3121 varonce487 = var488;
3122 }
3123 {
3124 var491 = nit___nit__AbstractCompilerVisitor___new_named_var(var_v, var_mtype, var488);
3125 }
3126 var_res = var491;
3127 {
3128 { /* Inline abstract_compiler#RuntimeVariable#is_exact= (var_res,1) on <var_res:RuntimeVariable> */
3129 var_res->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___is_exact].s = 1; /* _is_exact on <var_res:RuntimeVariable> */
3130 RET_LABEL492:(void)0;
3131 }
3132 }
3133 if (unlikely(varonce493==NULL)) {
3134 var494 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
3135 if (likely(varonce495!=NULL)) {
3136 var496 = varonce495;
3137 } else {
3138 var497 = " = nit_alloc(sizeof(struct instance_";
3139 var498 = standard___standard__NativeString___to_s_with_length(var497, 36l);
3140 var496 = var498;
3141 varonce495 = var496;
3142 }
3143 ((struct instance_standard__NativeArray*)var494)->values[1]=var496;
3144 if (likely(varonce499!=NULL)) {
3145 var500 = varonce499;
3146 } else {
3147 var501 = "));";
3148 var502 = standard___standard__NativeString___to_s_with_length(var501, 3l);
3149 var500 = var502;
3150 varonce499 = var500;
3151 }
3152 ((struct instance_standard__NativeArray*)var494)->values[3]=var500;
3153 } else {
3154 var494 = varonce493;
3155 varonce493 = NULL;
3156 }
3157 {
3158 var503 = ((val*(*)(val* self))(var_res->class->vft[COLOR_standard__string__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
3159 }
3160 ((struct instance_standard__NativeArray*)var494)->values[0]=var503;
3161 {
3162 var504 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MClassType>*/
3163 }
3164 ((struct instance_standard__NativeArray*)var494)->values[2]=var504;
3165 {
3166 var505 = ((val*(*)(val* self))(var494->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var494); /* native_to_s on <var494:NativeArray[String]>*/
3167 }
3168 varonce493 = var494;
3169 {
3170 nit___nit__AbstractCompilerVisitor___add(var_v, var505); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3171 }
3172 if (unlikely(varonce506==NULL)) {
3173 var507 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
3174 if (likely(varonce508!=NULL)) {
3175 var509 = varonce508;
3176 } else {
3177 var510 = "->type = type;";
3178 var511 = standard___standard__NativeString___to_s_with_length(var510, 14l);
3179 var509 = var511;
3180 varonce508 = var509;
3181 }
3182 ((struct instance_standard__NativeArray*)var507)->values[1]=var509;
3183 } else {
3184 var507 = varonce506;
3185 varonce506 = NULL;
3186 }
3187 {
3188 var512 = ((val*(*)(val* self))(var_res->class->vft[COLOR_standard__string__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
3189 }
3190 ((struct instance_standard__NativeArray*)var507)->values[0]=var512;
3191 {
3192 var513 = ((val*(*)(val* self))(var507->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var507); /* native_to_s on <var507:NativeArray[String]>*/
3193 }
3194 varonce506 = var507;
3195 {
3196 nit___nit__AbstractCompilerVisitor___add(var_v, var513); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3197 }
3198 if (likely(varonce514!=NULL)) {
3199 var515 = varonce514;
3200 } else {
3201 var516 = "type";
3202 var517 = standard___standard__NativeString___to_s_with_length(var516, 4l);
3203 var515 = var517;
3204 varonce514 = var515;
3205 }
3206 {
3207 nit___nit__SeparateCompiler___hardening_live_type(self, var_v, var515); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:SeparateCompiler>*/
3208 }
3209 if (unlikely(varonce518==NULL)) {
3210 var519 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
3211 if (likely(varonce520!=NULL)) {
3212 var521 = varonce520;
3213 } else {
3214 var522 = "class_";
3215 var523 = standard___standard__NativeString___to_s_with_length(var522, 6l);
3216 var521 = var523;
3217 varonce520 = var521;
3218 }
3219 ((struct instance_standard__NativeArray*)var519)->values[0]=var521;
3220 } else {
3221 var519 = varonce518;
3222 varonce518 = NULL;
3223 }
3224 ((struct instance_standard__NativeArray*)var519)->values[1]=var_c_name;
3225 {
3226 var524 = ((val*(*)(val* self))(var519->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var519); /* native_to_s on <var519:NativeArray[String]>*/
3227 }
3228 varonce518 = var519;
3229 {
3230 nit___nit__AbstractCompilerVisitor___require_declaration(var_v, var524); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
3231 }
3232 if (unlikely(varonce525==NULL)) {
3233 var526 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
3234 if (likely(varonce527!=NULL)) {
3235 var528 = varonce527;
3236 } else {
3237 var529 = "->class = &class_";
3238 var530 = standard___standard__NativeString___to_s_with_length(var529, 17l);
3239 var528 = var530;
3240 varonce527 = var528;
3241 }
3242 ((struct instance_standard__NativeArray*)var526)->values[1]=var528;
3243 if (likely(varonce531!=NULL)) {
3244 var532 = varonce531;
3245 } else {
3246 var533 = ";";
3247 var534 = standard___standard__NativeString___to_s_with_length(var533, 1l);
3248 var532 = var534;
3249 varonce531 = var532;
3250 }
3251 ((struct instance_standard__NativeArray*)var526)->values[3]=var532;
3252 } else {
3253 var526 = varonce525;
3254 varonce525 = NULL;
3255 }
3256 {
3257 var535 = ((val*(*)(val* self))(var_res->class->vft[COLOR_standard__string__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
3258 }
3259 ((struct instance_standard__NativeArray*)var526)->values[0]=var535;
3260 ((struct instance_standard__NativeArray*)var526)->values[2]=var_c_name;
3261 {
3262 var536 = ((val*(*)(val* self))(var526->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var526); /* native_to_s on <var526:NativeArray[String]>*/
3263 }
3264 varonce525 = var526;
3265 {
3266 nit___nit__AbstractCompilerVisitor___add(var_v, var536); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3267 }
3268 if (unlikely(varonce537==NULL)) {
3269 var538 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
3270 if (likely(varonce539!=NULL)) {
3271 var540 = varonce539;
3272 } else {
3273 var541 = "((struct instance_";
3274 var542 = standard___standard__NativeString___to_s_with_length(var541, 18l);
3275 var540 = var542;
3276 varonce539 = var540;
3277 }
3278 ((struct instance_standard__NativeArray*)var538)->values[0]=var540;
3279 if (likely(varonce543!=NULL)) {
3280 var544 = varonce543;
3281 } else {
3282 var545 = "*)";
3283 var546 = standard___standard__NativeString___to_s_with_length(var545, 2l);
3284 var544 = var546;
3285 varonce543 = var544;
3286 }
3287 ((struct instance_standard__NativeArray*)var538)->values[2]=var544;
3288 if (likely(varonce547!=NULL)) {
3289 var548 = varonce547;
3290 } else {
3291 var549 = ")->value = NULL;";
3292 var550 = standard___standard__NativeString___to_s_with_length(var549, 16l);
3293 var548 = var550;
3294 varonce547 = var548;
3295 }
3296 ((struct instance_standard__NativeArray*)var538)->values[4]=var548;
3297 } else {
3298 var538 = varonce537;
3299 varonce537 = NULL;
3300 }
3301 {
3302 var551 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_mtype); /* c_name on <var_mtype:MClassType>*/
3303 }
3304 ((struct instance_standard__NativeArray*)var538)->values[1]=var551;
3305 {
3306 var552 = ((val*(*)(val* self))(var_res->class->vft[COLOR_standard__string__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
3307 }
3308 ((struct instance_standard__NativeArray*)var538)->values[3]=var552;
3309 {
3310 var553 = ((val*(*)(val* self))(var538->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var538); /* native_to_s on <var538:NativeArray[String]>*/
3311 }
3312 varonce537 = var538;
3313 {
3314 nit___nit__AbstractCompilerVisitor___add(var_v, var553); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3315 }
3316 if (unlikely(varonce554==NULL)) {
3317 var555 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
3318 if (likely(varonce556!=NULL)) {
3319 var557 = varonce556;
3320 } else {
3321 var558 = "return ";
3322 var559 = standard___standard__NativeString___to_s_with_length(var558, 7l);
3323 var557 = var559;
3324 varonce556 = var557;
3325 }
3326 ((struct instance_standard__NativeArray*)var555)->values[0]=var557;
3327 if (likely(varonce560!=NULL)) {
3328 var561 = varonce560;
3329 } else {
3330 var562 = ";";
3331 var563 = standard___standard__NativeString___to_s_with_length(var562, 1l);
3332 var561 = var563;
3333 varonce560 = var561;
3334 }
3335 ((struct instance_standard__NativeArray*)var555)->values[2]=var561;
3336 } else {
3337 var555 = varonce554;
3338 varonce554 = NULL;
3339 }
3340 {
3341 var564 = ((val*(*)(val* self))(var_res->class->vft[COLOR_standard__string__Object__to_s]))(var_res); /* to_s on <var_res:RuntimeVariable>*/
3342 }
3343 ((struct instance_standard__NativeArray*)var555)->values[1]=var564;
3344 {
3345 var565 = ((val*(*)(val* self))(var555->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var555); /* native_to_s on <var555:NativeArray[String]>*/
3346 }
3347 varonce554 = var555;
3348 {
3349 nit___nit__AbstractCompilerVisitor___add(var_v, var565); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3350 }
3351 }
3352 if (likely(varonce566!=NULL)) {
3353 var567 = varonce566;
3354 } else {
3355 var568 = "}";
3356 var569 = standard___standard__NativeString___to_s_with_length(var568, 1l);
3357 var567 = var569;
3358 varonce566 = var567;
3359 }
3360 {
3361 nit___nit__AbstractCompilerVisitor___add(var_v, var567); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3362 }
3363 goto RET_LABEL;
3364 } else {
3365 {
3366 { /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
3367 var572 = var_mclass->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var_mclass:MClass> */
3368 if (unlikely(var572 == NULL)) {
3369 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3370 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
3371 fatal_exit(1);
3372 }
3373 var570 = var572;
3374 RET_LABEL571:(void)0;
3375 }
3376 }
3377 if (likely(varonce573!=NULL)) {
3378 var574 = varonce573;
3379 } else {
3380 var575 = "NativeArray";
3381 var576 = standard___standard__NativeString___to_s_with_length(var575, 11l);
3382 var574 = var576;
3383 varonce573 = var574;
3384 }
3385 {
3386 var577 = ((short int(*)(val* self, val* p0))(var570->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var570, var574); /* == on <var570:String>*/
3387 }
3388 if (var577){
3389 {
3390 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
3391 var580 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
3392 if (unlikely(var580 == NULL)) {
3393 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3394 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
3395 fatal_exit(1);
3396 }
3397 var578 = var580;
3398 RET_LABEL579:(void)0;
3399 }
3400 }
3401 if (unlikely(varonce581==NULL)) {
3402 var582 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
3403 if (likely(varonce583!=NULL)) {
3404 var584 = varonce583;
3405 } else {
3406 var585 = "struct instance_";
3407 var586 = standard___standard__NativeString___to_s_with_length(var585, 16l);
3408 var584 = var586;
3409 varonce583 = var584;
3410 }
3411 ((struct instance_standard__NativeArray*)var582)->values[0]=var584;
3412 if (likely(varonce587!=NULL)) {
3413 var588 = varonce587;
3414 } else {
3415 var589 = " {";
3416 var590 = standard___standard__NativeString___to_s_with_length(var589, 2l);
3417 var588 = var590;
3418 varonce587 = var588;
3419 }
3420 ((struct instance_standard__NativeArray*)var582)->values[2]=var588;
3421 } else {
3422 var582 = varonce581;
3423 varonce581 = NULL;
3424 }
3425 ((struct instance_standard__NativeArray*)var582)->values[1]=var_c_name;
3426 {
3427 var591 = ((val*(*)(val* self))(var582->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var582); /* native_to_s on <var582:NativeArray[String]>*/
3428 }
3429 varonce581 = var582;
3430 {
3431 nit___nit__CodeWriter___add_decl(var578, var591); /* Direct call abstract_compiler#CodeWriter#add_decl on <var578:CodeWriter>*/
3432 }
3433 {
3434 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
3435 var594 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
3436 if (unlikely(var594 == NULL)) {
3437 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3438 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
3439 fatal_exit(1);
3440 }
3441 var592 = var594;
3442 RET_LABEL593:(void)0;
3443 }
3444 }
3445 if (likely(varonce595!=NULL)) {
3446 var596 = varonce595;
3447 } else {
3448 var597 = "const struct type *type;";
3449 var598 = standard___standard__NativeString___to_s_with_length(var597, 24l);
3450 var596 = var598;
3451 varonce595 = var596;
3452 }
3453 {
3454 nit___nit__CodeWriter___add_decl(var592, var596); /* Direct call abstract_compiler#CodeWriter#add_decl on <var592:CodeWriter>*/
3455 }
3456 {
3457 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
3458 var601 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
3459 if (unlikely(var601 == NULL)) {
3460 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3461 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
3462 fatal_exit(1);
3463 }
3464 var599 = var601;
3465 RET_LABEL600:(void)0;
3466 }
3467 }
3468 if (likely(varonce602!=NULL)) {
3469 var603 = varonce602;
3470 } else {
3471 var604 = "const struct class *class;";
3472 var605 = standard___standard__NativeString___to_s_with_length(var604, 26l);
3473 var603 = var605;
3474 varonce602 = var603;
3475 }
3476 {
3477 nit___nit__CodeWriter___add_decl(var599, var603); /* Direct call abstract_compiler#CodeWriter#add_decl on <var599:CodeWriter>*/
3478 }
3479 {
3480 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
3481 var608 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
3482 if (unlikely(var608 == NULL)) {
3483 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3484 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
3485 fatal_exit(1);
3486 }
3487 var606 = var608;
3488 RET_LABEL607:(void)0;
3489 }
3490 }
3491 if (likely(varonce609!=NULL)) {
3492 var610 = varonce609;
3493 } else {
3494 var611 = "int length;";
3495 var612 = standard___standard__NativeString___to_s_with_length(var611, 11l);
3496 var610 = var612;
3497 varonce609 = var610;
3498 }
3499 {
3500 nit___nit__CodeWriter___add_decl(var606, var610); /* Direct call abstract_compiler#CodeWriter#add_decl on <var606:CodeWriter>*/
3501 }
3502 {
3503 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
3504 var615 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
3505 if (unlikely(var615 == NULL)) {
3506 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3507 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
3508 fatal_exit(1);
3509 }
3510 var613 = var615;
3511 RET_LABEL614:(void)0;
3512 }
3513 }
3514 if (likely(varonce616!=NULL)) {
3515 var617 = varonce616;
3516 } else {
3517 var618 = "val* values[0];";
3518 var619 = standard___standard__NativeString___to_s_with_length(var618, 15l);
3519 var617 = var619;
3520 varonce616 = var617;
3521 }
3522 {
3523 nit___nit__CodeWriter___add_decl(var613, var617); /* Direct call abstract_compiler#CodeWriter#add_decl on <var613:CodeWriter>*/
3524 }
3525 {
3526 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
3527 var622 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
3528 if (unlikely(var622 == NULL)) {
3529 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
3530 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
3531 fatal_exit(1);
3532 }
3533 var620 = var622;
3534 RET_LABEL621:(void)0;
3535 }
3536 }
3537 if (likely(varonce623!=NULL)) {
3538 var624 = varonce623;
3539 } else {
3540 var625 = "};";
3541 var626 = standard___standard__NativeString___to_s_with_length(var625, 2l);
3542 var624 = var626;
3543 varonce623 = var624;
3544 }
3545 {
3546 nit___nit__CodeWriter___add_decl(var620, var624); /* Direct call abstract_compiler#CodeWriter#add_decl on <var620:CodeWriter>*/
3547 }
3548 if (unlikely(varonce627==NULL)) {
3549 var628 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
3550 if (likely(varonce629!=NULL)) {
3551 var630 = varonce629;
3552 } else {
3553 var631 = "NEW_";
3554 var632 = standard___standard__NativeString___to_s_with_length(var631, 4l);
3555 var630 = var632;
3556 varonce629 = var630;
3557 }
3558 ((struct instance_standard__NativeArray*)var628)->values[0]=var630;
3559 } else {
3560 var628 = varonce627;
3561 varonce627 = NULL;
3562 }
3563 ((struct instance_standard__NativeArray*)var628)->values[1]=var_c_name;
3564 {
3565 var633 = ((val*(*)(val* self))(var628->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var628); /* native_to_s on <var628:NativeArray[String]>*/
3566 }
3567 varonce627 = var628;
3568 if (unlikely(varonce634==NULL)) {
3569 var635 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
3570 if (likely(varonce636!=NULL)) {
3571 var637 = varonce636;
3572 } else {
3573 var638 = " NEW_";
3574 var639 = standard___standard__NativeString___to_s_with_length(var638, 5l);
3575 var637 = var639;
3576 varonce636 = var637;
3577 }
3578 ((struct instance_standard__NativeArray*)var635)->values[1]=var637;
3579 if (likely(varonce640!=NULL)) {
3580 var641 = varonce640;
3581 } else {
3582 var642 = "(int length, const struct type* type);";
3583 var643 = standard___standard__NativeString___to_s_with_length(var642, 38l);
3584 var641 = var643;
3585 varonce640 = var641;
3586 }
3587 ((struct instance_standard__NativeArray*)var635)->values[3]=var641;
3588 } else {
3589 var635 = varonce634;
3590 varonce634 = NULL;
3591 }
3592 {
3593 var644 = nit__abstract_compiler___MClassType___MType__ctype(var_mtype);
3594 }
3595 ((struct instance_standard__NativeArray*)var635)->values[0]=var644;
3596 ((struct instance_standard__NativeArray*)var635)->values[2]=var_c_name;
3597 {
3598 var645 = ((val*(*)(val* self))(var635->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var635); /* native_to_s on <var635:NativeArray[String]>*/
3599 }
3600 varonce634 = var635;
3601 {
3602 nit___nit__AbstractCompiler___provide_declaration(self, var633, var645); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
3603 }
3604 if (unlikely(varonce646==NULL)) {
3605 var647 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
3606 if (likely(varonce648!=NULL)) {
3607 var649 = varonce648;
3608 } else {
3609 var650 = "/* allocate ";
3610 var651 = standard___standard__NativeString___to_s_with_length(var650, 12l);
3611 var649 = var651;
3612 varonce648 = var649;
3613 }
3614 ((struct instance_standard__NativeArray*)var647)->values[0]=var649;
3615 if (likely(varonce652!=NULL)) {
3616 var653 = varonce652;
3617 } else {
3618 var654 = " */";
3619 var655 = standard___standard__NativeString___to_s_with_length(var654, 3l);
3620 var653 = var655;
3621 varonce652 = var653;
3622 }
3623 ((struct instance_standard__NativeArray*)var647)->values[2]=var653;
3624 } else {
3625 var647 = varonce646;
3626 varonce646 = NULL;
3627 }
3628 {
3629 var656 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
3630 }
3631 ((struct instance_standard__NativeArray*)var647)->values[1]=var656;
3632 {
3633 var657 = ((val*(*)(val* self))(var647->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var647); /* native_to_s on <var647:NativeArray[String]>*/
3634 }
3635 varonce646 = var647;
3636 {
3637 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var657); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3638 }
3639 if (unlikely(varonce658==NULL)) {
3640 var659 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
3641 if (likely(varonce660!=NULL)) {
3642 var661 = varonce660;
3643 } else {
3644 var662 = " NEW_";
3645 var663 = standard___standard__NativeString___to_s_with_length(var662, 5l);
3646 var661 = var663;
3647 varonce660 = var661;
3648 }
3649 ((struct instance_standard__NativeArray*)var659)->values[1]=var661;
3650 if (likely(varonce664!=NULL)) {
3651 var665 = varonce664;
3652 } else {
3653 var666 = "(int length, const struct type* type) {";
3654 var667 = standard___standard__NativeString___to_s_with_length(var666, 39l);
3655 var665 = var667;
3656 varonce664 = var665;
3657 }
3658 ((struct instance_standard__NativeArray*)var659)->values[3]=var665;
3659 } else {
3660 var659 = varonce658;
3661 varonce658 = NULL;
3662 }
3663 {
3664 var668 = nit__abstract_compiler___MClassType___MType__ctype(var_mtype);
3665 }
3666 ((struct instance_standard__NativeArray*)var659)->values[0]=var668;
3667 ((struct instance_standard__NativeArray*)var659)->values[2]=var_c_name;
3668 {
3669 var669 = ((val*(*)(val* self))(var659->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var659); /* native_to_s on <var659:NativeArray[String]>*/
3670 }
3671 varonce658 = var659;
3672 {
3673 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var669); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3674 }
3675 if (likely(varonce670!=NULL)) {
3676 var671 = varonce670;
3677 } else {
3678 var672 = "self";
3679 var673 = standard___standard__NativeString___to_s_with_length(var672, 4l);
3680 var671 = var673;
3681 varonce670 = var671;
3682 }
3683 {
3684 var674 = nit___nit__AbstractCompilerVisitor___get_name(var_v, var671);
3685 }
3686 var_res675 = var674;
3687 if (unlikely(varonce676==NULL)) {
3688 var677 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
3689 if (likely(varonce678!=NULL)) {
3690 var679 = varonce678;
3691 } else {
3692 var680 = "struct instance_";
3693 var681 = standard___standard__NativeString___to_s_with_length(var680, 16l);
3694 var679 = var681;
3695 varonce678 = var679;
3696 }
3697 ((struct instance_standard__NativeArray*)var677)->values[0]=var679;
3698 if (likely(varonce682!=NULL)) {
3699 var683 = varonce682;
3700 } else {
3701 var684 = " *";
3702 var685 = standard___standard__NativeString___to_s_with_length(var684, 2l);
3703 var683 = var685;
3704 varonce682 = var683;
3705 }
3706 ((struct instance_standard__NativeArray*)var677)->values[2]=var683;
3707 if (likely(varonce686!=NULL)) {
3708 var687 = varonce686;
3709 } else {
3710 var688 = ";";
3711 var689 = standard___standard__NativeString___to_s_with_length(var688, 1l);
3712 var687 = var689;
3713 varonce686 = var687;
3714 }
3715 ((struct instance_standard__NativeArray*)var677)->values[4]=var687;
3716 } else {
3717 var677 = varonce676;
3718 varonce676 = NULL;
3719 }
3720 ((struct instance_standard__NativeArray*)var677)->values[1]=var_c_name;
3721 ((struct instance_standard__NativeArray*)var677)->values[3]=var_res675;
3722 {
3723 var690 = ((val*(*)(val* self))(var677->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var677); /* native_to_s on <var677:NativeArray[String]>*/
3724 }
3725 varonce676 = var677;
3726 {
3727 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var690); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3728 }
3729 {
3730 var691 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_nit__model__MClassType__arguments]))(var_mtype); /* arguments on <var_mtype:MClassType>*/
3731 }
3732 {
3733 var692 = standard___standard__SequenceRead___Collection__first(var691);
3734 }
3735 var_mtype_elt = var692;
3736 if (unlikely(varonce693==NULL)) {
3737 var694 = NEW_standard__NativeArray(6l, &type_standard__NativeArray__standard__String);
3738 if (likely(varonce695!=NULL)) {
3739 var696 = varonce695;
3740 } else {
3741 var697 = " = nit_alloc(sizeof(struct instance_";
3742 var698 = standard___standard__NativeString___to_s_with_length(var697, 36l);
3743 var696 = var698;
3744 varonce695 = var696;
3745 }
3746 ((struct instance_standard__NativeArray*)var694)->values[1]=var696;
3747 if (likely(varonce699!=NULL)) {
3748 var700 = varonce699;
3749 } else {
3750 var701 = ") + length*sizeof(";
3751 var702 = standard___standard__NativeString___to_s_with_length(var701, 18l);
3752 var700 = var702;
3753 varonce699 = var700;
3754 }
3755 ((struct instance_standard__NativeArray*)var694)->values[3]=var700;
3756 if (likely(varonce703!=NULL)) {
3757 var704 = varonce703;
3758 } else {
3759 var705 = "));";
3760 var706 = standard___standard__NativeString___to_s_with_length(var705, 3l);
3761 var704 = var706;
3762 varonce703 = var704;
3763 }
3764 ((struct instance_standard__NativeArray*)var694)->values[5]=var704;
3765 } else {
3766 var694 = varonce693;
3767 varonce693 = NULL;
3768 }
3769 ((struct instance_standard__NativeArray*)var694)->values[0]=var_res675;
3770 ((struct instance_standard__NativeArray*)var694)->values[2]=var_c_name;
3771 {
3772 var707 = ((val*(*)(val* self))(var_mtype_elt->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var_mtype_elt); /* ctype on <var_mtype_elt:MType>*/
3773 }
3774 ((struct instance_standard__NativeArray*)var694)->values[4]=var707;
3775 {
3776 var708 = ((val*(*)(val* self))(var694->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var694); /* native_to_s on <var694:NativeArray[String]>*/
3777 }
3778 varonce693 = var694;
3779 {
3780 nit___nit__AbstractCompilerVisitor___add(var_v, var708); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3781 }
3782 if (unlikely(varonce709==NULL)) {
3783 var710 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
3784 if (likely(varonce711!=NULL)) {
3785 var712 = varonce711;
3786 } else {
3787 var713 = "->type = type;";
3788 var714 = standard___standard__NativeString___to_s_with_length(var713, 14l);
3789 var712 = var714;
3790 varonce711 = var712;
3791 }
3792 ((struct instance_standard__NativeArray*)var710)->values[1]=var712;
3793 } else {
3794 var710 = varonce709;
3795 varonce709 = NULL;
3796 }
3797 ((struct instance_standard__NativeArray*)var710)->values[0]=var_res675;
3798 {
3799 var715 = ((val*(*)(val* self))(var710->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var710); /* native_to_s on <var710:NativeArray[String]>*/
3800 }
3801 varonce709 = var710;
3802 {
3803 nit___nit__AbstractCompilerVisitor___add(var_v, var715); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3804 }
3805 if (likely(varonce716!=NULL)) {
3806 var717 = varonce716;
3807 } else {
3808 var718 = "type";
3809 var719 = standard___standard__NativeString___to_s_with_length(var718, 4l);
3810 var717 = var719;
3811 varonce716 = var717;
3812 }
3813 {
3814 nit___nit__SeparateCompiler___hardening_live_type(self, var_v, var717); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:SeparateCompiler>*/
3815 }
3816 if (unlikely(varonce720==NULL)) {
3817 var721 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
3818 if (likely(varonce722!=NULL)) {
3819 var723 = varonce722;
3820 } else {
3821 var724 = "class_";
3822 var725 = standard___standard__NativeString___to_s_with_length(var724, 6l);
3823 var723 = var725;
3824 varonce722 = var723;
3825 }
3826 ((struct instance_standard__NativeArray*)var721)->values[0]=var723;
3827 } else {
3828 var721 = varonce720;
3829 varonce720 = NULL;
3830 }
3831 ((struct instance_standard__NativeArray*)var721)->values[1]=var_c_name;
3832 {
3833 var726 = ((val*(*)(val* self))(var721->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var721); /* native_to_s on <var721:NativeArray[String]>*/
3834 }
3835 varonce720 = var721;
3836 {
3837 nit___nit__AbstractCompilerVisitor___require_declaration(var_v, var726); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
3838 }
3839 if (unlikely(varonce727==NULL)) {
3840 var728 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
3841 if (likely(varonce729!=NULL)) {
3842 var730 = varonce729;
3843 } else {
3844 var731 = "->class = &class_";
3845 var732 = standard___standard__NativeString___to_s_with_length(var731, 17l);
3846 var730 = var732;
3847 varonce729 = var730;
3848 }
3849 ((struct instance_standard__NativeArray*)var728)->values[1]=var730;
3850 if (likely(varonce733!=NULL)) {
3851 var734 = varonce733;
3852 } else {
3853 var735 = ";";
3854 var736 = standard___standard__NativeString___to_s_with_length(var735, 1l);
3855 var734 = var736;
3856 varonce733 = var734;
3857 }
3858 ((struct instance_standard__NativeArray*)var728)->values[3]=var734;
3859 } else {
3860 var728 = varonce727;
3861 varonce727 = NULL;
3862 }
3863 ((struct instance_standard__NativeArray*)var728)->values[0]=var_res675;
3864 ((struct instance_standard__NativeArray*)var728)->values[2]=var_c_name;
3865 {
3866 var737 = ((val*(*)(val* self))(var728->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var728); /* native_to_s on <var728:NativeArray[String]>*/
3867 }
3868 varonce727 = var728;
3869 {
3870 nit___nit__AbstractCompilerVisitor___add(var_v, var737); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3871 }
3872 if (unlikely(varonce738==NULL)) {
3873 var739 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
3874 if (likely(varonce740!=NULL)) {
3875 var741 = varonce740;
3876 } else {
3877 var742 = "->length = length;";
3878 var743 = standard___standard__NativeString___to_s_with_length(var742, 18l);
3879 var741 = var743;
3880 varonce740 = var741;
3881 }
3882 ((struct instance_standard__NativeArray*)var739)->values[1]=var741;
3883 } else {
3884 var739 = varonce738;
3885 varonce738 = NULL;
3886 }
3887 ((struct instance_standard__NativeArray*)var739)->values[0]=var_res675;
3888 {
3889 var744 = ((val*(*)(val* self))(var739->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var739); /* native_to_s on <var739:NativeArray[String]>*/
3890 }
3891 varonce738 = var739;
3892 {
3893 nit___nit__AbstractCompilerVisitor___add(var_v, var744); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3894 }
3895 if (unlikely(varonce745==NULL)) {
3896 var746 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
3897 if (likely(varonce747!=NULL)) {
3898 var748 = varonce747;
3899 } else {
3900 var749 = "return (val*)";
3901 var750 = standard___standard__NativeString___to_s_with_length(var749, 13l);
3902 var748 = var750;
3903 varonce747 = var748;
3904 }
3905 ((struct instance_standard__NativeArray*)var746)->values[0]=var748;
3906 if (likely(varonce751!=NULL)) {
3907 var752 = varonce751;
3908 } else {
3909 var753 = ";";
3910 var754 = standard___standard__NativeString___to_s_with_length(var753, 1l);
3911 var752 = var754;
3912 varonce751 = var752;
3913 }
3914 ((struct instance_standard__NativeArray*)var746)->values[2]=var752;
3915 } else {
3916 var746 = varonce745;
3917 varonce745 = NULL;
3918 }
3919 ((struct instance_standard__NativeArray*)var746)->values[1]=var_res675;
3920 {
3921 var755 = ((val*(*)(val* self))(var746->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var746); /* native_to_s on <var746:NativeArray[String]>*/
3922 }
3923 varonce745 = var746;
3924 {
3925 nit___nit__AbstractCompilerVisitor___add(var_v, var755); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3926 }
3927 if (likely(varonce756!=NULL)) {
3928 var757 = varonce756;
3929 } else {
3930 var758 = "}";
3931 var759 = standard___standard__NativeString___to_s_with_length(var758, 1l);
3932 var757 = var759;
3933 varonce756 = var757;
3934 }
3935 {
3936 nit___nit__AbstractCompilerVisitor___add(var_v, var757); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
3937 }
3938 goto RET_LABEL;
3939 } else {
3940 {
3941 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
3942 var763 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
3943 if (unlikely(var763 == NULL)) {
3944 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3945 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
3946 fatal_exit(1);
3947 }
3948 var761 = var763;
3949 RET_LABEL762:(void)0;
3950 }
3951 }
3952 {
3953 { /* Inline model#MClass#kind (var761) on <var761:MClass> */
3954 var766 = var761->attrs[COLOR_nit__model__MClass___kind].val; /* _kind on <var761:MClass> */
3955 if (unlikely(var766 == NULL)) {
3956 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
3957 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 436);
3958 fatal_exit(1);
3959 }
3960 var764 = var766;
3961 RET_LABEL765:(void)0;
3962 }
3963 }
3964 var767 = glob_sys;
3965 {
3966 var768 = nit__model___standard__Sys___extern_kind(var767);
3967 }
3968 {
3969 { /* Inline kernel#Object#== (var764,var768) on <var764:MClassKind> */
3970 var_other126 = var768;
3971 {
3972 { /* Inline kernel#Object#is_same_instance (var764,var_other126) on <var764:MClassKind> */
3973 var773 = var764 == var_other126;
3974 var771 = var773;
3975 goto RET_LABEL772;
3976 RET_LABEL772:(void)0;
3977 }
3978 }
3979 var769 = var771;
3980 goto RET_LABEL770;
3981 RET_LABEL770:(void)0;
3982 }
3983 }
3984 var_774 = var769;
3985 if (var769){
3986 {
3987 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
3988 var777 = var_mtype->attrs[COLOR_nit__model__MClassType___mclass].val; /* _mclass on <var_mtype:MClassType> */
3989 if (unlikely(var777 == NULL)) {
3990 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
3991 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1138);
3992 fatal_exit(1);
3993 }
3994 var775 = var777;
3995 RET_LABEL776:(void)0;
3996 }
3997 }
3998 {
3999 { /* Inline model#MClass#name (var775) on <var775:MClass> */
4000 var780 = var775->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var775:MClass> */
4001 if (unlikely(var780 == NULL)) {
4002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4003 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
4004 fatal_exit(1);
4005 }
4006 var778 = var780;
4007 RET_LABEL779:(void)0;
4008 }
4009 }
4010 if (likely(varonce781!=NULL)) {
4011 var782 = varonce781;
4012 } else {
4013 var783 = "NativeString";
4014 var784 = standard___standard__NativeString___to_s_with_length(var783, 12l);
4015 var782 = var784;
4016 varonce781 = var782;
4017 }
4018 {
4019 { /* Inline kernel#Object#!= (var778,var782) on <var778:String> */
4020 var_other = var782;
4021 {
4022 var787 = ((short int(*)(val* self, val* p0))(var778->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var778, var_other); /* == on <var778:String>*/
4023 }
4024 var788 = !var787;
4025 var785 = var788;
4026 goto RET_LABEL786;
4027 RET_LABEL786:(void)0;
4028 }
4029 }
4030 var760 = var785;
4031 } else {
4032 var760 = var_774;
4033 }
4034 if (var760){
4035 {
4036 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
4037 var791 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
4038 if (unlikely(var791 == NULL)) {
4039 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
4040 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
4041 fatal_exit(1);
4042 }
4043 var789 = var791;
4044 RET_LABEL790:(void)0;
4045 }
4046 }
4047 {
4048 var792 = nit__model___MModule___pointer_type(var789);
4049 }
4050 var_pointer_type = var792;
4051 if (unlikely(varonce793==NULL)) {
4052 var794 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
4053 if (likely(varonce795!=NULL)) {
4054 var796 = varonce795;
4055 } else {
4056 var797 = "NEW_";
4057 var798 = standard___standard__NativeString___to_s_with_length(var797, 4l);
4058 var796 = var798;
4059 varonce795 = var796;
4060 }
4061 ((struct instance_standard__NativeArray*)var794)->values[0]=var796;
4062 } else {
4063 var794 = varonce793;
4064 varonce793 = NULL;
4065 }
4066 ((struct instance_standard__NativeArray*)var794)->values[1]=var_c_name;
4067 {
4068 var799 = ((val*(*)(val* self))(var794->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var794); /* native_to_s on <var794:NativeArray[String]>*/
4069 }
4070 varonce793 = var794;
4071 if (unlikely(varonce800==NULL)) {
4072 var801 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
4073 if (likely(varonce802!=NULL)) {
4074 var803 = varonce802;
4075 } else {
4076 var804 = " NEW_";
4077 var805 = standard___standard__NativeString___to_s_with_length(var804, 5l);
4078 var803 = var805;
4079 varonce802 = var803;
4080 }
4081 ((struct instance_standard__NativeArray*)var801)->values[1]=var803;
4082 if (likely(varonce806!=NULL)) {
4083 var807 = varonce806;
4084 } else {
4085 var808 = "(const struct type* type);";
4086 var809 = standard___standard__NativeString___to_s_with_length(var808, 26l);
4087 var807 = var809;
4088 varonce806 = var807;
4089 }
4090 ((struct instance_standard__NativeArray*)var801)->values[3]=var807;
4091 } else {
4092 var801 = varonce800;
4093 varonce800 = NULL;
4094 }
4095 {
4096 var810 = nit__abstract_compiler___MClassType___MType__ctype(var_mtype);
4097 }
4098 ((struct instance_standard__NativeArray*)var801)->values[0]=var810;
4099 ((struct instance_standard__NativeArray*)var801)->values[2]=var_c_name;
4100 {
4101 var811 = ((val*(*)(val* self))(var801->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var801); /* native_to_s on <var801:NativeArray[String]>*/
4102 }
4103 varonce800 = var801;
4104 {
4105 nit___nit__AbstractCompiler___provide_declaration(self, var799, var811); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
4106 }
4107 if (unlikely(varonce812==NULL)) {
4108 var813 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
4109 if (likely(varonce814!=NULL)) {
4110 var815 = varonce814;
4111 } else {
4112 var816 = "/* allocate ";
4113 var817 = standard___standard__NativeString___to_s_with_length(var816, 12l);
4114 var815 = var817;
4115 varonce814 = var815;
4116 }
4117 ((struct instance_standard__NativeArray*)var813)->values[0]=var815;
4118 if (likely(varonce818!=NULL)) {
4119 var819 = varonce818;
4120 } else {
4121 var820 = " */";
4122 var821 = standard___standard__NativeString___to_s_with_length(var820, 3l);
4123 var819 = var821;
4124 varonce818 = var819;
4125 }
4126 ((struct instance_standard__NativeArray*)var813)->values[2]=var819;
4127 } else {
4128 var813 = varonce812;
4129 varonce812 = NULL;
4130 }
4131 {
4132 var822 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
4133 }
4134 ((struct instance_standard__NativeArray*)var813)->values[1]=var822;
4135 {
4136 var823 = ((val*(*)(val* self))(var813->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var813); /* native_to_s on <var813:NativeArray[String]>*/
4137 }
4138 varonce812 = var813;
4139 {
4140 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var823); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4141 }
4142 if (unlikely(varonce824==NULL)) {
4143 var825 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
4144 if (likely(varonce826!=NULL)) {
4145 var827 = varonce826;
4146 } else {
4147 var828 = " NEW_";
4148 var829 = standard___standard__NativeString___to_s_with_length(var828, 5l);
4149 var827 = var829;
4150 varonce826 = var827;
4151 }
4152 ((struct instance_standard__NativeArray*)var825)->values[1]=var827;
4153 if (likely(varonce830!=NULL)) {
4154 var831 = varonce830;
4155 } else {
4156 var832 = "(const struct type* type) {";
4157 var833 = standard___standard__NativeString___to_s_with_length(var832, 27l);
4158 var831 = var833;
4159 varonce830 = var831;
4160 }
4161 ((struct instance_standard__NativeArray*)var825)->values[3]=var831;
4162 } else {
4163 var825 = varonce824;
4164 varonce824 = NULL;
4165 }
4166 {
4167 var834 = nit__abstract_compiler___MClassType___MType__ctype(var_mtype);
4168 }
4169 ((struct instance_standard__NativeArray*)var825)->values[0]=var834;
4170 ((struct instance_standard__NativeArray*)var825)->values[2]=var_c_name;
4171 {
4172 var835 = ((val*(*)(val* self))(var825->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var825); /* native_to_s on <var825:NativeArray[String]>*/
4173 }
4174 varonce824 = var825;
4175 {
4176 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var835); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4177 }
4178 if (var_is_dead){
4179 if (unlikely(varonce836==NULL)) {
4180 var837 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
4181 if (likely(varonce838!=NULL)) {
4182 var839 = varonce838;
4183 } else {
4184 var840 = " is DEAD";
4185 var841 = standard___standard__NativeString___to_s_with_length(var840, 8l);
4186 var839 = var841;
4187 varonce838 = var839;
4188 }
4189 ((struct instance_standard__NativeArray*)var837)->values[1]=var839;
4190 } else {
4191 var837 = varonce836;
4192 varonce836 = NULL;
4193 }
4194 {
4195 var842 = ((val*(*)(val* self))(var_mclass->class->vft[COLOR_standard__string__Object__to_s]))(var_mclass); /* to_s on <var_mclass:MClass>*/
4196 }
4197 ((struct instance_standard__NativeArray*)var837)->values[0]=var842;
4198 {
4199 var843 = ((val*(*)(val* self))(var837->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var837); /* native_to_s on <var837:NativeArray[String]>*/
4200 }
4201 varonce836 = var837;
4202 {
4203 nit___nit__AbstractCompilerVisitor___add_abort(var_v, var843); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
4204 }
4205 } else {
4206 if (likely(varonce844!=NULL)) {
4207 var845 = varonce844;
4208 } else {
4209 var846 = "self";
4210 var847 = standard___standard__NativeString___to_s_with_length(var846, 4l);
4211 var845 = var847;
4212 varonce844 = var845;
4213 }
4214 {
4215 var848 = nit___nit__AbstractCompilerVisitor___new_named_var(var_v, var_mtype, var845);
4216 }
4217 var_res849 = var848;
4218 {
4219 { /* Inline abstract_compiler#RuntimeVariable#is_exact= (var_res849,1) on <var_res849:RuntimeVariable> */
4220 var_res849->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___is_exact].s = 1; /* _is_exact on <var_res849:RuntimeVariable> */
4221 RET_LABEL850:(void)0;
4222 }
4223 }
4224 if (unlikely(varonce851==NULL)) {
4225 var852 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
4226 if (likely(varonce853!=NULL)) {
4227 var854 = varonce853;
4228 } else {
4229 var855 = " = nit_alloc(sizeof(struct instance_";
4230 var856 = standard___standard__NativeString___to_s_with_length(var855, 36l);
4231 var854 = var856;
4232 varonce853 = var854;
4233 }
4234 ((struct instance_standard__NativeArray*)var852)->values[1]=var854;
4235 if (likely(varonce857!=NULL)) {
4236 var858 = varonce857;
4237 } else {
4238 var859 = "));";
4239 var860 = standard___standard__NativeString___to_s_with_length(var859, 3l);
4240 var858 = var860;
4241 varonce857 = var858;
4242 }
4243 ((struct instance_standard__NativeArray*)var852)->values[3]=var858;
4244 } else {
4245 var852 = varonce851;
4246 varonce851 = NULL;
4247 }
4248 {
4249 var861 = ((val*(*)(val* self))(var_res849->class->vft[COLOR_standard__string__Object__to_s]))(var_res849); /* to_s on <var_res849:RuntimeVariable>*/
4250 }
4251 ((struct instance_standard__NativeArray*)var852)->values[0]=var861;
4252 {
4253 var862 = ((val*(*)(val* self))(var_pointer_type->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_pointer_type); /* c_name on <var_pointer_type:MClassType>*/
4254 }
4255 ((struct instance_standard__NativeArray*)var852)->values[2]=var862;
4256 {
4257 var863 = ((val*(*)(val* self))(var852->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var852); /* native_to_s on <var852:NativeArray[String]>*/
4258 }
4259 varonce851 = var852;
4260 {
4261 nit___nit__AbstractCompilerVisitor___add(var_v, var863); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4262 }
4263 if (unlikely(varonce864==NULL)) {
4264 var865 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
4265 if (likely(varonce866!=NULL)) {
4266 var867 = varonce866;
4267 } else {
4268 var868 = "->type = type;";
4269 var869 = standard___standard__NativeString___to_s_with_length(var868, 14l);
4270 var867 = var869;
4271 varonce866 = var867;
4272 }
4273 ((struct instance_standard__NativeArray*)var865)->values[1]=var867;
4274 } else {
4275 var865 = varonce864;
4276 varonce864 = NULL;
4277 }
4278 {
4279 var870 = ((val*(*)(val* self))(var_res849->class->vft[COLOR_standard__string__Object__to_s]))(var_res849); /* to_s on <var_res849:RuntimeVariable>*/
4280 }
4281 ((struct instance_standard__NativeArray*)var865)->values[0]=var870;
4282 {
4283 var871 = ((val*(*)(val* self))(var865->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var865); /* native_to_s on <var865:NativeArray[String]>*/
4284 }
4285 varonce864 = var865;
4286 {
4287 nit___nit__AbstractCompilerVisitor___add(var_v, var871); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4288 }
4289 if (likely(varonce872!=NULL)) {
4290 var873 = varonce872;
4291 } else {
4292 var874 = "type";
4293 var875 = standard___standard__NativeString___to_s_with_length(var874, 4l);
4294 var873 = var875;
4295 varonce872 = var873;
4296 }
4297 {
4298 nit___nit__SeparateCompiler___hardening_live_type(self, var_v, var873); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:SeparateCompiler>*/
4299 }
4300 if (unlikely(varonce876==NULL)) {
4301 var877 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
4302 if (likely(varonce878!=NULL)) {
4303 var879 = varonce878;
4304 } else {
4305 var880 = "class_";
4306 var881 = standard___standard__NativeString___to_s_with_length(var880, 6l);
4307 var879 = var881;
4308 varonce878 = var879;
4309 }
4310 ((struct instance_standard__NativeArray*)var877)->values[0]=var879;
4311 } else {
4312 var877 = varonce876;
4313 varonce876 = NULL;
4314 }
4315 ((struct instance_standard__NativeArray*)var877)->values[1]=var_c_name;
4316 {
4317 var882 = ((val*(*)(val* self))(var877->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var877); /* native_to_s on <var877:NativeArray[String]>*/
4318 }
4319 varonce876 = var877;
4320 {
4321 nit___nit__AbstractCompilerVisitor___require_declaration(var_v, var882); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
4322 }
4323 if (unlikely(varonce883==NULL)) {
4324 var884 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
4325 if (likely(varonce885!=NULL)) {
4326 var886 = varonce885;
4327 } else {
4328 var887 = "->class = &class_";
4329 var888 = standard___standard__NativeString___to_s_with_length(var887, 17l);
4330 var886 = var888;
4331 varonce885 = var886;
4332 }
4333 ((struct instance_standard__NativeArray*)var884)->values[1]=var886;
4334 if (likely(varonce889!=NULL)) {
4335 var890 = varonce889;
4336 } else {
4337 var891 = ";";
4338 var892 = standard___standard__NativeString___to_s_with_length(var891, 1l);
4339 var890 = var892;
4340 varonce889 = var890;
4341 }
4342 ((struct instance_standard__NativeArray*)var884)->values[3]=var890;
4343 } else {
4344 var884 = varonce883;
4345 varonce883 = NULL;
4346 }
4347 {
4348 var893 = ((val*(*)(val* self))(var_res849->class->vft[COLOR_standard__string__Object__to_s]))(var_res849); /* to_s on <var_res849:RuntimeVariable>*/
4349 }
4350 ((struct instance_standard__NativeArray*)var884)->values[0]=var893;
4351 ((struct instance_standard__NativeArray*)var884)->values[2]=var_c_name;
4352 {
4353 var894 = ((val*(*)(val* self))(var884->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var884); /* native_to_s on <var884:NativeArray[String]>*/
4354 }
4355 varonce883 = var884;
4356 {
4357 nit___nit__AbstractCompilerVisitor___add(var_v, var894); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4358 }
4359 if (unlikely(varonce895==NULL)) {
4360 var896 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
4361 if (likely(varonce897!=NULL)) {
4362 var898 = varonce897;
4363 } else {
4364 var899 = "((struct instance_";
4365 var900 = standard___standard__NativeString___to_s_with_length(var899, 18l);
4366 var898 = var900;
4367 varonce897 = var898;
4368 }
4369 ((struct instance_standard__NativeArray*)var896)->values[0]=var898;
4370 if (likely(varonce901!=NULL)) {
4371 var902 = varonce901;
4372 } else {
4373 var903 = "*)";
4374 var904 = standard___standard__NativeString___to_s_with_length(var903, 2l);
4375 var902 = var904;
4376 varonce901 = var902;
4377 }
4378 ((struct instance_standard__NativeArray*)var896)->values[2]=var902;
4379 if (likely(varonce905!=NULL)) {
4380 var906 = varonce905;
4381 } else {
4382 var907 = ")->value = NULL;";
4383 var908 = standard___standard__NativeString___to_s_with_length(var907, 16l);
4384 var906 = var908;
4385 varonce905 = var906;
4386 }
4387 ((struct instance_standard__NativeArray*)var896)->values[4]=var906;
4388 } else {
4389 var896 = varonce895;
4390 varonce895 = NULL;
4391 }
4392 {
4393 var909 = ((val*(*)(val* self))(var_pointer_type->class->vft[COLOR_nit__model_base__MEntity__c_name]))(var_pointer_type); /* c_name on <var_pointer_type:MClassType>*/
4394 }
4395 ((struct instance_standard__NativeArray*)var896)->values[1]=var909;
4396 {
4397 var910 = ((val*(*)(val* self))(var_res849->class->vft[COLOR_standard__string__Object__to_s]))(var_res849); /* to_s on <var_res849:RuntimeVariable>*/
4398 }
4399 ((struct instance_standard__NativeArray*)var896)->values[3]=var910;
4400 {
4401 var911 = ((val*(*)(val* self))(var896->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var896); /* native_to_s on <var896:NativeArray[String]>*/
4402 }
4403 varonce895 = var896;
4404 {
4405 nit___nit__AbstractCompilerVisitor___add(var_v, var911); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4406 }
4407 if (unlikely(varonce912==NULL)) {
4408 var913 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
4409 if (likely(varonce914!=NULL)) {
4410 var915 = varonce914;
4411 } else {
4412 var916 = "return ";
4413 var917 = standard___standard__NativeString___to_s_with_length(var916, 7l);
4414 var915 = var917;
4415 varonce914 = var915;
4416 }
4417 ((struct instance_standard__NativeArray*)var913)->values[0]=var915;
4418 if (likely(varonce918!=NULL)) {
4419 var919 = varonce918;
4420 } else {
4421 var920 = ";";
4422 var921 = standard___standard__NativeString___to_s_with_length(var920, 1l);
4423 var919 = var921;
4424 varonce918 = var919;
4425 }
4426 ((struct instance_standard__NativeArray*)var913)->values[2]=var919;
4427 } else {
4428 var913 = varonce912;
4429 varonce912 = NULL;
4430 }
4431 {
4432 var922 = ((val*(*)(val* self))(var_res849->class->vft[COLOR_standard__string__Object__to_s]))(var_res849); /* to_s on <var_res849:RuntimeVariable>*/
4433 }
4434 ((struct instance_standard__NativeArray*)var913)->values[1]=var922;
4435 {
4436 var923 = ((val*(*)(val* self))(var913->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var913); /* native_to_s on <var913:NativeArray[String]>*/
4437 }
4438 varonce912 = var913;
4439 {
4440 nit___nit__AbstractCompilerVisitor___add(var_v, var923); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4441 }
4442 }
4443 if (likely(varonce924!=NULL)) {
4444 var925 = varonce924;
4445 } else {
4446 var926 = "}";
4447 var927 = standard___standard__NativeString___to_s_with_length(var926, 1l);
4448 var925 = var927;
4449 varonce924 = var925;
4450 }
4451 {
4452 nit___nit__AbstractCompilerVisitor___add(var_v, var925); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4453 }
4454 goto RET_LABEL;
4455 } else {
4456 }
4457 }
4458 }
4459 if (unlikely(varonce928==NULL)) {
4460 var929 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
4461 if (likely(varonce930!=NULL)) {
4462 var931 = varonce930;
4463 } else {
4464 var932 = "NEW_";
4465 var933 = standard___standard__NativeString___to_s_with_length(var932, 4l);
4466 var931 = var933;
4467 varonce930 = var931;
4468 }
4469 ((struct instance_standard__NativeArray*)var929)->values[0]=var931;
4470 } else {
4471 var929 = varonce928;
4472 varonce928 = NULL;
4473 }
4474 ((struct instance_standard__NativeArray*)var929)->values[1]=var_c_name;
4475 {
4476 var934 = ((val*(*)(val* self))(var929->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var929); /* native_to_s on <var929:NativeArray[String]>*/
4477 }
4478 varonce928 = var929;
4479 if (unlikely(varonce935==NULL)) {
4480 var936 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
4481 if (likely(varonce937!=NULL)) {
4482 var938 = varonce937;
4483 } else {
4484 var939 = " NEW_";
4485 var940 = standard___standard__NativeString___to_s_with_length(var939, 5l);
4486 var938 = var940;
4487 varonce937 = var938;
4488 }
4489 ((struct instance_standard__NativeArray*)var936)->values[1]=var938;
4490 if (likely(varonce941!=NULL)) {
4491 var942 = varonce941;
4492 } else {
4493 var943 = "(const struct type* type);";
4494 var944 = standard___standard__NativeString___to_s_with_length(var943, 26l);
4495 var942 = var944;
4496 varonce941 = var942;
4497 }
4498 ((struct instance_standard__NativeArray*)var936)->values[3]=var942;
4499 } else {
4500 var936 = varonce935;
4501 varonce935 = NULL;
4502 }
4503 {
4504 var945 = nit__abstract_compiler___MClassType___MType__ctype(var_mtype);
4505 }
4506 ((struct instance_standard__NativeArray*)var936)->values[0]=var945;
4507 ((struct instance_standard__NativeArray*)var936)->values[2]=var_c_name;
4508 {
4509 var946 = ((val*(*)(val* self))(var936->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var936); /* native_to_s on <var936:NativeArray[String]>*/
4510 }
4511 varonce935 = var936;
4512 {
4513 nit___nit__AbstractCompiler___provide_declaration(self, var934, var946); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateCompiler>*/
4514 }
4515 if (unlikely(varonce947==NULL)) {
4516 var948 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
4517 if (likely(varonce949!=NULL)) {
4518 var950 = varonce949;
4519 } else {
4520 var951 = "/* allocate ";
4521 var952 = standard___standard__NativeString___to_s_with_length(var951, 12l);
4522 var950 = var952;
4523 varonce949 = var950;
4524 }
4525 ((struct instance_standard__NativeArray*)var948)->values[0]=var950;
4526 if (likely(varonce953!=NULL)) {
4527 var954 = varonce953;
4528 } else {
4529 var955 = " */";
4530 var956 = standard___standard__NativeString___to_s_with_length(var955, 3l);
4531 var954 = var956;
4532 varonce953 = var954;
4533 }
4534 ((struct instance_standard__NativeArray*)var948)->values[2]=var954;
4535 } else {
4536 var948 = varonce947;
4537 varonce947 = NULL;
4538 }
4539 {
4540 var957 = ((val*(*)(val* self))(var_mtype->class->vft[COLOR_standard__string__Object__to_s]))(var_mtype); /* to_s on <var_mtype:MClassType>*/
4541 }
4542 ((struct instance_standard__NativeArray*)var948)->values[1]=var957;
4543 {
4544 var958 = ((val*(*)(val* self))(var948->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var948); /* native_to_s on <var948:NativeArray[String]>*/
4545 }
4546 varonce947 = var948;
4547 {
4548 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var958); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4549 }
4550 if (unlikely(varonce959==NULL)) {
4551 var960 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
4552 if (likely(varonce961!=NULL)) {
4553 var962 = varonce961;
4554 } else {
4555 var963 = " NEW_";
4556 var964 = standard___standard__NativeString___to_s_with_length(var963, 5l);
4557 var962 = var964;
4558 varonce961 = var962;
4559 }
4560 ((struct instance_standard__NativeArray*)var960)->values[1]=var962;
4561 if (likely(varonce965!=NULL)) {
4562 var966 = varonce965;
4563 } else {
4564 var967 = "(const struct type* type) {";
4565 var968 = standard___standard__NativeString___to_s_with_length(var967, 27l);
4566 var966 = var968;
4567 varonce965 = var966;
4568 }
4569 ((struct instance_standard__NativeArray*)var960)->values[3]=var966;
4570 } else {
4571 var960 = varonce959;
4572 varonce959 = NULL;
4573 }
4574 {
4575 var969 = nit__abstract_compiler___MClassType___MType__ctype(var_mtype);
4576 }
4577 ((struct instance_standard__NativeArray*)var960)->values[0]=var969;
4578 ((struct instance_standard__NativeArray*)var960)->values[2]=var_c_name;
4579 {
4580 var970 = ((val*(*)(val* self))(var960->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var960); /* native_to_s on <var960:NativeArray[String]>*/
4581 }
4582 varonce959 = var960;
4583 {
4584 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var970); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4585 }
4586 if (var_is_dead){
4587 if (unlikely(varonce971==NULL)) {
4588 var972 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
4589 if (likely(varonce973!=NULL)) {
4590 var974 = varonce973;
4591 } else {
4592 var975 = " is DEAD";
4593 var976 = standard___standard__NativeString___to_s_with_length(var975, 8l);
4594 var974 = var976;
4595 varonce973 = var974;
4596 }
4597 ((struct instance_standard__NativeArray*)var972)->values[1]=var974;
4598 } else {
4599 var972 = varonce971;
4600 varonce971 = NULL;
4601 }
4602 {
4603 var977 = ((val*(*)(val* self))(var_mclass->class->vft[COLOR_standard__string__Object__to_s]))(var_mclass); /* to_s on <var_mclass:MClass>*/
4604 }
4605 ((struct instance_standard__NativeArray*)var972)->values[0]=var977;
4606 {
4607 var978 = ((val*(*)(val* self))(var972->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var972); /* native_to_s on <var972:NativeArray[String]>*/
4608 }
4609 varonce971 = var972;
4610 {
4611 nit___nit__AbstractCompilerVisitor___add_abort(var_v, var978); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
4612 }
4613 } else {
4614 if (likely(varonce979!=NULL)) {
4615 var980 = varonce979;
4616 } else {
4617 var981 = "self";
4618 var982 = standard___standard__NativeString___to_s_with_length(var981, 4l);
4619 var980 = var982;
4620 varonce979 = var980;
4621 }
4622 {
4623 var983 = nit___nit__AbstractCompilerVisitor___new_named_var(var_v, var_mtype, var980);
4624 }
4625 var_res984 = var983;
4626 {
4627 { /* Inline abstract_compiler#RuntimeVariable#is_exact= (var_res984,1) on <var_res984:RuntimeVariable> */
4628 var_res984->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___is_exact].s = 1; /* _is_exact on <var_res984:RuntimeVariable> */
4629 RET_LABEL985:(void)0;
4630 }
4631 }
4632 {
4633 { /* Inline separate_compiler#SeparateCompiler#attr_tables (self) on <self:SeparateCompiler> */
4634 var988 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:SeparateCompiler> */
4635 if (unlikely(var988 == NULL)) {
4636 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
4637 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1054);
4638 fatal_exit(1);
4639 }
4640 var986 = var988;
4641 RET_LABEL987:(void)0;
4642 }
4643 }
4644 {
4645 var989 = ((val*(*)(val* self, val* p0))((((long)var986&3)?class_info[((long)var986&3)]:var986->class)->vft[COLOR_standard__abstract_collection__MapRead__get_or_null]))(var986, var_mclass); /* get_or_null on <var986:Map[MClass, Array[nullable MProperty]]>*/
4646 }
4647 var_attrs = var989;
4648 if (var_attrs == NULL) {
4649 var990 = 1; /* is null */
4650 } else {
4651 var990 = 0; /* arg is null but recv is not */
4652 }
4653 if (0) {
4654 var991 = standard___standard__Array___standard__kernel__Object___61d_61d(var_attrs, ((val*)NULL));
4655 var990 = var991;
4656 }
4657 if (var990){
4658 if (unlikely(varonce992==NULL)) {
4659 var993 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
4660 if (likely(varonce994!=NULL)) {
4661 var995 = varonce994;
4662 } else {
4663 var996 = " = nit_alloc(sizeof(struct instance));";
4664 var997 = standard___standard__NativeString___to_s_with_length(var996, 38l);
4665 var995 = var997;
4666 varonce994 = var995;
4667 }
4668 ((struct instance_standard__NativeArray*)var993)->values[1]=var995;
4669 } else {
4670 var993 = varonce992;
4671 varonce992 = NULL;
4672 }
4673 {
4674 var998 = ((val*(*)(val* self))(var_res984->class->vft[COLOR_standard__string__Object__to_s]))(var_res984); /* to_s on <var_res984:RuntimeVariable>*/
4675 }
4676 ((struct instance_standard__NativeArray*)var993)->values[0]=var998;
4677 {
4678 var999 = ((val*(*)(val* self))(var993->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var993); /* native_to_s on <var993:NativeArray[String]>*/
4679 }
4680 varonce992 = var993;
4681 {
4682 nit___nit__AbstractCompilerVisitor___add(var_v, var999); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4683 }
4684 } else {
4685 if (unlikely(varonce1000==NULL)) {
4686 var1001 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
4687 if (likely(varonce1002!=NULL)) {
4688 var1003 = varonce1002;
4689 } else {
4690 var1004 = " = nit_alloc(sizeof(struct instance) + ";
4691 var1005 = standard___standard__NativeString___to_s_with_length(var1004, 39l);
4692 var1003 = var1005;
4693 varonce1002 = var1003;
4694 }
4695 ((struct instance_standard__NativeArray*)var1001)->values[1]=var1003;
4696 if (likely(varonce1006!=NULL)) {
4697 var1007 = varonce1006;
4698 } else {
4699 var1008 = "*sizeof(nitattribute_t));";
4700 var1009 = standard___standard__NativeString___to_s_with_length(var1008, 25l);
4701 var1007 = var1009;
4702 varonce1006 = var1007;
4703 }
4704 ((struct instance_standard__NativeArray*)var1001)->values[3]=var1007;
4705 } else {
4706 var1001 = varonce1000;
4707 varonce1000 = NULL;
4708 }
4709 {
4710 var1010 = ((val*(*)(val* self))(var_res984->class->vft[COLOR_standard__string__Object__to_s]))(var_res984); /* to_s on <var_res984:RuntimeVariable>*/
4711 }
4712 ((struct instance_standard__NativeArray*)var1001)->values[0]=var1010;
4713 {
4714 { /* Inline array#AbstractArrayRead#length (var_attrs) on <var_attrs:nullable Array[nullable MProperty](Array[nullable MProperty])> */
4715 var1013 = var_attrs->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_attrs:nullable Array[nullable MProperty](Array[nullable MProperty])> */
4716 var1011 = var1013;
4717 RET_LABEL1012:(void)0;
4718 }
4719 }
4720 var1014 = standard__string___Int___Object__to_s(var1011);
4721 ((struct instance_standard__NativeArray*)var1001)->values[2]=var1014;
4722 {
4723 var1015 = ((val*(*)(val* self))(var1001->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var1001); /* native_to_s on <var1001:NativeArray[String]>*/
4724 }
4725 varonce1000 = var1001;
4726 {
4727 nit___nit__AbstractCompilerVisitor___add(var_v, var1015); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4728 }
4729 }
4730 if (unlikely(varonce1016==NULL)) {
4731 var1017 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
4732 if (likely(varonce1018!=NULL)) {
4733 var1019 = varonce1018;
4734 } else {
4735 var1020 = "->type = type;";
4736 var1021 = standard___standard__NativeString___to_s_with_length(var1020, 14l);
4737 var1019 = var1021;
4738 varonce1018 = var1019;
4739 }
4740 ((struct instance_standard__NativeArray*)var1017)->values[1]=var1019;
4741 } else {
4742 var1017 = varonce1016;
4743 varonce1016 = NULL;
4744 }
4745 {
4746 var1022 = ((val*(*)(val* self))(var_res984->class->vft[COLOR_standard__string__Object__to_s]))(var_res984); /* to_s on <var_res984:RuntimeVariable>*/
4747 }
4748 ((struct instance_standard__NativeArray*)var1017)->values[0]=var1022;
4749 {
4750 var1023 = ((val*(*)(val* self))(var1017->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var1017); /* native_to_s on <var1017:NativeArray[String]>*/
4751 }
4752 varonce1016 = var1017;
4753 {
4754 nit___nit__AbstractCompilerVisitor___add(var_v, var1023); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4755 }
4756 if (likely(varonce1024!=NULL)) {
4757 var1025 = varonce1024;
4758 } else {
4759 var1026 = "type";
4760 var1027 = standard___standard__NativeString___to_s_with_length(var1026, 4l);
4761 var1025 = var1027;
4762 varonce1024 = var1025;
4763 }
4764 {
4765 nit___nit__SeparateCompiler___hardening_live_type(self, var_v, var1025); /* Direct call separate_compiler#SeparateCompiler#hardening_live_type on <self:SeparateCompiler>*/
4766 }
4767 if (unlikely(varonce1028==NULL)) {
4768 var1029 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
4769 if (likely(varonce1030!=NULL)) {
4770 var1031 = varonce1030;
4771 } else {
4772 var1032 = "class_";
4773 var1033 = standard___standard__NativeString___to_s_with_length(var1032, 6l);
4774 var1031 = var1033;
4775 varonce1030 = var1031;
4776 }
4777 ((struct instance_standard__NativeArray*)var1029)->values[0]=var1031;
4778 } else {
4779 var1029 = varonce1028;
4780 varonce1028 = NULL;
4781 }
4782 ((struct instance_standard__NativeArray*)var1029)->values[1]=var_c_name;
4783 {
4784 var1034 = ((val*(*)(val* self))(var1029->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var1029); /* native_to_s on <var1029:NativeArray[String]>*/
4785 }
4786 varonce1028 = var1029;
4787 {
4788 nit___nit__AbstractCompilerVisitor___require_declaration(var_v, var1034); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
4789 }
4790 if (unlikely(varonce1035==NULL)) {
4791 var1036 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
4792 if (likely(varonce1037!=NULL)) {
4793 var1038 = varonce1037;
4794 } else {
4795 var1039 = "->class = &class_";
4796 var1040 = standard___standard__NativeString___to_s_with_length(var1039, 17l);
4797 var1038 = var1040;
4798 varonce1037 = var1038;
4799 }
4800 ((struct instance_standard__NativeArray*)var1036)->values[1]=var1038;
4801 if (likely(varonce1041!=NULL)) {
4802 var1042 = varonce1041;
4803 } else {
4804 var1043 = ";";
4805 var1044 = standard___standard__NativeString___to_s_with_length(var1043, 1l);
4806 var1042 = var1044;
4807 varonce1041 = var1042;
4808 }
4809 ((struct instance_standard__NativeArray*)var1036)->values[3]=var1042;
4810 } else {
4811 var1036 = varonce1035;
4812 varonce1035 = NULL;
4813 }
4814 {
4815 var1045 = ((val*(*)(val* self))(var_res984->class->vft[COLOR_standard__string__Object__to_s]))(var_res984); /* to_s on <var_res984:RuntimeVariable>*/
4816 }
4817 ((struct instance_standard__NativeArray*)var1036)->values[0]=var1045;
4818 ((struct instance_standard__NativeArray*)var1036)->values[2]=var_c_name;
4819 {
4820 var1046 = ((val*(*)(val* self))(var1036->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var1036); /* native_to_s on <var1036:NativeArray[String]>*/
4821 }
4822 varonce1035 = var1036;
4823 {
4824 nit___nit__AbstractCompilerVisitor___add(var_v, var1046); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4825 }
4826 if (var_attrs == NULL) {
4827 var1047 = 0; /* is null */
4828 } else {
4829 var1047 = 1; /* arg is null and recv is not */
4830 }
4831 if (0) {
4832 { /* Inline kernel#Object#!= (var_attrs,((val*)NULL)) on <var_attrs:nullable Array[nullable MProperty]> */
4833 var_other = ((val*)NULL);
4834 {
4835 var1050 = ((short int(*)(val* self, val* p0))(var_attrs->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_attrs, var_other); /* == on <var_attrs:nullable Array[nullable MProperty](Array[nullable MProperty])>*/
4836 }
4837 var1051 = !var1050;
4838 var1048 = var1051;
4839 goto RET_LABEL1049;
4840 RET_LABEL1049:(void)0;
4841 }
4842 var1047 = var1048;
4843 }
4844 if (var1047){
4845 {
4846 nit___nit__AbstractCompiler___generate_init_attr(self, var_v, var_res984, var_mtype); /* Direct call abstract_compiler#AbstractCompiler#generate_init_attr on <self:SeparateCompiler>*/
4847 }
4848 {
4849 nit___nit__AbstractCompilerVisitor___set_finalizer(var_v, var_res984); /* Direct call abstract_compiler#AbstractCompilerVisitor#set_finalizer on <var_v:SeparateCompilerVisitor>*/
4850 }
4851 } else {
4852 }
4853 if (unlikely(varonce1052==NULL)) {
4854 var1053 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
4855 if (likely(varonce1054!=NULL)) {
4856 var1055 = varonce1054;
4857 } else {
4858 var1056 = "return ";
4859 var1057 = standard___standard__NativeString___to_s_with_length(var1056, 7l);
4860 var1055 = var1057;
4861 varonce1054 = var1055;
4862 }
4863 ((struct instance_standard__NativeArray*)var1053)->values[0]=var1055;
4864 if (likely(varonce1058!=NULL)) {
4865 var1059 = varonce1058;
4866 } else {
4867 var1060 = ";";
4868 var1061 = standard___standard__NativeString___to_s_with_length(var1060, 1l);
4869 var1059 = var1061;
4870 varonce1058 = var1059;
4871 }
4872 ((struct instance_standard__NativeArray*)var1053)->values[2]=var1059;
4873 } else {
4874 var1053 = varonce1052;
4875 varonce1052 = NULL;
4876 }
4877 {
4878 var1062 = ((val*(*)(val* self))(var_res984->class->vft[COLOR_standard__string__Object__to_s]))(var_res984); /* to_s on <var_res984:RuntimeVariable>*/
4879 }
4880 ((struct instance_standard__NativeArray*)var1053)->values[1]=var1062;
4881 {
4882 var1063 = ((val*(*)(val* self))(var1053->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var1053); /* native_to_s on <var1053:NativeArray[String]>*/
4883 }
4884 varonce1052 = var1053;
4885 {
4886 nit___nit__AbstractCompilerVisitor___add(var_v, var1063); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4887 }
4888 }
4889 if (likely(varonce1064!=NULL)) {
4890 var1065 = varonce1064;
4891 } else {
4892 var1066 = "}";
4893 var1067 = standard___standard__NativeString___to_s_with_length(var1066, 1l);
4894 var1065 = var1067;
4895 varonce1064 = var1065;
4896 }
4897 {
4898 nit___nit__AbstractCompilerVisitor___add(var_v, var1065); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
4899 }
4900 RET_LABEL:;
4901 }
4902 /* method separate_compiler#SeparateCompiler#compile_class_infos for (self: SeparateCompiler) */
4903 void nit___nit__SeparateCompiler___compile_class_infos(val* self) {
4904 val* var /* : ModelBuilder */;
4905 val* var2 /* : ModelBuilder */;
4906 val* var3 /* : ToolContext */;
4907 val* var5 /* : ToolContext */;
4908 val* var6 /* : OptionBool */;
4909 val* var8 /* : OptionBool */;
4910 val* var9 /* : nullable Object */;
4911 val* var11 /* : nullable Object */;
4912 short int var12 /* : Bool */;
4913 val* var13 /* : Array[nullable MClass] */;
4914 val* var_class_info /* var class_info: Array[nullable MClass] */;
4915 val* var14 /* : HashMap[MClass, Int] */;
4916 val* var16 /* : HashMap[MClass, Int] */;
4917 val* var17 /* : RemovableCollection[nullable Object] */;
4918 val* var_ /* var : RemovableCollection[MClass] */;
4919 val* var18 /* : Iterator[nullable Object] */;
4920 val* var_19 /* var : Iterator[MClass] */;
4921 short int var20 /* : Bool */;
4922 val* var21 /* : nullable Object */;
4923 val* var_t /* var t: MClass */;
4924 val* var22 /* : String */;
4925 val* var24 /* : String */;
4926 static val* varonce;
4927 val* var25 /* : String */;
4928 char* var26 /* : NativeString */;
4929 val* var27 /* : FlatString */;
4930 short int var28 /* : Bool */;
4931 val* var29 /* : String */;
4932 val* var31 /* : String */;
4933 static val* varonce32;
4934 val* var33 /* : String */;
4935 char* var34 /* : NativeString */;
4936 val* var35 /* : FlatString */;
4937 short int var36 /* : Bool */;
4938 val* var37 /* : String */;
4939 val* var39 /* : String */;
4940 static val* varonce40;
4941 val* var41 /* : String */;
4942 char* var42 /* : NativeString */;
4943 val* var43 /* : FlatString */;
4944 short int var44 /* : Bool */;
4945 val* var45 /* : MClassType */;
4946 val* var47 /* : MClassType */;
4947 val* var50 /* : AbstractCompilerVisitor */;
4948 val* var_v /* var v: SeparateCompilerVisitor */;
4949 static val* varonce51;
4950 val* var52 /* : String */;
4951 char* var53 /* : NativeString */;
4952 val* var54 /* : FlatString */;
4953 val* var_55 /* var : Array[nullable MClass] */;
4954 val* var56 /* : ArrayIterator[nullable Object] */;
4955 val* var_57 /* var : ArrayIterator[nullable MClass] */;
4956 short int var58 /* : Bool */;
4957 val* var59 /* : nullable Object */;
4958 val* var_t60 /* var t: nullable MClass */;
4959 short int var61 /* : Bool */;
4960 short int var62 /* : Bool */;
4961 val* var_other /* var other: nullable Object */;
4962 short int var64 /* : Bool */;
4963 short int var66 /* : Bool */;
4964 static val* varonce67;
4965 val* var68 /* : String */;
4966 char* var69 /* : NativeString */;
4967 val* var70 /* : FlatString */;
4968 val* var72 /* : NativeArray[String] */;
4969 static val* varonce71;
4970 static val* varonce73;
4971 val* var74 /* : String */;
4972 char* var75 /* : NativeString */;
4973 val* var76 /* : FlatString */;
4974 val* var77 /* : String */;
4975 val* var78 /* : String */;
4976 val* var_s /* var s: String */;
4977 val* var80 /* : NativeArray[String] */;
4978 static val* varonce79;
4979 static val* varonce81;
4980 val* var82 /* : String */;
4981 char* var83 /* : NativeString */;
4982 val* var84 /* : FlatString */;
4983 static val* varonce85;
4984 val* var86 /* : String */;
4985 char* var87 /* : NativeString */;
4986 val* var88 /* : FlatString */;
4987 val* var89 /* : String */;
4988 static val* varonce91;
4989 val* var92 /* : String */;
4990 char* var93 /* : NativeString */;
4991 val* var94 /* : FlatString */;
4992 static val* varonce95;
4993 val* var96 /* : String */;
4994 char* var97 /* : NativeString */;
4995 val* var98 /* : FlatString */;
4996 val* var_99 /* var : Array[nullable MClass] */;
4997 val* var100 /* : ArrayIterator[nullable Object] */;
4998 val* var_101 /* var : ArrayIterator[nullable MClass] */;
4999 short int var102 /* : Bool */;
5000 val* var103 /* : nullable Object */;
5001 val* var_t104 /* var t: nullable MClass */;
5002 short int var105 /* : Bool */;
5003 short int var106 /* : Bool */;
5004 short int var108 /* : Bool */;
5005 short int var110 /* : Bool */;
5006 static val* varonce111;
5007 val* var112 /* : String */;
5008 char* var113 /* : NativeString */;
5009 val* var114 /* : FlatString */;
5010 val* var116 /* : NativeArray[String] */;
5011 static val* varonce115;
5012 static val* varonce117;
5013 val* var118 /* : String */;
5014 char* var119 /* : NativeString */;
5015 val* var120 /* : FlatString */;
5016 val* var121 /* : String */;
5017 val* var122 /* : String */;
5018 val* var_s123 /* var s: String */;
5019 val* var124 /* : Set[MType] */;
5020 val* var126 /* : Set[MType] */;
5021 val* var127 /* : MClassType */;
5022 val* var129 /* : MClassType */;
5023 val* var131 /* : NativeArray[String] */;
5024 static val* varonce130;
5025 static val* varonce132;
5026 val* var133 /* : String */;
5027 char* var134 /* : NativeString */;
5028 val* var135 /* : FlatString */;
5029 static val* varonce136;
5030 val* var137 /* : String */;
5031 char* var138 /* : NativeString */;
5032 val* var139 /* : FlatString */;
5033 val* var140 /* : String */;
5034 static val* varonce142;
5035 val* var143 /* : String */;
5036 char* var144 /* : NativeString */;
5037 val* var145 /* : FlatString */;
5038 {
5039 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
5040 var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
5041 if (unlikely(var2 == NULL)) {
5042 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5043 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
5044 fatal_exit(1);
5045 }
5046 var = var2;
5047 RET_LABEL1:(void)0;
5048 }
5049 }
5050 {
5051 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var) on <var:ModelBuilder> */
5052 var5 = var->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var:ModelBuilder> */
5053 if (unlikely(var5 == NULL)) {
5054 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5055 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
5056 fatal_exit(1);
5057 }
5058 var3 = var5;
5059 RET_LABEL4:(void)0;
5060 }
5061 }
5062 {
5063 { /* Inline separate_compiler#ToolContext#opt_no_tag_primitives (var3) on <var3:ToolContext> */
5064 var8 = var3->attrs[COLOR_nit__separate_compiler__ToolContext___opt_no_tag_primitives].val; /* _opt_no_tag_primitives on <var3:ToolContext> */
5065 if (unlikely(var8 == NULL)) {
5066 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_tag_primitives");
5067 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 32);
5068 fatal_exit(1);
5069 }
5070 var6 = var8;
5071 RET_LABEL7:(void)0;
5072 }
5073 }
5074 {
5075 { /* Inline opts#Option#value (var6) on <var6:OptionBool> */
5076 var11 = var6->attrs[COLOR_opts__Option___value].val; /* _value on <var6:OptionBool> */
5077 var9 = var11;
5078 RET_LABEL10:(void)0;
5079 }
5080 }
5081 var12 = (short int)((long)(var9)>>2);
5082 if (var12){
5083 goto RET_LABEL;
5084 } else {
5085 }
5086 var13 = NEW_standard__Array(&type_standard__Array__nullable__nit__MClass);
5087 {
5088 standard___standard__Array___filled_with(var13, ((val*)NULL), 4l); /* Direct call array#Array#filled_with on <var13:Array[nullable MClass]>*/
5089 }
5090 var_class_info = var13;
5091 {
5092 { /* Inline separate_compiler#SeparateCompiler#box_kinds (self) on <self:SeparateCompiler> */
5093 var16 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___box_kinds].val; /* _box_kinds on <self:SeparateCompiler> */
5094 if (unlikely(var16 == NULL)) {
5095 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _box_kinds");
5096 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 263);
5097 fatal_exit(1);
5098 }
5099 var14 = var16;
5100 RET_LABEL15:(void)0;
5101 }
5102 }
5103 {
5104 var17 = standard___standard__HashMap___standard__abstract_collection__MapRead__keys(var14);
5105 }
5106 var_ = var17;
5107 {
5108 var18 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_); /* iterator on <var_:RemovableCollection[MClass]>*/
5109 }
5110 var_19 = var18;
5111 for(;;) {
5112 {
5113 var20 = ((short int(*)(val* self))((((long)var_19&3)?class_info[((long)var_19&3)]:var_19->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_19); /* is_ok on <var_19:Iterator[MClass]>*/
5114 }
5115 if (var20){
5116 {
5117 var21 = ((val*(*)(val* self))((((long)var_19&3)?class_info[((long)var_19&3)]:var_19->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_19); /* item on <var_19:Iterator[MClass]>*/
5118 }
5119 var_t = var21;
5120 {
5121 { /* Inline model#MClass#name (var_t) on <var_t:MClass> */
5122 var24 = var_t->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var_t:MClass> */
5123 if (unlikely(var24 == NULL)) {
5124 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5125 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
5126 fatal_exit(1);
5127 }
5128 var22 = var24;
5129 RET_LABEL23:(void)0;
5130 }
5131 }
5132 if (likely(varonce!=NULL)) {
5133 var25 = varonce;
5134 } else {
5135 var26 = "Int";
5136 var27 = standard___standard__NativeString___to_s_with_length(var26, 3l);
5137 var25 = var27;
5138 varonce = var25;
5139 }
5140 {
5141 var28 = ((short int(*)(val* self, val* p0))(var22->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var22, var25); /* == on <var22:String>*/
5142 }
5143 if (var28){
5144 {
5145 standard___standard__Array___standard__abstract_collection__Sequence___91d_93d_61d(var_class_info, 1l, var_t); /* Direct call array#Array#[]= on <var_class_info:Array[nullable MClass]>*/
5146 }
5147 } else {
5148 {
5149 { /* Inline model#MClass#name (var_t) on <var_t:MClass> */
5150 var31 = var_t->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var_t:MClass> */
5151 if (unlikely(var31 == NULL)) {
5152 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5153 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
5154 fatal_exit(1);
5155 }
5156 var29 = var31;
5157 RET_LABEL30:(void)0;
5158 }
5159 }
5160 if (likely(varonce32!=NULL)) {
5161 var33 = varonce32;
5162 } else {
5163 var34 = "Char";
5164 var35 = standard___standard__NativeString___to_s_with_length(var34, 4l);
5165 var33 = var35;
5166 varonce32 = var33;
5167 }
5168 {
5169 var36 = ((short int(*)(val* self, val* p0))(var29->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var29, var33); /* == on <var29:String>*/
5170 }
5171 if (var36){
5172 {
5173 standard___standard__Array___standard__abstract_collection__Sequence___91d_93d_61d(var_class_info, 2l, var_t); /* Direct call array#Array#[]= on <var_class_info:Array[nullable MClass]>*/
5174 }
5175 } else {
5176 {
5177 { /* Inline model#MClass#name (var_t) on <var_t:MClass> */
5178 var39 = var_t->attrs[COLOR_nit__model__MClass___name].val; /* _name on <var_t:MClass> */
5179 if (unlikely(var39 == NULL)) {
5180 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5181 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 362);
5182 fatal_exit(1);
5183 }
5184 var37 = var39;
5185 RET_LABEL38:(void)0;
5186 }
5187 }
5188 if (likely(varonce40!=NULL)) {
5189 var41 = varonce40;
5190 } else {
5191 var42 = "Bool";
5192 var43 = standard___standard__NativeString___to_s_with_length(var42, 4l);
5193 var41 = var43;
5194 varonce40 = var41;
5195 }
5196 {
5197 var44 = ((short int(*)(val* self, val* p0))(var37->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var37, var41); /* == on <var37:String>*/
5198 }
5199 if (var44){
5200 {
5201 standard___standard__Array___standard__abstract_collection__Sequence___91d_93d_61d(var_class_info, 3l, var_t); /* Direct call array#Array#[]= on <var_class_info:Array[nullable MClass]>*/
5202 }
5203 } else {
5204 goto BREAK_label;
5205 }
5206 }
5207 }
5208 {
5209 { /* Inline model#MClass#mclass_type (var_t) on <var_t:MClass> */
5210 var47 = var_t->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_t:MClass> */
5211 if (unlikely(var47 == NULL)) {
5212 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
5213 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
5214 fatal_exit(1);
5215 }
5216 var45 = var47;
5217 RET_LABEL46:(void)0;
5218 }
5219 }
5220 {
5221 { /* Inline separate_compiler#MType#is_tagged= (var45,1) on <var45:MClassType> */
5222 var45->attrs[COLOR_nit__separate_compiler__MType___is_tagged].s = 1; /* _is_tagged on <var45:MClassType> */
5223 RET_LABEL48:(void)0;
5224 }
5225 }
5226 BREAK_label: (void)0;
5227 {
5228 ((void(*)(val* self))((((long)var_19&3)?class_info[((long)var_19&3)]:var_19->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_19); /* next on <var_19:Iterator[MClass]>*/
5229 }
5230 } else {
5231 goto BREAK_label49;
5232 }
5233 }
5234 BREAK_label49: (void)0;
5235 {
5236 ((void(*)(val* self))((((long)var_19&3)?class_info[((long)var_19&3)]:var_19->class)->vft[COLOR_standard__abstract_collection__Iterator__finish]))(var_19); /* finish on <var_19:Iterator[MClass]>*/
5237 }
5238 {
5239 var50 = ((val*(*)(val* self))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompiler__new_visitor]))(self); /* new_visitor on <self:SeparateCompiler>*/
5240 }
5241 var_v = var50;
5242 if (likely(varonce51!=NULL)) {
5243 var52 = varonce51;
5244 } else {
5245 var53 = "const struct class *class_info[4] = {";
5246 var54 = standard___standard__NativeString___to_s_with_length(var53, 37l);
5247 var52 = var54;
5248 varonce51 = var52;
5249 }
5250 {
5251 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var52); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5252 }
5253 var_55 = var_class_info;
5254 {
5255 var56 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_55);
5256 }
5257 var_57 = var56;
5258 for(;;) {
5259 {
5260 var58 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_57);
5261 }
5262 if (var58){
5263 {
5264 var59 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_57);
5265 }
5266 var_t60 = var59;
5267 if (var_t60 == NULL) {
5268 var61 = 1; /* is null */
5269 } else {
5270 var61 = 0; /* arg is null but recv is not */
5271 }
5272 if (0) {
5273 { /* Inline kernel#Object#== (var_t60,((val*)NULL)) on <var_t60:nullable MClass> */
5274 var_other = ((val*)NULL);
5275 {
5276 { /* Inline kernel#Object#is_same_instance (var_t60,var_other) on <var_t60:nullable MClass(MClass)> */
5277 var66 = var_t60 == var_other;
5278 var64 = var66;
5279 goto RET_LABEL65;
5280 RET_LABEL65:(void)0;
5281 }
5282 }
5283 var62 = var64;
5284 goto RET_LABEL63;
5285 RET_LABEL63:(void)0;
5286 }
5287 var61 = var62;
5288 }
5289 if (var61){
5290 if (likely(varonce67!=NULL)) {
5291 var68 = varonce67;
5292 } else {
5293 var69 = "NULL,";
5294 var70 = standard___standard__NativeString___to_s_with_length(var69, 5l);
5295 var68 = var70;
5296 varonce67 = var68;
5297 }
5298 {
5299 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var68); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5300 }
5301 } else {
5302 if (unlikely(varonce71==NULL)) {
5303 var72 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
5304 if (likely(varonce73!=NULL)) {
5305 var74 = varonce73;
5306 } else {
5307 var75 = "class_";
5308 var76 = standard___standard__NativeString___to_s_with_length(var75, 6l);
5309 var74 = var76;
5310 varonce73 = var74;
5311 }
5312 ((struct instance_standard__NativeArray*)var72)->values[0]=var74;
5313 } else {
5314 var72 = varonce71;
5315 varonce71 = NULL;
5316 }
5317 {
5318 var77 = nit___nit__MClass___nit__model_base__MEntity__c_name(var_t60);
5319 }
5320 ((struct instance_standard__NativeArray*)var72)->values[1]=var77;
5321 {
5322 var78 = ((val*(*)(val* self))(var72->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var72); /* native_to_s on <var72:NativeArray[String]>*/
5323 }
5324 varonce71 = var72;
5325 var_s = var78;
5326 {
5327 nit___nit__AbstractCompilerVisitor___require_declaration(var_v, var_s); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
5328 }
5329 if (unlikely(varonce79==NULL)) {
5330 var80 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
5331 if (likely(varonce81!=NULL)) {
5332 var82 = varonce81;
5333 } else {
5334 var83 = "&";
5335 var84 = standard___standard__NativeString___to_s_with_length(var83, 1l);
5336 var82 = var84;
5337 varonce81 = var82;
5338 }
5339 ((struct instance_standard__NativeArray*)var80)->values[0]=var82;
5340 if (likely(varonce85!=NULL)) {
5341 var86 = varonce85;
5342 } else {
5343 var87 = ",";
5344 var88 = standard___standard__NativeString___to_s_with_length(var87, 1l);
5345 var86 = var88;
5346 varonce85 = var86;
5347 }
5348 ((struct instance_standard__NativeArray*)var80)->values[2]=var86;
5349 } else {
5350 var80 = varonce79;
5351 varonce79 = NULL;
5352 }
5353 ((struct instance_standard__NativeArray*)var80)->values[1]=var_s;
5354 {
5355 var89 = ((val*(*)(val* self))(var80->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var80); /* native_to_s on <var80:NativeArray[String]>*/
5356 }
5357 varonce79 = var80;
5358 {
5359 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var89); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5360 }
5361 }
5362 {
5363 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_57); /* Direct call array#ArrayIterator#next on <var_57:ArrayIterator[nullable MClass]>*/
5364 }
5365 } else {
5366 goto BREAK_label90;
5367 }
5368 }
5369 BREAK_label90: (void)0;
5370 {
5371 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_57); /* Direct call array#ArrayIterator#finish on <var_57:ArrayIterator[nullable MClass]>*/
5372 }
5373 if (likely(varonce91!=NULL)) {
5374 var92 = varonce91;
5375 } else {
5376 var93 = "};";
5377 var94 = standard___standard__NativeString___to_s_with_length(var93, 2l);
5378 var92 = var94;
5379 varonce91 = var92;
5380 }
5381 {
5382 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var92); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5383 }
5384 if (likely(varonce95!=NULL)) {
5385 var96 = varonce95;
5386 } else {
5387 var97 = "const struct type *type_info[4] = {";
5388 var98 = standard___standard__NativeString___to_s_with_length(var97, 35l);
5389 var96 = var98;
5390 varonce95 = var96;
5391 }
5392 {
5393 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var96); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5394 }
5395 var_99 = var_class_info;
5396 {
5397 var100 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_99);
5398 }
5399 var_101 = var100;
5400 for(;;) {
5401 {
5402 var102 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_101);
5403 }
5404 if (var102){
5405 {
5406 var103 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_101);
5407 }
5408 var_t104 = var103;
5409 if (var_t104 == NULL) {
5410 var105 = 1; /* is null */
5411 } else {
5412 var105 = 0; /* arg is null but recv is not */
5413 }
5414 if (0) {
5415 { /* Inline kernel#Object#== (var_t104,((val*)NULL)) on <var_t104:nullable MClass> */
5416 var_other = ((val*)NULL);
5417 {
5418 { /* Inline kernel#Object#is_same_instance (var_t104,var_other) on <var_t104:nullable MClass(MClass)> */
5419 var110 = var_t104 == var_other;
5420 var108 = var110;
5421 goto RET_LABEL109;
5422 RET_LABEL109:(void)0;
5423 }
5424 }
5425 var106 = var108;
5426 goto RET_LABEL107;
5427 RET_LABEL107:(void)0;
5428 }
5429 var105 = var106;
5430 }
5431 if (var105){
5432 if (likely(varonce111!=NULL)) {
5433 var112 = varonce111;
5434 } else {
5435 var113 = "NULL,";
5436 var114 = standard___standard__NativeString___to_s_with_length(var113, 5l);
5437 var112 = var114;
5438 varonce111 = var112;
5439 }
5440 {
5441 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var112); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5442 }
5443 } else {
5444 if (unlikely(varonce115==NULL)) {
5445 var116 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
5446 if (likely(varonce117!=NULL)) {
5447 var118 = varonce117;
5448 } else {
5449 var119 = "type_";
5450 var120 = standard___standard__NativeString___to_s_with_length(var119, 5l);
5451 var118 = var120;
5452 varonce117 = var118;
5453 }
5454 ((struct instance_standard__NativeArray*)var116)->values[0]=var118;
5455 } else {
5456 var116 = varonce115;
5457 varonce115 = NULL;
5458 }
5459 {
5460 var121 = nit___nit__MClass___nit__model_base__MEntity__c_name(var_t104);
5461 }
5462 ((struct instance_standard__NativeArray*)var116)->values[1]=var121;
5463 {
5464 var122 = ((val*(*)(val* self))(var116->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var116); /* native_to_s on <var116:NativeArray[String]>*/
5465 }
5466 varonce115 = var116;
5467 var_s123 = var122;
5468 {
5469 { /* Inline separate_compiler#SeparateCompiler#undead_types (self) on <self:SeparateCompiler> */
5470 var126 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___undead_types].val; /* _undead_types on <self:SeparateCompiler> */
5471 if (unlikely(var126 == NULL)) {
5472 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _undead_types");
5473 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 146);
5474 fatal_exit(1);
5475 }
5476 var124 = var126;
5477 RET_LABEL125:(void)0;
5478 }
5479 }
5480 {
5481 { /* Inline model#MClass#mclass_type (var_t104) on <var_t104:nullable MClass(MClass)> */
5482 var129 = var_t104->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var_t104:nullable MClass(MClass)> */
5483 if (unlikely(var129 == NULL)) {
5484 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
5485 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
5486 fatal_exit(1);
5487 }
5488 var127 = var129;
5489 RET_LABEL128:(void)0;
5490 }
5491 }
5492 {
5493 ((void(*)(val* self, val* p0))((((long)var124&3)?class_info[((long)var124&3)]:var124->class)->vft[COLOR_standard__abstract_collection__SimpleCollection__add]))(var124, var127); /* add on <var124:Set[MType]>*/
5494 }
5495 {
5496 nit___nit__AbstractCompilerVisitor___require_declaration(var_v, var_s123); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
5497 }
5498 if (unlikely(varonce130==NULL)) {
5499 var131 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
5500 if (likely(varonce132!=NULL)) {
5501 var133 = varonce132;
5502 } else {
5503 var134 = "&";
5504 var135 = standard___standard__NativeString___to_s_with_length(var134, 1l);
5505 var133 = var135;
5506 varonce132 = var133;
5507 }
5508 ((struct instance_standard__NativeArray*)var131)->values[0]=var133;
5509 if (likely(varonce136!=NULL)) {
5510 var137 = varonce136;
5511 } else {
5512 var138 = ",";
5513 var139 = standard___standard__NativeString___to_s_with_length(var138, 1l);
5514 var137 = var139;
5515 varonce136 = var137;
5516 }
5517 ((struct instance_standard__NativeArray*)var131)->values[2]=var137;
5518 } else {
5519 var131 = varonce130;
5520 varonce130 = NULL;
5521 }
5522 ((struct instance_standard__NativeArray*)var131)->values[1]=var_s123;
5523 {
5524 var140 = ((val*(*)(val* self))(var131->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var131); /* native_to_s on <var131:NativeArray[String]>*/
5525 }
5526 varonce130 = var131;
5527 {
5528 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var140); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5529 }
5530 }
5531 {
5532 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_101); /* Direct call array#ArrayIterator#next on <var_101:ArrayIterator[nullable MClass]>*/
5533 }
5534 } else {
5535 goto BREAK_label141;
5536 }
5537 }
5538 BREAK_label141: (void)0;
5539 {
5540 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_101); /* Direct call array#ArrayIterator#finish on <var_101:ArrayIterator[nullable MClass]>*/
5541 }
5542 if (likely(varonce142!=NULL)) {
5543 var143 = varonce142;
5544 } else {
5545 var144 = "};";
5546 var145 = standard___standard__NativeString___to_s_with_length(var144, 2l);
5547 var143 = var145;
5548 varonce142 = var143;
5549 }
5550 {
5551 nit___nit__AbstractCompilerVisitor___add_decl(var_v, var143); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5552 }
5553 RET_LABEL:;
5554 }
5555 /* method separate_compiler#SeparateCompiler#hardening_live_type for (self: SeparateCompiler, SeparateCompilerVisitor, String) */
5556 void nit___nit__SeparateCompiler___hardening_live_type(val* self, val* p0, val* p1) {
5557 short int var /* : Bool */;
5558 int cltype;
5559 int idtype;
5560 const struct type* type_struct;
5561 const char* var_class_name;
5562 val* var_v /* var v: SeparateCompilerVisitor */;
5563 val* var_t /* var t: String */;
5564 val* var1 /* : AbstractCompiler */;
5565 val* var3 /* : AbstractCompiler */;
5566 val* var4 /* : ModelBuilder */;
5567 val* var6 /* : ModelBuilder */;
5568 val* var7 /* : ToolContext */;
5569 val* var9 /* : ToolContext */;
5570 val* var10 /* : OptionBool */;
5571 val* var12 /* : OptionBool */;
5572 val* var13 /* : nullable Object */;
5573 val* var15 /* : nullable Object */;
5574 short int var16 /* : Bool */;
5575 short int var17 /* : Bool */;
5576 val* var18 /* : NativeArray[String] */;
5577 static val* varonce;
5578 static val* varonce19;
5579 val* var20 /* : String */;
5580 char* var21 /* : NativeString */;
5581 val* var22 /* : FlatString */;
5582 static val* varonce23;
5583 val* var24 /* : String */;
5584 char* var25 /* : NativeString */;
5585 val* var26 /* : FlatString */;
5586 val* var27 /* : String */;
5587 static val* varonce28;
5588 val* var29 /* : String */;
5589 char* var30 /* : NativeString */;
5590 val* var31 /* : FlatString */;
5591 static val* varonce32;
5592 val* var33 /* : String */;
5593 char* var34 /* : NativeString */;
5594 val* var35 /* : FlatString */;
5595 val* var37 /* : NativeArray[String] */;
5596 static val* varonce36;
5597 static val* varonce38;
5598 val* var39 /* : String */;
5599 char* var40 /* : NativeString */;
5600 val* var41 /* : FlatString */;
5601 static val* varonce42;
5602 val* var43 /* : String */;
5603 char* var44 /* : NativeString */;
5604 val* var45 /* : FlatString */;
5605 val* var46 /* : String */;
5606 val* var48 /* : NativeArray[String] */;
5607 static val* varonce47;
5608 static val* varonce49;
5609 val* var50 /* : String */;
5610 char* var51 /* : NativeString */;
5611 val* var52 /* : FlatString */;
5612 static val* varonce53;
5613 val* var54 /* : String */;
5614 char* var55 /* : NativeString */;
5615 val* var56 /* : FlatString */;
5616 val* var57 /* : String */;
5617 static val* varonce58;
5618 val* var59 /* : String */;
5619 char* var60 /* : NativeString */;
5620 val* var61 /* : FlatString */;
5621 static val* varonce62;
5622 val* var63 /* : String */;
5623 char* var64 /* : NativeString */;
5624 val* var65 /* : FlatString */;
5625 /* Covariant cast for argument 0 (v) <p0:SeparateCompilerVisitor> isa VISITOR */
5626 /* <p0:SeparateCompilerVisitor> isa VISITOR */
5627 type_struct = self->type->resolution_table->types[COLOR_nit__abstract_compiler__AbstractCompiler__VISITOR];
5628 cltype = type_struct->color;
5629 idtype = type_struct->id;
5630 if(cltype >= p0->type->table_size) {
5631 var = 0;
5632 } else {
5633 var = p0->type->type_table[cltype] == idtype;
5634 }
5635 if (unlikely(!var)) {
5636 var_class_name = p0 == NULL ? "null" : p0->type->name;
5637 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
5638 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1034);
5639 fatal_exit(1);
5640 }
5641 var_v = p0;
5642 var_t = p1;
5643 {
5644 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (var_v) on <var_v:SeparateCompilerVisitor> */
5645 var3 = var_v->attrs[COLOR_nit__abstract_compiler__AbstractCompilerVisitor___compiler].val; /* _compiler on <var_v:SeparateCompilerVisitor> */
5646 if (unlikely(var3 == NULL)) {
5647 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
5648 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1102);
5649 fatal_exit(1);
5650 }
5651 var1 = var3;
5652 RET_LABEL2:(void)0;
5653 }
5654 }
5655 {
5656 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var1) on <var1:AbstractCompiler(SeparateCompiler)> */
5657 var6 = var1->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <var1:AbstractCompiler(SeparateCompiler)> */
5658 if (unlikely(var6 == NULL)) {
5659 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
5660 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
5661 fatal_exit(1);
5662 }
5663 var4 = var6;
5664 RET_LABEL5:(void)0;
5665 }
5666 }
5667 {
5668 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var4) on <var4:ModelBuilder> */
5669 var9 = var4->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var4:ModelBuilder> */
5670 if (unlikely(var9 == NULL)) {
5671 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
5672 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
5673 fatal_exit(1);
5674 }
5675 var7 = var9;
5676 RET_LABEL8:(void)0;
5677 }
5678 }
5679 {
5680 { /* Inline abstract_compiler#ToolContext#opt_hardening (var7) on <var7:ToolContext> */
5681 var12 = var7->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_hardening].val; /* _opt_hardening on <var7:ToolContext> */
5682 if (unlikely(var12 == NULL)) {
5683 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_hardening");
5684 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 46);
5685 fatal_exit(1);
5686 }
5687 var10 = var12;
5688 RET_LABEL11:(void)0;
5689 }
5690 }
5691 {
5692 { /* Inline opts#Option#value (var10) on <var10:OptionBool> */
5693 var15 = var10->attrs[COLOR_opts__Option___value].val; /* _value on <var10:OptionBool> */
5694 var13 = var15;
5695 RET_LABEL14:(void)0;
5696 }
5697 }
5698 var16 = (short int)((long)(var13)>>2);
5699 var17 = !var16;
5700 if (var17){
5701 goto RET_LABEL;
5702 } else {
5703 }
5704 if (unlikely(varonce==NULL)) {
5705 var18 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
5706 if (likely(varonce19!=NULL)) {
5707 var20 = varonce19;
5708 } else {
5709 var21 = "if(";
5710 var22 = standard___standard__NativeString___to_s_with_length(var21, 3l);
5711 var20 = var22;
5712 varonce19 = var20;
5713 }
5714 ((struct instance_standard__NativeArray*)var18)->values[0]=var20;
5715 if (likely(varonce23!=NULL)) {
5716 var24 = varonce23;
5717 } else {
5718 var25 = " == NULL) {";
5719 var26 = standard___standard__NativeString___to_s_with_length(var25, 11l);
5720 var24 = var26;
5721 varonce23 = var24;
5722 }
5723 ((struct instance_standard__NativeArray*)var18)->values[2]=var24;
5724 } else {
5725 var18 = varonce;
5726 varonce = NULL;
5727 }
5728 ((struct instance_standard__NativeArray*)var18)->values[1]=var_t;
5729 {
5730 var27 = ((val*(*)(val* self))(var18->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var18); /* native_to_s on <var18:NativeArray[String]>*/
5731 }
5732 varonce = var18;
5733 {
5734 nit___nit__AbstractCompilerVisitor___add(var_v, var27); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5735 }
5736 if (likely(varonce28!=NULL)) {
5737 var29 = varonce28;
5738 } else {
5739 var30 = "type null";
5740 var31 = standard___standard__NativeString___to_s_with_length(var30, 9l);
5741 var29 = var31;
5742 varonce28 = var29;
5743 }
5744 {
5745 nit___nit__AbstractCompilerVisitor___add_abort(var_v, var29); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
5746 }
5747 if (likely(varonce32!=NULL)) {
5748 var33 = varonce32;
5749 } else {
5750 var34 = "}";
5751 var35 = standard___standard__NativeString___to_s_with_length(var34, 1l);
5752 var33 = var35;
5753 varonce32 = var33;
5754 }
5755 {
5756 nit___nit__AbstractCompilerVisitor___add(var_v, var33); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5757 }
5758 if (unlikely(varonce36==NULL)) {
5759 var37 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
5760 if (likely(varonce38!=NULL)) {
5761 var39 = varonce38;
5762 } else {
5763 var40 = "if(";
5764 var41 = standard___standard__NativeString___to_s_with_length(var40, 3l);
5765 var39 = var41;
5766 varonce38 = var39;
5767 }
5768 ((struct instance_standard__NativeArray*)var37)->values[0]=var39;
5769 if (likely(varonce42!=NULL)) {
5770 var43 = varonce42;
5771 } else {
5772 var44 = "->table_size < 0) {";
5773 var45 = standard___standard__NativeString___to_s_with_length(var44, 19l);
5774 var43 = var45;
5775 varonce42 = var43;
5776 }
5777 ((struct instance_standard__NativeArray*)var37)->values[2]=var43;
5778 } else {
5779 var37 = varonce36;
5780 varonce36 = NULL;
5781 }
5782 ((struct instance_standard__NativeArray*)var37)->values[1]=var_t;
5783 {
5784 var46 = ((val*(*)(val* self))(var37->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var37); /* native_to_s on <var37:NativeArray[String]>*/
5785 }
5786 varonce36 = var37;
5787 {
5788 nit___nit__AbstractCompilerVisitor___add(var_v, var46); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5789 }
5790 if (unlikely(varonce47==NULL)) {
5791 var48 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
5792 if (likely(varonce49!=NULL)) {
5793 var50 = varonce49;
5794 } else {
5795 var51 = "PRINT_ERROR(\"Insantiation of a dead type: %s\\n\", ";
5796 var52 = standard___standard__NativeString___to_s_with_length(var51, 49l);
5797 var50 = var52;
5798 varonce49 = var50;
5799 }
5800 ((struct instance_standard__NativeArray*)var48)->values[0]=var50;
5801 if (likely(varonce53!=NULL)) {
5802 var54 = varonce53;
5803 } else {
5804 var55 = "->name);";
5805 var56 = standard___standard__NativeString___to_s_with_length(var55, 8l);
5806 var54 = var56;
5807 varonce53 = var54;
5808 }
5809 ((struct instance_standard__NativeArray*)var48)->values[2]=var54;
5810 } else {
5811 var48 = varonce47;
5812 varonce47 = NULL;
5813 }
5814 ((struct instance_standard__NativeArray*)var48)->values[1]=var_t;
5815 {
5816 var57 = ((val*(*)(val* self))(var48->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var48); /* native_to_s on <var48:NativeArray[String]>*/
5817 }
5818 varonce47 = var48;
5819 {
5820 nit___nit__AbstractCompilerVisitor___add(var_v, var57); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5821 }
5822 if (likely(varonce58!=NULL)) {
5823 var59 = varonce58;
5824 } else {
5825 var60 = "type dead";
5826 var61 = standard___standard__NativeString___to_s_with_length(var60, 9l);
5827 var59 = var61;
5828 varonce58 = var59;
5829 }
5830 {
5831 nit___nit__AbstractCompilerVisitor___add_abort(var_v, var59); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
5832 }
5833 if (likely(varonce62!=NULL)) {
5834 var63 = varonce62;
5835 } else {
5836 var64 = "}";
5837 var65 = standard___standard__NativeString___to_s_with_length(var64, 1l);
5838 var63 = var65;
5839 varonce62 = var63;
5840 }
5841 {
5842 nit___nit__AbstractCompilerVisitor___add(var_v, var63); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5843 }
5844 RET_LABEL:;
5845 }
5846 /* method separate_compiler#SeparateCompiler#new_visitor for (self: SeparateCompiler): SeparateCompilerVisitor */
5847 val* nit___nit__SeparateCompiler___nit__abstract_compiler__AbstractCompiler__new_visitor(val* self) {
5848 val* var /* : SeparateCompilerVisitor */;
5849 val* var1 /* : SeparateCompilerVisitor */;
5850 short int var2 /* : Bool */;
5851 int cltype;
5852 int idtype;
5853 const struct type* type_struct;
5854 const char* var_class_name;
5855 var1 = NEW_nit__SeparateCompilerVisitor(&type_nit__SeparateCompilerVisitor);
5856 {
5857 ((void(*)(val* self, val* p0))(var1->class->vft[COLOR_nit__abstract_compiler__AbstractCompilerVisitor__compiler_61d]))(var1, self); /* compiler= on <var1:SeparateCompilerVisitor>*/
5858 }
5859 {
5860 ((void(*)(val* self))(var1->class->vft[COLOR_standard__kernel__Object__init]))(var1); /* init on <var1:SeparateCompilerVisitor>*/
5861 }
5862 /* <var1:SeparateCompilerVisitor> isa VISITOR */
5863 type_struct = self->type->resolution_table->types[COLOR_nit__abstract_compiler__AbstractCompiler__VISITOR];
5864 cltype = type_struct->color;
5865 idtype = type_struct->id;
5866 if(cltype >= var1->type->table_size) {
5867 var2 = 0;
5868 } else {
5869 var2 = var1->type->type_table[cltype] == idtype;
5870 }
5871 if (unlikely(!var2)) {
5872 var_class_name = var1 == NULL ? "null" : var1->type->name;
5873 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
5874 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1047);
5875 fatal_exit(1);
5876 }
5877 var = var1;
5878 goto RET_LABEL;
5879 RET_LABEL:;
5880 return var;
5881 }
5882 /* method separate_compiler#SeparateCompiler#type_tables for (self: SeparateCompiler): Map[MType, Array[nullable MType]] */
5883 val* nit___nit__SeparateCompiler___type_tables(val* self) {
5884 val* var /* : Map[MType, Array[nullable MType]] */;
5885 val* var1 /* : Map[MType, Array[nullable MType]] */;
5886 var1 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:SeparateCompiler> */
5887 if (unlikely(var1 == NULL)) {
5888 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
5889 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1051);
5890 fatal_exit(1);
5891 }
5892 var = var1;
5893 RET_LABEL:;
5894 return var;
5895 }
5896 /* method separate_compiler#SeparateCompiler#type_tables= for (self: SeparateCompiler, Map[MType, Array[nullable MType]]) */
5897 void nit___nit__SeparateCompiler___type_tables_61d(val* self, val* p0) {
5898 self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___type_tables].val = p0; /* _type_tables on <self:SeparateCompiler> */
5899 RET_LABEL:;
5900 }
5901 /* method separate_compiler#SeparateCompiler#resolution_tables for (self: SeparateCompiler): Map[MClassType, Array[nullable MType]] */
5902 val* nit___nit__SeparateCompiler___resolution_tables(val* self) {
5903 val* var /* : Map[MClassType, Array[nullable MType]] */;
5904 val* var1 /* : Map[MClassType, Array[nullable MType]] */;
5905 var1 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___resolution_tables].val; /* _resolution_tables on <self:SeparateCompiler> */
5906 if (unlikely(var1 == NULL)) {
5907 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _resolution_tables");
5908 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1052);
5909 fatal_exit(1);
5910 }
5911 var = var1;
5912 RET_LABEL:;
5913 return var;
5914 }
5915 /* method separate_compiler#SeparateCompiler#resolution_tables= for (self: SeparateCompiler, Map[MClassType, Array[nullable MType]]) */
5916 void nit___nit__SeparateCompiler___resolution_tables_61d(val* self, val* p0) {
5917 self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___resolution_tables].val = p0; /* _resolution_tables on <self:SeparateCompiler> */
5918 RET_LABEL:;
5919 }
5920 /* method separate_compiler#SeparateCompiler#method_tables for (self: SeparateCompiler): Map[MClass, Array[nullable MPropDef]] */
5921 val* nit___nit__SeparateCompiler___method_tables(val* self) {
5922 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
5923 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
5924 var1 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:SeparateCompiler> */
5925 if (unlikely(var1 == NULL)) {
5926 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
5927 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1053);
5928 fatal_exit(1);
5929 }
5930 var = var1;
5931 RET_LABEL:;
5932 return var;
5933 }
5934 /* method separate_compiler#SeparateCompiler#method_tables= for (self: SeparateCompiler, Map[MClass, Array[nullable MPropDef]]) */
5935 void nit___nit__SeparateCompiler___method_tables_61d(val* self, val* p0) {
5936 self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___method_tables].val = p0; /* _method_tables on <self:SeparateCompiler> */
5937 RET_LABEL:;
5938 }
5939 /* method separate_compiler#SeparateCompiler#attr_tables for (self: SeparateCompiler): Map[MClass, Array[nullable MProperty]] */
5940 val* nit___nit__SeparateCompiler___attr_tables(val* self) {
5941 val* var /* : Map[MClass, Array[nullable MProperty]] */;
5942 val* var1 /* : Map[MClass, Array[nullable MProperty]] */;
5943 var1 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:SeparateCompiler> */
5944 if (unlikely(var1 == NULL)) {
5945 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
5946 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1054);
5947 fatal_exit(1);
5948 }
5949 var = var1;
5950 RET_LABEL:;
5951 return var;
5952 }
5953 /* method separate_compiler#SeparateCompiler#attr_tables= for (self: SeparateCompiler, Map[MClass, Array[nullable MProperty]]) */
5954 void nit___nit__SeparateCompiler___attr_tables_61d(val* self, val* p0) {
5955 self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___attr_tables].val = p0; /* _attr_tables on <self:SeparateCompiler> */
5956 RET_LABEL:;
5957 }
5958 /* method separate_compiler#SeparateCompiler#display_stats for (self: SeparateCompiler) */
5959 void nit___nit__SeparateCompiler___nit__abstract_compiler__AbstractCompiler__display_stats(val* self) {
5960 val* var /* : ModelBuilder */;
5961 val* var2 /* : ModelBuilder */;
5962 val* var3 /* : ToolContext */;
5963 val* var5 /* : ToolContext */;
5964 val* var6 /* : OptionBool */;
5965 val* var8 /* : OptionBool */;
5966 val* var9 /* : nullable Object */;
5967 val* var11 /* : nullable Object */;
5968 short int var12 /* : Bool */;
5969 val* var13 /* : ModelBuilder */;
5970 val* var15 /* : ModelBuilder */;
5971 val* var16 /* : ToolContext */;
5972 val* var18 /* : ToolContext */;
5973 val* var19 /* : OptionBool */;
5974 val* var21 /* : OptionBool */;
5975 val* var22 /* : nullable Object */;
5976 val* var24 /* : nullable Object */;
5977 short int var25 /* : Bool */;
5978 val* var26 /* : ModelBuilder */;
5979 val* var28 /* : ModelBuilder */;
5980 val* var29 /* : ToolContext */;
5981 val* var31 /* : ToolContext */;
5982 val* var_tc /* var tc: ToolContext */;
5983 static val* varonce;
5984 val* var32 /* : String */;
5985 char* var33 /* : NativeString */;
5986 val* var34 /* : FlatString */;
5987 val* var35 /* : ModelBuilder */;
5988 val* var37 /* : ModelBuilder */;
5989 long var38 /* : Int */;
5990 long var40 /* : Int */;
5991 val* var41 /* : ModelBuilder */;
5992 val* var43 /* : ModelBuilder */;
5993 long var44 /* : Int */;
5994 long var46 /* : Int */;
5995 long var47 /* : Int */;
5996 short int var49 /* : Bool */;
5997 int cltype;
5998 int idtype;
5999 const char* var_class_name;
6000 long var50 /* : Int */;
6001 val* var51 /* : ModelBuilder */;
6002 val* var53 /* : ModelBuilder */;
6003 long var54 /* : Int */;
6004 long var56 /* : Int */;
6005 long var57 /* : Int */;
6006 short int var59 /* : Bool */;
6007 int cltype60;
6008 int idtype61;
6009 const char* var_class_name62;
6010 long var63 /* : Int */;
6011 long var_nb_invok_total /* var nb_invok_total: Int */;
6012 val* var65 /* : NativeArray[String] */;
6013 static val* varonce64;
6014 static val* varonce66;
6015 val* var67 /* : String */;
6016 char* var68 /* : NativeString */;
6017 val* var69 /* : FlatString */;
6018 val* var70 /* : String */;
6019 val* var71 /* : String */;
6020 val* var73 /* : NativeArray[String] */;
6021 static val* varonce72;
6022 static val* varonce74;
6023 val* var75 /* : String */;
6024 char* var76 /* : NativeString */;
6025 val* var77 /* : FlatString */;
6026 static val* varonce78;
6027 val* var79 /* : String */;
6028 char* var80 /* : NativeString */;
6029 val* var81 /* : FlatString */;
6030 static val* varonce82;
6031 val* var83 /* : String */;
6032 char* var84 /* : NativeString */;
6033 val* var85 /* : FlatString */;
6034 val* var86 /* : ModelBuilder */;
6035 val* var88 /* : ModelBuilder */;
6036 long var89 /* : Int */;
6037 long var91 /* : Int */;
6038 val* var92 /* : String */;
6039 val* var93 /* : Sys */;
6040 val* var94 /* : ModelBuilder */;
6041 val* var96 /* : ModelBuilder */;
6042 long var97 /* : Int */;
6043 long var99 /* : Int */;
6044 val* var100 /* : String */;
6045 val* var101 /* : String */;
6046 val* var103 /* : NativeArray[String] */;
6047 static val* varonce102;
6048 static val* varonce104;
6049 val* var105 /* : String */;
6050 char* var106 /* : NativeString */;
6051 val* var107 /* : FlatString */;
6052 static val* varonce108;
6053 val* var109 /* : String */;
6054 char* var110 /* : NativeString */;
6055 val* var111 /* : FlatString */;
6056 static val* varonce112;
6057 val* var113 /* : String */;
6058 char* var114 /* : NativeString */;
6059 val* var115 /* : FlatString */;
6060 val* var116 /* : ModelBuilder */;
6061 val* var118 /* : ModelBuilder */;
6062 long var119 /* : Int */;
6063 long var121 /* : Int */;
6064 val* var122 /* : String */;
6065 val* var123 /* : Sys */;
6066 val* var124 /* : ModelBuilder */;
6067 val* var126 /* : ModelBuilder */;
6068 long var127 /* : Int */;
6069 long var129 /* : Int */;
6070 val* var130 /* : String */;
6071 val* var131 /* : String */;
6072 val* var133 /* : NativeArray[String] */;
6073 static val* varonce132;
6074 static val* varonce134;
6075 val* var135 /* : String */;
6076 char* var136 /* : NativeString */;
6077 val* var137 /* : FlatString */;
6078 static val* varonce138;
6079 val* var139 /* : String */;
6080 char* var140 /* : NativeString */;
6081 val* var141 /* : FlatString */;
6082 static val* varonce142;
6083 val* var143 /* : String */;
6084 char* var144 /* : NativeString */;
6085 val* var145 /* : FlatString */;
6086 val* var146 /* : ModelBuilder */;
6087 val* var148 /* : ModelBuilder */;
6088 long var149 /* : Int */;
6089 long var151 /* : Int */;
6090 val* var152 /* : String */;
6091 val* var153 /* : Sys */;
6092 val* var154 /* : ModelBuilder */;
6093 val* var156 /* : ModelBuilder */;
6094 long var157 /* : Int */;
6095 long var159 /* : Int */;
6096 val* var160 /* : String */;
6097 val* var161 /* : String */;
6098 {
6099 ((void(*)(val* self))(self->class->vft[COLOR_nit___nit__SeparateCompiler___nit__abstract_compiler__AbstractCompiler__display_stats]))(self); /* display_stats on <self:SeparateCompiler>*/
6100 }
6101 {
6102 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6103 var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6104 if (unlikely(var2 == NULL)) {
6105 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6106 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6107 fatal_exit(1);
6108 }
6109 var = var2;
6110 RET_LABEL1:(void)0;
6111 }
6112 }
6113 {
6114 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var) on <var:ModelBuilder> */
6115 var5 = var->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var:ModelBuilder> */
6116 if (unlikely(var5 == NULL)) {
6117 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6118 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
6119 fatal_exit(1);
6120 }
6121 var3 = var5;
6122 RET_LABEL4:(void)0;
6123 }
6124 }
6125 {
6126 { /* Inline separate_compiler#ToolContext#opt_tables_metrics (var3) on <var3:ToolContext> */
6127 var8 = var3->attrs[COLOR_nit__separate_compiler__ToolContext___opt_tables_metrics].val; /* _opt_tables_metrics on <var3:ToolContext> */
6128 if (unlikely(var8 == NULL)) {
6129 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_tables_metrics");
6130 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 60);
6131 fatal_exit(1);
6132 }
6133 var6 = var8;
6134 RET_LABEL7:(void)0;
6135 }
6136 }
6137 {
6138 { /* Inline opts#Option#value (var6) on <var6:OptionBool> */
6139 var11 = var6->attrs[COLOR_opts__Option___value].val; /* _value on <var6:OptionBool> */
6140 var9 = var11;
6141 RET_LABEL10:(void)0;
6142 }
6143 }
6144 var12 = (short int)((long)(var9)>>2);
6145 if (var12){
6146 {
6147 ((void(*)(val* self))(self->class->vft[COLOR_nit__separate_compiler__SeparateCompiler__display_sizes]))(self); /* display_sizes on <self:SeparateCompiler>*/
6148 }
6149 } else {
6150 }
6151 {
6152 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6153 var15 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6154 if (unlikely(var15 == NULL)) {
6155 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6156 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6157 fatal_exit(1);
6158 }
6159 var13 = var15;
6160 RET_LABEL14:(void)0;
6161 }
6162 }
6163 {
6164 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var13) on <var13:ModelBuilder> */
6165 var18 = var13->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var13:ModelBuilder> */
6166 if (unlikely(var18 == NULL)) {
6167 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6168 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
6169 fatal_exit(1);
6170 }
6171 var16 = var18;
6172 RET_LABEL17:(void)0;
6173 }
6174 }
6175 {
6176 { /* Inline abstract_compiler#ToolContext#opt_isset_checks_metrics (var16) on <var16:ToolContext> */
6177 var21 = var16->attrs[COLOR_nit__abstract_compiler__ToolContext___opt_isset_checks_metrics].val; /* _opt_isset_checks_metrics on <var16:ToolContext> */
6178 if (unlikely(var21 == NULL)) {
6179 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_isset_checks_metrics");
6180 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 64);
6181 fatal_exit(1);
6182 }
6183 var19 = var21;
6184 RET_LABEL20:(void)0;
6185 }
6186 }
6187 {
6188 { /* Inline opts#Option#value (var19) on <var19:OptionBool> */
6189 var24 = var19->attrs[COLOR_opts__Option___value].val; /* _value on <var19:OptionBool> */
6190 var22 = var24;
6191 RET_LABEL23:(void)0;
6192 }
6193 }
6194 var25 = (short int)((long)(var22)>>2);
6195 if (var25){
6196 {
6197 nit___nit__SeparateCompiler___display_isset_checks(self); /* Direct call separate_compiler#SeparateCompiler#display_isset_checks on <self:SeparateCompiler>*/
6198 }
6199 } else {
6200 }
6201 {
6202 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6203 var28 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6204 if (unlikely(var28 == NULL)) {
6205 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6206 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6207 fatal_exit(1);
6208 }
6209 var26 = var28;
6210 RET_LABEL27:(void)0;
6211 }
6212 }
6213 {
6214 { /* Inline modelbuilder_base#ModelBuilder#toolcontext (var26) on <var26:ModelBuilder> */
6215 var31 = var26->attrs[COLOR_nit__modelbuilder_base__ModelBuilder___toolcontext].val; /* _toolcontext on <var26:ModelBuilder> */
6216 if (unlikely(var31 == NULL)) {
6217 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
6218 PRINT_ERROR(" (%s:%d)\n", FILE_nit__modelbuilder_base, 47);
6219 fatal_exit(1);
6220 }
6221 var29 = var31;
6222 RET_LABEL30:(void)0;
6223 }
6224 }
6225 var_tc = var29;
6226 if (likely(varonce!=NULL)) {
6227 var32 = varonce;
6228 } else {
6229 var33 = "# implementation of method invocation";
6230 var34 = standard___standard__NativeString___to_s_with_length(var33, 37l);
6231 var32 = var34;
6232 varonce = var32;
6233 }
6234 {
6235 nit___nit__ToolContext___info(var_tc, var32, 2l); /* Direct call toolcontext#ToolContext#info on <var_tc:ToolContext>*/
6236 }
6237 {
6238 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6239 var37 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6240 if (unlikely(var37 == NULL)) {
6241 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6242 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6243 fatal_exit(1);
6244 }
6245 var35 = var37;
6246 RET_LABEL36:(void)0;
6247 }
6248 }
6249 {
6250 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables (var35) on <var35:ModelBuilder> */
6251 var40 = var35->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on <var35:ModelBuilder> */
6252 var38 = var40;
6253 RET_LABEL39:(void)0;
6254 }
6255 }
6256 {
6257 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6258 var43 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6259 if (unlikely(var43 == NULL)) {
6260 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6261 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6262 fatal_exit(1);
6263 }
6264 var41 = var43;
6265 RET_LABEL42:(void)0;
6266 }
6267 }
6268 {
6269 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct (var41) on <var41:ModelBuilder> */
6270 var46 = var41->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on <var41:ModelBuilder> */
6271 var44 = var46;
6272 RET_LABEL45:(void)0;
6273 }
6274 }
6275 {
6276 { /* Inline kernel#Int#+ (var38,var44) on <var38:Int> */
6277 /* Covariant cast for argument 0 (i) <var44:Int> isa OTHER */
6278 /* <var44:Int> isa OTHER */
6279 var49 = 1; /* easy <var44:Int> isa OTHER*/
6280 if (unlikely(!var49)) {
6281 var_class_name = type_standard__Int.name;
6282 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6283 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
6284 fatal_exit(1);
6285 }
6286 var50 = var38 + var44;
6287 var47 = var50;
6288 goto RET_LABEL48;
6289 RET_LABEL48:(void)0;
6290 }
6291 }
6292 {
6293 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6294 var53 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6295 if (unlikely(var53 == NULL)) {
6296 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6297 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6298 fatal_exit(1);
6299 }
6300 var51 = var53;
6301 RET_LABEL52:(void)0;
6302 }
6303 }
6304 {
6305 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline (var51) on <var51:ModelBuilder> */
6306 var56 = var51->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on <var51:ModelBuilder> */
6307 var54 = var56;
6308 RET_LABEL55:(void)0;
6309 }
6310 }
6311 {
6312 { /* Inline kernel#Int#+ (var47,var54) on <var47:Int> */
6313 /* Covariant cast for argument 0 (i) <var54:Int> isa OTHER */
6314 /* <var54:Int> isa OTHER */
6315 var59 = 1; /* easy <var54:Int> isa OTHER*/
6316 if (unlikely(!var59)) {
6317 var_class_name62 = type_standard__Int.name;
6318 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name62);
6319 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
6320 fatal_exit(1);
6321 }
6322 var63 = var47 + var54;
6323 var57 = var63;
6324 goto RET_LABEL58;
6325 RET_LABEL58:(void)0;
6326 }
6327 }
6328 var_nb_invok_total = var57;
6329 if (unlikely(varonce64==NULL)) {
6330 var65 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
6331 if (likely(varonce66!=NULL)) {
6332 var67 = varonce66;
6333 } else {
6334 var68 = "total number of invocations: ";
6335 var69 = standard___standard__NativeString___to_s_with_length(var68, 29l);
6336 var67 = var69;
6337 varonce66 = var67;
6338 }
6339 ((struct instance_standard__NativeArray*)var65)->values[0]=var67;
6340 } else {
6341 var65 = varonce64;
6342 varonce64 = NULL;
6343 }
6344 var70 = standard__string___Int___Object__to_s(var_nb_invok_total);
6345 ((struct instance_standard__NativeArray*)var65)->values[1]=var70;
6346 {
6347 var71 = ((val*(*)(val* self))(var65->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var65); /* native_to_s on <var65:NativeArray[String]>*/
6348 }
6349 varonce64 = var65;
6350 {
6351 nit___nit__ToolContext___info(var_tc, var71, 2l); /* Direct call toolcontext#ToolContext#info on <var_tc:ToolContext>*/
6352 }
6353 if (unlikely(varonce72==NULL)) {
6354 var73 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
6355 if (likely(varonce74!=NULL)) {
6356 var75 = varonce74;
6357 } else {
6358 var76 = "invocations by VFT send: ";
6359 var77 = standard___standard__NativeString___to_s_with_length(var76, 29l);
6360 var75 = var77;
6361 varonce74 = var75;
6362 }
6363 ((struct instance_standard__NativeArray*)var73)->values[0]=var75;
6364 if (likely(varonce78!=NULL)) {
6365 var79 = varonce78;
6366 } else {
6367 var80 = " (";
6368 var81 = standard___standard__NativeString___to_s_with_length(var80, 2l);
6369 var79 = var81;
6370 varonce78 = var79;
6371 }
6372 ((struct instance_standard__NativeArray*)var73)->values[2]=var79;
6373 if (likely(varonce82!=NULL)) {
6374 var83 = varonce82;
6375 } else {
6376 var84 = "%)";
6377 var85 = standard___standard__NativeString___to_s_with_length(var84, 2l);
6378 var83 = var85;
6379 varonce82 = var83;
6380 }
6381 ((struct instance_standard__NativeArray*)var73)->values[4]=var83;
6382 } else {
6383 var73 = varonce72;
6384 varonce72 = NULL;
6385 }
6386 {
6387 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6388 var88 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6389 if (unlikely(var88 == NULL)) {
6390 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6391 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6392 fatal_exit(1);
6393 }
6394 var86 = var88;
6395 RET_LABEL87:(void)0;
6396 }
6397 }
6398 {
6399 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables (var86) on <var86:ModelBuilder> */
6400 var91 = var86->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on <var86:ModelBuilder> */
6401 var89 = var91;
6402 RET_LABEL90:(void)0;
6403 }
6404 }
6405 var92 = standard__string___Int___Object__to_s(var89);
6406 ((struct instance_standard__NativeArray*)var73)->values[1]=var92;
6407 var93 = glob_sys;
6408 {
6409 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6410 var96 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6411 if (unlikely(var96 == NULL)) {
6412 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6413 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6414 fatal_exit(1);
6415 }
6416 var94 = var96;
6417 RET_LABEL95:(void)0;
6418 }
6419 }
6420 {
6421 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_tables (var94) on <var94:ModelBuilder> */
6422 var99 = var94->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_tables].l; /* _nb_invok_by_tables on <var94:ModelBuilder> */
6423 var97 = var99;
6424 RET_LABEL98:(void)0;
6425 }
6426 }
6427 {
6428 var100 = counter___standard__Sys___div(var93, var97, var_nb_invok_total);
6429 }
6430 ((struct instance_standard__NativeArray*)var73)->values[3]=var100;
6431 {
6432 var101 = ((val*(*)(val* self))(var73->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var73); /* native_to_s on <var73:NativeArray[String]>*/
6433 }
6434 varonce72 = var73;
6435 {
6436 nit___nit__ToolContext___info(var_tc, var101, 2l); /* Direct call toolcontext#ToolContext#info on <var_tc:ToolContext>*/
6437 }
6438 if (unlikely(varonce102==NULL)) {
6439 var103 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
6440 if (likely(varonce104!=NULL)) {
6441 var105 = varonce104;
6442 } else {
6443 var106 = "invocations by direct call: ";
6444 var107 = standard___standard__NativeString___to_s_with_length(var106, 29l);
6445 var105 = var107;
6446 varonce104 = var105;
6447 }
6448 ((struct instance_standard__NativeArray*)var103)->values[0]=var105;
6449 if (likely(varonce108!=NULL)) {
6450 var109 = varonce108;
6451 } else {
6452 var110 = " (";
6453 var111 = standard___standard__NativeString___to_s_with_length(var110, 2l);
6454 var109 = var111;
6455 varonce108 = var109;
6456 }
6457 ((struct instance_standard__NativeArray*)var103)->values[2]=var109;
6458 if (likely(varonce112!=NULL)) {
6459 var113 = varonce112;
6460 } else {
6461 var114 = "%)";
6462 var115 = standard___standard__NativeString___to_s_with_length(var114, 2l);
6463 var113 = var115;
6464 varonce112 = var113;
6465 }
6466 ((struct instance_standard__NativeArray*)var103)->values[4]=var113;
6467 } else {
6468 var103 = varonce102;
6469 varonce102 = NULL;
6470 }
6471 {
6472 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6473 var118 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6474 if (unlikely(var118 == NULL)) {
6475 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6476 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6477 fatal_exit(1);
6478 }
6479 var116 = var118;
6480 RET_LABEL117:(void)0;
6481 }
6482 }
6483 {
6484 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct (var116) on <var116:ModelBuilder> */
6485 var121 = var116->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on <var116:ModelBuilder> */
6486 var119 = var121;
6487 RET_LABEL120:(void)0;
6488 }
6489 }
6490 var122 = standard__string___Int___Object__to_s(var119);
6491 ((struct instance_standard__NativeArray*)var103)->values[1]=var122;
6492 var123 = glob_sys;
6493 {
6494 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6495 var126 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6496 if (unlikely(var126 == NULL)) {
6497 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6498 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6499 fatal_exit(1);
6500 }
6501 var124 = var126;
6502 RET_LABEL125:(void)0;
6503 }
6504 }
6505 {
6506 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_direct (var124) on <var124:ModelBuilder> */
6507 var129 = var124->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_direct].l; /* _nb_invok_by_direct on <var124:ModelBuilder> */
6508 var127 = var129;
6509 RET_LABEL128:(void)0;
6510 }
6511 }
6512 {
6513 var130 = counter___standard__Sys___div(var123, var127, var_nb_invok_total);
6514 }
6515 ((struct instance_standard__NativeArray*)var103)->values[3]=var130;
6516 {
6517 var131 = ((val*(*)(val* self))(var103->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var103); /* native_to_s on <var103:NativeArray[String]>*/
6518 }
6519 varonce102 = var103;
6520 {
6521 nit___nit__ToolContext___info(var_tc, var131, 2l); /* Direct call toolcontext#ToolContext#info on <var_tc:ToolContext>*/
6522 }
6523 if (unlikely(varonce132==NULL)) {
6524 var133 = NEW_standard__NativeArray(5l, &type_standard__NativeArray__standard__String);
6525 if (likely(varonce134!=NULL)) {
6526 var135 = varonce134;
6527 } else {
6528 var136 = "invocations by inlining: ";
6529 var137 = standard___standard__NativeString___to_s_with_length(var136, 29l);
6530 var135 = var137;
6531 varonce134 = var135;
6532 }
6533 ((struct instance_standard__NativeArray*)var133)->values[0]=var135;
6534 if (likely(varonce138!=NULL)) {
6535 var139 = varonce138;
6536 } else {
6537 var140 = " (";
6538 var141 = standard___standard__NativeString___to_s_with_length(var140, 2l);
6539 var139 = var141;
6540 varonce138 = var139;
6541 }
6542 ((struct instance_standard__NativeArray*)var133)->values[2]=var139;
6543 if (likely(varonce142!=NULL)) {
6544 var143 = varonce142;
6545 } else {
6546 var144 = "%)";
6547 var145 = standard___standard__NativeString___to_s_with_length(var144, 2l);
6548 var143 = var145;
6549 varonce142 = var143;
6550 }
6551 ((struct instance_standard__NativeArray*)var133)->values[4]=var143;
6552 } else {
6553 var133 = varonce132;
6554 varonce132 = NULL;
6555 }
6556 {
6557 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6558 var148 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6559 if (unlikely(var148 == NULL)) {
6560 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6561 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6562 fatal_exit(1);
6563 }
6564 var146 = var148;
6565 RET_LABEL147:(void)0;
6566 }
6567 }
6568 {
6569 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline (var146) on <var146:ModelBuilder> */
6570 var151 = var146->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on <var146:ModelBuilder> */
6571 var149 = var151;
6572 RET_LABEL150:(void)0;
6573 }
6574 }
6575 var152 = standard__string___Int___Object__to_s(var149);
6576 ((struct instance_standard__NativeArray*)var133)->values[1]=var152;
6577 var153 = glob_sys;
6578 {
6579 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (self) on <self:SeparateCompiler> */
6580 var156 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___modelbuilder].val; /* _modelbuilder on <self:SeparateCompiler> */
6581 if (unlikely(var156 == NULL)) {
6582 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
6583 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 522);
6584 fatal_exit(1);
6585 }
6586 var154 = var156;
6587 RET_LABEL155:(void)0;
6588 }
6589 }
6590 {
6591 { /* Inline separate_compiler#ModelBuilder#nb_invok_by_inline (var154) on <var154:ModelBuilder> */
6592 var159 = var154->attrs[COLOR_nit__separate_compiler__ModelBuilder___nb_invok_by_inline].l; /* _nb_invok_by_inline on <var154:ModelBuilder> */
6593 var157 = var159;
6594 RET_LABEL158:(void)0;
6595 }
6596 }
6597 {
6598 var160 = counter___standard__Sys___div(var153, var157, var_nb_invok_total);
6599 }
6600 ((struct instance_standard__NativeArray*)var133)->values[3]=var160;
6601 {
6602 var161 = ((val*(*)(val* self))(var133->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var133); /* native_to_s on <var133:NativeArray[String]>*/
6603 }
6604 varonce132 = var133;
6605 {
6606 nit___nit__ToolContext___info(var_tc, var161, 2l); /* Direct call toolcontext#ToolContext#info on <var_tc:ToolContext>*/
6607 }
6608 RET_LABEL:;
6609 }
6610 /* method separate_compiler#SeparateCompiler#display_sizes for (self: SeparateCompiler) */
6611 void nit___nit__SeparateCompiler___display_sizes(val* self) {
6612 val* var /* : Sys */;
6613 static val* varonce;
6614 val* var1 /* : String */;
6615 char* var2 /* : NativeString */;
6616 val* var3 /* : FlatString */;
6617 val* var4 /* : Sys */;
6618 static val* varonce5;
6619 val* var6 /* : String */;
6620 char* var7 /* : NativeString */;
6621 val* var8 /* : FlatString */;
6622 long var_total /* var total: Int */;
6623 long var_holes /* var holes: Int */;
6624 val* var9 /* : Map[MType, Array[nullable MType]] */;
6625 val* var11 /* : Map[MType, Array[nullable MType]] */;
6626 val* var_ /* var : Map[MType, Array[nullable MType]] */;
6627 val* var12 /* : MapIterator[nullable Object, nullable Object] */;
6628 val* var_13 /* var : MapIterator[MType, Array[nullable MType]] */;
6629 short int var14 /* : Bool */;
6630 val* var15 /* : nullable Object */;
6631 val* var_t /* var t: MType */;
6632 val* var16 /* : nullable Object */;
6633 val* var_table /* var table: Array[nullable MType] */;
6634 long var17 /* : Int */;
6635 long var19 /* : Int */;
6636 long var20 /* : Int */;
6637 short int var22 /* : Bool */;
6638 int cltype;
6639 int idtype;
6640 const char* var_class_name;
6641 long var23 /* : Int */;
6642 val* var_24 /* var : Array[nullable MType] */;
6643 val* var25 /* : ArrayIterator[nullable Object] */;
6644 val* var_26 /* var : ArrayIterator[nullable MType] */;
6645 short int var27 /* : Bool */;
6646 val* var28 /* : nullable Object */;
6647 val* var_e /* var e: nullable MType */;
6648 short int var29 /* : Bool */;
6649 short int var30 /* : Bool */;
6650 val* var_other /* var other: nullable Object */;
6651 short int var32 /* : Bool */;
6652 short int var34 /* : Bool */;
6653 long var35 /* : Int */;
6654 short int var37 /* : Bool */;
6655 int cltype38;
6656 int idtype39;
6657 const char* var_class_name40;
6658 long var41 /* : Int */;
6659 val* var44 /* : Sys */;
6660 val* var46 /* : NativeArray[String] */;
6661 static val* varonce45;
6662 static val* varonce47;
6663 val* var48 /* : String */;
6664 char* var49 /* : NativeString */;
6665 val* var50 /* : FlatString */;
6666 static val* varonce51;
6667 val* var52 /* : String */;
6668 char* var53 /* : NativeString */;
6669 val* var54 /* : FlatString */;
6670 val* var55 /* : String */;
6671 val* var56 /* : String */;
6672 val* var57 /* : String */;
6673 val* var58 /* : Sys */;
6674 static val* varonce59;
6675 val* var60 /* : String */;
6676 char* var61 /* : NativeString */;
6677 val* var62 /* : FlatString */;
6678 val* var63 /* : Sys */;
6679 static val* varonce64;
6680 val* var65 /* : String */;
6681 char* var66 /* : NativeString */;
6682 val* var67 /* : FlatString */;
6683 val* var68 /* : Map[MClassType, Array[nullable MType]] */;
6684 val* var70 /* : Map[MClassType, Array[nullable MType]] */;
6685 val* var_71 /* var : Map[MClassType, Array[nullable MType]] */;
6686 val* var72 /* : MapIterator[nullable Object, nullable Object] */;
6687 val* var_73 /* var : MapIterator[MClassType, Array[nullable MType]] */;
6688 short int var74 /* : Bool */;
6689 val* var75 /* : nullable Object */;
6690 val* var_t76 /* var t: MClassType */;
6691 val* var77 /* : nullable Object */;
6692 val* var_table78 /* var table: Array[nullable MType] */;
6693 long var79 /* : Int */;
6694 long var81 /* : Int */;
6695 long var82 /* : Int */;
6696 short int var84 /* : Bool */;
6697 int cltype85;
6698 int idtype86;
6699 const char* var_class_name87;
6700 long var88 /* : Int */;
6701 val* var_89 /* var : Array[nullable MType] */;
6702 val* var90 /* : ArrayIterator[nullable Object] */;
6703 val* var_91 /* var : ArrayIterator[nullable MType] */;
6704 short int var92 /* : Bool */;
6705 val* var93 /* : nullable Object */;
6706 val* var_e94 /* var e: nullable MType */;
6707 short int var95 /* : Bool */;
6708 short int var96 /* : Bool */;
6709 short int var98 /* : Bool */;
6710 short int var100 /* : Bool */;
6711 long var101 /* : Int */;
6712 short int var103 /* : Bool */;
6713 int cltype104;
6714 int idtype105;
6715 const char* var_class_name106;
6716 long var107 /* : Int */;
6717 val* var111 /* : Sys */;
6718 val* var113 /* : NativeArray[String] */;
6719 static val* varonce112;
6720 static val* varonce114;
6721 val* var115 /* : String */;
6722 char* var116 /* : NativeString */;
6723 val* var117 /* : FlatString */;
6724 static val* varonce118;
6725 val* var119 /* : String */;
6726 char* var120 /* : NativeString */;
6727 val* var121 /* : FlatString */;
6728 val* var122 /* : String */;
6729 val* var123 /* : String */;
6730 val* var124 /* : String */;
6731 val* var125 /* : Sys */;
6732 static val* varonce126;
6733 val* var127 /* : String */;
6734 char* var128 /* : NativeString */;
6735 val* var129 /* : FlatString */;
6736 val* var130 /* : Sys */;
6737 static val* varonce131;
6738 val* var132 /* : String */;
6739 char* var133 /* : NativeString */;
6740 val* var134 /* : FlatString */;
6741 val* var135 /* : Map[MClass, Array[nullable MPropDef]] */;
6742 val* var137 /* : Map[MClass, Array[nullable MPropDef]] */;
6743 val* var_138 /* var : Map[MClass, Array[nullable MPropDef]] */;
6744 val* var139 /* : MapIterator[nullable Object, nullable Object] */;
6745 val* var_140 /* var : MapIterator[MClass, Array[nullable MPropDef]] */;
6746 short int var141 /* : Bool */;
6747 val* var142 /* : nullable Object */;
6748 val* var_t143 /* var t: MClass */;
6749 val* var144 /* : nullable Object */;
6750 val* var_table145 /* var table: Array[nullable MPropDef] */;
6751 long var146 /* : Int */;
6752 long var148 /* : Int */;
6753 long var149 /* : Int */;
6754 short int var151 /* : Bool */;
6755 int cltype152;
6756 int idtype153;
6757 const char* var_class_name154;
6758 long var155 /* : Int */;
6759 val* var_156 /* var : Array[nullable MPropDef] */;
6760 val* var157 /* : ArrayIterator[nullable Object] */;
6761 val* var_158 /* var : ArrayIterator[nullable MPropDef] */;
6762 short int var159 /* : Bool */;
6763 val* var160 /* : nullable Object */;
6764 val* var_e161 /* var e: nullable MPropDef */;
6765 short int var162 /* : Bool */;
6766 short int var163 /* : Bool */;
6767 short int var165 /* : Bool */;
6768 short int var167 /* : Bool */;
6769 long var168 /* : Int */;
6770 short int var170 /* : Bool */;
6771 int cltype171;
6772 int idtype172;
6773 const char* var_class_name173;
6774 long var174 /* : Int */;
6775 val* var178 /* : Sys */;
6776 val* var180 /* : NativeArray[String] */;
6777 static val* varonce179;
6778 static val* varonce181;
6779 val* var182 /* : String */;
6780 char* var183 /* : NativeString */;
6781 val* var184 /* : FlatString */;
6782 static val* varonce185;
6783 val* var186 /* : String */;
6784 char* var187 /* : NativeString */;
6785 val* var188 /* : FlatString */;
6786 val* var189 /* : String */;
6787 val* var190 /* : String */;
6788 val* var191 /* : String */;
6789 val* var192 /* : Sys */;
6790 static val* varonce193;
6791 val* var194 /* : String */;
6792 char* var195 /* : NativeString */;
6793 val* var196 /* : FlatString */;
6794 val* var197 /* : Sys */;
6795 static val* varonce198;
6796 val* var199 /* : String */;
6797 char* var200 /* : NativeString */;
6798 val* var201 /* : FlatString */;
6799 val* var202 /* : Map[MClass, Array[nullable MProperty]] */;
6800 val* var204 /* : Map[MClass, Array[nullable MProperty]] */;
6801 val* var_205 /* var : Map[MClass, Array[nullable MProperty]] */;
6802 val* var206 /* : MapIterator[nullable Object, nullable Object] */;
6803 val* var_207 /* var : MapIterator[MClass, Array[nullable MProperty]] */;
6804 short int var208 /* : Bool */;
6805 val* var209 /* : nullable Object */;
6806 val* var_t210 /* var t: MClass */;
6807 val* var211 /* : nullable Object */;
6808 val* var_table212 /* var table: Array[nullable MProperty] */;
6809 long var213 /* : Int */;
6810 long var215 /* : Int */;
6811 long var216 /* : Int */;
6812 short int var218 /* : Bool */;
6813 int cltype219;
6814 int idtype220;
6815 const char* var_class_name221;
6816 long var222 /* : Int */;
6817 val* var_223 /* var : Array[nullable MProperty] */;
6818 val* var224 /* : ArrayIterator[nullable Object] */;
6819 val* var_225 /* var : ArrayIterator[nullable MProperty] */;
6820 short int var226 /* : Bool */;
6821 val* var227 /* : nullable Object */;
6822 val* var_e228 /* var e: nullable MProperty */;
6823 short int var229 /* : Bool */;
6824 short int var230 /* : Bool */;
6825 short int var232 /* : Bool */;
6826 short int var234 /* : Bool */;
6827 long var235 /* : Int */;
6828 short int var237 /* : Bool */;
6829 int cltype238;
6830 int idtype239;
6831 const char* var_class_name240;
6832 long var241 /* : Int */;
6833 val* var245 /* : Sys */;
6834 val* var247 /* : NativeArray[String] */;
6835 static val* varonce246;
6836 static val* varonce248;
6837 val* var249 /* : String */;
6838 char* var250 /* : NativeString */;
6839 val* var251 /* : FlatString */;
6840 static val* varonce252;
6841 val* var253 /* : String */;
6842 char* var254 /* : NativeString */;
6843 val* var255 /* : FlatString */;
6844 val* var256 /* : String */;
6845 val* var257 /* : String */;
6846 val* var258 /* : String */;
6847 var = glob_sys;
6848 if (likely(varonce!=NULL)) {
6849 var1 = varonce;
6850 } else {
6851 var2 = "# size of subtyping tables";
6852 var3 = standard___standard__NativeString___to_s_with_length(var2, 26l);
6853 var1 = var3;
6854 varonce = var1;
6855 }
6856 {
6857 standard__file___Sys___print(var, var1); /* Direct call file#Sys#print on <var:Sys>*/
6858 }
6859 var4 = glob_sys;
6860 if (likely(varonce5!=NULL)) {
6861 var6 = varonce5;
6862 } else {
6863 var7 = "\ttotal \tholes";
6864 var8 = standard___standard__NativeString___to_s_with_length(var7, 13l);
6865 var6 = var8;
6866 varonce5 = var6;
6867 }
6868 {
6869 standard__file___Sys___print(var4, var6); /* Direct call file#Sys#print on <var4:Sys>*/
6870 }
6871 var_total = 0l;
6872 var_holes = 0l;
6873 {
6874 { /* Inline separate_compiler#SeparateCompiler#type_tables (self) on <self:SeparateCompiler> */
6875 var11 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___type_tables].val; /* _type_tables on <self:SeparateCompiler> */
6876 if (unlikely(var11 == NULL)) {
6877 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _type_tables");
6878 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1051);
6879 fatal_exit(1);
6880 }
6881 var9 = var11;
6882 RET_LABEL10:(void)0;
6883 }
6884 }
6885 var_ = var9;
6886 {
6887 var12 = ((val*(*)(val* self))((((long)var_&3)?class_info[((long)var_&3)]:var_->class)->vft[COLOR_standard__abstract_collection__MapRead__iterator]))(var_); /* iterator on <var_:Map[MType, Array[nullable MType]]>*/
6888 }
6889 var_13 = var12;
6890 for(;;) {
6891 {
6892 var14 = ((short int(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__MapIterator__is_ok]))(var_13); /* is_ok on <var_13:MapIterator[MType, Array[nullable MType]]>*/
6893 }
6894 if (var14){
6895 {
6896 var15 = ((val*(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__MapIterator__key]))(var_13); /* key on <var_13:MapIterator[MType, Array[nullable MType]]>*/
6897 }
6898 var_t = var15;
6899 {
6900 var16 = ((val*(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__MapIterator__item]))(var_13); /* item on <var_13:MapIterator[MType, Array[nullable MType]]>*/
6901 }
6902 var_table = var16;
6903 {
6904 { /* Inline array#AbstractArrayRead#length (var_table) on <var_table:Array[nullable MType]> */
6905 var19 = var_table->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_table:Array[nullable MType]> */
6906 var17 = var19;
6907 RET_LABEL18:(void)0;
6908 }
6909 }
6910 {
6911 { /* Inline kernel#Int#+ (var_total,var17) on <var_total:Int> */
6912 /* Covariant cast for argument 0 (i) <var17:Int> isa OTHER */
6913 /* <var17:Int> isa OTHER */
6914 var22 = 1; /* easy <var17:Int> isa OTHER*/
6915 if (unlikely(!var22)) {
6916 var_class_name = type_standard__Int.name;
6917 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
6918 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
6919 fatal_exit(1);
6920 }
6921 var23 = var_total + var17;
6922 var20 = var23;
6923 goto RET_LABEL21;
6924 RET_LABEL21:(void)0;
6925 }
6926 }
6927 var_total = var20;
6928 var_24 = var_table;
6929 {
6930 var25 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_24);
6931 }
6932 var_26 = var25;
6933 for(;;) {
6934 {
6935 var27 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_26);
6936 }
6937 if (var27){
6938 {
6939 var28 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_26);
6940 }
6941 var_e = var28;
6942 if (var_e == NULL) {
6943 var29 = 1; /* is null */
6944 } else {
6945 var29 = 0; /* arg is null but recv is not */
6946 }
6947 if (0) {
6948 { /* Inline kernel#Object#== (var_e,((val*)NULL)) on <var_e:nullable MType> */
6949 var_other = ((val*)NULL);
6950 {
6951 { /* Inline kernel#Object#is_same_instance (var_e,var_other) on <var_e:nullable MType(MType)> */
6952 var34 = var_e == var_other;
6953 var32 = var34;
6954 goto RET_LABEL33;
6955 RET_LABEL33:(void)0;
6956 }
6957 }
6958 var30 = var32;
6959 goto RET_LABEL31;
6960 RET_LABEL31:(void)0;
6961 }
6962 var29 = var30;
6963 }
6964 if (var29){
6965 {
6966 { /* Inline kernel#Int#+ (var_holes,1l) on <var_holes:Int> */
6967 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
6968 /* <1l:Int> isa OTHER */
6969 var37 = 1; /* easy <1l:Int> isa OTHER*/
6970 if (unlikely(!var37)) {
6971 var_class_name40 = type_standard__Int.name;
6972 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name40);
6973 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
6974 fatal_exit(1);
6975 }
6976 var41 = var_holes + 1l;
6977 var35 = var41;
6978 goto RET_LABEL36;
6979 RET_LABEL36:(void)0;
6980 }
6981 }
6982 var_holes = var35;
6983 } else {
6984 }
6985 {
6986 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_26); /* Direct call array#ArrayIterator#next on <var_26:ArrayIterator[nullable MType]>*/
6987 }
6988 } else {
6989 goto BREAK_label;
6990 }
6991 }
6992 BREAK_label: (void)0;
6993 {
6994 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_26); /* Direct call array#ArrayIterator#finish on <var_26:ArrayIterator[nullable MType]>*/
6995 }
6996 {
6997 ((void(*)(val* self))((((long)var_13&3)?class_info[((long)var_13&3)]:var_13->class)->vft[COLOR_standard__abstract_collection__MapIterator__next]))(var_13); /* next on <var_13:MapIterator[MType, Array[nullable MType]]>*/
6998 }
6999 } else {
7000 goto BREAK_label42;
7001 }
7002 }
7003 BREAK_label42: (void)0;
7004 {
7005 { /* Inline abstract_collection#MapIterator#finish (var_13) on <var_13:MapIterator[MType, Array[nullable MType]]> */
7006 RET_LABEL43:(void)0;
7007 }
7008 }
7009 var44 = glob_sys;
7010 if (unlikely(varonce45==NULL)) {
7011 var46 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
7012 if (likely(varonce47!=NULL)) {
7013 var48 = varonce47;
7014 } else {
7015 var49 = "\t";
7016 var50 = standard___standard__NativeString___to_s_with_length(var49, 1l);
7017 var48 = var50;
7018 varonce47 = var48;
7019 }
7020 ((struct instance_standard__NativeArray*)var46)->values[0]=var48;
7021 if (likely(varonce51!=NULL)) {
7022 var52 = varonce51;
7023 } else {
7024 var53 = "\t";
7025 var54 = standard___standard__NativeString___to_s_with_length(var53, 1l);
7026 var52 = var54;
7027 varonce51 = var52;
7028 }
7029 ((struct instance_standard__NativeArray*)var46)->values[2]=var52;
7030 } else {
7031 var46 = varonce45;
7032 varonce45 = NULL;
7033 }
7034 var55 = standard__string___Int___Object__to_s(var_total);
7035 ((struct instance_standard__NativeArray*)var46)->values[1]=var55;
7036 var56 = standard__string___Int___Object__to_s(var_holes);
7037 ((struct instance_standard__NativeArray*)var46)->values[3]=var56;
7038 {
7039 var57 = ((val*(*)(val* self))(var46->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var46); /* native_to_s on <var46:NativeArray[String]>*/
7040 }
7041 varonce45 = var46;
7042 {
7043 standard__file___Sys___print(var44, var57); /* Direct call file#Sys#print on <var44:Sys>*/
7044 }
7045 var58 = glob_sys;
7046 if (likely(varonce59!=NULL)) {
7047 var60 = varonce59;
7048 } else {
7049 var61 = "# size of resolution tables";
7050 var62 = standard___standard__NativeString___to_s_with_length(var61, 27l);
7051 var60 = var62;
7052 varonce59 = var60;
7053 }
7054 {
7055 standard__file___Sys___print(var58, var60); /* Direct call file#Sys#print on <var58:Sys>*/
7056 }
7057 var63 = glob_sys;
7058 if (likely(varonce64!=NULL)) {
7059 var65 = varonce64;
7060 } else {
7061 var66 = "\ttotal \tholes";
7062 var67 = standard___standard__NativeString___to_s_with_length(var66, 13l);
7063 var65 = var67;
7064 varonce64 = var65;
7065 }
7066 {
7067 standard__file___Sys___print(var63, var65); /* Direct call file#Sys#print on <var63:Sys>*/
7068 }
7069 var_total = 0l;
7070 var_holes = 0l;
7071 {
7072 { /* Inline separate_compiler#SeparateCompiler#resolution_tables (self) on <self:SeparateCompiler> */
7073 var70 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___resolution_tables].val; /* _resolution_tables on <self:SeparateCompiler> */
7074 if (unlikely(var70 == NULL)) {
7075 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _resolution_tables");
7076 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1052);
7077 fatal_exit(1);
7078 }
7079 var68 = var70;
7080 RET_LABEL69:(void)0;
7081 }
7082 }
7083 var_71 = var68;
7084 {
7085 var72 = ((val*(*)(val* self))((((long)var_71&3)?class_info[((long)var_71&3)]:var_71->class)->vft[COLOR_standard__abstract_collection__MapRead__iterator]))(var_71); /* iterator on <var_71:Map[MClassType, Array[nullable MType]]>*/
7086 }
7087 var_73 = var72;
7088 for(;;) {
7089 {
7090 var74 = ((short int(*)(val* self))((((long)var_73&3)?class_info[((long)var_73&3)]:var_73->class)->vft[COLOR_standard__abstract_collection__MapIterator__is_ok]))(var_73); /* is_ok on <var_73:MapIterator[MClassType, Array[nullable MType]]>*/
7091 }
7092 if (var74){
7093 {
7094 var75 = ((val*(*)(val* self))((((long)var_73&3)?class_info[((long)var_73&3)]:var_73->class)->vft[COLOR_standard__abstract_collection__MapIterator__key]))(var_73); /* key on <var_73:MapIterator[MClassType, Array[nullable MType]]>*/
7095 }
7096 var_t76 = var75;
7097 {
7098 var77 = ((val*(*)(val* self))((((long)var_73&3)?class_info[((long)var_73&3)]:var_73->class)->vft[COLOR_standard__abstract_collection__MapIterator__item]))(var_73); /* item on <var_73:MapIterator[MClassType, Array[nullable MType]]>*/
7099 }
7100 var_table78 = var77;
7101 {
7102 { /* Inline array#AbstractArrayRead#length (var_table78) on <var_table78:Array[nullable MType]> */
7103 var81 = var_table78->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_table78:Array[nullable MType]> */
7104 var79 = var81;
7105 RET_LABEL80:(void)0;
7106 }
7107 }
7108 {
7109 { /* Inline kernel#Int#+ (var_total,var79) on <var_total:Int> */
7110 /* Covariant cast for argument 0 (i) <var79:Int> isa OTHER */
7111 /* <var79:Int> isa OTHER */
7112 var84 = 1; /* easy <var79:Int> isa OTHER*/
7113 if (unlikely(!var84)) {
7114 var_class_name87 = type_standard__Int.name;
7115 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name87);
7116 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
7117 fatal_exit(1);
7118 }
7119 var88 = var_total + var79;
7120 var82 = var88;
7121 goto RET_LABEL83;
7122 RET_LABEL83:(void)0;
7123 }
7124 }
7125 var_total = var82;
7126 var_89 = var_table78;
7127 {
7128 var90 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_89);
7129 }
7130 var_91 = var90;
7131 for(;;) {
7132 {
7133 var92 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_91);
7134 }
7135 if (var92){
7136 {
7137 var93 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_91);
7138 }
7139 var_e94 = var93;
7140 if (var_e94 == NULL) {
7141 var95 = 1; /* is null */
7142 } else {
7143 var95 = 0; /* arg is null but recv is not */
7144 }
7145 if (0) {
7146 { /* Inline kernel#Object#== (var_e94,((val*)NULL)) on <var_e94:nullable MType> */
7147 var_other = ((val*)NULL);
7148 {
7149 { /* Inline kernel#Object#is_same_instance (var_e94,var_other) on <var_e94:nullable MType(MType)> */
7150 var100 = var_e94 == var_other;
7151 var98 = var100;
7152 goto RET_LABEL99;
7153 RET_LABEL99:(void)0;
7154 }
7155 }
7156 var96 = var98;
7157 goto RET_LABEL97;
7158 RET_LABEL97:(void)0;
7159 }
7160 var95 = var96;
7161 }
7162 if (var95){
7163 {
7164 { /* Inline kernel#Int#+ (var_holes,1l) on <var_holes:Int> */
7165 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7166 /* <1l:Int> isa OTHER */
7167 var103 = 1; /* easy <1l:Int> isa OTHER*/
7168 if (unlikely(!var103)) {
7169 var_class_name106 = type_standard__Int.name;
7170 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name106);
7171 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
7172 fatal_exit(1);
7173 }
7174 var107 = var_holes + 1l;
7175 var101 = var107;
7176 goto RET_LABEL102;
7177 RET_LABEL102:(void)0;
7178 }
7179 }
7180 var_holes = var101;
7181 } else {
7182 }
7183 {
7184 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_91); /* Direct call array#ArrayIterator#next on <var_91:ArrayIterator[nullable MType]>*/
7185 }
7186 } else {
7187 goto BREAK_label108;
7188 }
7189 }
7190 BREAK_label108: (void)0;
7191 {
7192 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_91); /* Direct call array#ArrayIterator#finish on <var_91:ArrayIterator[nullable MType]>*/
7193 }
7194 {
7195 ((void(*)(val* self))((((long)var_73&3)?class_info[((long)var_73&3)]:var_73->class)->vft[COLOR_standard__abstract_collection__MapIterator__next]))(var_73); /* next on <var_73:MapIterator[MClassType, Array[nullable MType]]>*/
7196 }
7197 } else {
7198 goto BREAK_label109;
7199 }
7200 }
7201 BREAK_label109: (void)0;
7202 {
7203 { /* Inline abstract_collection#MapIterator#finish (var_73) on <var_73:MapIterator[MClassType, Array[nullable MType]]> */
7204 RET_LABEL110:(void)0;
7205 }
7206 }
7207 var111 = glob_sys;
7208 if (unlikely(varonce112==NULL)) {
7209 var113 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
7210 if (likely(varonce114!=NULL)) {
7211 var115 = varonce114;
7212 } else {
7213 var116 = "\t";
7214 var117 = standard___standard__NativeString___to_s_with_length(var116, 1l);
7215 var115 = var117;
7216 varonce114 = var115;
7217 }
7218 ((struct instance_standard__NativeArray*)var113)->values[0]=var115;
7219 if (likely(varonce118!=NULL)) {
7220 var119 = varonce118;
7221 } else {
7222 var120 = "\t";
7223 var121 = standard___standard__NativeString___to_s_with_length(var120, 1l);
7224 var119 = var121;
7225 varonce118 = var119;
7226 }
7227 ((struct instance_standard__NativeArray*)var113)->values[2]=var119;
7228 } else {
7229 var113 = varonce112;
7230 varonce112 = NULL;
7231 }
7232 var122 = standard__string___Int___Object__to_s(var_total);
7233 ((struct instance_standard__NativeArray*)var113)->values[1]=var122;
7234 var123 = standard__string___Int___Object__to_s(var_holes);
7235 ((struct instance_standard__NativeArray*)var113)->values[3]=var123;
7236 {
7237 var124 = ((val*(*)(val* self))(var113->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var113); /* native_to_s on <var113:NativeArray[String]>*/
7238 }
7239 varonce112 = var113;
7240 {
7241 standard__file___Sys___print(var111, var124); /* Direct call file#Sys#print on <var111:Sys>*/
7242 }
7243 var125 = glob_sys;
7244 if (likely(varonce126!=NULL)) {
7245 var127 = varonce126;
7246 } else {
7247 var128 = "# size of methods tables";
7248 var129 = standard___standard__NativeString___to_s_with_length(var128, 24l);
7249 var127 = var129;
7250 varonce126 = var127;
7251 }
7252 {
7253 standard__file___Sys___print(var125, var127); /* Direct call file#Sys#print on <var125:Sys>*/
7254 }
7255 var130 = glob_sys;
7256 if (likely(varonce131!=NULL)) {
7257 var132 = varonce131;
7258 } else {
7259 var133 = "\ttotal \tholes";
7260 var134 = standard___standard__NativeString___to_s_with_length(var133, 13l);
7261 var132 = var134;
7262 varonce131 = var132;
7263 }
7264 {
7265 standard__file___Sys___print(var130, var132); /* Direct call file#Sys#print on <var130:Sys>*/
7266 }
7267 var_total = 0l;
7268 var_holes = 0l;
7269 {
7270 { /* Inline separate_compiler#SeparateCompiler#method_tables (self) on <self:SeparateCompiler> */
7271 var137 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___method_tables].val; /* _method_tables on <self:SeparateCompiler> */
7272 if (unlikely(var137 == NULL)) {
7273 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
7274 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1053);
7275 fatal_exit(1);
7276 }
7277 var135 = var137;
7278 RET_LABEL136:(void)0;
7279 }
7280 }
7281 var_138 = var135;
7282 {
7283 var139 = ((val*(*)(val* self))((((long)var_138&3)?class_info[((long)var_138&3)]:var_138->class)->vft[COLOR_standard__abstract_collection__MapRead__iterator]))(var_138); /* iterator on <var_138:Map[MClass, Array[nullable MPropDef]]>*/
7284 }
7285 var_140 = var139;
7286 for(;;) {
7287 {
7288 var141 = ((short int(*)(val* self))((((long)var_140&3)?class_info[((long)var_140&3)]:var_140->class)->vft[COLOR_standard__abstract_collection__MapIterator__is_ok]))(var_140); /* is_ok on <var_140:MapIterator[MClass, Array[nullable MPropDef]]>*/
7289 }
7290 if (var141){
7291 {
7292 var142 = ((val*(*)(val* self))((((long)var_140&3)?class_info[((long)var_140&3)]:var_140->class)->vft[COLOR_standard__abstract_collection__MapIterator__key]))(var_140); /* key on <var_140:MapIterator[MClass, Array[nullable MPropDef]]>*/
7293 }
7294 var_t143 = var142;
7295 {
7296 var144 = ((val*(*)(val* self))((((long)var_140&3)?class_info[((long)var_140&3)]:var_140->class)->vft[COLOR_standard__abstract_collection__MapIterator__item]))(var_140); /* item on <var_140:MapIterator[MClass, Array[nullable MPropDef]]>*/
7297 }
7298 var_table145 = var144;
7299 {
7300 { /* Inline array#AbstractArrayRead#length (var_table145) on <var_table145:Array[nullable MPropDef]> */
7301 var148 = var_table145->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_table145:Array[nullable MPropDef]> */
7302 var146 = var148;
7303 RET_LABEL147:(void)0;
7304 }
7305 }
7306 {
7307 { /* Inline kernel#Int#+ (var_total,var146) on <var_total:Int> */
7308 /* Covariant cast for argument 0 (i) <var146:Int> isa OTHER */
7309 /* <var146:Int> isa OTHER */
7310 var151 = 1; /* easy <var146:Int> isa OTHER*/
7311 if (unlikely(!var151)) {
7312 var_class_name154 = type_standard__Int.name;
7313 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name154);
7314 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
7315 fatal_exit(1);
7316 }
7317 var155 = var_total + var146;
7318 var149 = var155;
7319 goto RET_LABEL150;
7320 RET_LABEL150:(void)0;
7321 }
7322 }
7323 var_total = var149;
7324 var_156 = var_table145;
7325 {
7326 var157 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_156);
7327 }
7328 var_158 = var157;
7329 for(;;) {
7330 {
7331 var159 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_158);
7332 }
7333 if (var159){
7334 {
7335 var160 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_158);
7336 }
7337 var_e161 = var160;
7338 if (var_e161 == NULL) {
7339 var162 = 1; /* is null */
7340 } else {
7341 var162 = 0; /* arg is null but recv is not */
7342 }
7343 if (0) {
7344 { /* Inline kernel#Object#== (var_e161,((val*)NULL)) on <var_e161:nullable MPropDef> */
7345 var_other = ((val*)NULL);
7346 {
7347 { /* Inline kernel#Object#is_same_instance (var_e161,var_other) on <var_e161:nullable MPropDef(MPropDef)> */
7348 var167 = var_e161 == var_other;
7349 var165 = var167;
7350 goto RET_LABEL166;
7351 RET_LABEL166:(void)0;
7352 }
7353 }
7354 var163 = var165;
7355 goto RET_LABEL164;
7356 RET_LABEL164:(void)0;
7357 }
7358 var162 = var163;
7359 }
7360 if (var162){
7361 {
7362 { /* Inline kernel#Int#+ (var_holes,1l) on <var_holes:Int> */
7363 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7364 /* <1l:Int> isa OTHER */
7365 var170 = 1; /* easy <1l:Int> isa OTHER*/
7366 if (unlikely(!var170)) {
7367 var_class_name173 = type_standard__Int.name;
7368 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name173);
7369 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
7370 fatal_exit(1);
7371 }
7372 var174 = var_holes + 1l;
7373 var168 = var174;
7374 goto RET_LABEL169;
7375 RET_LABEL169:(void)0;
7376 }
7377 }
7378 var_holes = var168;
7379 } else {
7380 }
7381 {
7382 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_158); /* Direct call array#ArrayIterator#next on <var_158:ArrayIterator[nullable MPropDef]>*/
7383 }
7384 } else {
7385 goto BREAK_label175;
7386 }
7387 }
7388 BREAK_label175: (void)0;
7389 {
7390 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_158); /* Direct call array#ArrayIterator#finish on <var_158:ArrayIterator[nullable MPropDef]>*/
7391 }
7392 {
7393 ((void(*)(val* self))((((long)var_140&3)?class_info[((long)var_140&3)]:var_140->class)->vft[COLOR_standard__abstract_collection__MapIterator__next]))(var_140); /* next on <var_140:MapIterator[MClass, Array[nullable MPropDef]]>*/
7394 }
7395 } else {
7396 goto BREAK_label176;
7397 }
7398 }
7399 BREAK_label176: (void)0;
7400 {
7401 { /* Inline abstract_collection#MapIterator#finish (var_140) on <var_140:MapIterator[MClass, Array[nullable MPropDef]]> */
7402 RET_LABEL177:(void)0;
7403 }
7404 }
7405 var178 = glob_sys;
7406 if (unlikely(varonce179==NULL)) {
7407 var180 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
7408 if (likely(varonce181!=NULL)) {
7409 var182 = varonce181;
7410 } else {
7411 var183 = "\t";
7412 var184 = standard___standard__NativeString___to_s_with_length(var183, 1l);
7413 var182 = var184;
7414 varonce181 = var182;
7415 }
7416 ((struct instance_standard__NativeArray*)var180)->values[0]=var182;
7417 if (likely(varonce185!=NULL)) {
7418 var186 = varonce185;
7419 } else {
7420 var187 = "\t";
7421 var188 = standard___standard__NativeString___to_s_with_length(var187, 1l);
7422 var186 = var188;
7423 varonce185 = var186;
7424 }
7425 ((struct instance_standard__NativeArray*)var180)->values[2]=var186;
7426 } else {
7427 var180 = varonce179;
7428 varonce179 = NULL;
7429 }
7430 var189 = standard__string___Int___Object__to_s(var_total);
7431 ((struct instance_standard__NativeArray*)var180)->values[1]=var189;
7432 var190 = standard__string___Int___Object__to_s(var_holes);
7433 ((struct instance_standard__NativeArray*)var180)->values[3]=var190;
7434 {
7435 var191 = ((val*(*)(val* self))(var180->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var180); /* native_to_s on <var180:NativeArray[String]>*/
7436 }
7437 varonce179 = var180;
7438 {
7439 standard__file___Sys___print(var178, var191); /* Direct call file#Sys#print on <var178:Sys>*/
7440 }
7441 var192 = glob_sys;
7442 if (likely(varonce193!=NULL)) {
7443 var194 = varonce193;
7444 } else {
7445 var195 = "# size of attributes tables";
7446 var196 = standard___standard__NativeString___to_s_with_length(var195, 27l);
7447 var194 = var196;
7448 varonce193 = var194;
7449 }
7450 {
7451 standard__file___Sys___print(var192, var194); /* Direct call file#Sys#print on <var192:Sys>*/
7452 }
7453 var197 = glob_sys;
7454 if (likely(varonce198!=NULL)) {
7455 var199 = varonce198;
7456 } else {
7457 var200 = "\ttotal \tholes";
7458 var201 = standard___standard__NativeString___to_s_with_length(var200, 13l);
7459 var199 = var201;
7460 varonce198 = var199;
7461 }
7462 {
7463 standard__file___Sys___print(var197, var199); /* Direct call file#Sys#print on <var197:Sys>*/
7464 }
7465 var_total = 0l;
7466 var_holes = 0l;
7467 {
7468 { /* Inline separate_compiler#SeparateCompiler#attr_tables (self) on <self:SeparateCompiler> */
7469 var204 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___attr_tables].val; /* _attr_tables on <self:SeparateCompiler> */
7470 if (unlikely(var204 == NULL)) {
7471 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
7472 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1054);
7473 fatal_exit(1);
7474 }
7475 var202 = var204;
7476 RET_LABEL203:(void)0;
7477 }
7478 }
7479 var_205 = var202;
7480 {
7481 var206 = ((val*(*)(val* self))((((long)var_205&3)?class_info[((long)var_205&3)]:var_205->class)->vft[COLOR_standard__abstract_collection__MapRead__iterator]))(var_205); /* iterator on <var_205:Map[MClass, Array[nullable MProperty]]>*/
7482 }
7483 var_207 = var206;
7484 for(;;) {
7485 {
7486 var208 = ((short int(*)(val* self))((((long)var_207&3)?class_info[((long)var_207&3)]:var_207->class)->vft[COLOR_standard__abstract_collection__MapIterator__is_ok]))(var_207); /* is_ok on <var_207:MapIterator[MClass, Array[nullable MProperty]]>*/
7487 }
7488 if (var208){
7489 {
7490 var209 = ((val*(*)(val* self))((((long)var_207&3)?class_info[((long)var_207&3)]:var_207->class)->vft[COLOR_standard__abstract_collection__MapIterator__key]))(var_207); /* key on <var_207:MapIterator[MClass, Array[nullable MProperty]]>*/
7491 }
7492 var_t210 = var209;
7493 {
7494 var211 = ((val*(*)(val* self))((((long)var_207&3)?class_info[((long)var_207&3)]:var_207->class)->vft[COLOR_standard__abstract_collection__MapIterator__item]))(var_207); /* item on <var_207:MapIterator[MClass, Array[nullable MProperty]]>*/
7495 }
7496 var_table212 = var211;
7497 {
7498 { /* Inline array#AbstractArrayRead#length (var_table212) on <var_table212:Array[nullable MProperty]> */
7499 var215 = var_table212->attrs[COLOR_standard__array__AbstractArrayRead___length].l; /* _length on <var_table212:Array[nullable MProperty]> */
7500 var213 = var215;
7501 RET_LABEL214:(void)0;
7502 }
7503 }
7504 {
7505 { /* Inline kernel#Int#+ (var_total,var213) on <var_total:Int> */
7506 /* Covariant cast for argument 0 (i) <var213:Int> isa OTHER */
7507 /* <var213:Int> isa OTHER */
7508 var218 = 1; /* easy <var213:Int> isa OTHER*/
7509 if (unlikely(!var218)) {
7510 var_class_name221 = type_standard__Int.name;
7511 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name221);
7512 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
7513 fatal_exit(1);
7514 }
7515 var222 = var_total + var213;
7516 var216 = var222;
7517 goto RET_LABEL217;
7518 RET_LABEL217:(void)0;
7519 }
7520 }
7521 var_total = var216;
7522 var_223 = var_table212;
7523 {
7524 var224 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_223);
7525 }
7526 var_225 = var224;
7527 for(;;) {
7528 {
7529 var226 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_225);
7530 }
7531 if (var226){
7532 {
7533 var227 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_225);
7534 }
7535 var_e228 = var227;
7536 if (var_e228 == NULL) {
7537 var229 = 1; /* is null */
7538 } else {
7539 var229 = 0; /* arg is null but recv is not */
7540 }
7541 if (0) {
7542 { /* Inline kernel#Object#== (var_e228,((val*)NULL)) on <var_e228:nullable MProperty> */
7543 var_other = ((val*)NULL);
7544 {
7545 { /* Inline kernel#Object#is_same_instance (var_e228,var_other) on <var_e228:nullable MProperty(MProperty)> */
7546 var234 = var_e228 == var_other;
7547 var232 = var234;
7548 goto RET_LABEL233;
7549 RET_LABEL233:(void)0;
7550 }
7551 }
7552 var230 = var232;
7553 goto RET_LABEL231;
7554 RET_LABEL231:(void)0;
7555 }
7556 var229 = var230;
7557 }
7558 if (var229){
7559 {
7560 { /* Inline kernel#Int#+ (var_holes,1l) on <var_holes:Int> */
7561 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
7562 /* <1l:Int> isa OTHER */
7563 var237 = 1; /* easy <1l:Int> isa OTHER*/
7564 if (unlikely(!var237)) {
7565 var_class_name240 = type_standard__Int.name;
7566 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name240);
7567 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
7568 fatal_exit(1);
7569 }
7570 var241 = var_holes + 1l;
7571 var235 = var241;
7572 goto RET_LABEL236;
7573 RET_LABEL236:(void)0;
7574 }
7575 }
7576 var_holes = var235;
7577 } else {
7578 }
7579 {
7580 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_225); /* Direct call array#ArrayIterator#next on <var_225:ArrayIterator[nullable MProperty]>*/
7581 }
7582 } else {
7583 goto BREAK_label242;
7584 }
7585 }
7586 BREAK_label242: (void)0;
7587 {
7588 standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_225); /* Direct call array#ArrayIterator#finish on <var_225:ArrayIterator[nullable MProperty]>*/
7589 }
7590 {
7591 ((void(*)(val* self))((((long)var_207&3)?class_info[((long)var_207&3)]:var_207->class)->vft[COLOR_standard__abstract_collection__MapIterator__next]))(var_207); /* next on <var_207:MapIterator[MClass, Array[nullable MProperty]]>*/
7592 }
7593 } else {
7594 goto BREAK_label243;
7595 }
7596 }
7597 BREAK_label243: (void)0;
7598 {
7599 { /* Inline abstract_collection#MapIterator#finish (var_207) on <var_207:MapIterator[MClass, Array[nullable MProperty]]> */
7600 RET_LABEL244:(void)0;
7601 }
7602 }
7603 var245 = glob_sys;
7604 if (unlikely(varonce246==NULL)) {
7605 var247 = NEW_standard__NativeArray(4l, &type_standard__NativeArray__standard__String);
7606 if (likely(varonce248!=NULL)) {
7607 var249 = varonce248;
7608 } else {
7609 var250 = "\t";
7610 var251 = standard___standard__NativeString___to_s_with_length(var250, 1l);
7611 var249 = var251;
7612 varonce248 = var249;
7613 }
7614 ((struct instance_standard__NativeArray*)var247)->values[0]=var249;
7615 if (likely(varonce252!=NULL)) {
7616 var253 = varonce252;
7617 } else {
7618 var254 = "\t";
7619 var255 = standard___standard__NativeString___to_s_with_length(var254, 1l);
7620 var253 = var255;
7621 varonce252 = var253;
7622 }
7623 ((struct instance_standard__NativeArray*)var247)->values[2]=var253;
7624 } else {
7625 var247 = varonce246;
7626 varonce246 = NULL;
7627 }
7628 var256 = standard__string___Int___Object__to_s(var_total);
7629 ((struct instance_standard__NativeArray*)var247)->values[1]=var256;
7630 var257 = standard__string___Int___Object__to_s(var_holes);
7631 ((struct instance_standard__NativeArray*)var247)->values[3]=var257;
7632 {
7633 var258 = ((val*(*)(val* self))(var247->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var247); /* native_to_s on <var247:NativeArray[String]>*/
7634 }
7635 varonce246 = var247;
7636 {
7637 standard__file___Sys___print(var245, var258); /* Direct call file#Sys#print on <var245:Sys>*/
7638 }
7639 RET_LABEL:;
7640 }
7641 /* method separate_compiler#SeparateCompiler#isset_checks_count for (self: SeparateCompiler): Int */
7642 long nit___nit__SeparateCompiler___isset_checks_count(val* self) {
7643 long var /* : Int */;
7644 long var1 /* : Int */;
7645 var1 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on <self:SeparateCompiler> */
7646 var = var1;
7647 RET_LABEL:;
7648 return var;
7649 }
7650 /* method separate_compiler#SeparateCompiler#isset_checks_count= for (self: SeparateCompiler, Int) */
7651 void nit___nit__SeparateCompiler___isset_checks_count_61d(val* self, long p0) {
7652 self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___isset_checks_count].l = p0; /* _isset_checks_count on <self:SeparateCompiler> */
7653 RET_LABEL:;
7654 }
7655 /* method separate_compiler#SeparateCompiler#attr_read_count for (self: SeparateCompiler): Int */
7656 long nit___nit__SeparateCompiler___attr_read_count(val* self) {
7657 long var /* : Int */;
7658 long var1 /* : Int */;
7659 var1 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___attr_read_count].l; /* _attr_read_count on <self:SeparateCompiler> */
7660 var = var1;
7661 RET_LABEL:;
7662 return var;
7663 }
7664 /* method separate_compiler#SeparateCompiler#attr_read_count= for (self: SeparateCompiler, Int) */
7665 void nit___nit__SeparateCompiler___attr_read_count_61d(val* self, long p0) {
7666 self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___attr_read_count].l = p0; /* _attr_read_count on <self:SeparateCompiler> */
7667 RET_LABEL:;
7668 }
7669 /* method separate_compiler#SeparateCompiler#display_isset_checks for (self: SeparateCompiler) */
7670 void nit___nit__SeparateCompiler___display_isset_checks(val* self) {
7671 val* var /* : Sys */;
7672 static val* varonce;
7673 val* var1 /* : String */;
7674 char* var2 /* : NativeString */;
7675 val* var3 /* : FlatString */;
7676 val* var4 /* : Sys */;
7677 val* var6 /* : NativeArray[String] */;
7678 static val* varonce5;
7679 static val* varonce7;
7680 val* var8 /* : String */;
7681 char* var9 /* : NativeString */;
7682 val* var10 /* : FlatString */;
7683 long var11 /* : Int */;
7684 long var13 /* : Int */;
7685 val* var14 /* : String */;
7686 val* var15 /* : String */;
7687 val* var16 /* : Sys */;
7688 static val* varonce17;
7689 val* var18 /* : String */;
7690 char* var19 /* : NativeString */;
7691 val* var20 /* : FlatString */;
7692 val* var21 /* : Sys */;
7693 val* var23 /* : NativeArray[String] */;
7694 static val* varonce22;
7695 static val* varonce24;
7696 val* var25 /* : String */;
7697 char* var26 /* : NativeString */;
7698 val* var27 /* : FlatString */;
7699 long var28 /* : Int */;
7700 long var30 /* : Int */;
7701 val* var31 /* : String */;
7702 val* var32 /* : String */;
7703 var = glob_sys;
7704 if (likely(varonce!=NULL)) {
7705 var1 = varonce;
7706 } else {
7707 var2 = "# total number of compiled attribute reads";
7708 var3 = standard___standard__NativeString___to_s_with_length(var2, 42l);
7709 var1 = var3;
7710 varonce = var1;
7711 }
7712 {
7713 standard__file___Sys___print(var, var1); /* Direct call file#Sys#print on <var:Sys>*/
7714 }
7715 var4 = glob_sys;
7716 if (unlikely(varonce5==NULL)) {
7717 var6 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
7718 if (likely(varonce7!=NULL)) {
7719 var8 = varonce7;
7720 } else {
7721 var9 = "\t";
7722 var10 = standard___standard__NativeString___to_s_with_length(var9, 1l);
7723 var8 = var10;
7724 varonce7 = var8;
7725 }
7726 ((struct instance_standard__NativeArray*)var6)->values[0]=var8;
7727 } else {
7728 var6 = varonce5;
7729 varonce5 = NULL;
7730 }
7731 {
7732 { /* Inline separate_compiler#SeparateCompiler#attr_read_count (self) on <self:SeparateCompiler> */
7733 var13 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___attr_read_count].l; /* _attr_read_count on <self:SeparateCompiler> */
7734 var11 = var13;
7735 RET_LABEL12:(void)0;
7736 }
7737 }
7738 var14 = standard__string___Int___Object__to_s(var11);
7739 ((struct instance_standard__NativeArray*)var6)->values[1]=var14;
7740 {
7741 var15 = ((val*(*)(val* self))(var6->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var6); /* native_to_s on <var6:NativeArray[String]>*/
7742 }
7743 varonce5 = var6;
7744 {
7745 standard__file___Sys___print(var4, var15); /* Direct call file#Sys#print on <var4:Sys>*/
7746 }
7747 var16 = glob_sys;
7748 if (likely(varonce17!=NULL)) {
7749 var18 = varonce17;
7750 } else {
7751 var19 = "# total number of compiled isset-checks";
7752 var20 = standard___standard__NativeString___to_s_with_length(var19, 39l);
7753 var18 = var20;
7754 varonce17 = var18;
7755 }
7756 {
7757 standard__file___Sys___print(var16, var18); /* Direct call file#Sys#print on <var16:Sys>*/
7758 }
7759 var21 = glob_sys;
7760 if (unlikely(varonce22==NULL)) {
7761 var23 = NEW_standard__NativeArray(2l, &type_standard__NativeArray__standard__String);
7762 if (likely(varonce24!=NULL)) {
7763 var25 = varonce24;
7764 } else {
7765 var26 = "\t";
7766 var27 = standard___standard__NativeString___to_s_with_length(var26, 1l);
7767 var25 = var27;
7768 varonce24 = var25;
7769 }
7770 ((struct instance_standard__NativeArray*)var23)->values[0]=var25;
7771 } else {
7772 var23 = varonce22;
7773 varonce22 = NULL;
7774 }
7775 {
7776 { /* Inline separate_compiler#SeparateCompiler#isset_checks_count (self) on <self:SeparateCompiler> */
7777 var30 = self->attrs[COLOR_nit__separate_compiler__SeparateCompiler___isset_checks_count].l; /* _isset_checks_count on <self:SeparateCompiler> */
7778 var28 = var30;
7779 RET_LABEL29:(void)0;
7780 }
7781 }
7782 var31 = standard__string___Int___Object__to_s(var28);
7783 ((struct instance_standard__NativeArray*)var23)->values[1]=var31;
7784 {
7785 var32 = ((val*(*)(val* self))(var23->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var23); /* native_to_s on <var23:NativeArray[String]>*/
7786 }
7787 varonce22 = var23;
7788 {
7789 standard__file___Sys___print(var21, var32); /* Direct call file#Sys#print on <var21:Sys>*/
7790 }
7791 RET_LABEL:;
7792 }
7793 /* method separate_compiler#SeparateCompiler#compile_nitni_structs for (self: SeparateCompiler) */
7794 void nit___nit__SeparateCompiler___nit__abstract_compiler__AbstractCompiler__compile_nitni_structs(val* self) {
7795 val* var /* : CodeWriter */;
7796 val* var2 /* : CodeWriter */;
7797 static val* varonce;
7798 val* var3 /* : String */;
7799 char* var4 /* : NativeString */;
7800 val* var5 /* : FlatString */;
7801 {
7802 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateCompiler> */
7803 var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___header].val; /* _header on <self:SeparateCompiler> */
7804 if (unlikely(var2 == NULL)) {
7805 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
7806 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 569);
7807 fatal_exit(1);
7808 }
7809 var = var2;
7810 RET_LABEL1:(void)0;
7811 }
7812 }
7813 if (likely(varonce!=NULL)) {
7814 var3 = varonce;
7815 } else {
7816 var4 = "struct nitni_instance {\n\tstruct nitni_instance *next,\n\t\t*prev; /* adjacent global references in global list */\n\tint count; /* number of time this global reference has been marked */\n\tstruct instance *value;\n};\n";
7817 var5 = standard___standard__NativeString___to_s_with_length(var4, 210l);
7818 var3 = var5;
7819 varonce = var3;
7820 }
7821 {
7822 nit___nit__CodeWriter___add_decl(var, var3); /* Direct call abstract_compiler#CodeWriter#add_decl on <var:CodeWriter>*/
7823 }
7824 {
7825 ((void(*)(val* self))(self->class->vft[COLOR_nit___nit__SeparateCompiler___nit__abstract_compiler__AbstractCompiler__compile_nitni_structs]))(self); /* compile_nitni_structs on <self:SeparateCompiler>*/
7826 }
7827 RET_LABEL:;
7828 }
7829 /* method separate_compiler#SeparateCompiler#finalize_ffi_for_module for (self: SeparateCompiler, MModule) */
7830 void nit___nit__SeparateCompiler___nit__abstract_compiler__AbstractCompiler__finalize_ffi_for_module(val* self, val* p0) {
7831 val* var_mmodule /* var mmodule: MModule */;
7832 val* var /* : MModule */;
7833 val* var2 /* : MModule */;
7834 val* var_old_module /* var old_module: MModule */;
7835 var_mmodule = p0;
7836 {
7837 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateCompiler> */
7838 var2 = self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val; /* _mainmodule on <self:SeparateCompiler> */
7839 if (unlikely(var2 == NULL)) {
7840 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
7841 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 515);
7842 fatal_exit(1);
7843 }
7844 var = var2;
7845 RET_LABEL1:(void)0;
7846 }
7847 }
7848 var_old_module = var;
7849 {
7850 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (self,var_mmodule) on <self:SeparateCompiler> */
7851 self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val = var_mmodule; /* _mainmodule on <self:SeparateCompiler> */
7852 RET_LABEL3:(void)0;
7853 }
7854 }
7855 {
7856 ((void(*)(val* self, val* p0))(self->class->vft[COLOR_nit___nit__SeparateCompiler___nit__abstract_compiler__AbstractCompiler__finalize_ffi_for_module]))(self, p0); /* finalize_ffi_for_module on <self:SeparateCompiler>*/
7857 }
7858 {
7859 { /* Inline abstract_compiler#AbstractCompiler#mainmodule= (self,var_old_module) on <self:SeparateCompiler> */
7860 self->attrs[COLOR_nit__abstract_compiler__AbstractCompiler___mainmodule].val = var_old_module; /* _mainmodule on <self:SeparateCompiler> */
7861 RET_LABEL4:(void)0;
7862 }
7863 }
7864 RET_LABEL:;
7865 }
7866 /* method separate_compiler#SeparateCompilerVisitor#adapt_signature for (self: SeparateCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
7867 void nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
7868 val* var_m /* var m: MMethodDef */;
7869 val* var_args /* var args: Array[RuntimeVariable] */;
7870 val* var /* : nullable MSignature */;
7871 val* var2 /* : nullable MSignature */;
7872 val* var3 /* : MClassDef */;
7873 val* var5 /* : MClassDef */;
7874 val* var6 /* : MClassType */;
7875 val* var8 /* : MClassType */;
7876 val* var9 /* : MClassDef */;
7877 val* var11 /* : MClassDef */;
7878 val* var12 /* : MClassType */;
7879 val* var14 /* : MClassType */;
7880 val* var15 /* : MClassDef */;
7881 val* var17 /* : MClassDef */;
7882 val* var18 /* : MModule */;
7883 val* var20 /* : MModule */;
7884 val* var21 /* : MSignature */;
7885 val* var_msignature /* var msignature: MSignature */;
7886 val* var22 /* : nullable Object */;
7887 val* var_recv /* var recv: RuntimeVariable */;
7888 val* var23 /* : MType */;
7889 val* var25 /* : MType */;
7890 val* var26 /* : String */;
7891 val* var27 /* : MClassDef */;
7892 val* var29 /* : MClassDef */;
7893 val* var30 /* : MClass */;
7894 val* var32 /* : MClass */;
7895 val* var33 /* : MClassType */;
7896 val* var35 /* : MClassType */;
7897 val* var36 /* : String */;
7898 short int var37 /* : Bool */;
7899 val* var_other /* var other: nullable Object */;
7900 short int var39 /* : Bool */;
7901 short int var40 /* : Bool */;
7902 val* var41 /* : nullable Object */;
7903 val* var42 /* : MClassDef */;
7904 val* var44 /* : MClassDef */;
7905 val* var45 /* : MClass */;
7906 val* var47 /* : MClass */;
7907 val* var48 /* : MClassType */;
7908 val* var50 /* : MClassType */;
7909 val* var51 /* : RuntimeVariable */;
7910 long var_i /* var i: Int */;
7911 long var52 /* : Int */;
7912 long var_ /* var : Int */;
7913 short int var53 /* : Bool */;
7914 short int var55 /* : Bool */;
7915 int cltype;
7916 int idtype;
7917 const char* var_class_name;
7918 short int var56 /* : Bool */;
7919 val* var57 /* : Array[MParameter] */;
7920 val* var59 /* : Array[MParameter] */;
7921 val* var60 /* : nullable Object */;
7922 val* var61 /* : MType */;
7923 val* var63 /* : MType */;
7924 val* var_t /* var t: MType */;
7925 long var64 /* : Int */;
7926 long var66 /* : Int */;
7927 short int var67 /* : Bool */;
7928 short int var69 /* : Bool */;
7929 long var70 /* : Int */;
7930 short int var72 /* : Bool */;
7931 int cltype73;
7932 int idtype74;
7933 const char* var_class_name75;
7934 long var76 /* : Int */;
7935 val* var77 /* : nullable Object */;
7936 val* var78 /* : MType */;
7937 val* var80 /* : MType */;
7938 long var81 /* : Int */;
7939 short int var83 /* : Bool */;
7940 int cltype84;
7941 int idtype85;
7942 const char* var_class_name86;
7943 long var87 /* : Int */;
7944 long var88 /* : Int */;
7945 short int var90 /* : Bool */;
7946 int cltype91;
7947 int idtype92;
7948 const char* var_class_name93;
7949 long var94 /* : Int */;
7950 val* var95 /* : nullable Object */;
7951 val* var96 /* : RuntimeVariable */;
7952 long var97 /* : Int */;
7953 var_m = p0;
7954 var_args = p1;
7955 {
7956 { /* Inline model#MMethodDef#msignature (var_m) on <var_m:MMethodDef> */
7957 var2 = var_m->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_m:MMethodDef> */
7958 var = var2;
7959 RET_LABEL1:(void)0;
7960 }
7961 }
7962 {
7963 { /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
7964 var5 = var_m->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
7965 if (unlikely(var5 == NULL)) {
7966 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7967 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
7968 fatal_exit(1);
7969 }
7970 var3 = var5;
7971 RET_LABEL4:(void)0;
7972 }
7973 }
7974 {
7975 { /* Inline model#MClassDef#bound_mtype (var3) on <var3:MClassDef> */
7976 var8 = var3->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var3:MClassDef> */
7977 if (unlikely(var8 == NULL)) {
7978 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
7979 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
7980 fatal_exit(1);
7981 }
7982 var6 = var8;
7983 RET_LABEL7:(void)0;
7984 }
7985 }
7986 {
7987 { /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
7988 var11 = var_m->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
7989 if (unlikely(var11 == NULL)) {
7990 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
7991 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
7992 fatal_exit(1);
7993 }
7994 var9 = var11;
7995 RET_LABEL10:(void)0;
7996 }
7997 }
7998 {
7999 { /* Inline model#MClassDef#bound_mtype (var9) on <var9:MClassDef> */
8000 var14 = var9->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var9:MClassDef> */
8001 if (unlikely(var14 == NULL)) {
8002 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8003 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
8004 fatal_exit(1);
8005 }
8006 var12 = var14;
8007 RET_LABEL13:(void)0;
8008 }
8009 }
8010 {
8011 { /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
8012 var17 = var_m->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
8013 if (unlikely(var17 == NULL)) {
8014 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8015 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
8016 fatal_exit(1);
8017 }
8018 var15 = var17;
8019 RET_LABEL16:(void)0;
8020 }
8021 }
8022 {
8023 { /* Inline model#MClassDef#mmodule (var15) on <var15:MClassDef> */
8024 var20 = var15->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var15:MClassDef> */
8025 if (unlikely(var20 == NULL)) {
8026 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
8027 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
8028 fatal_exit(1);
8029 }
8030 var18 = var20;
8031 RET_LABEL19:(void)0;
8032 }
8033 }
8034 if (var == NULL) {
8035 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8036 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1157);
8037 fatal_exit(1);
8038 } else {
8039 var21 = nit___nit__MSignature___MType__resolve_for(var, var6, var12, var18, 1);
8040 }
8041 var_msignature = var21;
8042 {
8043 var22 = standard___standard__SequenceRead___Collection__first(var_args);
8044 }
8045 var_recv = var22;
8046 {
8047 { /* Inline abstract_compiler#RuntimeVariable#mtype (var_recv) on <var_recv:RuntimeVariable> */
8048 var25 = var_recv->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var_recv:RuntimeVariable> */
8049 if (unlikely(var25 == NULL)) {
8050 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8051 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1784);
8052 fatal_exit(1);
8053 }
8054 var23 = var25;
8055 RET_LABEL24:(void)0;
8056 }
8057 }
8058 {
8059 var26 = ((val*(*)(val* self))(var23->class->vft[COLOR_nit__abstract_compiler__MType__ctype]))(var23); /* ctype on <var23:MType>*/
8060 }
8061 {
8062 { /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
8063 var29 = var_m->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
8064 if (unlikely(var29 == NULL)) {
8065 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8066 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
8067 fatal_exit(1);
8068 }
8069 var27 = var29;
8070 RET_LABEL28:(void)0;
8071 }
8072 }
8073 {
8074 { /* Inline model#MClassDef#mclass (var27) on <var27:MClassDef> */
8075 var32 = var27->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var27:MClassDef> */
8076 if (unlikely(var32 == NULL)) {
8077 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
8078 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
8079 fatal_exit(1);
8080 }
8081 var30 = var32;
8082 RET_LABEL31:(void)0;
8083 }
8084 }
8085 {
8086 { /* Inline model#MClass#mclass_type (var30) on <var30:MClass> */
8087 var35 = var30->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var30:MClass> */
8088 if (unlikely(var35 == NULL)) {
8089 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
8090 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
8091 fatal_exit(1);
8092 }
8093 var33 = var35;
8094 RET_LABEL34:(void)0;
8095 }
8096 }
8097 {
8098 var36 = nit__abstract_compiler___MClassType___MType__ctype(var33);
8099 }
8100 {
8101 { /* Inline kernel#Object#!= (var26,var36) on <var26:String> */
8102 var_other = var36;
8103 {
8104 var39 = ((short int(*)(val* self, val* p0))(var26->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var26, var_other); /* == on <var26:String>*/
8105 }
8106 var40 = !var39;
8107 var37 = var40;
8108 goto RET_LABEL38;
8109 RET_LABEL38:(void)0;
8110 }
8111 }
8112 if (var37){
8113 {
8114 var41 = standard___standard__SequenceRead___Collection__first(var_args);
8115 }
8116 {
8117 { /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
8118 var44 = var_m->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
8119 if (unlikely(var44 == NULL)) {
8120 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8121 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
8122 fatal_exit(1);
8123 }
8124 var42 = var44;
8125 RET_LABEL43:(void)0;
8126 }
8127 }
8128 {
8129 { /* Inline model#MClassDef#mclass (var42) on <var42:MClassDef> */
8130 var47 = var42->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var42:MClassDef> */
8131 if (unlikely(var47 == NULL)) {
8132 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
8133 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
8134 fatal_exit(1);
8135 }
8136 var45 = var47;
8137 RET_LABEL46:(void)0;
8138 }
8139 }
8140 {
8141 { /* Inline model#MClass#mclass_type (var45) on <var45:MClass> */
8142 var50 = var45->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var45:MClass> */
8143 if (unlikely(var50 == NULL)) {
8144 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
8145 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
8146 fatal_exit(1);
8147 }
8148 var48 = var50;
8149 RET_LABEL49:(void)0;
8150 }
8151 }
8152 {
8153 var51 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__autobox(self, var41, var48);
8154 }
8155 {
8156 standard___standard__Sequence___first_61d(var_args, var51); /* Direct call abstract_collection#Sequence#first= on <var_args:Array[RuntimeVariable]>*/
8157 }
8158 } else {
8159 }
8160 var_i = 0l;
8161 {
8162 var52 = nit___nit__MSignature___arity(var_msignature);
8163 }
8164 var_ = var52;
8165 for(;;) {
8166 {
8167 { /* Inline kernel#Int#< (var_i,var_) on <var_i:Int> */
8168 /* Covariant cast for argument 0 (i) <var_:Int> isa OTHER */
8169 /* <var_:Int> isa OTHER */
8170 var55 = 1; /* easy <var_:Int> isa OTHER*/
8171 if (unlikely(!var55)) {
8172 var_class_name = type_standard__Int.name;
8173 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
8174 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
8175 fatal_exit(1);
8176 }
8177 var56 = var_i < var_;
8178 var53 = var56;
8179 goto RET_LABEL54;
8180 RET_LABEL54:(void)0;
8181 }
8182 }
8183 if (var53){
8184 {
8185 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
8186 var59 = var_msignature->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
8187 if (unlikely(var59 == NULL)) {
8188 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
8189 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
8190 fatal_exit(1);
8191 }
8192 var57 = var59;
8193 RET_LABEL58:(void)0;
8194 }
8195 }
8196 {
8197 var60 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var57, var_i);
8198 }
8199 {
8200 { /* Inline model#MParameter#mtype (var60) on <var60:nullable Object(MParameter)> */
8201 var63 = var60->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var60:nullable Object(MParameter)> */
8202 if (unlikely(var63 == NULL)) {
8203 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8204 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
8205 fatal_exit(1);
8206 }
8207 var61 = var63;
8208 RET_LABEL62:(void)0;
8209 }
8210 }
8211 var_t = var61;
8212 {
8213 { /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:MSignature> */
8214 var66 = var_msignature->attrs[COLOR_nit__model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:MSignature> */
8215 var64 = var66;
8216 RET_LABEL65:(void)0;
8217 }
8218 }
8219 {
8220 { /* Inline kernel#Int#== (var_i,var64) on <var_i:Int> */
8221 var69 = var_i == var64;
8222 var67 = var69;
8223 goto RET_LABEL68;
8224 RET_LABEL68:(void)0;
8225 }
8226 }
8227 if (var67){
8228 {
8229 { /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
8230 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
8231 /* <1l:Int> isa OTHER */
8232 var72 = 1; /* easy <1l:Int> isa OTHER*/
8233 if (unlikely(!var72)) {
8234 var_class_name75 = type_standard__Int.name;
8235 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name75);
8236 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
8237 fatal_exit(1);
8238 }
8239 var76 = var_i + 1l;
8240 var70 = var76;
8241 goto RET_LABEL71;
8242 RET_LABEL71:(void)0;
8243 }
8244 }
8245 {
8246 var77 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_args, var70);
8247 }
8248 {
8249 { /* Inline abstract_compiler#RuntimeVariable#mtype (var77) on <var77:nullable Object(RuntimeVariable)> */
8250 var80 = var77->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var77:nullable Object(RuntimeVariable)> */
8251 if (unlikely(var80 == NULL)) {
8252 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8253 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1784);
8254 fatal_exit(1);
8255 }
8256 var78 = var80;
8257 RET_LABEL79:(void)0;
8258 }
8259 }
8260 var_t = var78;
8261 } else {
8262 }
8263 {
8264 { /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
8265 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
8266 /* <1l:Int> isa OTHER */
8267 var83 = 1; /* easy <1l:Int> isa OTHER*/
8268 if (unlikely(!var83)) {
8269 var_class_name86 = type_standard__Int.name;
8270 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name86);
8271 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
8272 fatal_exit(1);
8273 }
8274 var87 = var_i + 1l;
8275 var81 = var87;
8276 goto RET_LABEL82;
8277 RET_LABEL82:(void)0;
8278 }
8279 }
8280 {
8281 { /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
8282 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
8283 /* <1l:Int> isa OTHER */
8284 var90 = 1; /* easy <1l:Int> isa OTHER*/
8285 if (unlikely(!var90)) {
8286 var_class_name93 = type_standard__Int.name;
8287 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name93);
8288 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
8289 fatal_exit(1);
8290 }
8291 var94 = var_i + 1l;
8292 var88 = var94;
8293 goto RET_LABEL89;
8294 RET_LABEL89:(void)0;
8295 }
8296 }
8297 {
8298 var95 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_args, var88);
8299 }
8300 {
8301 var96 = nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__autobox(self, var95, var_t);
8302 }
8303 {
8304 standard___standard__Array___standard__abstract_collection__Sequence___91d_93d_61d(var_args, var81, var96); /* Direct call array#Array#[]= on <var_args:Array[RuntimeVariable]>*/
8305 }
8306 {
8307 var97 = standard___standard__Int___Discrete__successor(var_i, 1l);
8308 }
8309 var_i = var97;
8310 } else {
8311 goto BREAK_label;
8312 }
8313 }
8314 BREAK_label: (void)0;
8315 RET_LABEL:;
8316 }
8317 /* method separate_compiler#SeparateCompilerVisitor#unbox_signature_extern for (self: SeparateCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
8318 void nit___nit__SeparateCompilerVisitor___nit__abstract_compiler__AbstractCompilerVisitor__unbox_signature_extern(val* self, val* p0, val* p1) {
8319 val* var_m /* var m: MMethodDef */;
8320 val* var_args /* var args: Array[RuntimeVariable] */;
8321 val* var /* : nullable MSignature */;
8322 val* var2 /* : nullable MSignature */;
8323 val* var3 /* : MClassDef */;
8324 val* var5 /* : MClassDef */;
8325 val* var6 /* : MClassType */;
8326 val* var8 /* : MClassType */;
8327 val* var9 /* : MClassDef */;
8328 val* var11 /* : MClassDef */;
8329 val* var12 /* : MClassType */;
8330 val* var14 /* : MClassType */;
8331 val* var15 /* : MClassDef */;
8332 val* var17 /* : MClassDef */;
8333 val* var18 /* : MModule */;
8334 val* var20 /* : MModule */;
8335 val* var21 /* : MSignature */;
8336 val* var_msignature /* var msignature: MSignature */;
8337 short int var22 /* : Bool */;
8338 val* var23 /* : MProperty */;
8339 val* var25 /* : MProperty */;
8340 short int var26 /* : Bool */;
8341 short int var28 /* : Bool */;
8342 short int var29 /* : Bool */;
8343 short int var_ /* var : Bool */;
8344 short int var30 /* : Bool */;
8345 short int var32 /* : Bool */;
8346 val* var33 /* : nullable Object */;
8347 val* var34 /* : MClassDef */;
8348 val* var36 /* : MClassDef */;
8349 val* var37 /* : MClass */;
8350 val* var39 /* : MClass */;
8351 val* var40 /* : MClassType */;
8352 val* var42 /* : MClassType */;
8353 val* var43 /* : RuntimeVariable */;
8354 long var_i /* var i: Int */;
8355 long var44 /* : Int */;
8356 long var_45 /* var : Int */;
8357 short int var46 /* : Bool */;
8358 short int var48 /* : Bool */;
8359 int cltype;
8360 int idtype;
8361 const char* var_class_name;
8362 short int var49 /* : Bool */;
8363 val* var50 /* : Array[MParameter] */;
8364 val* var52 /* : Array[MParameter] */;
8365 val* var53 /* : nullable Object */;
8366 val* var54 /* : MType */;
8367 val* var56 /* : MType */;
8368 val* var_t /* var t: MType */;
8369 long var57 /* : Int */;
8370 long var59 /* : Int */;
8371 short int var60 /* : Bool */;
8372 short int var62 /* : Bool */;
8373 long var63 /* : Int */;
8374 short int var65 /* : Bool */;
8375 int cltype66;
8376 int idtype67;
8377 const char* var_class_name68;
8378 long var69 /* : Int */;
8379 val* var70 /* : nullable Object */;
8380 val* var71 /* : MType */;
8381 val* var73 /* : MType */;
8382 short int var74 /* : Bool */;
8383 short int var76 /* : Bool */;
8384 long var77 /* : Int */;
8385 short int var79 /* : Bool */;
8386 int cltype80;
8387 int idtype81;
8388 const char* var_class_name82;
8389 long var83 /* : Int */;
8390 long var84 /* : Int */;
8391 short int var86 /* : Bool */;
8392 int cltype87;
8393 int idtype88;
8394 const char* var_class_name89;
8395 long var90 /* : Int */;
8396 val* var91 /* : nullable Object */;
8397 val* var92 /* : RuntimeVariable */;
8398 long var93 /* : Int */;
8399 var_m = p0;
8400 var_args = p1;
8401 {
8402 { /* Inline model#MMethodDef#msignature (var_m) on <var_m:MMethodDef> */
8403 var2 = var_m->attrs[COLOR_nit__model__MMethodDef___msignature].val; /* _msignature on <var_m:MMethodDef> */
8404 var = var2;
8405 RET_LABEL1:(void)0;
8406 }
8407 }
8408 {
8409 { /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
8410 var5 = var_m->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
8411 if (unlikely(var5 == NULL)) {
8412 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8413 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
8414 fatal_exit(1);
8415 }
8416 var3 = var5;
8417 RET_LABEL4:(void)0;
8418 }
8419 }
8420 {
8421 { /* Inline model#MClassDef#bound_mtype (var3) on <var3:MClassDef> */
8422 var8 = var3->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var3:MClassDef> */
8423 if (unlikely(var8 == NULL)) {
8424 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8425 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
8426 fatal_exit(1);
8427 }
8428 var6 = var8;
8429 RET_LABEL7:(void)0;
8430 }
8431 }
8432 {
8433 { /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
8434 var11 = var_m->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
8435 if (unlikely(var11 == NULL)) {
8436 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8437 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
8438 fatal_exit(1);
8439 }
8440 var9 = var11;
8441 RET_LABEL10:(void)0;
8442 }
8443 }
8444 {
8445 { /* Inline model#MClassDef#bound_mtype (var9) on <var9:MClassDef> */
8446 var14 = var9->attrs[COLOR_nit__model__MClassDef___bound_mtype].val; /* _bound_mtype on <var9:MClassDef> */
8447 if (unlikely(var14 == NULL)) {
8448 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
8449 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 556);
8450 fatal_exit(1);
8451 }
8452 var12 = var14;
8453 RET_LABEL13:(void)0;
8454 }
8455 }
8456 {
8457 { /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
8458 var17 = var_m->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
8459 if (unlikely(var17 == NULL)) {
8460 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8461 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
8462 fatal_exit(1);
8463 }
8464 var15 = var17;
8465 RET_LABEL16:(void)0;
8466 }
8467 }
8468 {
8469 { /* Inline model#MClassDef#mmodule (var15) on <var15:MClassDef> */
8470 var20 = var15->attrs[COLOR_nit__model__MClassDef___mmodule].val; /* _mmodule on <var15:MClassDef> */
8471 if (unlikely(var20 == NULL)) {
8472 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mmodule");
8473 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 550);
8474 fatal_exit(1);
8475 }
8476 var18 = var20;
8477 RET_LABEL19:(void)0;
8478 }
8479 }
8480 if (var == NULL) {
8481 PRINT_ERROR("Runtime error: %s", "Receiver is null");
8482 PRINT_ERROR(" (%s:%d)\n", FILE_nit__separate_compiler, 1173);
8483 fatal_exit(1);
8484 } else {
8485 var21 = nit___nit__MSignature___MType__resolve_for(var, var6, var12, var18, 1);
8486 }
8487 var_msignature = var21;
8488 {
8489 { /* Inline model#MPropDef#mproperty (var_m) on <var_m:MMethodDef> */
8490 var25 = var_m->attrs[COLOR_nit__model__MPropDef___mproperty].val; /* _mproperty on <var_m:MMethodDef> */
8491 if (unlikely(var25 == NULL)) {
8492 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
8493 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2212);
8494 fatal_exit(1);
8495 }
8496 var23 = var25;
8497 RET_LABEL24:(void)0;
8498 }
8499 }
8500 {
8501 { /* Inline model#MMethod#is_init (var23) on <var23:MProperty(MMethod)> */
8502 var28 = var23->attrs[COLOR_nit__model__MMethod___is_init].s; /* _is_init on <var23:MProperty(MMethod)> */
8503 var26 = var28;
8504 RET_LABEL27:(void)0;
8505 }
8506 }
8507 var29 = !var26;
8508 var_ = var29;
8509 if (var29){
8510 {
8511 { /* Inline model#MMethodDef#is_extern (var_m) on <var_m:MMethodDef> */
8512 var32 = var_m->attrs[COLOR_nit__model__MMethodDef___is_extern].s; /* _is_extern on <var_m:MMethodDef> */
8513 var30 = var32;
8514 RET_LABEL31:(void)0;
8515 }
8516 }
8517 var22 = var30;
8518 } else {
8519 var22 = var_;
8520 }
8521 if (var22){
8522 {
8523 var33 = standard___standard__SequenceRead___Collection__first(var_args);
8524 }
8525 {
8526 { /* Inline model#MPropDef#mclassdef (var_m) on <var_m:MMethodDef> */
8527 var36 = var_m->attrs[COLOR_nit__model__MPropDef___mclassdef].val; /* _mclassdef on <var_m:MMethodDef> */
8528 if (unlikely(var36 == NULL)) {
8529 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
8530 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 2209);
8531 fatal_exit(1);
8532 }
8533 var34 = var36;
8534 RET_LABEL35:(void)0;
8535 }
8536 }
8537 {
8538 { /* Inline model#MClassDef#mclass (var34) on <var34:MClassDef> */
8539 var39 = var34->attrs[COLOR_nit__model__MClassDef___mclass].val; /* _mclass on <var34:MClassDef> */
8540 if (unlikely(var39 == NULL)) {
8541 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
8542 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 553);
8543 fatal_exit(1);
8544 }
8545 var37 = var39;
8546 RET_LABEL38:(void)0;
8547 }
8548 }
8549 {
8550 { /* Inline model#MClass#mclass_type (var37) on <var37:MClass> */
8551 var42 = var37->attrs[COLOR_nit__model__MClass___mclass_type].val; /* _mclass_type on <var37:MClass> */
8552 if (unlikely(var42 == NULL)) {
8553 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass_type");
8554 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 484);
8555 fatal_exit(1);
8556 }
8557 var40 = var42;
8558 RET_LABEL41:(void)0;
8559 }
8560 }
8561 {
8562 var43 = ((val*(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompilerVisitor__unbox_extern]))(self, var33, var40); /* unbox_extern on <self:SeparateCompilerVisitor>*/
8563 }
8564 {
8565 standard___standard__Sequence___first_61d(var_args, var43); /* Direct call abstract_collection#Sequence#first= on <var_args:Array[RuntimeVariable]>*/
8566 }
8567 } else {
8568 }
8569 var_i = 0l;
8570 {
8571 var44 = nit___nit__MSignature___arity(var_msignature);
8572 }
8573 var_45 = var44;
8574 for(;;) {
8575 {
8576 { /* Inline kernel#Int#< (var_i,var_45) on <var_i:Int> */
8577 /* Covariant cast for argument 0 (i) <var_45:Int> isa OTHER */
8578 /* <var_45:Int> isa OTHER */
8579 var48 = 1; /* easy <var_45:Int> isa OTHER*/
8580 if (unlikely(!var48)) {
8581 var_class_name = type_standard__Int.name;
8582 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
8583 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
8584 fatal_exit(1);
8585 }
8586 var49 = var_i < var_45;
8587 var46 = var49;
8588 goto RET_LABEL47;
8589 RET_LABEL47:(void)0;
8590 }
8591 }
8592 if (var46){
8593 {
8594 { /* Inline model#MSignature#mparameters (var_msignature) on <var_msignature:MSignature> */
8595 var52 = var_msignature->attrs[COLOR_nit__model__MSignature___mparameters].val; /* _mparameters on <var_msignature:MSignature> */
8596 if (unlikely(var52 == NULL)) {
8597 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mparameters");
8598 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1756);
8599 fatal_exit(1);
8600 }
8601 var50 = var52;
8602 RET_LABEL51:(void)0;
8603 }
8604 }
8605 {
8606 var53 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var50, var_i);
8607 }
8608 {
8609 { /* Inline model#MParameter#mtype (var53) on <var53:nullable Object(MParameter)> */
8610 var56 = var53->attrs[COLOR_nit__model__MParameter___mtype].val; /* _mtype on <var53:nullable Object(MParameter)> */
8611 if (unlikely(var56 == NULL)) {
8612 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8613 PRINT_ERROR(" (%s:%d)\n", FILE_nit__model, 1879);
8614 fatal_exit(1);
8615 }
8616 var54 = var56;
8617 RET_LABEL55:(void)0;
8618 }
8619 }
8620 var_t = var54;
8621 {
8622 { /* Inline model#MSignature#vararg_rank (var_msignature) on <var_msignature:MSignature> */
8623 var59 = var_msignature->attrs[COLOR_nit__model__MSignature___vararg_rank].l; /* _vararg_rank on <var_msignature:MSignature> */
8624 var57 = var59;
8625 RET_LABEL58:(void)0;
8626 }
8627 }
8628 {
8629 { /* Inline kernel#Int#== (var_i,var57) on <var_i:Int> */
8630 var62 = var_i == var57;
8631 var60 = var62;
8632 goto RET_LABEL61;
8633 RET_LABEL61:(void)0;
8634 }
8635 }
8636 if (var60){
8637 {
8638 { /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
8639 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
8640 /* <1l:Int> isa OTHER */
8641 var65 = 1; /* easy <1l:Int> isa OTHER*/
8642 if (unlikely(!var65)) {
8643 var_class_name68 = type_standard__Int.name;
8644 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name68);
8645 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
8646 fatal_exit(1);
8647 }
8648 var69 = var_i + 1l;
8649 var63 = var69;
8650 goto RET_LABEL64;
8651 RET_LABEL64:(void)0;
8652 }
8653 }
8654 {
8655 var70 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_args, var63);
8656 }
8657 {
8658 { /* Inline abstract_compiler#RuntimeVariable#mtype (var70) on <var70:nullable Object(RuntimeVariable)> */
8659 var73 = var70->attrs[COLOR_nit__abstract_compiler__RuntimeVariable___mtype].val; /* _mtype on <var70:nullable Object(RuntimeVariable)> */
8660 if (unlikely(var73 == NULL)) {
8661 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
8662 PRINT_ERROR(" (%s:%d)\n", FILE_nit__abstract_compiler, 1784);
8663 fatal_exit(1);
8664 }
8665 var71 = var73;
8666 RET_LABEL72:(void)0;
8667 }
8668 }
8669 var_t = var71;
8670 } else {
8671 }
8672 {
8673 { /* Inline model#MMethodDef#is_extern (var_m) on <var_m:MMethodDef> */
8674 var76 = var_m->attrs[COLOR_nit__model__MMethodDef___is_extern].s; /* _is_extern on <var_m:MMethodDef> */
8675 var74 = var76;
8676 RET_LABEL75:(void)0;
8677 }
8678 }
8679 if (var74){
8680 {
8681 { /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
8682 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
8683 /* <1l:Int> isa OTHER */
8684 var79 = 1; /* easy <1l:Int> isa OTHER*/
8685 if (unlikely(!var79)) {
8686 var_class_name82 = type_standard__Int.name;
8687 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name82);
8688 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
8689 fatal_exit(1);
8690 }
8691 var83 = var_i + 1l;
8692 var77 = var83;
8693 goto RET_LABEL78;
8694 RET_LABEL78:(void)0;
8695 }
8696 }
8697 {
8698 { /* Inline kernel#Int#+ (var_i,1l) on <var_i:Int> */
8699 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
8700 /* <1l:Int> isa OTHER */
8701 var86 = 1; /* easy <1l:Int> isa OTHER*/
8702 if (unlikely(!var86)) {
8703 var_class_name89 = type_standard__Int.name;
8704 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name89);
8705 PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
8706 fatal_exit(1);
8707 }
8708 var90 = var_i + 1l;
8709 var84 = var90;
8710 goto RET_LABEL85;
8711 RET_LABEL85:(void)0;
8712 }
8713 }
8714 {
8715 var91 = standard___standard__Array___standard__abstract_collection__SequenceRead___91d_93d(var_args, var84);
8716 }
8717 {
8718 var92 = ((val*(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_nit__abstract_compiler__AbstractCompilerVisitor__unbox_extern]))(self, var91, var_t); /* unbox_extern on <self:SeparateCompilerVisitor>*/
8719 }
8720 {
8721 standard___standard__Array___standard__abstract_collection__Sequence___91d_93d_61d(var_args, var77, var92); /* Direct call array#Array#[]= on <var_args:Array[RuntimeVariable]>*/
8722 }
8723 } else {
8724 }
8725 {
8726 var93 = standard___standard__Int___Discrete__successor(var_i, 1l);
8727 }
8728 var_i = var93;
8729 } else {
8730 goto BREAK_label;
8731 }
8732 }
8733 BREAK_label: (void)0;
8734 RET_LABEL:;
8735 }