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