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