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