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