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