nitg: fix FFI _is_null functions
[nit.git] / c_src / separate_compiler.sep.1.c
1 #include "separate_compiler.sep.0.h"
2 /* method separate_compiler#ToolContext#opt_separate for (self: ToolContext): OptionBool */
3 val* separate_compiler__ToolContext__opt_separate(val* self) {
4 val* var /* : OptionBool */;
5 val* var1 /* : OptionBool */;
6 var1 = self->attrs[COLOR_separate_compiler__ToolContext___64dopt_separate].val; /* @opt_separate on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_separate");
9 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 25);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method separate_compiler#ToolContext#opt_separate for (self: Object): OptionBool */
17 val* VIRTUAL_separate_compiler__ToolContext__opt_separate(val* self) {
18 val* var /* : OptionBool */;
19 val* var1 /* : OptionBool */;
20 var1 = separate_compiler__ToolContext__opt_separate(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method separate_compiler#ToolContext#opt_separate= for (self: ToolContext, OptionBool) */
26 void separate_compiler__ToolContext__opt_separate_61d(val* self, val* p0) {
27 self->attrs[COLOR_separate_compiler__ToolContext___64dopt_separate].val = p0; /* @opt_separate on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method separate_compiler#ToolContext#opt_separate= for (self: Object, OptionBool) */
31 void VIRTUAL_separate_compiler__ToolContext__opt_separate_61d(val* self, val* p0) {
32 separate_compiler__ToolContext__opt_separate_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method separate_compiler#ToolContext#opt_no_inline_intern for (self: ToolContext): OptionBool */
36 val* separate_compiler__ToolContext__opt_no_inline_intern(val* self) {
37 val* var /* : OptionBool */;
38 val* var1 /* : OptionBool */;
39 var1 = self->attrs[COLOR_separate_compiler__ToolContext___64dopt_no_inline_intern].val; /* @opt_no_inline_intern on <self:ToolContext> */
40 if (var1 == NULL) {
41 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_inline_intern");
42 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 27);
43 show_backtrace(1);
44 }
45 var = var1;
46 RET_LABEL:;
47 return var;
48 }
49 /* method separate_compiler#ToolContext#opt_no_inline_intern for (self: Object): OptionBool */
50 val* VIRTUAL_separate_compiler__ToolContext__opt_no_inline_intern(val* self) {
51 val* var /* : OptionBool */;
52 val* var1 /* : OptionBool */;
53 var1 = separate_compiler__ToolContext__opt_no_inline_intern(self);
54 var = var1;
55 RET_LABEL:;
56 return var;
57 }
58 /* method separate_compiler#ToolContext#opt_no_inline_intern= for (self: ToolContext, OptionBool) */
59 void separate_compiler__ToolContext__opt_no_inline_intern_61d(val* self, val* p0) {
60 self->attrs[COLOR_separate_compiler__ToolContext___64dopt_no_inline_intern].val = p0; /* @opt_no_inline_intern on <self:ToolContext> */
61 RET_LABEL:;
62 }
63 /* method separate_compiler#ToolContext#opt_no_inline_intern= for (self: Object, OptionBool) */
64 void VIRTUAL_separate_compiler__ToolContext__opt_no_inline_intern_61d(val* self, val* p0) {
65 separate_compiler__ToolContext__opt_no_inline_intern_61d(self, p0);
66 RET_LABEL:;
67 }
68 /* method separate_compiler#ToolContext#opt_no_union_attribute for (self: ToolContext): OptionBool */
69 val* separate_compiler__ToolContext__opt_no_union_attribute(val* self) {
70 val* var /* : OptionBool */;
71 val* var1 /* : OptionBool */;
72 var1 = self->attrs[COLOR_separate_compiler__ToolContext___64dopt_no_union_attribute].val; /* @opt_no_union_attribute on <self:ToolContext> */
73 if (var1 == NULL) {
74 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_union_attribute");
75 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 29);
76 show_backtrace(1);
77 }
78 var = var1;
79 RET_LABEL:;
80 return var;
81 }
82 /* method separate_compiler#ToolContext#opt_no_union_attribute for (self: Object): OptionBool */
83 val* VIRTUAL_separate_compiler__ToolContext__opt_no_union_attribute(val* self) {
84 val* var /* : OptionBool */;
85 val* var1 /* : OptionBool */;
86 var1 = separate_compiler__ToolContext__opt_no_union_attribute(self);
87 var = var1;
88 RET_LABEL:;
89 return var;
90 }
91 /* method separate_compiler#ToolContext#opt_no_union_attribute= for (self: ToolContext, OptionBool) */
92 void separate_compiler__ToolContext__opt_no_union_attribute_61d(val* self, val* p0) {
93 self->attrs[COLOR_separate_compiler__ToolContext___64dopt_no_union_attribute].val = p0; /* @opt_no_union_attribute on <self:ToolContext> */
94 RET_LABEL:;
95 }
96 /* method separate_compiler#ToolContext#opt_no_union_attribute= for (self: Object, OptionBool) */
97 void VIRTUAL_separate_compiler__ToolContext__opt_no_union_attribute_61d(val* self, val* p0) {
98 separate_compiler__ToolContext__opt_no_union_attribute_61d(self, p0);
99 RET_LABEL:;
100 }
101 /* method separate_compiler#ToolContext#opt_no_shortcut_equate for (self: ToolContext): OptionBool */
102 val* separate_compiler__ToolContext__opt_no_shortcut_equate(val* self) {
103 val* var /* : OptionBool */;
104 val* var1 /* : OptionBool */;
105 var1 = self->attrs[COLOR_separate_compiler__ToolContext___64dopt_no_shortcut_equate].val; /* @opt_no_shortcut_equate on <self:ToolContext> */
106 if (var1 == NULL) {
107 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_no_shortcut_equate");
108 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 31);
109 show_backtrace(1);
110 }
111 var = var1;
112 RET_LABEL:;
113 return var;
114 }
115 /* method separate_compiler#ToolContext#opt_no_shortcut_equate for (self: Object): OptionBool */
116 val* VIRTUAL_separate_compiler__ToolContext__opt_no_shortcut_equate(val* self) {
117 val* var /* : OptionBool */;
118 val* var1 /* : OptionBool */;
119 var1 = separate_compiler__ToolContext__opt_no_shortcut_equate(self);
120 var = var1;
121 RET_LABEL:;
122 return var;
123 }
124 /* method separate_compiler#ToolContext#opt_no_shortcut_equate= for (self: ToolContext, OptionBool) */
125 void separate_compiler__ToolContext__opt_no_shortcut_equate_61d(val* self, val* p0) {
126 self->attrs[COLOR_separate_compiler__ToolContext___64dopt_no_shortcut_equate].val = p0; /* @opt_no_shortcut_equate on <self:ToolContext> */
127 RET_LABEL:;
128 }
129 /* method separate_compiler#ToolContext#opt_no_shortcut_equate= for (self: Object, OptionBool) */
130 void VIRTUAL_separate_compiler__ToolContext__opt_no_shortcut_equate_61d(val* self, val* p0) {
131 separate_compiler__ToolContext__opt_no_shortcut_equate_61d(self, p0);
132 RET_LABEL:;
133 }
134 /* method separate_compiler#ToolContext#opt_inline_coloring_numbers for (self: ToolContext): OptionBool */
135 val* separate_compiler__ToolContext__opt_inline_coloring_numbers(val* self) {
136 val* var /* : OptionBool */;
137 val* var1 /* : OptionBool */;
138 var1 = self->attrs[COLOR_separate_compiler__ToolContext___64dopt_inline_coloring_numbers].val; /* @opt_inline_coloring_numbers on <self:ToolContext> */
139 if (var1 == NULL) {
140 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_inline_coloring_numbers");
141 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 33);
142 show_backtrace(1);
143 }
144 var = var1;
145 RET_LABEL:;
146 return var;
147 }
148 /* method separate_compiler#ToolContext#opt_inline_coloring_numbers for (self: Object): OptionBool */
149 val* VIRTUAL_separate_compiler__ToolContext__opt_inline_coloring_numbers(val* self) {
150 val* var /* : OptionBool */;
151 val* var1 /* : OptionBool */;
152 var1 = separate_compiler__ToolContext__opt_inline_coloring_numbers(self);
153 var = var1;
154 RET_LABEL:;
155 return var;
156 }
157 /* method separate_compiler#ToolContext#opt_inline_coloring_numbers= for (self: ToolContext, OptionBool) */
158 void separate_compiler__ToolContext__opt_inline_coloring_numbers_61d(val* self, val* p0) {
159 self->attrs[COLOR_separate_compiler__ToolContext___64dopt_inline_coloring_numbers].val = p0; /* @opt_inline_coloring_numbers on <self:ToolContext> */
160 RET_LABEL:;
161 }
162 /* method separate_compiler#ToolContext#opt_inline_coloring_numbers= for (self: Object, OptionBool) */
163 void VIRTUAL_separate_compiler__ToolContext__opt_inline_coloring_numbers_61d(val* self, val* p0) {
164 separate_compiler__ToolContext__opt_inline_coloring_numbers_61d(self, p0);
165 RET_LABEL:;
166 }
167 /* method separate_compiler#ToolContext#opt_bm_typing for (self: ToolContext): OptionBool */
168 val* separate_compiler__ToolContext__opt_bm_typing(val* self) {
169 val* var /* : OptionBool */;
170 val* var1 /* : OptionBool */;
171 var1 = self->attrs[COLOR_separate_compiler__ToolContext___64dopt_bm_typing].val; /* @opt_bm_typing on <self:ToolContext> */
172 if (var1 == NULL) {
173 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_bm_typing");
174 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 35);
175 show_backtrace(1);
176 }
177 var = var1;
178 RET_LABEL:;
179 return var;
180 }
181 /* method separate_compiler#ToolContext#opt_bm_typing for (self: Object): OptionBool */
182 val* VIRTUAL_separate_compiler__ToolContext__opt_bm_typing(val* self) {
183 val* var /* : OptionBool */;
184 val* var1 /* : OptionBool */;
185 var1 = separate_compiler__ToolContext__opt_bm_typing(self);
186 var = var1;
187 RET_LABEL:;
188 return var;
189 }
190 /* method separate_compiler#ToolContext#opt_bm_typing= for (self: ToolContext, OptionBool) */
191 void separate_compiler__ToolContext__opt_bm_typing_61d(val* self, val* p0) {
192 self->attrs[COLOR_separate_compiler__ToolContext___64dopt_bm_typing].val = p0; /* @opt_bm_typing on <self:ToolContext> */
193 RET_LABEL:;
194 }
195 /* method separate_compiler#ToolContext#opt_bm_typing= for (self: Object, OptionBool) */
196 void VIRTUAL_separate_compiler__ToolContext__opt_bm_typing_61d(val* self, val* p0) {
197 separate_compiler__ToolContext__opt_bm_typing_61d(self, p0);
198 RET_LABEL:;
199 }
200 /* method separate_compiler#ToolContext#opt_phmod_typing for (self: ToolContext): OptionBool */
201 val* separate_compiler__ToolContext__opt_phmod_typing(val* self) {
202 val* var /* : OptionBool */;
203 val* var1 /* : OptionBool */;
204 var1 = self->attrs[COLOR_separate_compiler__ToolContext___64dopt_phmod_typing].val; /* @opt_phmod_typing on <self:ToolContext> */
205 if (var1 == NULL) {
206 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_phmod_typing");
207 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 37);
208 show_backtrace(1);
209 }
210 var = var1;
211 RET_LABEL:;
212 return var;
213 }
214 /* method separate_compiler#ToolContext#opt_phmod_typing for (self: Object): OptionBool */
215 val* VIRTUAL_separate_compiler__ToolContext__opt_phmod_typing(val* self) {
216 val* var /* : OptionBool */;
217 val* var1 /* : OptionBool */;
218 var1 = separate_compiler__ToolContext__opt_phmod_typing(self);
219 var = var1;
220 RET_LABEL:;
221 return var;
222 }
223 /* method separate_compiler#ToolContext#opt_phmod_typing= for (self: ToolContext, OptionBool) */
224 void separate_compiler__ToolContext__opt_phmod_typing_61d(val* self, val* p0) {
225 self->attrs[COLOR_separate_compiler__ToolContext___64dopt_phmod_typing].val = p0; /* @opt_phmod_typing on <self:ToolContext> */
226 RET_LABEL:;
227 }
228 /* method separate_compiler#ToolContext#opt_phmod_typing= for (self: Object, OptionBool) */
229 void VIRTUAL_separate_compiler__ToolContext__opt_phmod_typing_61d(val* self, val* p0) {
230 separate_compiler__ToolContext__opt_phmod_typing_61d(self, p0);
231 RET_LABEL:;
232 }
233 /* method separate_compiler#ToolContext#opt_phand_typing for (self: ToolContext): OptionBool */
234 val* separate_compiler__ToolContext__opt_phand_typing(val* self) {
235 val* var /* : OptionBool */;
236 val* var1 /* : OptionBool */;
237 var1 = self->attrs[COLOR_separate_compiler__ToolContext___64dopt_phand_typing].val; /* @opt_phand_typing on <self:ToolContext> */
238 if (var1 == NULL) {
239 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_phand_typing");
240 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 39);
241 show_backtrace(1);
242 }
243 var = var1;
244 RET_LABEL:;
245 return var;
246 }
247 /* method separate_compiler#ToolContext#opt_phand_typing for (self: Object): OptionBool */
248 val* VIRTUAL_separate_compiler__ToolContext__opt_phand_typing(val* self) {
249 val* var /* : OptionBool */;
250 val* var1 /* : OptionBool */;
251 var1 = separate_compiler__ToolContext__opt_phand_typing(self);
252 var = var1;
253 RET_LABEL:;
254 return var;
255 }
256 /* method separate_compiler#ToolContext#opt_phand_typing= for (self: ToolContext, OptionBool) */
257 void separate_compiler__ToolContext__opt_phand_typing_61d(val* self, val* p0) {
258 self->attrs[COLOR_separate_compiler__ToolContext___64dopt_phand_typing].val = p0; /* @opt_phand_typing on <self:ToolContext> */
259 RET_LABEL:;
260 }
261 /* method separate_compiler#ToolContext#opt_phand_typing= for (self: Object, OptionBool) */
262 void VIRTUAL_separate_compiler__ToolContext__opt_phand_typing_61d(val* self, val* p0) {
263 separate_compiler__ToolContext__opt_phand_typing_61d(self, p0);
264 RET_LABEL:;
265 }
266 /* method separate_compiler#ToolContext#opt_tables_metrics for (self: ToolContext): OptionBool */
267 val* separate_compiler__ToolContext__opt_tables_metrics(val* self) {
268 val* var /* : OptionBool */;
269 val* var1 /* : OptionBool */;
270 var1 = self->attrs[COLOR_separate_compiler__ToolContext___64dopt_tables_metrics].val; /* @opt_tables_metrics on <self:ToolContext> */
271 if (var1 == NULL) {
272 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @opt_tables_metrics");
273 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 41);
274 show_backtrace(1);
275 }
276 var = var1;
277 RET_LABEL:;
278 return var;
279 }
280 /* method separate_compiler#ToolContext#opt_tables_metrics for (self: Object): OptionBool */
281 val* VIRTUAL_separate_compiler__ToolContext__opt_tables_metrics(val* self) {
282 val* var /* : OptionBool */;
283 val* var1 /* : OptionBool */;
284 var1 = separate_compiler__ToolContext__opt_tables_metrics(self);
285 var = var1;
286 RET_LABEL:;
287 return var;
288 }
289 /* method separate_compiler#ToolContext#opt_tables_metrics= for (self: ToolContext, OptionBool) */
290 void separate_compiler__ToolContext__opt_tables_metrics_61d(val* self, val* p0) {
291 self->attrs[COLOR_separate_compiler__ToolContext___64dopt_tables_metrics].val = p0; /* @opt_tables_metrics on <self:ToolContext> */
292 RET_LABEL:;
293 }
294 /* method separate_compiler#ToolContext#opt_tables_metrics= for (self: Object, OptionBool) */
295 void VIRTUAL_separate_compiler__ToolContext__opt_tables_metrics_61d(val* self, val* p0) {
296 separate_compiler__ToolContext__opt_tables_metrics_61d(self, p0);
297 RET_LABEL:;
298 }
299 /* method separate_compiler#ToolContext#init for (self: ToolContext) */
300 void separate_compiler__ToolContext__init(val* self) {
301 val* var /* : OptionContext */;
302 val* var1 /* : OptionBool */;
303 val* var2 /* : Array[Option] */;
304 long var3 /* : Int */;
305 val* var4 /* : NativeArray[Option] */;
306 val* var5 /* : OptionContext */;
307 val* var6 /* : OptionBool */;
308 val* var7 /* : Array[Option] */;
309 long var8 /* : Int */;
310 val* var9 /* : NativeArray[Option] */;
311 val* var10 /* : OptionContext */;
312 val* var11 /* : OptionBool */;
313 val* var12 /* : Array[Option] */;
314 long var13 /* : Int */;
315 val* var14 /* : NativeArray[Option] */;
316 val* var15 /* : OptionContext */;
317 val* var16 /* : OptionBool */;
318 val* var17 /* : Array[Option] */;
319 long var18 /* : Int */;
320 val* var19 /* : NativeArray[Option] */;
321 val* var20 /* : OptionContext */;
322 val* var21 /* : OptionBool */;
323 val* var22 /* : Array[Option] */;
324 long var23 /* : Int */;
325 val* var24 /* : NativeArray[Option] */;
326 val* var25 /* : OptionContext */;
327 val* var26 /* : OptionBool */;
328 val* var27 /* : Array[Option] */;
329 long var28 /* : Int */;
330 val* var29 /* : NativeArray[Option] */;
331 val* var30 /* : OptionContext */;
332 val* var31 /* : OptionBool */;
333 val* var32 /* : Array[Option] */;
334 long var33 /* : Int */;
335 val* var34 /* : NativeArray[Option] */;
336 val* var35 /* : OptionContext */;
337 val* var36 /* : OptionBool */;
338 val* var37 /* : Array[Option] */;
339 long var38 /* : Int */;
340 val* var39 /* : NativeArray[Option] */;
341 val* var40 /* : OptionContext */;
342 val* var41 /* : OptionBool */;
343 val* var42 /* : Array[Option] */;
344 long var43 /* : Int */;
345 val* var44 /* : NativeArray[Option] */;
346 ((void (*)(val*))(self->class->vft[COLOR_separate_compiler__ToolContext__init]))(self) /* init on <self:ToolContext>*/;
347 var = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
348 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__ToolContext__opt_separate]))(self) /* opt_separate on <self:ToolContext>*/;
349 var2 = NEW_array__Array(&type_array__Arrayopts__Option);
350 { /* var2 = array_instance Array[Option] */
351 var3 = 1;
352 var4 = NEW_array__NativeArray(var3, &type_array__NativeArrayopts__Option);
353 ((struct instance_array__NativeArray*)var4)->values[0] = (val*) var1;
354 ((void (*)(val*, val*, long))(var2->class->vft[COLOR_array__Array__with_native]))(var2, var4, var3) /* with_native on <var2:Array[Option]>*/;
355 }
356 ((void (*)(val*, val*))(var->class->vft[COLOR_opts__OptionContext__add_option]))(var, var2) /* add_option on <var:OptionContext>*/;
357 var5 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
358 var6 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__ToolContext__opt_no_inline_intern]))(self) /* opt_no_inline_intern on <self:ToolContext>*/;
359 var7 = NEW_array__Array(&type_array__Arrayopts__Option);
360 { /* var7 = array_instance Array[Option] */
361 var8 = 1;
362 var9 = NEW_array__NativeArray(var8, &type_array__NativeArrayopts__Option);
363 ((struct instance_array__NativeArray*)var9)->values[0] = (val*) var6;
364 ((void (*)(val*, val*, long))(var7->class->vft[COLOR_array__Array__with_native]))(var7, var9, var8) /* with_native on <var7:Array[Option]>*/;
365 }
366 ((void (*)(val*, val*))(var5->class->vft[COLOR_opts__OptionContext__add_option]))(var5, var7) /* add_option on <var5:OptionContext>*/;
367 var10 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
368 var11 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(self) /* opt_no_union_attribute on <self:ToolContext>*/;
369 var12 = NEW_array__Array(&type_array__Arrayopts__Option);
370 { /* var12 = array_instance Array[Option] */
371 var13 = 1;
372 var14 = NEW_array__NativeArray(var13, &type_array__NativeArrayopts__Option);
373 ((struct instance_array__NativeArray*)var14)->values[0] = (val*) var11;
374 ((void (*)(val*, val*, long))(var12->class->vft[COLOR_array__Array__with_native]))(var12, var14, var13) /* with_native on <var12:Array[Option]>*/;
375 }
376 ((void (*)(val*, val*))(var10->class->vft[COLOR_opts__OptionContext__add_option]))(var10, var12) /* add_option on <var10:OptionContext>*/;
377 var15 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
378 var16 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__ToolContext__opt_no_shortcut_equate]))(self) /* opt_no_shortcut_equate on <self:ToolContext>*/;
379 var17 = NEW_array__Array(&type_array__Arrayopts__Option);
380 { /* var17 = array_instance Array[Option] */
381 var18 = 1;
382 var19 = NEW_array__NativeArray(var18, &type_array__NativeArrayopts__Option);
383 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var16;
384 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Option]>*/;
385 }
386 ((void (*)(val*, val*))(var15->class->vft[COLOR_opts__OptionContext__add_option]))(var15, var17) /* add_option on <var15:OptionContext>*/;
387 var20 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
388 var21 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__ToolContext__opt_inline_coloring_numbers]))(self) /* opt_inline_coloring_numbers on <self:ToolContext>*/;
389 var22 = NEW_array__Array(&type_array__Arrayopts__Option);
390 { /* var22 = array_instance Array[Option] */
391 var23 = 1;
392 var24 = NEW_array__NativeArray(var23, &type_array__NativeArrayopts__Option);
393 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var21;
394 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Option]>*/;
395 }
396 ((void (*)(val*, val*))(var20->class->vft[COLOR_opts__OptionContext__add_option]))(var20, var22) /* add_option on <var20:OptionContext>*/;
397 var25 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
398 var26 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__ToolContext__opt_bm_typing]))(self) /* opt_bm_typing on <self:ToolContext>*/;
399 var27 = NEW_array__Array(&type_array__Arrayopts__Option);
400 { /* var27 = array_instance Array[Option] */
401 var28 = 1;
402 var29 = NEW_array__NativeArray(var28, &type_array__NativeArrayopts__Option);
403 ((struct instance_array__NativeArray*)var29)->values[0] = (val*) var26;
404 ((void (*)(val*, val*, long))(var27->class->vft[COLOR_array__Array__with_native]))(var27, var29, var28) /* with_native on <var27:Array[Option]>*/;
405 }
406 ((void (*)(val*, val*))(var25->class->vft[COLOR_opts__OptionContext__add_option]))(var25, var27) /* add_option on <var25:OptionContext>*/;
407 var30 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
408 var31 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(self) /* opt_phmod_typing on <self:ToolContext>*/;
409 var32 = NEW_array__Array(&type_array__Arrayopts__Option);
410 { /* var32 = array_instance Array[Option] */
411 var33 = 1;
412 var34 = NEW_array__NativeArray(var33, &type_array__NativeArrayopts__Option);
413 ((struct instance_array__NativeArray*)var34)->values[0] = (val*) var31;
414 ((void (*)(val*, val*, long))(var32->class->vft[COLOR_array__Array__with_native]))(var32, var34, var33) /* with_native on <var32:Array[Option]>*/;
415 }
416 ((void (*)(val*, val*))(var30->class->vft[COLOR_opts__OptionContext__add_option]))(var30, var32) /* add_option on <var30:OptionContext>*/;
417 var35 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
418 var36 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(self) /* opt_phand_typing on <self:ToolContext>*/;
419 var37 = NEW_array__Array(&type_array__Arrayopts__Option);
420 { /* var37 = array_instance Array[Option] */
421 var38 = 1;
422 var39 = NEW_array__NativeArray(var38, &type_array__NativeArrayopts__Option);
423 ((struct instance_array__NativeArray*)var39)->values[0] = (val*) var36;
424 ((void (*)(val*, val*, long))(var37->class->vft[COLOR_array__Array__with_native]))(var37, var39, var38) /* with_native on <var37:Array[Option]>*/;
425 }
426 ((void (*)(val*, val*))(var35->class->vft[COLOR_opts__OptionContext__add_option]))(var35, var37) /* add_option on <var35:OptionContext>*/;
427 var40 = ((val* (*)(val*))(self->class->vft[COLOR_toolcontext__ToolContext__option_context]))(self) /* option_context on <self:ToolContext>*/;
428 var41 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__ToolContext__opt_tables_metrics]))(self) /* opt_tables_metrics on <self:ToolContext>*/;
429 var42 = NEW_array__Array(&type_array__Arrayopts__Option);
430 { /* var42 = array_instance Array[Option] */
431 var43 = 1;
432 var44 = NEW_array__NativeArray(var43, &type_array__NativeArrayopts__Option);
433 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var41;
434 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Option]>*/;
435 }
436 ((void (*)(val*, val*))(var40->class->vft[COLOR_opts__OptionContext__add_option]))(var40, var42) /* add_option on <var40:OptionContext>*/;
437 RET_LABEL:;
438 }
439 /* method separate_compiler#ToolContext#init for (self: Object) */
440 void VIRTUAL_separate_compiler__ToolContext__init(val* self) {
441 separate_compiler__ToolContext__init(self);
442 RET_LABEL:;
443 }
444 /* method separate_compiler#ModelBuilder#run_separate_compiler for (self: ModelBuilder, MModule, nullable RapidTypeAnalysis) */
445 void separate_compiler__ModelBuilder__run_separate_compiler(val* self, val* p0, val* p1) {
446 val* var_mainmodule /* var mainmodule: MModule */;
447 val* var_runtime_type_analysis /* var runtime_type_analysis: nullable RapidTypeAnalysis */;
448 long var /* : Int */;
449 long var_time0 /* var time0: Int */;
450 val* var1 /* : ToolContext */;
451 static val* varonce;
452 val* var2 /* : String */;
453 char* var3 /* : NativeString */;
454 long var4 /* : Int */;
455 val* var5 /* : String */;
456 long var6 /* : Int */;
457 val* var7 /* : SeparateCompiler */;
458 val* var_compiler /* var compiler: SeparateCompiler */;
459 val* var8 /* : ToolContext */;
460 static val* varonce9;
461 val* var10 /* : String */;
462 char* var11 /* : NativeString */;
463 long var12 /* : Int */;
464 val* var13 /* : String */;
465 long var14 /* : Int */;
466 val* var15 /* : String */;
467 static val* varonce16;
468 val* var17 /* : String */;
469 char* var18 /* : NativeString */;
470 long var19 /* : Int */;
471 val* var20 /* : String */;
472 val* var21 /* : Array[Object] */;
473 long var22 /* : Int */;
474 val* var23 /* : NativeArray[Object] */;
475 val* var24 /* : String */;
476 val* var25 /* : CodeFile */;
477 val* var26 /* : POSetElement[MModule] */;
478 val* var27 /* : Collection[Object] */;
479 val* var28 /* : Iterator[nullable Object] */;
480 short int var29 /* : Bool */;
481 val* var30 /* : nullable Object */;
482 val* var_m /* var m: MModule */;
483 val* var31 /* : Array[MClass] */;
484 val* var32 /* : Iterator[nullable Object] */;
485 short int var33 /* : Bool */;
486 val* var34 /* : nullable Object */;
487 val* var_mclass /* var mclass: MClass */;
488 short int var35 /* : Bool */;
489 val* var36 /* : MClassKind */;
490 val* var37 /* : MClassKind */;
491 short int var38 /* : Bool */;
492 short int var_ /* var : Bool */;
493 val* var39 /* : MClassKind */;
494 val* var40 /* : MClassKind */;
495 short int var41 /* : Bool */;
496 val* var43 /* : String */;
497 static val* varonce44;
498 val* var45 /* : String */;
499 char* var46 /* : NativeString */;
500 long var47 /* : Int */;
501 val* var48 /* : String */;
502 val* var49 /* : Array[Object] */;
503 long var50 /* : Int */;
504 val* var51 /* : NativeArray[Object] */;
505 val* var52 /* : String */;
506 val* var53 /* : CodeFile */;
507 val* var54 /* : POSetElement[MModule] */;
508 val* var55 /* : Collection[Object] */;
509 val* var56 /* : Iterator[nullable Object] */;
510 short int var57 /* : Bool */;
511 val* var58 /* : nullable Object */;
512 val* var_m59 /* var m: MModule */;
513 val* var60 /* : ToolContext */;
514 static val* varonce61;
515 val* var62 /* : String */;
516 char* var63 /* : NativeString */;
517 long var64 /* : Int */;
518 val* var65 /* : String */;
519 val* var66 /* : Array[Object] */;
520 long var67 /* : Int */;
521 val* var68 /* : NativeArray[Object] */;
522 val* var69 /* : String */;
523 long var70 /* : Int */;
524 val* var71 /* : String */;
525 static val* varonce72;
526 val* var73 /* : String */;
527 char* var74 /* : NativeString */;
528 long var75 /* : Int */;
529 val* var76 /* : String */;
530 val* var77 /* : Array[Object] */;
531 long var78 /* : Int */;
532 val* var79 /* : NativeArray[Object] */;
533 val* var80 /* : String */;
534 val* var81 /* : CodeFile */;
535 val* var83 /* : ToolContext */;
536 static val* varonce84;
537 val* var85 /* : String */;
538 char* var86 /* : NativeString */;
539 long var87 /* : Int */;
540 val* var88 /* : String */;
541 long var89 /* : Int */;
542 val* var90 /* : String */;
543 static val* varonce91;
544 val* var92 /* : String */;
545 char* var93 /* : NativeString */;
546 long var94 /* : Int */;
547 val* var95 /* : String */;
548 val* var96 /* : Array[Object] */;
549 long var97 /* : Int */;
550 val* var98 /* : NativeArray[Object] */;
551 val* var99 /* : String */;
552 val* var100 /* : CodeFile */;
553 val* var101 /* : POSet[MType] */;
554 val* var_mtypes /* var mtypes: POSet[MType] */;
555 val* var102 /* : Iterator[nullable Object] */;
556 short int var103 /* : Bool */;
557 val* var104 /* : nullable Object */;
558 val* var_t /* var t: MType */;
559 long var106 /* : Int */;
560 long var_time1 /* var time1: Int */;
561 val* var107 /* : ToolContext */;
562 static val* varonce108;
563 val* var109 /* : String */;
564 char* var110 /* : NativeString */;
565 long var111 /* : Int */;
566 val* var112 /* : String */;
567 long var113 /* : Int */;
568 long var115 /* : Int */;
569 static val* varonce116;
570 val* var117 /* : String */;
571 char* var118 /* : NativeString */;
572 long var119 /* : Int */;
573 val* var120 /* : String */;
574 val* var121 /* : Array[Object] */;
575 long var122 /* : Int */;
576 val* var123 /* : NativeArray[Object] */;
577 val* var124 /* : Object */;
578 val* var125 /* : String */;
579 long var126 /* : Int */;
580 var_mainmodule = p0;
581 var_runtime_type_analysis = p1;
582 var = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
583 var_time0 = var;
584 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
585 if (varonce) {
586 var2 = varonce;
587 } else {
588 var3 = "*** GENERATING C ***";
589 var4 = 20;
590 var5 = string__NativeString__to_s_with_length(var3, var4);
591 var2 = var5;
592 varonce = var2;
593 }
594 var6 = 1;
595 ((void (*)(val*, val*, long))(var1->class->vft[COLOR_toolcontext__ToolContext__info]))(var1, var2, var6) /* info on <var1:ToolContext>*/;
596 var7 = NEW_separate_compiler__SeparateCompiler(&type_separate_compiler__SeparateCompiler);
597 ((void (*)(val*, val*, val*, val*))(var7->class->vft[COLOR_separate_compiler__SeparateCompiler__init]))(var7, var_mainmodule, self, var_runtime_type_analysis) /* init on <var7:SeparateCompiler>*/;
598 var_compiler = var7;
599 ((void (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__compile_header]))(var_compiler) /* compile_header on <var_compiler:SeparateCompiler>*/;
600 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
601 if (varonce9) {
602 var10 = varonce9;
603 } else {
604 var11 = "Property coloring";
605 var12 = 17;
606 var13 = string__NativeString__to_s_with_length(var11, var12);
607 var10 = var13;
608 varonce9 = var10;
609 }
610 var14 = 2;
611 ((void (*)(val*, val*, long))(var8->class->vft[COLOR_toolcontext__ToolContext__info]))(var8, var10, var14) /* info on <var8:ToolContext>*/;
612 var15 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
613 if (varonce16) {
614 var17 = varonce16;
615 } else {
616 var18 = ".classes";
617 var19 = 8;
618 var20 = string__NativeString__to_s_with_length(var18, var19);
619 var17 = var20;
620 varonce16 = var17;
621 }
622 var21 = NEW_array__Array(&type_array__Arraykernel__Object);
623 { /* var21 = array_instance Array[Object] */
624 var22 = 2;
625 var23 = NEW_array__NativeArray(var22, &type_array__NativeArraykernel__Object);
626 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var15;
627 ((struct instance_array__NativeArray*)var23)->values[1] = (val*) var17;
628 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Object]>*/;
629 }
630 var24 = ((val* (*)(val*))(var21->class->vft[COLOR_string__Object__to_s]))(var21) /* to_s on <var21:Array[Object]>*/;
631 var25 = ((val* (*)(val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_file]))(var_compiler, var24) /* new_file on <var_compiler:SeparateCompiler>*/;
632 var25;
633 ((void (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__do_property_coloring]))(var_compiler) /* do_property_coloring on <var_compiler:SeparateCompiler>*/;
634 var26 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mainmodule) /* in_importation on <var_mainmodule:MModule>*/;
635 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_poset__POSetElement__greaters]))(var26) /* greaters on <var26:POSetElement[MModule]>*/;
636 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Collection__iterator]))(var27) /* iterator on <var27:Collection[Object](Collection[MModule])>*/;
637 for(;;) {
638 var29 = ((short int (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var28) /* is_ok on <var28:Iterator[nullable Object]>*/;
639 if(!var29) break;
640 var30 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__item]))(var28) /* item on <var28:Iterator[nullable Object]>*/;
641 var_m = var30;
642 var31 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MModule__intro_mclasses]))(var_m) /* intro_mclasses on <var_m:MModule>*/;
643 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_abstract_collection__Collection__iterator]))(var31) /* iterator on <var31:Array[MClass]>*/;
644 for(;;) {
645 var33 = ((short int (*)(val*))(var32->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var32) /* is_ok on <var32:Iterator[nullable Object]>*/;
646 if(!var33) break;
647 var34 = ((val* (*)(val*))(var32->class->vft[COLOR_abstract_collection__Iterator__item]))(var32) /* item on <var32:Iterator[nullable Object]>*/;
648 var_mclass = var34;
649 var36 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:MClass>*/;
650 var37 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__abstract_kind]))(self) /* abstract_kind on <self:ModelBuilder>*/;
651 var38 = ((short int (*)(val*, val*))(var36->class->vft[COLOR_kernel__Object___61d_61d]))(var36, var37) /* == on <var36:MClassKind>*/;
652 var_ = var38;
653 if (var38){
654 var35 = var_;
655 } else {
656 var39 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:MClass>*/;
657 var40 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__interface_kind]))(self) /* interface_kind on <self:ModelBuilder>*/;
658 var41 = ((short int (*)(val*, val*))(var39->class->vft[COLOR_kernel__Object___61d_61d]))(var39, var40) /* == on <var39:MClassKind>*/;
659 var35 = var41;
660 }
661 if (var35){
662 goto CONTINUE_label;
663 } else {
664 }
665 ((void (*)(val*, val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_class_to_c]))(var_compiler, var_mclass) /* compile_class_to_c on <var_compiler:SeparateCompiler>*/;
666 CONTINUE_label: (void)0;
667 ((void (*)(val*))(var32->class->vft[COLOR_abstract_collection__Iterator__next]))(var32) /* next on <var32:Iterator[nullable Object]>*/;
668 }
669 BREAK_label: (void)0;
670 CONTINUE_label42: (void)0;
671 ((void (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__next]))(var28) /* next on <var28:Iterator[nullable Object]>*/;
672 }
673 BREAK_label42: (void)0;
674 var43 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
675 if (varonce44) {
676 var45 = varonce44;
677 } else {
678 var46 = ".main";
679 var47 = 5;
680 var48 = string__NativeString__to_s_with_length(var46, var47);
681 var45 = var48;
682 varonce44 = var45;
683 }
684 var49 = NEW_array__Array(&type_array__Arraykernel__Object);
685 { /* var49 = array_instance Array[Object] */
686 var50 = 2;
687 var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object);
688 ((struct instance_array__NativeArray*)var51)->values[0] = (val*) var43;
689 ((struct instance_array__NativeArray*)var51)->values[1] = (val*) var45;
690 ((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
691 }
692 var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
693 var53 = ((val* (*)(val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_file]))(var_compiler, var52) /* new_file on <var_compiler:SeparateCompiler>*/;
694 var53;
695 ((void (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__compile_main_function]))(var_compiler) /* compile_main_function on <var_compiler:SeparateCompiler>*/;
696 var54 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mainmodule) /* in_importation on <var_mainmodule:MModule>*/;
697 var55 = ((val* (*)(val*))(var54->class->vft[COLOR_poset__POSetElement__greaters]))(var54) /* greaters on <var54:POSetElement[MModule]>*/;
698 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_abstract_collection__Collection__iterator]))(var55) /* iterator on <var55:Collection[Object](Collection[MModule])>*/;
699 for(;;) {
700 var57 = ((short int (*)(val*))(var56->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var56) /* is_ok on <var56:Iterator[nullable Object]>*/;
701 if(!var57) break;
702 var58 = ((val* (*)(val*))(var56->class->vft[COLOR_abstract_collection__Iterator__item]))(var56) /* item on <var56:Iterator[nullable Object]>*/;
703 var_m59 = var58;
704 var60 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
705 if (varonce61) {
706 var62 = varonce61;
707 } else {
708 var63 = "Generate C for module ";
709 var64 = 22;
710 var65 = string__NativeString__to_s_with_length(var63, var64);
711 var62 = var65;
712 varonce61 = var62;
713 }
714 var66 = NEW_array__Array(&type_array__Arraykernel__Object);
715 { /* var66 = array_instance Array[Object] */
716 var67 = 2;
717 var68 = NEW_array__NativeArray(var67, &type_array__NativeArraykernel__Object);
718 ((struct instance_array__NativeArray*)var68)->values[0] = (val*) var62;
719 ((struct instance_array__NativeArray*)var68)->values[1] = (val*) var_m59;
720 ((void (*)(val*, val*, long))(var66->class->vft[COLOR_array__Array__with_native]))(var66, var68, var67) /* with_native on <var66:Array[Object]>*/;
721 }
722 var69 = ((val* (*)(val*))(var66->class->vft[COLOR_string__Object__to_s]))(var66) /* to_s on <var66:Array[Object]>*/;
723 var70 = 2;
724 ((void (*)(val*, val*, long))(var60->class->vft[COLOR_toolcontext__ToolContext__info]))(var60, var69, var70) /* info on <var60:ToolContext>*/;
725 var71 = ((val* (*)(val*))(var_m59->class->vft[COLOR_mmodule__MModule__name]))(var_m59) /* name on <var_m59:MModule>*/;
726 if (varonce72) {
727 var73 = varonce72;
728 } else {
729 var74 = ".sep";
730 var75 = 4;
731 var76 = string__NativeString__to_s_with_length(var74, var75);
732 var73 = var76;
733 varonce72 = var73;
734 }
735 var77 = NEW_array__Array(&type_array__Arraykernel__Object);
736 { /* var77 = array_instance Array[Object] */
737 var78 = 2;
738 var79 = NEW_array__NativeArray(var78, &type_array__NativeArraykernel__Object);
739 ((struct instance_array__NativeArray*)var79)->values[0] = (val*) var71;
740 ((struct instance_array__NativeArray*)var79)->values[1] = (val*) var73;
741 ((void (*)(val*, val*, long))(var77->class->vft[COLOR_array__Array__with_native]))(var77, var79, var78) /* with_native on <var77:Array[Object]>*/;
742 }
743 var80 = ((val* (*)(val*))(var77->class->vft[COLOR_string__Object__to_s]))(var77) /* to_s on <var77:Array[Object]>*/;
744 var81 = ((val* (*)(val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_file]))(var_compiler, var80) /* new_file on <var_compiler:SeparateCompiler>*/;
745 var81;
746 ((void (*)(val*, val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_module_to_c]))(var_compiler, var_m59) /* compile_module_to_c on <var_compiler:SeparateCompiler>*/;
747 CONTINUE_label82: (void)0;
748 ((void (*)(val*))(var56->class->vft[COLOR_abstract_collection__Iterator__next]))(var56) /* next on <var56:Iterator[nullable Object]>*/;
749 }
750 BREAK_label82: (void)0;
751 var83 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
752 if (varonce84) {
753 var85 = varonce84;
754 } else {
755 var86 = "Type coloring";
756 var87 = 13;
757 var88 = string__NativeString__to_s_with_length(var86, var87);
758 var85 = var88;
759 varonce84 = var85;
760 }
761 var89 = 2;
762 ((void (*)(val*, val*, long))(var83->class->vft[COLOR_toolcontext__ToolContext__info]))(var83, var85, var89) /* info on <var83:ToolContext>*/;
763 var90 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
764 if (varonce91) {
765 var92 = varonce91;
766 } else {
767 var93 = ".types";
768 var94 = 6;
769 var95 = string__NativeString__to_s_with_length(var93, var94);
770 var92 = var95;
771 varonce91 = var92;
772 }
773 var96 = NEW_array__Array(&type_array__Arraykernel__Object);
774 { /* var96 = array_instance Array[Object] */
775 var97 = 2;
776 var98 = NEW_array__NativeArray(var97, &type_array__NativeArraykernel__Object);
777 ((struct instance_array__NativeArray*)var98)->values[0] = (val*) var90;
778 ((struct instance_array__NativeArray*)var98)->values[1] = (val*) var92;
779 ((void (*)(val*, val*, long))(var96->class->vft[COLOR_array__Array__with_native]))(var96, var98, var97) /* with_native on <var96:Array[Object]>*/;
780 }
781 var99 = ((val* (*)(val*))(var96->class->vft[COLOR_string__Object__to_s]))(var96) /* to_s on <var96:Array[Object]>*/;
782 var100 = ((val* (*)(val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_file]))(var_compiler, var99) /* new_file on <var_compiler:SeparateCompiler>*/;
783 var100;
784 var101 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__do_type_coloring]))(var_compiler) /* do_type_coloring on <var_compiler:SeparateCompiler>*/;
785 var_mtypes = var101;
786 var102 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:POSet[MType]>*/;
787 for(;;) {
788 var103 = ((short int (*)(val*))(var102->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var102) /* is_ok on <var102:Iterator[nullable Object]>*/;
789 if(!var103) break;
790 var104 = ((val* (*)(val*))(var102->class->vft[COLOR_abstract_collection__Iterator__item]))(var102) /* item on <var102:Iterator[nullable Object]>*/;
791 var_t = var104;
792 ((void (*)(val*, val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_type_to_c]))(var_compiler, var_t) /* compile_type_to_c on <var_compiler:SeparateCompiler>*/;
793 CONTINUE_label105: (void)0;
794 ((void (*)(val*))(var102->class->vft[COLOR_abstract_collection__Iterator__next]))(var102) /* next on <var102:Iterator[nullable Object]>*/;
795 }
796 BREAK_label105: (void)0;
797 ((void (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__display_stats]))(var_compiler) /* display_stats on <var_compiler:SeparateCompiler>*/;
798 var106 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
799 var_time1 = var106;
800 var107 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
801 if (varonce108) {
802 var109 = varonce108;
803 } else {
804 var110 = "*** END GENERATING C: ";
805 var111 = 22;
806 var112 = string__NativeString__to_s_with_length(var110, var111);
807 var109 = var112;
808 varonce108 = var109;
809 }
810 { /* Inline kernel#Int#- (var_time1,var_time0) */
811 var115 = var_time1 - var_time0;
812 var113 = var115;
813 goto RET_LABEL114;
814 RET_LABEL114:(void)0;
815 }
816 if (varonce116) {
817 var117 = varonce116;
818 } else {
819 var118 = " ***";
820 var119 = 4;
821 var120 = string__NativeString__to_s_with_length(var118, var119);
822 var117 = var120;
823 varonce116 = var117;
824 }
825 var121 = NEW_array__Array(&type_array__Arraykernel__Object);
826 { /* var121 = array_instance Array[Object] */
827 var122 = 3;
828 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object);
829 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var109;
830 var124 = BOX_kernel__Int(var113); /* autobox from Int to Object */
831 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var124;
832 ((struct instance_array__NativeArray*)var123)->values[2] = (val*) var117;
833 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[Object]>*/;
834 }
835 var125 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on <var121:Array[Object]>*/;
836 var126 = 2;
837 ((void (*)(val*, val*, long))(var107->class->vft[COLOR_toolcontext__ToolContext__info]))(var107, var125, var126) /* info on <var107:ToolContext>*/;
838 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__write_and_make]))(self, var_compiler) /* write_and_make on <self:ModelBuilder>*/;
839 RET_LABEL:;
840 }
841 /* method separate_compiler#ModelBuilder#run_separate_compiler for (self: Object, MModule, nullable RapidTypeAnalysis) */
842 void VIRTUAL_separate_compiler__ModelBuilder__run_separate_compiler(val* self, val* p0, val* p1) {
843 separate_compiler__ModelBuilder__run_separate_compiler(self, p0, p1);
844 RET_LABEL:;
845 }
846 /* method separate_compiler#SeparateCompiler#runtime_type_analysis for (self: SeparateCompiler): nullable RapidTypeAnalysis */
847 val* separate_compiler__SeparateCompiler__runtime_type_analysis(val* self) {
848 val* var /* : nullable RapidTypeAnalysis */;
849 val* var1 /* : nullable RapidTypeAnalysis */;
850 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64druntime_type_analysis].val; /* @runtime_type_analysis on <self:SeparateCompiler> */
851 var = var1;
852 RET_LABEL:;
853 return var;
854 }
855 /* method separate_compiler#SeparateCompiler#runtime_type_analysis for (self: Object): nullable RapidTypeAnalysis */
856 val* VIRTUAL_separate_compiler__SeparateCompiler__runtime_type_analysis(val* self) {
857 val* var /* : nullable RapidTypeAnalysis */;
858 val* var1 /* : nullable RapidTypeAnalysis */;
859 var1 = separate_compiler__SeparateCompiler__runtime_type_analysis(self);
860 var = var1;
861 RET_LABEL:;
862 return var;
863 }
864 /* method separate_compiler#SeparateCompiler#runtime_type_analysis= for (self: SeparateCompiler, nullable RapidTypeAnalysis) */
865 void separate_compiler__SeparateCompiler__runtime_type_analysis_61d(val* self, val* p0) {
866 self->attrs[COLOR_separate_compiler__SeparateCompiler___64druntime_type_analysis].val = p0; /* @runtime_type_analysis on <self:SeparateCompiler> */
867 RET_LABEL:;
868 }
869 /* method separate_compiler#SeparateCompiler#runtime_type_analysis= for (self: Object, nullable RapidTypeAnalysis) */
870 void VIRTUAL_separate_compiler__SeparateCompiler__runtime_type_analysis_61d(val* self, val* p0) {
871 separate_compiler__SeparateCompiler__runtime_type_analysis_61d(self, p0);
872 RET_LABEL:;
873 }
874 /* method separate_compiler#SeparateCompiler#undead_types for (self: SeparateCompiler): Set[MType] */
875 val* separate_compiler__SeparateCompiler__undead_types(val* self) {
876 val* var /* : Set[MType] */;
877 val* var1 /* : Set[MType] */;
878 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dundead_types].val; /* @undead_types on <self:SeparateCompiler> */
879 if (var1 == NULL) {
880 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @undead_types");
881 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 115);
882 show_backtrace(1);
883 }
884 var = var1;
885 RET_LABEL:;
886 return var;
887 }
888 /* method separate_compiler#SeparateCompiler#undead_types for (self: Object): Set[MType] */
889 val* VIRTUAL_separate_compiler__SeparateCompiler__undead_types(val* self) {
890 val* var /* : Set[MType] */;
891 val* var1 /* : Set[MType] */;
892 var1 = separate_compiler__SeparateCompiler__undead_types(self);
893 var = var1;
894 RET_LABEL:;
895 return var;
896 }
897 /* method separate_compiler#SeparateCompiler#undead_types= for (self: SeparateCompiler, Set[MType]) */
898 void separate_compiler__SeparateCompiler__undead_types_61d(val* self, val* p0) {
899 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dundead_types].val = p0; /* @undead_types on <self:SeparateCompiler> */
900 RET_LABEL:;
901 }
902 /* method separate_compiler#SeparateCompiler#undead_types= for (self: Object, Set[MType]) */
903 void VIRTUAL_separate_compiler__SeparateCompiler__undead_types_61d(val* self, val* p0) {
904 separate_compiler__SeparateCompiler__undead_types_61d(self, p0);
905 RET_LABEL:;
906 }
907 /* method separate_compiler#SeparateCompiler#partial_types for (self: SeparateCompiler): Set[MType] */
908 val* separate_compiler__SeparateCompiler__partial_types(val* self) {
909 val* var /* : Set[MType] */;
910 val* var1 /* : Set[MType] */;
911 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dpartial_types].val; /* @partial_types on <self:SeparateCompiler> */
912 if (var1 == NULL) {
913 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @partial_types");
914 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 116);
915 show_backtrace(1);
916 }
917 var = var1;
918 RET_LABEL:;
919 return var;
920 }
921 /* method separate_compiler#SeparateCompiler#partial_types for (self: Object): Set[MType] */
922 val* VIRTUAL_separate_compiler__SeparateCompiler__partial_types(val* self) {
923 val* var /* : Set[MType] */;
924 val* var1 /* : Set[MType] */;
925 var1 = separate_compiler__SeparateCompiler__partial_types(self);
926 var = var1;
927 RET_LABEL:;
928 return var;
929 }
930 /* method separate_compiler#SeparateCompiler#partial_types= for (self: SeparateCompiler, Set[MType]) */
931 void separate_compiler__SeparateCompiler__partial_types_61d(val* self, val* p0) {
932 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dpartial_types].val = p0; /* @partial_types on <self:SeparateCompiler> */
933 RET_LABEL:;
934 }
935 /* method separate_compiler#SeparateCompiler#partial_types= for (self: Object, Set[MType]) */
936 void VIRTUAL_separate_compiler__SeparateCompiler__partial_types_61d(val* self, val* p0) {
937 separate_compiler__SeparateCompiler__partial_types_61d(self, p0);
938 RET_LABEL:;
939 }
940 /* method separate_compiler#SeparateCompiler#live_unresolved_types for (self: SeparateCompiler): Map[MClassDef, Set[MType]] */
941 val* separate_compiler__SeparateCompiler__live_unresolved_types(val* self) {
942 val* var /* : Map[MClassDef, Set[MType]] */;
943 val* var1 /* : Map[MClassDef, Set[MType]] */;
944 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dlive_unresolved_types].val; /* @live_unresolved_types on <self:SeparateCompiler> */
945 if (var1 == NULL) {
946 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @live_unresolved_types");
947 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 117);
948 show_backtrace(1);
949 }
950 var = var1;
951 RET_LABEL:;
952 return var;
953 }
954 /* method separate_compiler#SeparateCompiler#live_unresolved_types for (self: Object): Map[MClassDef, Set[MType]] */
955 val* VIRTUAL_separate_compiler__SeparateCompiler__live_unresolved_types(val* self) {
956 val* var /* : Map[MClassDef, Set[MType]] */;
957 val* var1 /* : Map[MClassDef, Set[MType]] */;
958 var1 = separate_compiler__SeparateCompiler__live_unresolved_types(self);
959 var = var1;
960 RET_LABEL:;
961 return var;
962 }
963 /* method separate_compiler#SeparateCompiler#live_unresolved_types= for (self: SeparateCompiler, Map[MClassDef, Set[MType]]) */
964 void separate_compiler__SeparateCompiler__live_unresolved_types_61d(val* self, val* p0) {
965 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dlive_unresolved_types].val = p0; /* @live_unresolved_types on <self:SeparateCompiler> */
966 RET_LABEL:;
967 }
968 /* method separate_compiler#SeparateCompiler#live_unresolved_types= for (self: Object, Map[MClassDef, Set[MType]]) */
969 void VIRTUAL_separate_compiler__SeparateCompiler__live_unresolved_types_61d(val* self, val* p0) {
970 separate_compiler__SeparateCompiler__live_unresolved_types_61d(self, p0);
971 RET_LABEL:;
972 }
973 /* method separate_compiler#SeparateCompiler#type_layout for (self: SeparateCompiler): nullable Layout[MType] */
974 val* separate_compiler__SeparateCompiler__type_layout(val* self) {
975 val* var /* : nullable Layout[MType] */;
976 val* var1 /* : nullable Layout[MType] */;
977 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dtype_layout].val; /* @type_layout on <self:SeparateCompiler> */
978 var = var1;
979 RET_LABEL:;
980 return var;
981 }
982 /* method separate_compiler#SeparateCompiler#type_layout for (self: Object): nullable Layout[MType] */
983 val* VIRTUAL_separate_compiler__SeparateCompiler__type_layout(val* self) {
984 val* var /* : nullable Layout[MType] */;
985 val* var1 /* : nullable Layout[MType] */;
986 var1 = separate_compiler__SeparateCompiler__type_layout(self);
987 var = var1;
988 RET_LABEL:;
989 return var;
990 }
991 /* method separate_compiler#SeparateCompiler#type_layout= for (self: SeparateCompiler, nullable Layout[MType]) */
992 void separate_compiler__SeparateCompiler__type_layout_61d(val* self, val* p0) {
993 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dtype_layout].val = p0; /* @type_layout on <self:SeparateCompiler> */
994 RET_LABEL:;
995 }
996 /* method separate_compiler#SeparateCompiler#type_layout= for (self: Object, nullable Layout[MType]) */
997 void VIRTUAL_separate_compiler__SeparateCompiler__type_layout_61d(val* self, val* p0) {
998 separate_compiler__SeparateCompiler__type_layout_61d(self, p0);
999 RET_LABEL:;
1000 }
1001 /* method separate_compiler#SeparateCompiler#resolution_layout for (self: SeparateCompiler): nullable Layout[MType] */
1002 val* separate_compiler__SeparateCompiler__resolution_layout(val* self) {
1003 val* var /* : nullable Layout[MType] */;
1004 val* var1 /* : nullable Layout[MType] */;
1005 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dresolution_layout].val; /* @resolution_layout on <self:SeparateCompiler> */
1006 var = var1;
1007 RET_LABEL:;
1008 return var;
1009 }
1010 /* method separate_compiler#SeparateCompiler#resolution_layout for (self: Object): nullable Layout[MType] */
1011 val* VIRTUAL_separate_compiler__SeparateCompiler__resolution_layout(val* self) {
1012 val* var /* : nullable Layout[MType] */;
1013 val* var1 /* : nullable Layout[MType] */;
1014 var1 = separate_compiler__SeparateCompiler__resolution_layout(self);
1015 var = var1;
1016 RET_LABEL:;
1017 return var;
1018 }
1019 /* method separate_compiler#SeparateCompiler#resolution_layout= for (self: SeparateCompiler, nullable Layout[MType]) */
1020 void separate_compiler__SeparateCompiler__resolution_layout_61d(val* self, val* p0) {
1021 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dresolution_layout].val = p0; /* @resolution_layout on <self:SeparateCompiler> */
1022 RET_LABEL:;
1023 }
1024 /* method separate_compiler#SeparateCompiler#resolution_layout= for (self: Object, nullable Layout[MType]) */
1025 void VIRTUAL_separate_compiler__SeparateCompiler__resolution_layout_61d(val* self, val* p0) {
1026 separate_compiler__SeparateCompiler__resolution_layout_61d(self, p0);
1027 RET_LABEL:;
1028 }
1029 /* method separate_compiler#SeparateCompiler#method_layout for (self: SeparateCompiler): nullable Layout[PropertyLayoutElement] */
1030 val* separate_compiler__SeparateCompiler__method_layout(val* self) {
1031 val* var /* : nullable Layout[PropertyLayoutElement] */;
1032 val* var1 /* : nullable Layout[PropertyLayoutElement] */;
1033 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dmethod_layout].val; /* @method_layout on <self:SeparateCompiler> */
1034 var = var1;
1035 RET_LABEL:;
1036 return var;
1037 }
1038 /* method separate_compiler#SeparateCompiler#method_layout for (self: Object): nullable Layout[PropertyLayoutElement] */
1039 val* VIRTUAL_separate_compiler__SeparateCompiler__method_layout(val* self) {
1040 val* var /* : nullable Layout[PropertyLayoutElement] */;
1041 val* var1 /* : nullable Layout[PropertyLayoutElement] */;
1042 var1 = separate_compiler__SeparateCompiler__method_layout(self);
1043 var = var1;
1044 RET_LABEL:;
1045 return var;
1046 }
1047 /* method separate_compiler#SeparateCompiler#method_layout= for (self: SeparateCompiler, nullable Layout[PropertyLayoutElement]) */
1048 void separate_compiler__SeparateCompiler__method_layout_61d(val* self, val* p0) {
1049 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dmethod_layout].val = p0; /* @method_layout on <self:SeparateCompiler> */
1050 RET_LABEL:;
1051 }
1052 /* method separate_compiler#SeparateCompiler#method_layout= for (self: Object, nullable Layout[PropertyLayoutElement]) */
1053 void VIRTUAL_separate_compiler__SeparateCompiler__method_layout_61d(val* self, val* p0) {
1054 separate_compiler__SeparateCompiler__method_layout_61d(self, p0);
1055 RET_LABEL:;
1056 }
1057 /* method separate_compiler#SeparateCompiler#attr_layout for (self: SeparateCompiler): nullable Layout[MAttribute] */
1058 val* separate_compiler__SeparateCompiler__attr_layout(val* self) {
1059 val* var /* : nullable Layout[MAttribute] */;
1060 val* var1 /* : nullable Layout[MAttribute] */;
1061 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dattr_layout].val; /* @attr_layout on <self:SeparateCompiler> */
1062 var = var1;
1063 RET_LABEL:;
1064 return var;
1065 }
1066 /* method separate_compiler#SeparateCompiler#attr_layout for (self: Object): nullable Layout[MAttribute] */
1067 val* VIRTUAL_separate_compiler__SeparateCompiler__attr_layout(val* self) {
1068 val* var /* : nullable Layout[MAttribute] */;
1069 val* var1 /* : nullable Layout[MAttribute] */;
1070 var1 = separate_compiler__SeparateCompiler__attr_layout(self);
1071 var = var1;
1072 RET_LABEL:;
1073 return var;
1074 }
1075 /* method separate_compiler#SeparateCompiler#attr_layout= for (self: SeparateCompiler, nullable Layout[MAttribute]) */
1076 void separate_compiler__SeparateCompiler__attr_layout_61d(val* self, val* p0) {
1077 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dattr_layout].val = p0; /* @attr_layout on <self:SeparateCompiler> */
1078 RET_LABEL:;
1079 }
1080 /* method separate_compiler#SeparateCompiler#attr_layout= for (self: Object, nullable Layout[MAttribute]) */
1081 void VIRTUAL_separate_compiler__SeparateCompiler__attr_layout_61d(val* self, val* p0) {
1082 separate_compiler__SeparateCompiler__attr_layout_61d(self, p0);
1083 RET_LABEL:;
1084 }
1085 /* method separate_compiler#SeparateCompiler#init for (self: SeparateCompiler, MModule, ModelBuilder, nullable RapidTypeAnalysis) */
1086 void separate_compiler__SeparateCompiler__init(val* self, val* p0, val* p1, val* p2) {
1087 val* var_mainmodule /* var mainmodule: MModule */;
1088 val* var_mmbuilder /* var mmbuilder: ModelBuilder */;
1089 val* var_runtime_type_analysis /* var runtime_type_analysis: nullable RapidTypeAnalysis */;
1090 static val* varonce;
1091 val* var /* : String */;
1092 char* var1 /* : NativeString */;
1093 long var2 /* : Int */;
1094 val* var3 /* : String */;
1095 val* var4 /* : CodeFile */;
1096 val* var_file /* var file: CodeFile */;
1097 val* var5 /* : CodeWriter */;
1098 var_mainmodule = p0;
1099 var_mmbuilder = p1;
1100 var_runtime_type_analysis = p2;
1101 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__init]))(self, var_mainmodule, var_mmbuilder) /* init on <self:SeparateCompiler>*/;
1102 if (varonce) {
1103 var = varonce;
1104 } else {
1105 var1 = "nit.common";
1106 var2 = 10;
1107 var3 = string__NativeString__to_s_with_length(var1, var2);
1108 var = var3;
1109 varonce = var;
1110 }
1111 var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_file]))(self, var) /* new_file on <self:SeparateCompiler>*/;
1112 var_file = var4;
1113 var5 = NEW_abstract_compiler__CodeWriter(&type_abstract_compiler__CodeWriter);
1114 ((void (*)(val*, val*))(var5->class->vft[COLOR_abstract_compiler__CodeWriter__init]))(var5, var_file) /* init on <var5:CodeWriter>*/;
1115 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header_61d]))(self, var5) /* header= on <self:SeparateCompiler>*/;
1116 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis_61d]))(self, var_runtime_type_analysis) /* runtime_type_analysis= on <self:SeparateCompiler>*/;
1117 ((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_box_kinds]))(self) /* compile_box_kinds on <self:SeparateCompiler>*/;
1118 RET_LABEL:;
1119 }
1120 /* method separate_compiler#SeparateCompiler#init for (self: Object, MModule, ModelBuilder, nullable RapidTypeAnalysis) */
1121 void VIRTUAL_separate_compiler__SeparateCompiler__init(val* self, val* p0, val* p1, val* p2) {
1122 separate_compiler__SeparateCompiler__init(self, p0, p1, p2);
1123 RET_LABEL:;
1124 }
1125 /* method separate_compiler#SeparateCompiler#compile_header_structs for (self: SeparateCompiler) */
1126 void separate_compiler__SeparateCompiler__compile_header_structs(val* self) {
1127 val* var /* : CodeWriter */;
1128 static val* varonce;
1129 val* var1 /* : String */;
1130 char* var2 /* : NativeString */;
1131 long var3 /* : Int */;
1132 val* var4 /* : String */;
1133 val* var5 /* : CodeWriter */;
1134 static val* varonce6;
1135 val* var7 /* : String */;
1136 char* var8 /* : NativeString */;
1137 long var9 /* : Int */;
1138 val* var10 /* : String */;
1139 val* var11 /* : CodeWriter */;
1140 static val* varonce12;
1141 val* var13 /* : String */;
1142 char* var14 /* : NativeString */;
1143 long var15 /* : Int */;
1144 val* var16 /* : String */;
1145 val* var17 /* : CodeWriter */;
1146 static val* varonce18;
1147 val* var19 /* : String */;
1148 char* var20 /* : NativeString */;
1149 long var21 /* : Int */;
1150 val* var22 /* : String */;
1151 short int var23 /* : Bool */;
1152 val* var24 /* : ModelBuilder */;
1153 val* var25 /* : ToolContext */;
1154 val* var26 /* : OptionBool */;
1155 val* var27 /* : nullable Object */;
1156 short int var28 /* : Bool */;
1157 short int var_ /* var : Bool */;
1158 val* var29 /* : ModelBuilder */;
1159 val* var30 /* : ToolContext */;
1160 val* var31 /* : OptionBool */;
1161 val* var32 /* : nullable Object */;
1162 short int var33 /* : Bool */;
1163 val* var34 /* : CodeWriter */;
1164 static val* varonce35;
1165 val* var36 /* : String */;
1166 char* var37 /* : NativeString */;
1167 long var38 /* : Int */;
1168 val* var39 /* : String */;
1169 val* var40 /* : CodeWriter */;
1170 static val* varonce41;
1171 val* var42 /* : String */;
1172 char* var43 /* : NativeString */;
1173 long var44 /* : Int */;
1174 val* var45 /* : String */;
1175 val* var46 /* : ModelBuilder */;
1176 val* var47 /* : ToolContext */;
1177 val* var48 /* : OptionBool */;
1178 val* var49 /* : nullable Object */;
1179 short int var50 /* : Bool */;
1180 val* var51 /* : CodeWriter */;
1181 static val* varonce52;
1182 val* var53 /* : String */;
1183 char* var54 /* : NativeString */;
1184 long var55 /* : Int */;
1185 val* var56 /* : String */;
1186 val* var57 /* : ModelBuilder */;
1187 val* var58 /* : ToolContext */;
1188 val* var59 /* : OptionBool */;
1189 val* var60 /* : nullable Object */;
1190 short int var61 /* : Bool */;
1191 val* var62 /* : CodeWriter */;
1192 static val* varonce63;
1193 val* var64 /* : String */;
1194 char* var65 /* : NativeString */;
1195 long var66 /* : Int */;
1196 val* var67 /* : String */;
1197 val* var68 /* : CodeWriter */;
1198 static val* varonce69;
1199 val* var70 /* : String */;
1200 char* var71 /* : NativeString */;
1201 long var72 /* : Int */;
1202 val* var73 /* : String */;
1203 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1204 if (varonce) {
1205 var1 = varonce;
1206 } else {
1207 var2 = "typedef void(*nitmethod_t)(void); /* general C type representing a Nit method. */";
1208 var3 = 81;
1209 var4 = string__NativeString__to_s_with_length(var2, var3);
1210 var1 = var4;
1211 varonce = var1;
1212 }
1213 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var, var1) /* add_decl on <var:CodeWriter>*/;
1214 ((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_header_attribute_structs]))(self) /* compile_header_attribute_structs on <self:SeparateCompiler>*/;
1215 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1216 if (varonce6) {
1217 var7 = varonce6;
1218 } else {
1219 var8 = "struct class { int box_kind; nitmethod_t vft[]; }; /* general C type representing a Nit class. */";
1220 var9 = 97;
1221 var10 = string__NativeString__to_s_with_length(var8, var9);
1222 var7 = var10;
1223 varonce6 = var7;
1224 }
1225 ((void (*)(val*, val*))(var5->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var5, var7) /* add_decl on <var5:CodeWriter>*/;
1226 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1227 if (varonce12) {
1228 var13 = varonce12;
1229 } else {
1230 var14 = "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. */";
1231 var15 = 194;
1232 var16 = string__NativeString__to_s_with_length(var14, var15);
1233 var13 = var16;
1234 varonce12 = var13;
1235 }
1236 ((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var11, var13) /* add_decl on <var11:CodeWriter>*/;
1237 var17 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1238 if (varonce18) {
1239 var19 = varonce18;
1240 } else {
1241 var20 = "struct instance { const struct type *type; const struct class *class; nitattribute_t attrs[]; }; /* general C type representing a Nit instance. */";
1242 var21 = 146;
1243 var22 = string__NativeString__to_s_with_length(var20, var21);
1244 var19 = var22;
1245 varonce18 = var19;
1246 }
1247 ((void (*)(val*, val*))(var17->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var17, var19) /* add_decl on <var17:CodeWriter>*/;
1248 var24 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
1249 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var24) /* toolcontext on <var24:ModelBuilder>*/;
1250 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var25) /* opt_phmod_typing on <var25:ToolContext>*/;
1251 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_opts__Option__value]))(var26) /* value on <var26:OptionBool>*/;
1252 var28 = ((struct instance_kernel__Bool*)var27)->value; /* autounbox from nullable Object to Bool */;
1253 var_ = var28;
1254 if (var28){
1255 var23 = var_;
1256 } else {
1257 var29 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
1258 var30 = ((val* (*)(val*))(var29->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var29) /* toolcontext on <var29:ModelBuilder>*/;
1259 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var30) /* opt_phand_typing on <var30:ToolContext>*/;
1260 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_opts__Option__value]))(var31) /* value on <var31:OptionBool>*/;
1261 var33 = ((struct instance_kernel__Bool*)var32)->value; /* autounbox from nullable Object to Bool */;
1262 var23 = var33;
1263 }
1264 if (var23){
1265 var34 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1266 if (varonce35) {
1267 var36 = varonce35;
1268 } else {
1269 var37 = "struct types { int mask; const struct type *types[]; }; /* a list types (used for vts, fts and unresolved lists). */";
1270 var38 = 116;
1271 var39 = string__NativeString__to_s_with_length(var37, var38);
1272 var36 = var39;
1273 varonce35 = var36;
1274 }
1275 ((void (*)(val*, val*))(var34->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var34, var36) /* add_decl on <var34:CodeWriter>*/;
1276 } else {
1277 var40 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1278 if (varonce41) {
1279 var42 = varonce41;
1280 } else {
1281 var43 = "struct types { int dummy; const struct type *types[]; }; /* a list types (used for vts, fts and unresolved lists). */";
1282 var44 = 117;
1283 var45 = string__NativeString__to_s_with_length(var43, var44);
1284 var42 = var45;
1285 varonce41 = var42;
1286 }
1287 ((void (*)(val*, val*))(var40->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var40, var42) /* add_decl on <var40:CodeWriter>*/;
1288 }
1289 var46 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
1290 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var46) /* toolcontext on <var46:ModelBuilder>*/;
1291 var48 = ((val* (*)(val*))(var47->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var47) /* opt_phmod_typing on <var47:ToolContext>*/;
1292 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_opts__Option__value]))(var48) /* value on <var48:OptionBool>*/;
1293 var50 = ((struct instance_kernel__Bool*)var49)->value; /* autounbox from nullable Object to Bool */;
1294 if (var50){
1295 var51 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1296 if (varonce52) {
1297 var53 = varonce52;
1298 } else {
1299 var54 = "#define HASH(mask, id) ((mask)%(id))";
1300 var55 = 36;
1301 var56 = string__NativeString__to_s_with_length(var54, var55);
1302 var53 = var56;
1303 varonce52 = var53;
1304 }
1305 ((void (*)(val*, val*))(var51->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var51, var53) /* add_decl on <var51:CodeWriter>*/;
1306 } else {
1307 var57 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
1308 var58 = ((val* (*)(val*))(var57->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var57) /* toolcontext on <var57:ModelBuilder>*/;
1309 var59 = ((val* (*)(val*))(var58->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var58) /* opt_phand_typing on <var58:ToolContext>*/;
1310 var60 = ((val* (*)(val*))(var59->class->vft[COLOR_opts__Option__value]))(var59) /* value on <var59:OptionBool>*/;
1311 var61 = ((struct instance_kernel__Bool*)var60)->value; /* autounbox from nullable Object to Bool */;
1312 if (var61){
1313 var62 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1314 if (varonce63) {
1315 var64 = varonce63;
1316 } else {
1317 var65 = "#define HASH(mask, id) ((mask)&(id))";
1318 var66 = 36;
1319 var67 = string__NativeString__to_s_with_length(var65, var66);
1320 var64 = var67;
1321 varonce63 = var64;
1322 }
1323 ((void (*)(val*, val*))(var62->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var62, var64) /* add_decl on <var62:CodeWriter>*/;
1324 } else {
1325 }
1326 }
1327 var68 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1328 if (varonce69) {
1329 var70 = varonce69;
1330 } else {
1331 var71 = "typedef struct instance val; /* general C type representing a Nit instance. */";
1332 var72 = 78;
1333 var73 = string__NativeString__to_s_with_length(var71, var72);
1334 var70 = var73;
1335 varonce69 = var70;
1336 }
1337 ((void (*)(val*, val*))(var68->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var68, var70) /* add_decl on <var68:CodeWriter>*/;
1338 RET_LABEL:;
1339 }
1340 /* method separate_compiler#SeparateCompiler#compile_header_structs for (self: Object) */
1341 void VIRTUAL_separate_compiler__SeparateCompiler__compile_header_structs(val* self) {
1342 separate_compiler__SeparateCompiler__compile_header_structs(self);
1343 RET_LABEL:;
1344 }
1345 /* method separate_compiler#SeparateCompiler#compile_header_attribute_structs for (self: SeparateCompiler) */
1346 void separate_compiler__SeparateCompiler__compile_header_attribute_structs(val* self) {
1347 val* var /* : ModelBuilder */;
1348 val* var1 /* : ToolContext */;
1349 val* var2 /* : OptionBool */;
1350 val* var3 /* : nullable Object */;
1351 short int var4 /* : Bool */;
1352 val* var5 /* : CodeWriter */;
1353 static val* varonce;
1354 val* var6 /* : String */;
1355 char* var7 /* : NativeString */;
1356 long var8 /* : Int */;
1357 val* var9 /* : String */;
1358 val* var10 /* : CodeWriter */;
1359 static val* varonce11;
1360 val* var12 /* : String */;
1361 char* var13 /* : NativeString */;
1362 long var14 /* : Int */;
1363 val* var15 /* : String */;
1364 val* var16 /* : CodeWriter */;
1365 static val* varonce17;
1366 val* var18 /* : String */;
1367 char* var19 /* : NativeString */;
1368 long var20 /* : Int */;
1369 val* var21 /* : String */;
1370 val* var22 /* : HashMap[MClass, Int] */;
1371 val* var23 /* : MapIterator[Object, nullable Object] */;
1372 short int var24 /* : Bool */;
1373 val* var25 /* : Object */;
1374 val* var_c /* var c: MClass */;
1375 val* var26 /* : nullable Object */;
1376 long var_v /* var v: Int */;
1377 long var27 /* : Int */;
1378 val* var28 /* : MClassType */;
1379 val* var_t /* var t: MClassType */;
1380 val* var29 /* : CodeWriter */;
1381 val* var30 /* : String */;
1382 static val* varonce31;
1383 val* var32 /* : String */;
1384 char* var33 /* : NativeString */;
1385 long var34 /* : Int */;
1386 val* var35 /* : String */;
1387 val* var36 /* : String */;
1388 static val* varonce37;
1389 val* var38 /* : String */;
1390 char* var39 /* : NativeString */;
1391 long var40 /* : Int */;
1392 val* var41 /* : String */;
1393 val* var42 /* : Array[Object] */;
1394 long var43 /* : Int */;
1395 val* var44 /* : NativeArray[Object] */;
1396 val* var45 /* : String */;
1397 val* var46 /* : CodeWriter */;
1398 static val* varonce47;
1399 val* var48 /* : String */;
1400 char* var49 /* : NativeString */;
1401 long var50 /* : Int */;
1402 val* var51 /* : String */;
1403 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
1404 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
1405 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var1) /* opt_no_union_attribute on <var1:ToolContext>*/;
1406 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_opts__Option__value]))(var2) /* value on <var2:OptionBool>*/;
1407 var4 = ((struct instance_kernel__Bool*)var3)->value; /* autounbox from nullable Object to Bool */;
1408 if (var4){
1409 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1410 if (varonce) {
1411 var6 = varonce;
1412 } else {
1413 var7 = "typedef void* nitattribute_t; /* general C type representing a Nit attribute. */";
1414 var8 = 80;
1415 var9 = string__NativeString__to_s_with_length(var7, var8);
1416 var6 = var9;
1417 varonce = var6;
1418 }
1419 ((void (*)(val*, val*))(var5->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var5, var6) /* add_decl on <var5:CodeWriter>*/;
1420 } else {
1421 var10 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1422 if (varonce11) {
1423 var12 = varonce11;
1424 } else {
1425 var13 = "typedef union {";
1426 var14 = 15;
1427 var15 = string__NativeString__to_s_with_length(var13, var14);
1428 var12 = var15;
1429 varonce11 = var12;
1430 }
1431 ((void (*)(val*, val*))(var10->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var10, var12) /* add_decl on <var10:CodeWriter>*/;
1432 var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1433 if (varonce17) {
1434 var18 = varonce17;
1435 } else {
1436 var19 = "void* val;";
1437 var20 = 10;
1438 var21 = string__NativeString__to_s_with_length(var19, var20);
1439 var18 = var21;
1440 varonce17 = var18;
1441 }
1442 ((void (*)(val*, val*))(var16->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var16, var18) /* add_decl on <var16:CodeWriter>*/;
1443 var22 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
1444 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var22) /* iterator on <var22:HashMap[MClass, Int]>*/;
1445 for(;;) {
1446 var24 = ((short int (*)(val*))(var23->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var23) /* is_ok on <var23:MapIterator[Object, nullable Object]>*/;
1447 if(!var24) break;
1448 var25 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__MapIterator__key]))(var23) /* key on <var23:MapIterator[Object, nullable Object]>*/;
1449 var_c = var25;
1450 var26 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__MapIterator__item]))(var23) /* item on <var23:MapIterator[Object, nullable Object]>*/;
1451 var27 = ((struct instance_kernel__Int*)var26)->value; /* autounbox from nullable Object to Int */;
1452 var_v = var27;
1453 var28 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__mclass_type]))(var_c) /* mclass_type on <var_c:MClass>*/;
1454 var_t = var28;
1455 var29 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1456 var30 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t) /* ctype on <var_t:MClassType>*/;
1457 if (varonce31) {
1458 var32 = varonce31;
1459 } else {
1460 var33 = " ";
1461 var34 = 1;
1462 var35 = string__NativeString__to_s_with_length(var33, var34);
1463 var32 = var35;
1464 varonce31 = var32;
1465 }
1466 var36 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_t) /* ctypename on <var_t:MClassType>*/;
1467 if (varonce37) {
1468 var38 = varonce37;
1469 } else {
1470 var39 = ";";
1471 var40 = 1;
1472 var41 = string__NativeString__to_s_with_length(var39, var40);
1473 var38 = var41;
1474 varonce37 = var38;
1475 }
1476 var42 = NEW_array__Array(&type_array__Arraykernel__Object);
1477 { /* var42 = array_instance Array[Object] */
1478 var43 = 4;
1479 var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
1480 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var30;
1481 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var32;
1482 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var36;
1483 ((struct instance_array__NativeArray*)var44)->values[3] = (val*) var38;
1484 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
1485 }
1486 var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
1487 ((void (*)(val*, val*))(var29->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var29, var45) /* add_decl on <var29:CodeWriter>*/;
1488 CONTINUE_label: (void)0;
1489 ((void (*)(val*))(var23->class->vft[COLOR_abstract_collection__MapIterator__next]))(var23) /* next on <var23:MapIterator[Object, nullable Object]>*/;
1490 }
1491 BREAK_label: (void)0;
1492 var46 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1493 if (varonce47) {
1494 var48 = varonce47;
1495 } else {
1496 var49 = "} nitattribute_t; /* general C type representing a Nit attribute. */";
1497 var50 = 68;
1498 var51 = string__NativeString__to_s_with_length(var49, var50);
1499 var48 = var51;
1500 varonce47 = var48;
1501 }
1502 ((void (*)(val*, val*))(var46->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var46, var48) /* add_decl on <var46:CodeWriter>*/;
1503 }
1504 RET_LABEL:;
1505 }
1506 /* method separate_compiler#SeparateCompiler#compile_header_attribute_structs for (self: Object) */
1507 void VIRTUAL_separate_compiler__SeparateCompiler__compile_header_attribute_structs(val* self) {
1508 separate_compiler__SeparateCompiler__compile_header_attribute_structs(self);
1509 RET_LABEL:;
1510 }
1511 /* method separate_compiler#SeparateCompiler#compile_box_kinds for (self: SeparateCompiler) */
1512 void separate_compiler__SeparateCompiler__compile_box_kinds(val* self) {
1513 val* var /* : Array[String] */;
1514 long var1 /* : Int */;
1515 val* var_ /* var : Array[String] */;
1516 static val* varonce;
1517 val* var2 /* : String */;
1518 char* var3 /* : NativeString */;
1519 long var4 /* : Int */;
1520 val* var5 /* : String */;
1521 static val* varonce6;
1522 val* var7 /* : String */;
1523 char* var8 /* : NativeString */;
1524 long var9 /* : Int */;
1525 val* var10 /* : String */;
1526 static val* varonce11;
1527 val* var12 /* : String */;
1528 char* var13 /* : NativeString */;
1529 long var14 /* : Int */;
1530 val* var15 /* : String */;
1531 static val* varonce16;
1532 val* var17 /* : String */;
1533 char* var18 /* : NativeString */;
1534 long var19 /* : Int */;
1535 val* var20 /* : String */;
1536 static val* varonce21;
1537 val* var22 /* : String */;
1538 char* var23 /* : NativeString */;
1539 long var24 /* : Int */;
1540 val* var25 /* : String */;
1541 static val* varonce26;
1542 val* var27 /* : String */;
1543 char* var28 /* : NativeString */;
1544 long var29 /* : Int */;
1545 val* var30 /* : String */;
1546 val* var31 /* : Iterator[nullable Object] */;
1547 short int var32 /* : Bool */;
1548 val* var33 /* : nullable Object */;
1549 val* var_classname /* var classname: String */;
1550 val* var34 /* : MModule */;
1551 val* var35 /* : Model */;
1552 val* var36 /* : nullable Array[MClass] */;
1553 val* var_classes /* var classes: nullable Array[MClass] */;
1554 val* var37 /* : null */;
1555 short int var38 /* : Bool */;
1556 long var39 /* : Int */;
1557 long var40 /* : Int */;
1558 short int var41 /* : Bool */;
1559 short int var43 /* : Bool */;
1560 static val* varonce44;
1561 val* var45 /* : String */;
1562 char* var46 /* : NativeString */;
1563 long var47 /* : Int */;
1564 val* var48 /* : String */;
1565 val* var49 /* : String */;
1566 val* var50 /* : HashMap[MClass, Int] */;
1567 val* var51 /* : nullable Object */;
1568 val* var52 /* : HashMap[MClass, Int] */;
1569 long var53 /* : Int */;
1570 long var54 /* : Int */;
1571 long var55 /* : Int */;
1572 long var57 /* : Int */;
1573 val* var58 /* : nullable Object */;
1574 var = NEW_array__Array(&type_array__Arraystring__String);
1575 var1 = 6;
1576 ((void (*)(val*, long))(var->class->vft[COLOR_array__Array__with_capacity]))(var, var1) /* with_capacity on <var:Array[String]>*/;
1577 var_ = var;
1578 if (varonce) {
1579 var2 = varonce;
1580 } else {
1581 var3 = "Int";
1582 var4 = 3;
1583 var5 = string__NativeString__to_s_with_length(var3, var4);
1584 var2 = var5;
1585 varonce = var2;
1586 }
1587 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var2) /* push on <var_:Array[String]>*/;
1588 if (varonce6) {
1589 var7 = varonce6;
1590 } else {
1591 var8 = "Bool";
1592 var9 = 4;
1593 var10 = string__NativeString__to_s_with_length(var8, var9);
1594 var7 = var10;
1595 varonce6 = var7;
1596 }
1597 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var7) /* push on <var_:Array[String]>*/;
1598 if (varonce11) {
1599 var12 = varonce11;
1600 } else {
1601 var13 = "Char";
1602 var14 = 4;
1603 var15 = string__NativeString__to_s_with_length(var13, var14);
1604 var12 = var15;
1605 varonce11 = var12;
1606 }
1607 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var12) /* push on <var_:Array[String]>*/;
1608 if (varonce16) {
1609 var17 = varonce16;
1610 } else {
1611 var18 = "Float";
1612 var19 = 5;
1613 var20 = string__NativeString__to_s_with_length(var18, var19);
1614 var17 = var20;
1615 varonce16 = var17;
1616 }
1617 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var17) /* push on <var_:Array[String]>*/;
1618 if (varonce21) {
1619 var22 = varonce21;
1620 } else {
1621 var23 = "NativeString";
1622 var24 = 12;
1623 var25 = string__NativeString__to_s_with_length(var23, var24);
1624 var22 = var25;
1625 varonce21 = var22;
1626 }
1627 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var22) /* push on <var_:Array[String]>*/;
1628 if (varonce26) {
1629 var27 = varonce26;
1630 } else {
1631 var28 = "Pointer";
1632 var29 = 7;
1633 var30 = string__NativeString__to_s_with_length(var28, var29);
1634 var27 = var30;
1635 varonce26 = var27;
1636 }
1637 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var27) /* push on <var_:Array[String]>*/;
1638 var31 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Array[String]>*/;
1639 for(;;) {
1640 var32 = ((short int (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var31) /* is_ok on <var31:Iterator[nullable Object]>*/;
1641 if(!var32) break;
1642 var33 = ((val* (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__item]))(var31) /* item on <var31:Iterator[nullable Object]>*/;
1643 var_classname = var33;
1644 var34 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
1645 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_mmodule__MModule__model]))(var34) /* model on <var34:MModule>*/;
1646 var36 = ((val* (*)(val*, val*))(var35->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var35, var_classname) /* get_mclasses_by_name on <var35:Model>*/;
1647 var_classes = var36;
1648 var37 = NULL;
1649 if (var_classes == NULL) {
1650 var38 = 1; /* is null */
1651 } else {
1652 var38 = 0; /* arg is null but recv is not */
1653 }
1654 if (var38){
1655 goto CONTINUE_label;
1656 } else {
1657 }
1658 var39 = ((long (*)(val*))(var_classes->class->vft[COLOR_abstract_collection__Collection__length]))(var_classes) /* length on <var_classes:nullable Array[MClass](Array[MClass])>*/;
1659 var40 = 1;
1660 { /* Inline kernel#Int#== (var39,var40) */
1661 var43 = var39 == var40;
1662 var41 = var43;
1663 goto RET_LABEL42;
1664 RET_LABEL42:(void)0;
1665 }
1666 if (!var41) {
1667 if (varonce44) {
1668 var45 = varonce44;
1669 } else {
1670 var46 = ", ";
1671 var47 = 2;
1672 var48 = string__NativeString__to_s_with_length(var46, var47);
1673 var45 = var48;
1674 varonce44 = var45;
1675 }
1676 var49 = ((val* (*)(val*, val*))(var_classes->class->vft[COLOR_string__Collection__join]))(var_classes, var45) /* join on <var_classes:nullable Array[MClass](Array[MClass])>*/;
1677 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var49) /* print on <self:SeparateCompiler>*/;
1678 fprintf(stderr, "Runtime error: %s", "Assert failed");
1679 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 178);
1680 show_backtrace(1);
1681 }
1682 var50 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
1683 var51 = ((val* (*)(val*))(var_classes->class->vft[COLOR_abstract_collection__Collection__first]))(var_classes) /* first on <var_classes:nullable Array[MClass](Array[MClass])>*/;
1684 var52 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
1685 var53 = ((long (*)(val*))(var52->class->vft[COLOR_abstract_collection__MapRead__length]))(var52) /* length on <var52:HashMap[MClass, Int]>*/;
1686 var54 = 1;
1687 { /* Inline kernel#Int#+ (var53,var54) */
1688 var57 = var53 + var54;
1689 var55 = var57;
1690 goto RET_LABEL56;
1691 RET_LABEL56:(void)0;
1692 }
1693 var58 = BOX_kernel__Int(var55); /* autobox from Int to nullable Object */
1694 ((void (*)(val*, val*, val*))(var50->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var50, var51, var58) /* []= on <var50:HashMap[MClass, Int]>*/;
1695 CONTINUE_label: (void)0;
1696 ((void (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__next]))(var31) /* next on <var31:Iterator[nullable Object]>*/;
1697 }
1698 BREAK_label: (void)0;
1699 RET_LABEL:;
1700 }
1701 /* method separate_compiler#SeparateCompiler#compile_box_kinds for (self: Object) */
1702 void VIRTUAL_separate_compiler__SeparateCompiler__compile_box_kinds(val* self) {
1703 separate_compiler__SeparateCompiler__compile_box_kinds(self);
1704 RET_LABEL:;
1705 }
1706 /* method separate_compiler#SeparateCompiler#box_kinds for (self: SeparateCompiler): HashMap[MClass, Int] */
1707 val* separate_compiler__SeparateCompiler__box_kinds(val* self) {
1708 val* var /* : HashMap[MClass, Int] */;
1709 val* var1 /* : HashMap[MClass, Int] */;
1710 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dbox_kinds].val; /* @box_kinds on <self:SeparateCompiler> */
1711 if (var1 == NULL) {
1712 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @box_kinds");
1713 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 183);
1714 show_backtrace(1);
1715 }
1716 var = var1;
1717 RET_LABEL:;
1718 return var;
1719 }
1720 /* method separate_compiler#SeparateCompiler#box_kinds for (self: Object): HashMap[MClass, Int] */
1721 val* VIRTUAL_separate_compiler__SeparateCompiler__box_kinds(val* self) {
1722 val* var /* : HashMap[MClass, Int] */;
1723 val* var1 /* : HashMap[MClass, Int] */;
1724 var1 = separate_compiler__SeparateCompiler__box_kinds(self);
1725 var = var1;
1726 RET_LABEL:;
1727 return var;
1728 }
1729 /* method separate_compiler#SeparateCompiler#box_kinds= for (self: SeparateCompiler, HashMap[MClass, Int]) */
1730 void separate_compiler__SeparateCompiler__box_kinds_61d(val* self, val* p0) {
1731 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dbox_kinds].val = p0; /* @box_kinds on <self:SeparateCompiler> */
1732 RET_LABEL:;
1733 }
1734 /* method separate_compiler#SeparateCompiler#box_kinds= for (self: Object, HashMap[MClass, Int]) */
1735 void VIRTUAL_separate_compiler__SeparateCompiler__box_kinds_61d(val* self, val* p0) {
1736 separate_compiler__SeparateCompiler__box_kinds_61d(self, p0);
1737 RET_LABEL:;
1738 }
1739 /* method separate_compiler#SeparateCompiler#box_kind_of for (self: SeparateCompiler, MClass): Int */
1740 long separate_compiler__SeparateCompiler__box_kind_of(val* self, val* p0) {
1741 long var /* : Int */;
1742 val* var_mclass /* var mclass: MClass */;
1743 val* var1 /* : MClassType */;
1744 val* var2 /* : String */;
1745 static val* varonce;
1746 val* var3 /* : String */;
1747 char* var4 /* : NativeString */;
1748 long var5 /* : Int */;
1749 val* var6 /* : String */;
1750 short int var7 /* : Bool */;
1751 long var8 /* : Int */;
1752 val* var9 /* : MClassKind */;
1753 val* var10 /* : MClassKind */;
1754 short int var11 /* : Bool */;
1755 val* var12 /* : HashMap[MClass, Int] */;
1756 val* var13 /* : MModule */;
1757 static val* varonce14;
1758 val* var15 /* : String */;
1759 char* var16 /* : NativeString */;
1760 long var17 /* : Int */;
1761 val* var18 /* : String */;
1762 val* var19 /* : MClass */;
1763 val* var20 /* : nullable Object */;
1764 long var21 /* : Int */;
1765 val* var22 /* : HashMap[MClass, Int] */;
1766 val* var23 /* : nullable Object */;
1767 long var24 /* : Int */;
1768 var_mclass = p0;
1769 var1 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:MClass>*/;
1770 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var1) /* ctype on <var1:MClassType>*/;
1771 if (varonce) {
1772 var3 = varonce;
1773 } else {
1774 var4 = "val*";
1775 var5 = 4;
1776 var6 = string__NativeString__to_s_with_length(var4, var5);
1777 var3 = var6;
1778 varonce = var3;
1779 }
1780 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, var3) /* == on <var2:String>*/;
1781 if (var7){
1782 var8 = 0;
1783 var = var8;
1784 goto RET_LABEL;
1785 } else {
1786 var9 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:MClass>*/;
1787 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:SeparateCompiler>*/;
1788 var11 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_kernel__Object___61d_61d]))(var9, var10) /* == on <var9:MClassKind>*/;
1789 if (var11){
1790 var12 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
1791 var13 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
1792 if (varonce14) {
1793 var15 = varonce14;
1794 } else {
1795 var16 = "Pointer";
1796 var17 = 7;
1797 var18 = string__NativeString__to_s_with_length(var16, var17);
1798 var15 = var18;
1799 varonce14 = var15;
1800 }
1801 var19 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_model__MModule__get_primitive_class]))(var13, var15) /* get_primitive_class on <var13:MModule>*/;
1802 var20 = ((val* (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var12, var19) /* [] on <var12:HashMap[MClass, Int]>*/;
1803 var21 = ((struct instance_kernel__Int*)var20)->value; /* autounbox from nullable Object to Int */;
1804 var = var21;
1805 goto RET_LABEL;
1806 } else {
1807 var22 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
1808 var23 = ((val* (*)(val*, val*))(var22->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var22, var_mclass) /* [] on <var22:HashMap[MClass, Int]>*/;
1809 var24 = ((struct instance_kernel__Int*)var23)->value; /* autounbox from nullable Object to Int */;
1810 var = var24;
1811 goto RET_LABEL;
1812 }
1813 }
1814 RET_LABEL:;
1815 return var;
1816 }
1817 /* method separate_compiler#SeparateCompiler#box_kind_of for (self: Object, MClass): Int */
1818 long VIRTUAL_separate_compiler__SeparateCompiler__box_kind_of(val* self, val* p0) {
1819 long var /* : Int */;
1820 long var1 /* : Int */;
1821 var1 = separate_compiler__SeparateCompiler__box_kind_of(self, p0);
1822 var = var1;
1823 RET_LABEL:;
1824 return var;
1825 }
1826 /* method separate_compiler#SeparateCompiler#compile_color_consts for (self: SeparateCompiler, Map[Object, Int]) */
1827 void separate_compiler__SeparateCompiler__compile_color_consts(val* self, val* p0) {
1828 val* var_colors /* var colors: Map[Object, Int] */;
1829 val* var /* : AbstractCompilerVisitor */;
1830 val* var_v /* var v: SeparateCompilerVisitor */;
1831 val* var1 /* : MapIterator[Object, nullable Object] */;
1832 short int var2 /* : Bool */;
1833 val* var3 /* : Object */;
1834 val* var_m /* var m: Object */;
1835 val* var4 /* : nullable Object */;
1836 long var_c /* var c: Int */;
1837 long var5 /* : Int */;
1838 var_colors = p0;
1839 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:SeparateCompiler>*/;
1840 var_v = var;
1841 var1 = ((val* (*)(val*))(var_colors->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_colors) /* iterator on <var_colors:Map[Object, Int]>*/;
1842 for(;;) {
1843 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var1) /* is_ok on <var1:MapIterator[Object, nullable Object]>*/;
1844 if(!var2) break;
1845 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapIterator__key]))(var1) /* key on <var1:MapIterator[Object, nullable Object]>*/;
1846 var_m = var3;
1847 var4 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapIterator__item]))(var1) /* item on <var1:MapIterator[Object, nullable Object]>*/;
1848 var5 = ((struct instance_kernel__Int*)var4)->value; /* autounbox from nullable Object to Int */;
1849 var_c = var5;
1850 ((void (*)(val*, val*, val*, long))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_color_const]))(self, var_v, var_m, var_c) /* compile_color_const on <self:SeparateCompiler>*/;
1851 CONTINUE_label: (void)0;
1852 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapIterator__next]))(var1) /* next on <var1:MapIterator[Object, nullable Object]>*/;
1853 }
1854 BREAK_label: (void)0;
1855 RET_LABEL:;
1856 }
1857 /* method separate_compiler#SeparateCompiler#compile_color_consts for (self: Object, Map[Object, Int]) */
1858 void VIRTUAL_separate_compiler__SeparateCompiler__compile_color_consts(val* self, val* p0) {
1859 separate_compiler__SeparateCompiler__compile_color_consts(self, p0);
1860 RET_LABEL:;
1861 }
1862 /* method separate_compiler#SeparateCompiler#compile_color_const for (self: SeparateCompiler, SeparateCompilerVisitor, Object, Int) */
1863 void separate_compiler__SeparateCompiler__compile_color_const(val* self, val* p0, val* p1, long p2) {
1864 val* var_v /* var v: SeparateCompilerVisitor */;
1865 val* var_m /* var m: Object */;
1866 long var_color /* var color: Int */;
1867 val* var /* : HashSet[Object] */;
1868 short int var1 /* : Bool */;
1869 short int var2 /* : Bool */;
1870 int cltype;
1871 int idtype;
1872 val* var3 /* : ModelBuilder */;
1873 val* var4 /* : ToolContext */;
1874 val* var5 /* : OptionBool */;
1875 val* var6 /* : nullable Object */;
1876 short int var7 /* : Bool */;
1877 val* var8 /* : String */;
1878 static val* varonce;
1879 val* var9 /* : String */;
1880 char* var10 /* : NativeString */;
1881 long var11 /* : Int */;
1882 val* var12 /* : String */;
1883 val* var13 /* : String */;
1884 static val* varonce14;
1885 val* var15 /* : String */;
1886 char* var16 /* : NativeString */;
1887 long var17 /* : Int */;
1888 val* var18 /* : String */;
1889 val* var19 /* : Array[Object] */;
1890 long var20 /* : Int */;
1891 val* var21 /* : NativeArray[Object] */;
1892 val* var22 /* : Object */;
1893 val* var23 /* : String */;
1894 val* var24 /* : String */;
1895 static val* varonce25;
1896 val* var26 /* : String */;
1897 char* var27 /* : NativeString */;
1898 long var28 /* : Int */;
1899 val* var29 /* : String */;
1900 val* var30 /* : String */;
1901 static val* varonce31;
1902 val* var32 /* : String */;
1903 char* var33 /* : NativeString */;
1904 long var34 /* : Int */;
1905 val* var35 /* : String */;
1906 val* var36 /* : Array[Object] */;
1907 long var37 /* : Int */;
1908 val* var38 /* : NativeArray[Object] */;
1909 val* var39 /* : String */;
1910 static val* varonce40;
1911 val* var41 /* : String */;
1912 char* var42 /* : NativeString */;
1913 long var43 /* : Int */;
1914 val* var44 /* : String */;
1915 val* var45 /* : String */;
1916 static val* varonce46;
1917 val* var47 /* : String */;
1918 char* var48 /* : NativeString */;
1919 long var49 /* : Int */;
1920 val* var50 /* : String */;
1921 static val* varonce51;
1922 val* var52 /* : String */;
1923 char* var53 /* : NativeString */;
1924 long var54 /* : Int */;
1925 val* var55 /* : String */;
1926 val* var56 /* : Array[Object] */;
1927 long var57 /* : Int */;
1928 val* var58 /* : NativeArray[Object] */;
1929 val* var59 /* : Object */;
1930 val* var60 /* : String */;
1931 short int var61 /* : Bool */;
1932 int cltype62;
1933 int idtype63;
1934 val* var64 /* : ModelBuilder */;
1935 val* var65 /* : ToolContext */;
1936 val* var66 /* : OptionBool */;
1937 val* var67 /* : nullable Object */;
1938 short int var68 /* : Bool */;
1939 val* var69 /* : String */;
1940 static val* varonce70;
1941 val* var71 /* : String */;
1942 char* var72 /* : NativeString */;
1943 long var73 /* : Int */;
1944 val* var74 /* : String */;
1945 val* var75 /* : String */;
1946 static val* varonce76;
1947 val* var77 /* : String */;
1948 char* var78 /* : NativeString */;
1949 long var79 /* : Int */;
1950 val* var80 /* : String */;
1951 val* var81 /* : Array[Object] */;
1952 long var82 /* : Int */;
1953 val* var83 /* : NativeArray[Object] */;
1954 val* var84 /* : Object */;
1955 val* var85 /* : String */;
1956 val* var86 /* : String */;
1957 static val* varonce87;
1958 val* var88 /* : String */;
1959 char* var89 /* : NativeString */;
1960 long var90 /* : Int */;
1961 val* var91 /* : String */;
1962 val* var92 /* : String */;
1963 static val* varonce93;
1964 val* var94 /* : String */;
1965 char* var95 /* : NativeString */;
1966 long var96 /* : Int */;
1967 val* var97 /* : String */;
1968 val* var98 /* : Array[Object] */;
1969 long var99 /* : Int */;
1970 val* var100 /* : NativeArray[Object] */;
1971 val* var101 /* : String */;
1972 static val* varonce102;
1973 val* var103 /* : String */;
1974 char* var104 /* : NativeString */;
1975 long var105 /* : Int */;
1976 val* var106 /* : String */;
1977 val* var107 /* : String */;
1978 static val* varonce108;
1979 val* var109 /* : String */;
1980 char* var110 /* : NativeString */;
1981 long var111 /* : Int */;
1982 val* var112 /* : String */;
1983 static val* varonce113;
1984 val* var114 /* : String */;
1985 char* var115 /* : NativeString */;
1986 long var116 /* : Int */;
1987 val* var117 /* : String */;
1988 val* var118 /* : Array[Object] */;
1989 long var119 /* : Int */;
1990 val* var120 /* : NativeArray[Object] */;
1991 val* var121 /* : Object */;
1992 val* var122 /* : String */;
1993 short int var123 /* : Bool */;
1994 int cltype124;
1995 int idtype125;
1996 val* var126 /* : ModelBuilder */;
1997 val* var127 /* : ToolContext */;
1998 val* var128 /* : OptionBool */;
1999 val* var129 /* : nullable Object */;
2000 short int var130 /* : Bool */;
2001 val* var131 /* : String */;
2002 static val* varonce132;
2003 val* var133 /* : String */;
2004 char* var134 /* : NativeString */;
2005 long var135 /* : Int */;
2006 val* var136 /* : String */;
2007 val* var137 /* : String */;
2008 static val* varonce138;
2009 val* var139 /* : String */;
2010 char* var140 /* : NativeString */;
2011 long var141 /* : Int */;
2012 val* var142 /* : String */;
2013 val* var143 /* : Array[Object] */;
2014 long var144 /* : Int */;
2015 val* var145 /* : NativeArray[Object] */;
2016 val* var146 /* : Object */;
2017 val* var147 /* : String */;
2018 val* var148 /* : String */;
2019 static val* varonce149;
2020 val* var150 /* : String */;
2021 char* var151 /* : NativeString */;
2022 long var152 /* : Int */;
2023 val* var153 /* : String */;
2024 val* var154 /* : String */;
2025 static val* varonce155;
2026 val* var156 /* : String */;
2027 char* var157 /* : NativeString */;
2028 long var158 /* : Int */;
2029 val* var159 /* : String */;
2030 val* var160 /* : Array[Object] */;
2031 long var161 /* : Int */;
2032 val* var162 /* : NativeArray[Object] */;
2033 val* var163 /* : String */;
2034 static val* varonce164;
2035 val* var165 /* : String */;
2036 char* var166 /* : NativeString */;
2037 long var167 /* : Int */;
2038 val* var168 /* : String */;
2039 val* var169 /* : String */;
2040 static val* varonce170;
2041 val* var171 /* : String */;
2042 char* var172 /* : NativeString */;
2043 long var173 /* : Int */;
2044 val* var174 /* : String */;
2045 static val* varonce175;
2046 val* var176 /* : String */;
2047 char* var177 /* : NativeString */;
2048 long var178 /* : Int */;
2049 val* var179 /* : String */;
2050 val* var180 /* : Array[Object] */;
2051 long var181 /* : Int */;
2052 val* var182 /* : NativeArray[Object] */;
2053 val* var183 /* : Object */;
2054 val* var184 /* : String */;
2055 val* var185 /* : HashSet[Object] */;
2056 var_v = p0;
2057 var_m = p1;
2058 var_color = p2;
2059 var = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__color_consts_done]))(self) /* color_consts_done on <self:SeparateCompiler>*/;
2060 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__Collection__has]))(var, var_m) /* has on <var:HashSet[Object]>*/;
2061 if (var1){
2062 goto RET_LABEL;
2063 } else {
2064 }
2065 /* <var_m:Object> isa MProperty */
2066 cltype = type_model__MProperty.color;
2067 idtype = type_model__MProperty.id;
2068 if(cltype >= var_m->type->table_size) {
2069 var2 = 0;
2070 } else {
2071 var2 = var_m->type->type_table[cltype] == idtype;
2072 }
2073 if (var2){
2074 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
2075 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var3) /* toolcontext on <var3:ModelBuilder>*/;
2076 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_separate_compiler__ToolContext__opt_inline_coloring_numbers]))(var4) /* opt_inline_coloring_numbers on <var4:ToolContext>*/;
2077 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_opts__Option__value]))(var5) /* value on <var5:OptionBool>*/;
2078 var7 = ((struct instance_kernel__Bool*)var6)->value; /* autounbox from nullable Object to Bool */;
2079 if (var7){
2080 var8 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_m) /* const_color on <var_m:Object(MProperty)>*/;
2081 if (varonce) {
2082 var9 = varonce;
2083 } else {
2084 var10 = "#define ";
2085 var11 = 8;
2086 var12 = string__NativeString__to_s_with_length(var10, var11);
2087 var9 = var12;
2088 varonce = var9;
2089 }
2090 var13 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_m) /* const_color on <var_m:Object(MProperty)>*/;
2091 if (varonce14) {
2092 var15 = varonce14;
2093 } else {
2094 var16 = " ";
2095 var17 = 1;
2096 var18 = string__NativeString__to_s_with_length(var16, var17);
2097 var15 = var18;
2098 varonce14 = var15;
2099 }
2100 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
2101 { /* var19 = array_instance Array[Object] */
2102 var20 = 4;
2103 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
2104 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var9;
2105 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var13;
2106 ((struct instance_array__NativeArray*)var21)->values[2] = (val*) var15;
2107 var22 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2108 ((struct instance_array__NativeArray*)var21)->values[3] = (val*) var22;
2109 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
2110 }
2111 var23 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
2112 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var8, var23) /* provide_declaration on <self:SeparateCompiler>*/;
2113 } else {
2114 var24 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_m) /* const_color on <var_m:Object(MProperty)>*/;
2115 if (varonce25) {
2116 var26 = varonce25;
2117 } else {
2118 var27 = "extern const int ";
2119 var28 = 17;
2120 var29 = string__NativeString__to_s_with_length(var27, var28);
2121 var26 = var29;
2122 varonce25 = var26;
2123 }
2124 var30 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_m) /* const_color on <var_m:Object(MProperty)>*/;
2125 if (varonce31) {
2126 var32 = varonce31;
2127 } else {
2128 var33 = ";";
2129 var34 = 1;
2130 var35 = string__NativeString__to_s_with_length(var33, var34);
2131 var32 = var35;
2132 varonce31 = var32;
2133 }
2134 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
2135 { /* var36 = array_instance Array[Object] */
2136 var37 = 3;
2137 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
2138 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var26;
2139 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var30;
2140 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var32;
2141 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
2142 }
2143 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
2144 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var24, var39) /* provide_declaration on <self:SeparateCompiler>*/;
2145 if (varonce40) {
2146 var41 = varonce40;
2147 } else {
2148 var42 = "const int ";
2149 var43 = 10;
2150 var44 = string__NativeString__to_s_with_length(var42, var43);
2151 var41 = var44;
2152 varonce40 = var41;
2153 }
2154 var45 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_m) /* const_color on <var_m:Object(MProperty)>*/;
2155 if (varonce46) {
2156 var47 = varonce46;
2157 } else {
2158 var48 = " = ";
2159 var49 = 3;
2160 var50 = string__NativeString__to_s_with_length(var48, var49);
2161 var47 = var50;
2162 varonce46 = var47;
2163 }
2164 if (varonce51) {
2165 var52 = varonce51;
2166 } else {
2167 var53 = ";";
2168 var54 = 1;
2169 var55 = string__NativeString__to_s_with_length(var53, var54);
2170 var52 = var55;
2171 varonce51 = var52;
2172 }
2173 var56 = NEW_array__Array(&type_array__Arraykernel__Object);
2174 { /* var56 = array_instance Array[Object] */
2175 var57 = 5;
2176 var58 = NEW_array__NativeArray(var57, &type_array__NativeArraykernel__Object);
2177 ((struct instance_array__NativeArray*)var58)->values[0] = (val*) var41;
2178 ((struct instance_array__NativeArray*)var58)->values[1] = (val*) var45;
2179 ((struct instance_array__NativeArray*)var58)->values[2] = (val*) var47;
2180 var59 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2181 ((struct instance_array__NativeArray*)var58)->values[3] = (val*) var59;
2182 ((struct instance_array__NativeArray*)var58)->values[4] = (val*) var52;
2183 ((void (*)(val*, val*, long))(var56->class->vft[COLOR_array__Array__with_native]))(var56, var58, var57) /* with_native on <var56:Array[Object]>*/;
2184 }
2185 var60 = ((val* (*)(val*))(var56->class->vft[COLOR_string__Object__to_s]))(var56) /* to_s on <var56:Array[Object]>*/;
2186 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var60) /* add on <var_v:SeparateCompilerVisitor>*/;
2187 }
2188 } else {
2189 /* <var_m:Object> isa MPropDef */
2190 cltype62 = type_model__MPropDef.color;
2191 idtype63 = type_model__MPropDef.id;
2192 if(cltype62 >= var_m->type->table_size) {
2193 var61 = 0;
2194 } else {
2195 var61 = var_m->type->type_table[cltype62] == idtype63;
2196 }
2197 if (var61){
2198 var64 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
2199 var65 = ((val* (*)(val*))(var64->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var64) /* toolcontext on <var64:ModelBuilder>*/;
2200 var66 = ((val* (*)(val*))(var65->class->vft[COLOR_separate_compiler__ToolContext__opt_inline_coloring_numbers]))(var65) /* opt_inline_coloring_numbers on <var65:ToolContext>*/;
2201 var67 = ((val* (*)(val*))(var66->class->vft[COLOR_opts__Option__value]))(var66) /* value on <var66:OptionBool>*/;
2202 var68 = ((struct instance_kernel__Bool*)var67)->value; /* autounbox from nullable Object to Bool */;
2203 if (var68){
2204 var69 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:Object(MPropDef)>*/;
2205 if (varonce70) {
2206 var71 = varonce70;
2207 } else {
2208 var72 = "#define ";
2209 var73 = 8;
2210 var74 = string__NativeString__to_s_with_length(var72, var73);
2211 var71 = var74;
2212 varonce70 = var71;
2213 }
2214 var75 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:Object(MPropDef)>*/;
2215 if (varonce76) {
2216 var77 = varonce76;
2217 } else {
2218 var78 = " ";
2219 var79 = 1;
2220 var80 = string__NativeString__to_s_with_length(var78, var79);
2221 var77 = var80;
2222 varonce76 = var77;
2223 }
2224 var81 = NEW_array__Array(&type_array__Arraykernel__Object);
2225 { /* var81 = array_instance Array[Object] */
2226 var82 = 4;
2227 var83 = NEW_array__NativeArray(var82, &type_array__NativeArraykernel__Object);
2228 ((struct instance_array__NativeArray*)var83)->values[0] = (val*) var71;
2229 ((struct instance_array__NativeArray*)var83)->values[1] = (val*) var75;
2230 ((struct instance_array__NativeArray*)var83)->values[2] = (val*) var77;
2231 var84 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2232 ((struct instance_array__NativeArray*)var83)->values[3] = (val*) var84;
2233 ((void (*)(val*, val*, long))(var81->class->vft[COLOR_array__Array__with_native]))(var81, var83, var82) /* with_native on <var81:Array[Object]>*/;
2234 }
2235 var85 = ((val* (*)(val*))(var81->class->vft[COLOR_string__Object__to_s]))(var81) /* to_s on <var81:Array[Object]>*/;
2236 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var69, var85) /* provide_declaration on <self:SeparateCompiler>*/;
2237 } else {
2238 var86 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:Object(MPropDef)>*/;
2239 if (varonce87) {
2240 var88 = varonce87;
2241 } else {
2242 var89 = "extern const int ";
2243 var90 = 17;
2244 var91 = string__NativeString__to_s_with_length(var89, var90);
2245 var88 = var91;
2246 varonce87 = var88;
2247 }
2248 var92 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:Object(MPropDef)>*/;
2249 if (varonce93) {
2250 var94 = varonce93;
2251 } else {
2252 var95 = ";";
2253 var96 = 1;
2254 var97 = string__NativeString__to_s_with_length(var95, var96);
2255 var94 = var97;
2256 varonce93 = var94;
2257 }
2258 var98 = NEW_array__Array(&type_array__Arraykernel__Object);
2259 { /* var98 = array_instance Array[Object] */
2260 var99 = 3;
2261 var100 = NEW_array__NativeArray(var99, &type_array__NativeArraykernel__Object);
2262 ((struct instance_array__NativeArray*)var100)->values[0] = (val*) var88;
2263 ((struct instance_array__NativeArray*)var100)->values[1] = (val*) var92;
2264 ((struct instance_array__NativeArray*)var100)->values[2] = (val*) var94;
2265 ((void (*)(val*, val*, long))(var98->class->vft[COLOR_array__Array__with_native]))(var98, var100, var99) /* with_native on <var98:Array[Object]>*/;
2266 }
2267 var101 = ((val* (*)(val*))(var98->class->vft[COLOR_string__Object__to_s]))(var98) /* to_s on <var98:Array[Object]>*/;
2268 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var86, var101) /* provide_declaration on <self:SeparateCompiler>*/;
2269 if (varonce102) {
2270 var103 = varonce102;
2271 } else {
2272 var104 = "const int ";
2273 var105 = 10;
2274 var106 = string__NativeString__to_s_with_length(var104, var105);
2275 var103 = var106;
2276 varonce102 = var103;
2277 }
2278 var107 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:Object(MPropDef)>*/;
2279 if (varonce108) {
2280 var109 = varonce108;
2281 } else {
2282 var110 = " = ";
2283 var111 = 3;
2284 var112 = string__NativeString__to_s_with_length(var110, var111);
2285 var109 = var112;
2286 varonce108 = var109;
2287 }
2288 if (varonce113) {
2289 var114 = varonce113;
2290 } else {
2291 var115 = ";";
2292 var116 = 1;
2293 var117 = string__NativeString__to_s_with_length(var115, var116);
2294 var114 = var117;
2295 varonce113 = var114;
2296 }
2297 var118 = NEW_array__Array(&type_array__Arraykernel__Object);
2298 { /* var118 = array_instance Array[Object] */
2299 var119 = 5;
2300 var120 = NEW_array__NativeArray(var119, &type_array__NativeArraykernel__Object);
2301 ((struct instance_array__NativeArray*)var120)->values[0] = (val*) var103;
2302 ((struct instance_array__NativeArray*)var120)->values[1] = (val*) var107;
2303 ((struct instance_array__NativeArray*)var120)->values[2] = (val*) var109;
2304 var121 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2305 ((struct instance_array__NativeArray*)var120)->values[3] = (val*) var121;
2306 ((struct instance_array__NativeArray*)var120)->values[4] = (val*) var114;
2307 ((void (*)(val*, val*, long))(var118->class->vft[COLOR_array__Array__with_native]))(var118, var120, var119) /* with_native on <var118:Array[Object]>*/;
2308 }
2309 var122 = ((val* (*)(val*))(var118->class->vft[COLOR_string__Object__to_s]))(var118) /* to_s on <var118:Array[Object]>*/;
2310 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var122) /* add on <var_v:SeparateCompilerVisitor>*/;
2311 }
2312 } else {
2313 /* <var_m:Object> isa MType */
2314 cltype124 = type_model__MType.color;
2315 idtype125 = type_model__MType.id;
2316 if(cltype124 >= var_m->type->table_size) {
2317 var123 = 0;
2318 } else {
2319 var123 = var_m->type->type_table[cltype124] == idtype125;
2320 }
2321 if (var123){
2322 var126 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
2323 var127 = ((val* (*)(val*))(var126->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var126) /* toolcontext on <var126:ModelBuilder>*/;
2324 var128 = ((val* (*)(val*))(var127->class->vft[COLOR_separate_compiler__ToolContext__opt_inline_coloring_numbers]))(var127) /* opt_inline_coloring_numbers on <var127:ToolContext>*/;
2325 var129 = ((val* (*)(val*))(var128->class->vft[COLOR_opts__Option__value]))(var128) /* value on <var128:OptionBool>*/;
2326 var130 = ((struct instance_kernel__Bool*)var129)->value; /* autounbox from nullable Object to Bool */;
2327 if (var130){
2328 var131 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MType__const_color]))(var_m) /* const_color on <var_m:Object(MType)>*/;
2329 if (varonce132) {
2330 var133 = varonce132;
2331 } else {
2332 var134 = "#define ";
2333 var135 = 8;
2334 var136 = string__NativeString__to_s_with_length(var134, var135);
2335 var133 = var136;
2336 varonce132 = var133;
2337 }
2338 var137 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MType__const_color]))(var_m) /* const_color on <var_m:Object(MType)>*/;
2339 if (varonce138) {
2340 var139 = varonce138;
2341 } else {
2342 var140 = " ";
2343 var141 = 1;
2344 var142 = string__NativeString__to_s_with_length(var140, var141);
2345 var139 = var142;
2346 varonce138 = var139;
2347 }
2348 var143 = NEW_array__Array(&type_array__Arraykernel__Object);
2349 { /* var143 = array_instance Array[Object] */
2350 var144 = 4;
2351 var145 = NEW_array__NativeArray(var144, &type_array__NativeArraykernel__Object);
2352 ((struct instance_array__NativeArray*)var145)->values[0] = (val*) var133;
2353 ((struct instance_array__NativeArray*)var145)->values[1] = (val*) var137;
2354 ((struct instance_array__NativeArray*)var145)->values[2] = (val*) var139;
2355 var146 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2356 ((struct instance_array__NativeArray*)var145)->values[3] = (val*) var146;
2357 ((void (*)(val*, val*, long))(var143->class->vft[COLOR_array__Array__with_native]))(var143, var145, var144) /* with_native on <var143:Array[Object]>*/;
2358 }
2359 var147 = ((val* (*)(val*))(var143->class->vft[COLOR_string__Object__to_s]))(var143) /* to_s on <var143:Array[Object]>*/;
2360 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var131, var147) /* provide_declaration on <self:SeparateCompiler>*/;
2361 } else {
2362 var148 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MType__const_color]))(var_m) /* const_color on <var_m:Object(MType)>*/;
2363 if (varonce149) {
2364 var150 = varonce149;
2365 } else {
2366 var151 = "extern const int ";
2367 var152 = 17;
2368 var153 = string__NativeString__to_s_with_length(var151, var152);
2369 var150 = var153;
2370 varonce149 = var150;
2371 }
2372 var154 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MType__const_color]))(var_m) /* const_color on <var_m:Object(MType)>*/;
2373 if (varonce155) {
2374 var156 = varonce155;
2375 } else {
2376 var157 = ";";
2377 var158 = 1;
2378 var159 = string__NativeString__to_s_with_length(var157, var158);
2379 var156 = var159;
2380 varonce155 = var156;
2381 }
2382 var160 = NEW_array__Array(&type_array__Arraykernel__Object);
2383 { /* var160 = array_instance Array[Object] */
2384 var161 = 3;
2385 var162 = NEW_array__NativeArray(var161, &type_array__NativeArraykernel__Object);
2386 ((struct instance_array__NativeArray*)var162)->values[0] = (val*) var150;
2387 ((struct instance_array__NativeArray*)var162)->values[1] = (val*) var154;
2388 ((struct instance_array__NativeArray*)var162)->values[2] = (val*) var156;
2389 ((void (*)(val*, val*, long))(var160->class->vft[COLOR_array__Array__with_native]))(var160, var162, var161) /* with_native on <var160:Array[Object]>*/;
2390 }
2391 var163 = ((val* (*)(val*))(var160->class->vft[COLOR_string__Object__to_s]))(var160) /* to_s on <var160:Array[Object]>*/;
2392 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var148, var163) /* provide_declaration on <self:SeparateCompiler>*/;
2393 if (varonce164) {
2394 var165 = varonce164;
2395 } else {
2396 var166 = "const int ";
2397 var167 = 10;
2398 var168 = string__NativeString__to_s_with_length(var166, var167);
2399 var165 = var168;
2400 varonce164 = var165;
2401 }
2402 var169 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MType__const_color]))(var_m) /* const_color on <var_m:Object(MType)>*/;
2403 if (varonce170) {
2404 var171 = varonce170;
2405 } else {
2406 var172 = " = ";
2407 var173 = 3;
2408 var174 = string__NativeString__to_s_with_length(var172, var173);
2409 var171 = var174;
2410 varonce170 = var171;
2411 }
2412 if (varonce175) {
2413 var176 = varonce175;
2414 } else {
2415 var177 = ";";
2416 var178 = 1;
2417 var179 = string__NativeString__to_s_with_length(var177, var178);
2418 var176 = var179;
2419 varonce175 = var176;
2420 }
2421 var180 = NEW_array__Array(&type_array__Arraykernel__Object);
2422 { /* var180 = array_instance Array[Object] */
2423 var181 = 5;
2424 var182 = NEW_array__NativeArray(var181, &type_array__NativeArraykernel__Object);
2425 ((struct instance_array__NativeArray*)var182)->values[0] = (val*) var165;
2426 ((struct instance_array__NativeArray*)var182)->values[1] = (val*) var169;
2427 ((struct instance_array__NativeArray*)var182)->values[2] = (val*) var171;
2428 var183 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2429 ((struct instance_array__NativeArray*)var182)->values[3] = (val*) var183;
2430 ((struct instance_array__NativeArray*)var182)->values[4] = (val*) var176;
2431 ((void (*)(val*, val*, long))(var180->class->vft[COLOR_array__Array__with_native]))(var180, var182, var181) /* with_native on <var180:Array[Object]>*/;
2432 }
2433 var184 = ((val* (*)(val*))(var180->class->vft[COLOR_string__Object__to_s]))(var180) /* to_s on <var180:Array[Object]>*/;
2434 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var184) /* add on <var_v:SeparateCompilerVisitor>*/;
2435 }
2436 } else {
2437 }
2438 }
2439 }
2440 var185 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__color_consts_done]))(self) /* color_consts_done on <self:SeparateCompiler>*/;
2441 ((void (*)(val*, val*))(var185->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var185, var_m) /* add on <var185:HashSet[Object]>*/;
2442 RET_LABEL:;
2443 }
2444 /* method separate_compiler#SeparateCompiler#compile_color_const for (self: Object, SeparateCompilerVisitor, Object, Int) */
2445 void VIRTUAL_separate_compiler__SeparateCompiler__compile_color_const(val* self, val* p0, val* p1, long p2) {
2446 separate_compiler__SeparateCompiler__compile_color_const(self, p0, p1, p2);
2447 RET_LABEL:;
2448 }
2449 /* method separate_compiler#SeparateCompiler#color_consts_done for (self: SeparateCompiler): HashSet[Object] */
2450 val* separate_compiler__SeparateCompiler__color_consts_done(val* self) {
2451 val* var /* : HashSet[Object] */;
2452 val* var1 /* : HashSet[Object] */;
2453 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dcolor_consts_done].val; /* @color_consts_done on <self:SeparateCompiler> */
2454 if (var1 == NULL) {
2455 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @color_consts_done");
2456 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 231);
2457 show_backtrace(1);
2458 }
2459 var = var1;
2460 RET_LABEL:;
2461 return var;
2462 }
2463 /* method separate_compiler#SeparateCompiler#color_consts_done for (self: Object): HashSet[Object] */
2464 val* VIRTUAL_separate_compiler__SeparateCompiler__color_consts_done(val* self) {
2465 val* var /* : HashSet[Object] */;
2466 val* var1 /* : HashSet[Object] */;
2467 var1 = separate_compiler__SeparateCompiler__color_consts_done(self);
2468 var = var1;
2469 RET_LABEL:;
2470 return var;
2471 }
2472 /* method separate_compiler#SeparateCompiler#color_consts_done= for (self: SeparateCompiler, HashSet[Object]) */
2473 void separate_compiler__SeparateCompiler__color_consts_done_61d(val* self, val* p0) {
2474 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dcolor_consts_done].val = p0; /* @color_consts_done on <self:SeparateCompiler> */
2475 RET_LABEL:;
2476 }
2477 /* method separate_compiler#SeparateCompiler#color_consts_done= for (self: Object, HashSet[Object]) */
2478 void VIRTUAL_separate_compiler__SeparateCompiler__color_consts_done_61d(val* self, val* p0) {
2479 separate_compiler__SeparateCompiler__color_consts_done_61d(self, p0);
2480 RET_LABEL:;
2481 }
2482 /* method separate_compiler#SeparateCompiler#do_property_coloring for (self: SeparateCompiler) */
2483 void separate_compiler__SeparateCompiler__do_property_coloring(val* self) {
2484 val* var /* : HashSet[MClass] */;
2485 val* var1 /* : ModelBuilder */;
2486 val* var2 /* : Model */;
2487 val* var3 /* : Array[MClass] */;
2488 val* var_mclasses /* var mclasses: HashSet[MClass] */;
2489 val* var4 /* : MClassColorer */;
2490 val* var5 /* : MModule */;
2491 val* var_class_layout_builder /* var class_layout_builder: MClassColorer */;
2492 val* var6 /* : Layout[Object] */;
2493 val* var7 /* : MPropertyColorer[PropertyLayoutElement] */;
2494 val* var8 /* : MModule */;
2495 val* var_method_layout_builder /* var method_layout_builder: PropertyLayoutBuilder[PropertyLayoutElement] */;
2496 val* var9 /* : MPropertyColorer[MAttribute] */;
2497 val* var10 /* : MModule */;
2498 val* var_attribute_layout_builder /* var attribute_layout_builder: PropertyLayoutBuilder[MAttribute] */;
2499 val* var11 /* : HashMap[MClass, Set[PropertyLayoutElement]] */;
2500 val* var_mmethods /* var mmethods: HashMap[MClass, Set[PropertyLayoutElement]] */;
2501 val* var12 /* : HashMap[MClass, Set[MAttribute]] */;
2502 val* var_mattributes /* var mattributes: HashMap[MClass, Set[MAttribute]] */;
2503 val* var13 /* : Iterator[nullable Object] */;
2504 short int var14 /* : Bool */;
2505 val* var15 /* : nullable Object */;
2506 val* var_mclass /* var mclass: MClass */;
2507 val* var16 /* : HashSet[PropertyLayoutElement] */;
2508 val* var17 /* : HashSet[MAttribute] */;
2509 val* var18 /* : MModule */;
2510 val* var19 /* : Set[MProperty] */;
2511 val* var20 /* : Iterator[nullable Object] */;
2512 short int var21 /* : Bool */;
2513 val* var22 /* : nullable Object */;
2514 val* var_mprop /* var mprop: MProperty */;
2515 short int var23 /* : Bool */;
2516 int cltype;
2517 int idtype;
2518 val* var24 /* : nullable Object */;
2519 short int var25 /* : Bool */;
2520 int cltype26;
2521 int idtype27;
2522 val* var28 /* : nullable Object */;
2523 val* var30 /* : nullable RapidTypeAnalysis */;
2524 val* var31 /* : null */;
2525 short int var32 /* : Bool */;
2526 val* var33 /* : nullable RapidTypeAnalysis */;
2527 val* var34 /* : HashSet[MMethodDef] */;
2528 val* var_super_calls /* var super_calls: nullable Object */;
2529 val* var35 /* : ModelBuilder */;
2530 val* var36 /* : Set[MMethodDef] */;
2531 val* var37 /* : Iterator[nullable Object] */;
2532 short int var38 /* : Bool */;
2533 val* var39 /* : nullable Object */;
2534 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
2535 val* var40 /* : MClassDef */;
2536 val* var41 /* : MClass */;
2537 val* var_mclass42 /* var mclass: MClass */;
2538 val* var43 /* : nullable Object */;
2539 val* var44 /* : MModule */;
2540 val* var45 /* : POSetElement[MClass] */;
2541 val* var46 /* : Collection[Object] */;
2542 val* var47 /* : Iterator[nullable Object] */;
2543 short int var48 /* : Bool */;
2544 val* var49 /* : nullable Object */;
2545 val* var_descendant /* var descendant: MClass */;
2546 val* var50 /* : nullable Object */;
2547 val* var53 /* : Layout[PropertyLayoutElement] */;
2548 val* var54 /* : Map[MClass, Array[nullable MPropDef]] */;
2549 val* var55 /* : nullable Layout[PropertyLayoutElement] */;
2550 val* var56 /* : Map[Object, Int] */;
2551 val* var57 /* : MModule */;
2552 val* var58 /* : POSetElement[MModule] */;
2553 val* var59 /* : Collection[Object] */;
2554 val* var60 /* : Iterator[nullable Object] */;
2555 short int var61 /* : Bool */;
2556 val* var62 /* : nullable Object */;
2557 val* var_mmodule /* var mmodule: MModule */;
2558 val* var63 /* : Array[MClassDef] */;
2559 val* var64 /* : Iterator[nullable Object] */;
2560 short int var65 /* : Bool */;
2561 val* var66 /* : nullable Object */;
2562 val* var_mclassdef /* var mclassdef: MClassDef */;
2563 val* var67 /* : Array[MPropDef] */;
2564 val* var68 /* : Iterator[nullable Object] */;
2565 short int var69 /* : Bool */;
2566 val* var70 /* : nullable Object */;
2567 val* var_mpropdef /* var mpropdef: MPropDef */;
2568 short int var71 /* : Bool */;
2569 val* var72 /* : AbstractCompilerVisitor */;
2570 long var73 /* : Int */;
2571 long var74 /* : Int */;
2572 long var76 /* : Int */;
2573 val* var80 /* : Layout[PropertyLayoutElement] */;
2574 val* var81 /* : Map[MClass, Array[nullable MPropDef]] */;
2575 val* var82 /* : nullable Layout[MAttribute] */;
2576 val* var83 /* : Map[Object, Int] */;
2577 var = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
2578 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
2579 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(var1) /* model on <var1:ModelBuilder>*/;
2580 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__Model__mclasses]))(var2) /* mclasses on <var2:Model>*/;
2581 ((void (*)(val*, val*))(var->class->vft[COLOR_hash_collection__HashSet__from]))(var, var3) /* from on <var:HashSet[MClass]>*/;
2582 var_mclasses = var;
2583 var4 = NEW_layout_builders__MClassColorer(&type_layout_builders__MClassColorer);
2584 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2585 ((void (*)(val*, val*))(var4->class->vft[COLOR_layout_builders__MClassColorer__init]))(var4, var5) /* init on <var4:MClassColorer>*/;
2586 var_class_layout_builder = var4;
2587 var6 = ((val* (*)(val*, val*))(var_class_layout_builder->class->vft[COLOR_layout_builders__TypingLayoutBuilder__build_layout]))(var_class_layout_builder, var_mclasses) /* build_layout on <var_class_layout_builder:MClassColorer>*/;
2588 var6;
2589 var7 = NEW_layout_builders__MPropertyColorer(&type_layout_builders__MPropertyColorerlayout_builders__PropertyLayoutElement);
2590 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2591 ((void (*)(val*, val*, val*))(var7->class->vft[COLOR_layout_builders__MPropertyColorer__init]))(var7, var8, var_class_layout_builder) /* init on <var7:MPropertyColorer[PropertyLayoutElement]>*/;
2592 var_method_layout_builder = var7;
2593 var9 = NEW_layout_builders__MPropertyColorer(&type_layout_builders__MPropertyColorermodel__MAttribute);
2594 var10 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2595 ((void (*)(val*, val*, val*))(var9->class->vft[COLOR_layout_builders__MPropertyColorer__init]))(var9, var10, var_class_layout_builder) /* init on <var9:MPropertyColorer[MAttribute]>*/;
2596 var_attribute_layout_builder = var9;
2597 var11 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutElement);
2598 ((void (*)(val*))(var11->class->vft[COLOR_hash_collection__HashMap__init]))(var11) /* init on <var11:HashMap[MClass, Set[PropertyLayoutElement]]>*/;
2599 var_mmethods = var11;
2600 var12 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassabstract_collection__Setmodel__MAttribute);
2601 ((void (*)(val*))(var12->class->vft[COLOR_hash_collection__HashMap__init]))(var12) /* init on <var12:HashMap[MClass, Set[MAttribute]]>*/;
2602 var_mattributes = var12;
2603 var13 = ((val* (*)(val*))(var_mclasses->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasses) /* iterator on <var_mclasses:HashSet[MClass]>*/;
2604 for(;;) {
2605 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
2606 if(!var14) break;
2607 var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
2608 var_mclass = var15;
2609 var16 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetlayout_builders__PropertyLayoutElement);
2610 ((void (*)(val*))(var16->class->vft[COLOR_hash_collection__HashSet__init]))(var16) /* init on <var16:HashSet[PropertyLayoutElement]>*/;
2611 ((void (*)(val*, val*, val*))(var_mmethods->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_mmethods, var_mclass, var16) /* []= on <var_mmethods:HashMap[MClass, Set[PropertyLayoutElement]]>*/;
2612 var17 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MAttribute);
2613 ((void (*)(val*))(var17->class->vft[COLOR_hash_collection__HashSet__init]))(var17) /* init on <var17:HashSet[MAttribute]>*/;
2614 ((void (*)(val*, val*, val*))(var_mattributes->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_mattributes, var_mclass, var17) /* []= on <var_mattributes:HashMap[MClass, Set[MAttribute]]>*/;
2615 var18 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2616 var19 = ((val* (*)(val*, val*))(var18->class->vft[COLOR_abstract_compiler__MModule__properties]))(var18, var_mclass) /* properties on <var18:MModule>*/;
2617 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__iterator]))(var19) /* iterator on <var19:Set[MProperty]>*/;
2618 for(;;) {
2619 var21 = ((short int (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var20) /* is_ok on <var20:Iterator[nullable Object]>*/;
2620 if(!var21) break;
2621 var22 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__item]))(var20) /* item on <var20:Iterator[nullable Object]>*/;
2622 var_mprop = var22;
2623 /* <var_mprop:MProperty> isa MMethod */
2624 cltype = type_model__MMethod.color;
2625 idtype = type_model__MMethod.id;
2626 if(cltype >= var_mprop->type->table_size) {
2627 var23 = 0;
2628 } else {
2629 var23 = var_mprop->type->type_table[cltype] == idtype;
2630 }
2631 if (var23){
2632 var24 = ((val* (*)(val*, val*))(var_mmethods->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_mmethods, var_mclass) /* [] on <var_mmethods:HashMap[MClass, Set[PropertyLayoutElement]]>*/;
2633 ((void (*)(val*, val*))(var24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var24, var_mprop) /* add on <var24:nullable Object(Set[PropertyLayoutElement])>*/;
2634 } else {
2635 /* <var_mprop:MProperty> isa MAttribute */
2636 cltype26 = type_model__MAttribute.color;
2637 idtype27 = type_model__MAttribute.id;
2638 if(cltype26 >= var_mprop->type->table_size) {
2639 var25 = 0;
2640 } else {
2641 var25 = var_mprop->type->type_table[cltype26] == idtype27;
2642 }
2643 if (var25){
2644 var28 = ((val* (*)(val*, val*))(var_mattributes->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_mattributes, var_mclass) /* [] on <var_mattributes:HashMap[MClass, Set[MAttribute]]>*/;
2645 ((void (*)(val*, val*))(var28->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var28, var_mprop) /* add on <var28:nullable Object(Set[MAttribute])>*/;
2646 } else {
2647 }
2648 }
2649 CONTINUE_label: (void)0;
2650 ((void (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__next]))(var20) /* next on <var20:Iterator[nullable Object]>*/;
2651 }
2652 BREAK_label: (void)0;
2653 CONTINUE_label29: (void)0;
2654 ((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
2655 }
2656 BREAK_label29: (void)0;
2657 var30 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
2658 var31 = NULL;
2659 if (var30 == NULL) {
2660 var32 = 0; /* is null */
2661 } else {
2662 var32 = 1; /* arg is null and recv is not */
2663 }
2664 if (var32){
2665 var33 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
2666 if (var33 == NULL) {
2667 fprintf(stderr, "Runtime error: %s", "Reciever is null");
2668 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 276);
2669 show_backtrace(1);
2670 } else {
2671 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_super_sends]))(var33) /* live_super_sends on <var33:nullable RapidTypeAnalysis>*/;
2672 }
2673 var_super_calls = var34;
2674 } else {
2675 var35 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
2676 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_collect_super_sends__ModelBuilder__collect_super_sends]))(var35) /* collect_super_sends on <var35:ModelBuilder>*/;
2677 var_super_calls = var36;
2678 }
2679 var37 = ((val* (*)(val*))(var_super_calls->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_super_calls) /* iterator on <var_super_calls:nullable Object(Set[MMethodDef])>*/;
2680 for(;;) {
2681 var38 = ((short int (*)(val*))(var37->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var37) /* is_ok on <var37:Iterator[nullable Object]>*/;
2682 if(!var38) break;
2683 var39 = ((val* (*)(val*))(var37->class->vft[COLOR_abstract_collection__Iterator__item]))(var37) /* item on <var37:Iterator[nullable Object]>*/;
2684 var_mmethoddef = var39;
2685 var40 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
2686 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_model__MClassDef__mclass]))(var40) /* mclass on <var40:MClassDef>*/;
2687 var_mclass42 = var41;
2688 var43 = ((val* (*)(val*, val*))(var_mmethods->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_mmethods, var_mclass42) /* [] on <var_mmethods:HashMap[MClass, Set[PropertyLayoutElement]]>*/;
2689 ((void (*)(val*, val*))(var43->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var43, var_mmethoddef) /* add on <var43:nullable Object(Set[PropertyLayoutElement])>*/;
2690 var44 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2691 var45 = ((val* (*)(val*, val*))(var_mclass42->class->vft[COLOR_model__MClass__in_hierarchy]))(var_mclass42, var44) /* in_hierarchy on <var_mclass42:MClass>*/;
2692 var46 = ((val* (*)(val*))(var45->class->vft[COLOR_poset__POSetElement__smallers]))(var45) /* smallers on <var45:POSetElement[MClass]>*/;
2693 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_abstract_collection__Collection__iterator]))(var46) /* iterator on <var46:Collection[Object](Collection[MClass])>*/;
2694 for(;;) {
2695 var48 = ((short int (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var47) /* is_ok on <var47:Iterator[nullable Object]>*/;
2696 if(!var48) break;
2697 var49 = ((val* (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__item]))(var47) /* item on <var47:Iterator[nullable Object]>*/;
2698 var_descendant = var49;
2699 var50 = ((val* (*)(val*, val*))(var_mmethods->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_mmethods, var_descendant) /* [] on <var_mmethods:HashMap[MClass, Set[PropertyLayoutElement]]>*/;
2700 ((void (*)(val*, val*))(var50->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var50, var_mmethoddef) /* add on <var50:nullable Object(Set[PropertyLayoutElement])>*/;
2701 CONTINUE_label51: (void)0;
2702 ((void (*)(val*))(var47->class->vft[COLOR_abstract_collection__Iterator__next]))(var47) /* next on <var47:Iterator[nullable Object]>*/;
2703 }
2704 BREAK_label51: (void)0;
2705 CONTINUE_label52: (void)0;
2706 ((void (*)(val*))(var37->class->vft[COLOR_abstract_collection__Iterator__next]))(var37) /* next on <var37:Iterator[nullable Object]>*/;
2707 }
2708 BREAK_label52: (void)0;
2709 var53 = ((val* (*)(val*, val*))(var_method_layout_builder->class->vft[COLOR_layout_builders__PropertyLayoutBuilder__build_layout]))(var_method_layout_builder, var_mmethods) /* build_layout on <var_method_layout_builder:PropertyLayoutBuilder[PropertyLayoutElement](MPropertyColorer[PropertyLayoutElement])>*/;
2710 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_layout_61d]))(self, var53) /* method_layout= on <self:SeparateCompiler>*/;
2711 var54 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__build_method_tables]))(self, var_mclasses, var_super_calls) /* build_method_tables on <self:SeparateCompiler>*/;
2712 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_tables_61d]))(self, var54) /* method_tables= on <self:SeparateCompiler>*/;
2713 var55 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_layout]))(self) /* method_layout on <self:SeparateCompiler>*/;
2714 if (var55 == NULL) {
2715 fprintf(stderr, "Runtime error: %s", "Reciever is null");
2716 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 291);
2717 show_backtrace(1);
2718 } else {
2719 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_layout_builders__Layout__pos]))(var55) /* pos on <var55:nullable Layout[PropertyLayoutElement]>*/;
2720 }
2721 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_color_consts]))(self, var56) /* compile_color_consts on <self:SeparateCompiler>*/;
2722 var57 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2723 var58 = ((val* (*)(val*))(var57->class->vft[COLOR_mmodule__MModule__in_importation]))(var57) /* in_importation on <var57:MModule>*/;
2724 var59 = ((val* (*)(val*))(var58->class->vft[COLOR_poset__POSetElement__greaters]))(var58) /* greaters on <var58:POSetElement[MModule]>*/;
2725 var60 = ((val* (*)(val*))(var59->class->vft[COLOR_abstract_collection__Collection__iterator]))(var59) /* iterator on <var59:Collection[Object](Collection[MModule])>*/;
2726 for(;;) {
2727 var61 = ((short int (*)(val*))(var60->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var60) /* is_ok on <var60:Iterator[nullable Object]>*/;
2728 if(!var61) break;
2729 var62 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_collection__Iterator__item]))(var60) /* item on <var60:Iterator[nullable Object]>*/;
2730 var_mmodule = var62;
2731 var63 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model__MModule__mclassdefs]))(var_mmodule) /* mclassdefs on <var_mmodule:MModule>*/;
2732 var64 = ((val* (*)(val*))(var63->class->vft[COLOR_abstract_collection__Collection__iterator]))(var63) /* iterator on <var63:Array[MClassDef]>*/;
2733 for(;;) {
2734 var65 = ((short int (*)(val*))(var64->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var64) /* is_ok on <var64:Iterator[nullable Object]>*/;
2735 if(!var65) break;
2736 var66 = ((val* (*)(val*))(var64->class->vft[COLOR_abstract_collection__Iterator__item]))(var64) /* item on <var64:Iterator[nullable Object]>*/;
2737 var_mclassdef = var66;
2738 var67 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef) /* mpropdefs on <var_mclassdef:MClassDef>*/;
2739 var68 = ((val* (*)(val*))(var67->class->vft[COLOR_abstract_collection__Collection__iterator]))(var67) /* iterator on <var67:Array[MPropDef]>*/;
2740 for(;;) {
2741 var69 = ((short int (*)(val*))(var68->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var68) /* is_ok on <var68:Iterator[nullable Object]>*/;
2742 if(!var69) break;
2743 var70 = ((val* (*)(val*))(var68->class->vft[COLOR_abstract_collection__Iterator__item]))(var68) /* item on <var68:Iterator[nullable Object]>*/;
2744 var_mpropdef = var70;
2745 var71 = ((short int (*)(val*))(var_mpropdef->class->vft[COLOR_typing__MPropDef__has_supercall]))(var_mpropdef) /* has_supercall on <var_mpropdef:MPropDef>*/;
2746 if (var71){
2747 var72 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:SeparateCompiler>*/;
2748 var73 = 1;
2749 { /* Inline kernel#Int#unary - (var73) */
2750 var76 = -var73;
2751 var74 = var76;
2752 goto RET_LABEL75;
2753 RET_LABEL75:(void)0;
2754 }
2755 ((void (*)(val*, val*, val*, long))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_color_const]))(self, var72, var_mpropdef, var74) /* compile_color_const on <self:SeparateCompiler>*/;
2756 } else {
2757 }
2758 CONTINUE_label77: (void)0;
2759 ((void (*)(val*))(var68->class->vft[COLOR_abstract_collection__Iterator__next]))(var68) /* next on <var68:Iterator[nullable Object]>*/;
2760 }
2761 BREAK_label77: (void)0;
2762 CONTINUE_label78: (void)0;
2763 ((void (*)(val*))(var64->class->vft[COLOR_abstract_collection__Iterator__next]))(var64) /* next on <var64:Iterator[nullable Object]>*/;
2764 }
2765 BREAK_label78: (void)0;
2766 CONTINUE_label79: (void)0;
2767 ((void (*)(val*))(var60->class->vft[COLOR_abstract_collection__Iterator__next]))(var60) /* next on <var60:Iterator[nullable Object]>*/;
2768 }
2769 BREAK_label79: (void)0;
2770 var80 = ((val* (*)(val*, val*))(var_attribute_layout_builder->class->vft[COLOR_layout_builders__PropertyLayoutBuilder__build_layout]))(var_attribute_layout_builder, var_mattributes) /* build_layout on <var_attribute_layout_builder:PropertyLayoutBuilder[MAttribute](MPropertyColorer[MAttribute])>*/;
2771 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_layout_61d]))(self, var80) /* attr_layout= on <self:SeparateCompiler>*/;
2772 var81 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__build_attr_tables]))(self, var_mclasses) /* build_attr_tables on <self:SeparateCompiler>*/;
2773 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_tables_61d]))(self, var81) /* attr_tables= on <self:SeparateCompiler>*/;
2774 var82 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_layout]))(self) /* attr_layout on <self:SeparateCompiler>*/;
2775 if (var82 == NULL) {
2776 fprintf(stderr, "Runtime error: %s", "Reciever is null");
2777 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 307);
2778 show_backtrace(1);
2779 } else {
2780 var83 = ((val* (*)(val*))(var82->class->vft[COLOR_layout_builders__Layout__pos]))(var82) /* pos on <var82:nullable Layout[MAttribute]>*/;
2781 }
2782 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_color_consts]))(self, var83) /* compile_color_consts on <self:SeparateCompiler>*/;
2783 RET_LABEL:;
2784 }
2785 /* method separate_compiler#SeparateCompiler#do_property_coloring for (self: Object) */
2786 void VIRTUAL_separate_compiler__SeparateCompiler__do_property_coloring(val* self) {
2787 separate_compiler__SeparateCompiler__do_property_coloring(self);
2788 RET_LABEL:;
2789 }
2790 /* method separate_compiler#SeparateCompiler#build_method_tables for (self: SeparateCompiler, Set[MClass], Set[MMethodDef]): Map[MClass, Array[nullable MPropDef]] */
2791 val* separate_compiler__SeparateCompiler__build_method_tables(val* self, val* p0, val* p1) {
2792 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
2793 val* var_mclasses /* var mclasses: Set[MClass] */;
2794 val* var_super_calls /* var super_calls: Set[MMethodDef] */;
2795 val* var1 /* : nullable Layout[PropertyLayoutElement] */;
2796 val* var_layout /* var layout: nullable Layout[PropertyLayoutElement] */;
2797 val* var2 /* : HashMap[MClass, Array[nullable MPropDef]] */;
2798 val* var_tables /* var tables: HashMap[MClass, Array[nullable MPropDef]] */;
2799 val* var3 /* : Iterator[nullable Object] */;
2800 short int var4 /* : Bool */;
2801 val* var5 /* : nullable Object */;
2802 val* var_mclass /* var mclass: MClass */;
2803 val* var6 /* : Array[nullable MPropDef] */;
2804 val* var_table /* var table: Array[nullable MPropDef] */;
2805 val* var7 /* : List[MMethodDef] */;
2806 val* var_supercalls /* var supercalls: List[MMethodDef] */;
2807 val* var8 /* : Array[MClass] */;
2808 val* var_parents /* var parents: Array[MClass] */;
2809 val* var9 /* : MModule */;
2810 val* var10 /* : POSet[MClass] */;
2811 short int var11 /* : Bool */;
2812 val* var12 /* : MModule */;
2813 val* var13 /* : POSetElement[MClass] */;
2814 val* var14 /* : Collection[Object] */;
2815 val* var15 /* : Array[nullable Object] */;
2816 val* var16 /* : MModule */;
2817 val* var17 /* : Iterator[nullable Object] */;
2818 short int var18 /* : Bool */;
2819 val* var19 /* : nullable Object */;
2820 val* var_parent /* var parent: MClass */;
2821 short int var20 /* : Bool */;
2822 val* var21 /* : MModule */;
2823 val* var22 /* : Set[MProperty] */;
2824 val* var23 /* : Iterator[nullable Object] */;
2825 short int var24 /* : Bool */;
2826 val* var25 /* : nullable Object */;
2827 val* var_mproperty /* var mproperty: MProperty */;
2828 short int var26 /* : Bool */;
2829 int cltype;
2830 int idtype;
2831 short int var27 /* : Bool */;
2832 val* var29 /* : Map[Object, Int] */;
2833 val* var30 /* : nullable Object */;
2834 long var31 /* : Int */;
2835 long var_color /* var color: Int */;
2836 long var32 /* : Int */;
2837 short int var33 /* : Bool */;
2838 short int var35 /* : Bool */;
2839 int cltype36;
2840 int idtype37;
2841 const char* var_class_name;
2842 short int var38 /* : Bool */;
2843 val* var39 /* : Range[Int] */;
2844 long var40 /* : Int */;
2845 val* var41 /* : Discrete */;
2846 val* var42 /* : Discrete */;
2847 val* var43 /* : Iterator[nullable Object] */;
2848 short int var44 /* : Bool */;
2849 val* var45 /* : nullable Object */;
2850 long var_i /* var i: Int */;
2851 long var46 /* : Int */;
2852 val* var47 /* : null */;
2853 val* var49 /* : Array[MPropDef] */;
2854 val* var50 /* : Iterator[nullable Object] */;
2855 short int var51 /* : Bool */;
2856 val* var52 /* : nullable Object */;
2857 val* var_mpropdef /* var mpropdef: MMethodDef */;
2858 val* var53 /* : MClassDef */;
2859 val* var54 /* : MClass */;
2860 short int var55 /* : Bool */;
2861 val* var57 /* : Iterator[nullable Object] */;
2862 short int var58 /* : Bool */;
2863 val* var59 /* : nullable Object */;
2864 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
2865 val* var60 /* : Array[MClassDef] */;
2866 val* var61 /* : Iterator[nullable Object] */;
2867 short int var62 /* : Bool */;
2868 val* var63 /* : nullable Object */;
2869 val* var_mclassdef /* var mclassdef: MClassDef */;
2870 val* var64 /* : Array[MPropDef] */;
2871 short int var65 /* : Bool */;
2872 val* var68 /* : MModule */;
2873 val* var69 /* : Set[MProperty] */;
2874 val* var70 /* : Iterator[nullable Object] */;
2875 short int var71 /* : Bool */;
2876 val* var72 /* : nullable Object */;
2877 val* var_mproperty73 /* var mproperty: MProperty */;
2878 short int var74 /* : Bool */;
2879 int cltype75;
2880 int idtype76;
2881 short int var77 /* : Bool */;
2882 val* var79 /* : Map[Object, Int] */;
2883 val* var80 /* : nullable Object */;
2884 long var81 /* : Int */;
2885 long var_color82 /* var color: Int */;
2886 long var83 /* : Int */;
2887 short int var84 /* : Bool */;
2888 short int var86 /* : Bool */;
2889 int cltype87;
2890 int idtype88;
2891 const char* var_class_name89;
2892 short int var90 /* : Bool */;
2893 val* var91 /* : Range[Int] */;
2894 long var92 /* : Int */;
2895 val* var93 /* : Discrete */;
2896 val* var94 /* : Discrete */;
2897 val* var95 /* : Iterator[nullable Object] */;
2898 short int var96 /* : Bool */;
2899 val* var97 /* : nullable Object */;
2900 long var_i98 /* var i: Int */;
2901 long var99 /* : Int */;
2902 val* var100 /* : null */;
2903 val* var102 /* : Array[MPropDef] */;
2904 val* var103 /* : Iterator[nullable Object] */;
2905 short int var104 /* : Bool */;
2906 val* var105 /* : nullable Object */;
2907 val* var_mpropdef106 /* var mpropdef: MMethodDef */;
2908 val* var107 /* : MClassDef */;
2909 val* var108 /* : MClass */;
2910 short int var109 /* : Bool */;
2911 val* var111 /* : Iterator[nullable Object] */;
2912 short int var112 /* : Bool */;
2913 val* var113 /* : nullable Object */;
2914 val* var_mmethoddef114 /* var mmethoddef: MMethodDef */;
2915 val* var115 /* : Array[MClassDef] */;
2916 val* var116 /* : Iterator[nullable Object] */;
2917 short int var117 /* : Bool */;
2918 val* var118 /* : nullable Object */;
2919 val* var_mclassdef119 /* var mclassdef: MClassDef */;
2920 val* var120 /* : Array[MPropDef] */;
2921 short int var121 /* : Bool */;
2922 val* var124 /* : Iterator[nullable Object] */;
2923 short int var125 /* : Bool */;
2924 val* var126 /* : nullable Object */;
2925 val* var_supercall /* var supercall: MMethodDef */;
2926 val* var127 /* : Map[Object, Int] */;
2927 val* var128 /* : nullable Object */;
2928 long var129 /* : Int */;
2929 long var_color130 /* var color: Int */;
2930 long var131 /* : Int */;
2931 short int var132 /* : Bool */;
2932 short int var134 /* : Bool */;
2933 int cltype135;
2934 int idtype136;
2935 const char* var_class_name137;
2936 short int var138 /* : Bool */;
2937 val* var139 /* : Range[Int] */;
2938 long var140 /* : Int */;
2939 val* var141 /* : Discrete */;
2940 val* var142 /* : Discrete */;
2941 val* var143 /* : Iterator[nullable Object] */;
2942 short int var144 /* : Bool */;
2943 val* var145 /* : nullable Object */;
2944 long var_i146 /* var i: Int */;
2945 long var147 /* : Int */;
2946 val* var148 /* : null */;
2947 val* var150 /* : MModule */;
2948 val* var151 /* : MClassDef */;
2949 val* var152 /* : MClassType */;
2950 val* var153 /* : MPropDef */;
2951 val* var_mmethoddef154 /* var mmethoddef: MMethodDef */;
2952 var_mclasses = p0;
2953 var_super_calls = p1;
2954 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_layout]))(self) /* method_layout on <self:SeparateCompiler>*/;
2955 var_layout = var1;
2956 var2 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassarray__Arraynullable_model__MPropDef);
2957 ((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashMap__init]))(var2) /* init on <var2:HashMap[MClass, Array[nullable MPropDef]]>*/;
2958 var_tables = var2;
2959 var3 = ((val* (*)(val*))(var_mclasses->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasses) /* iterator on <var_mclasses:Set[MClass]>*/;
2960 for(;;) {
2961 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
2962 if(!var4) break;
2963 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
2964 var_mclass = var5;
2965 var6 = NEW_array__Array(&type_array__Arraynullable_model__MPropDef);
2966 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[nullable MPropDef]>*/;
2967 var_table = var6;
2968 var7 = NEW_list__List(&type_list__Listmodel__MMethodDef);
2969 ((void (*)(val*))(var7->class->vft[COLOR_list__List__init]))(var7) /* init on <var7:List[MMethodDef]>*/;
2970 var_supercalls = var7;
2971 var8 = NEW_array__Array(&type_array__Arraymodel__MClass);
2972 ((void (*)(val*))(var8->class->vft[COLOR_array__Array__init]))(var8) /* init on <var8:Array[MClass]>*/;
2973 var_parents = var8;
2974 var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2975 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var9) /* flatten_mclass_hierarchy on <var9:MModule>*/;
2976 var11 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__Collection__has]))(var10, var_mclass) /* has on <var10:POSet[MClass]>*/;
2977 if (var11){
2978 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2979 var13 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__in_hierarchy]))(var_mclass, var12) /* in_hierarchy on <var_mclass:MClass>*/;
2980 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_poset__POSetElement__greaters]))(var13) /* greaters on <var13:POSetElement[MClass]>*/;
2981 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_array__Collection__to_a]))(var14) /* to_a on <var14:Collection[Object](Collection[MClass])>*/;
2982 var_parents = var15;
2983 var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2984 ((void (*)(val*, val*))(var16->class->vft[COLOR_model__MModule__linearize_mclasses]))(var16, var_parents) /* linearize_mclasses on <var16:MModule>*/;
2985 } else {
2986 }
2987 var17 = ((val* (*)(val*))(var_parents->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_parents) /* iterator on <var_parents:Array[MClass]>*/;
2988 for(;;) {
2989 var18 = ((short int (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var17) /* is_ok on <var17:Iterator[nullable Object]>*/;
2990 if(!var18) break;
2991 var19 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__item]))(var17) /* item on <var17:Iterator[nullable Object]>*/;
2992 var_parent = var19;
2993 var20 = ((short int (*)(val*, val*))(var_parent->class->vft[COLOR_kernel__Object___61d_61d]))(var_parent, var_mclass) /* == on <var_parent:MClass>*/;
2994 if (var20){
2995 goto CONTINUE_label;
2996 } else {
2997 }
2998 var21 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2999 var22 = ((val* (*)(val*, val*))(var21->class->vft[COLOR_abstract_compiler__MModule__properties]))(var21, var_parent) /* properties on <var21:MModule>*/;
3000 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__iterator]))(var22) /* iterator on <var22:Set[MProperty]>*/;
3001 for(;;) {
3002 var24 = ((short int (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var23) /* is_ok on <var23:Iterator[nullable Object]>*/;
3003 if(!var24) break;
3004 var25 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__item]))(var23) /* item on <var23:Iterator[nullable Object]>*/;
3005 var_mproperty = var25;
3006 /* <var_mproperty:MProperty> isa MMethod */
3007 cltype = type_model__MMethod.color;
3008 idtype = type_model__MMethod.id;
3009 if(cltype >= var_mproperty->type->table_size) {
3010 var26 = 0;
3011 } else {
3012 var26 = var_mproperty->type->type_table[cltype] == idtype;
3013 }
3014 var27 = !var26;
3015 if (var27){
3016 goto CONTINUE_label28;
3017 } else {
3018 }
3019 if (var_layout == NULL) {
3020 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3021 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 328);
3022 show_backtrace(1);
3023 } else {
3024 var29 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[PropertyLayoutElement]>*/;
3025 }
3026 var30 = ((val* (*)(val*, val*))(var29->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var29, var_mproperty) /* [] on <var29:Map[Object, Int](Map[PropertyLayoutElement, Int])>*/;
3027 var31 = ((struct instance_kernel__Int*)var30)->value; /* autounbox from nullable Object to Int */;
3028 var_color = var31;
3029 var32 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3030 { /* Inline kernel#Int#<= (var32,var_color) */
3031 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
3032 /* <var_color:Int> isa OTHER */
3033 var35 = 1; /* easy <var_color:Int> isa OTHER*/
3034 if (!var35) {
3035 var_class_name = type_kernel__Int.name;
3036 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3037 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3038 show_backtrace(1);
3039 }
3040 var38 = var32 <= var_color;
3041 var33 = var38;
3042 goto RET_LABEL34;
3043 RET_LABEL34:(void)0;
3044 }
3045 if (var33){
3046 var39 = NEW_range__Range(&type_range__Rangekernel__Int);
3047 var40 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3048 var41 = BOX_kernel__Int(var40); /* autobox from Int to Discrete */
3049 var42 = BOX_kernel__Int(var_color); /* autobox from Int to Discrete */
3050 ((void (*)(val*, val*, val*))(var39->class->vft[COLOR_range__Range__without_last]))(var39, var41, var42) /* without_last on <var39:Range[Int]>*/;
3051 var43 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on <var39:Range[Int]>*/;
3052 for(;;) {
3053 var44 = ((short int (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var43) /* is_ok on <var43:Iterator[nullable Object]>*/;
3054 if(!var44) break;
3055 var45 = ((val* (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__item]))(var43) /* item on <var43:Iterator[nullable Object]>*/;
3056 var46 = ((struct instance_kernel__Int*)var45)->value; /* autounbox from nullable Object to Int */;
3057 var_i = var46;
3058 var47 = NULL;
3059 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_i, var47) /* []= on <var_table:Array[nullable MPropDef]>*/;
3060 CONTINUE_label48: (void)0;
3061 ((void (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__next]))(var43) /* next on <var43:Iterator[nullable Object]>*/;
3062 }
3063 BREAK_label48: (void)0;
3064 } else {
3065 }
3066 var49 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on <var_mproperty:MProperty(MMethod)>*/;
3067 var50 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_collection__Collection__iterator]))(var49) /* iterator on <var49:Array[MPropDef](Array[MMethodDef])>*/;
3068 for(;;) {
3069 var51 = ((short int (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var50) /* is_ok on <var50:Iterator[nullable Object]>*/;
3070 if(!var51) break;
3071 var52 = ((val* (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__item]))(var50) /* item on <var50:Iterator[nullable Object]>*/;
3072 var_mpropdef = var52;
3073 var53 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MMethodDef>*/;
3074 var54 = ((val* (*)(val*))(var53->class->vft[COLOR_model__MClassDef__mclass]))(var53) /* mclass on <var53:MClassDef>*/;
3075 var55 = ((short int (*)(val*, val*))(var54->class->vft[COLOR_kernel__Object___61d_61d]))(var54, var_parent) /* == on <var54:MClass>*/;
3076 if (var55){
3077 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_color, var_mpropdef) /* []= on <var_table:Array[nullable MPropDef]>*/;
3078 } else {
3079 }
3080 CONTINUE_label56: (void)0;
3081 ((void (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__next]))(var50) /* next on <var50:Iterator[nullable Object]>*/;
3082 }
3083 BREAK_label56: (void)0;
3084 CONTINUE_label28: (void)0;
3085 ((void (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__next]))(var23) /* next on <var23:Iterator[nullable Object]>*/;
3086 }
3087 BREAK_label28: (void)0;
3088 var57 = ((val* (*)(val*))(var_super_calls->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_super_calls) /* iterator on <var_super_calls:Set[MMethodDef]>*/;
3089 for(;;) {
3090 var58 = ((short int (*)(val*))(var57->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var57) /* is_ok on <var57:Iterator[nullable Object]>*/;
3091 if(!var58) break;
3092 var59 = ((val* (*)(val*))(var57->class->vft[COLOR_abstract_collection__Iterator__item]))(var57) /* item on <var57:Iterator[nullable Object]>*/;
3093 var_mmethoddef = var59;
3094 var60 = ((val* (*)(val*))(var_parent->class->vft[COLOR_model__MClass__mclassdefs]))(var_parent) /* mclassdefs on <var_parent:MClass>*/;
3095 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_collection__Collection__iterator]))(var60) /* iterator on <var60:Array[MClassDef]>*/;
3096 for(;;) {
3097 var62 = ((short int (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var61) /* is_ok on <var61:Iterator[nullable Object]>*/;
3098 if(!var62) break;
3099 var63 = ((val* (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__item]))(var61) /* item on <var61:Iterator[nullable Object]>*/;
3100 var_mclassdef = var63;
3101 var64 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef) /* mpropdefs on <var_mclassdef:MClassDef>*/;
3102 var65 = ((short int (*)(val*, val*))(var64->class->vft[COLOR_abstract_collection__Collection__has]))(var64, var_mmethoddef) /* has on <var64:Array[MPropDef]>*/;
3103 if (var65){
3104 ((void (*)(val*, val*))(var_supercalls->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_supercalls, var_mmethoddef) /* add on <var_supercalls:List[MMethodDef]>*/;
3105 } else {
3106 }
3107 CONTINUE_label66: (void)0;
3108 ((void (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__next]))(var61) /* next on <var61:Iterator[nullable Object]>*/;
3109 }
3110 BREAK_label66: (void)0;
3111 CONTINUE_label67: (void)0;
3112 ((void (*)(val*))(var57->class->vft[COLOR_abstract_collection__Iterator__next]))(var57) /* next on <var57:Iterator[nullable Object]>*/;
3113 }
3114 BREAK_label67: (void)0;
3115 CONTINUE_label: (void)0;
3116 ((void (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__next]))(var17) /* next on <var17:Iterator[nullable Object]>*/;
3117 }
3118 BREAK_label: (void)0;
3119 var68 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3120 var69 = ((val* (*)(val*, val*))(var68->class->vft[COLOR_abstract_compiler__MModule__properties]))(var68, var_mclass) /* properties on <var68:MModule>*/;
3121 var70 = ((val* (*)(val*))(var69->class->vft[COLOR_abstract_collection__Collection__iterator]))(var69) /* iterator on <var69:Set[MProperty]>*/;
3122 for(;;) {
3123 var71 = ((short int (*)(val*))(var70->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var70) /* is_ok on <var70:Iterator[nullable Object]>*/;
3124 if(!var71) break;
3125 var72 = ((val* (*)(val*))(var70->class->vft[COLOR_abstract_collection__Iterator__item]))(var70) /* item on <var70:Iterator[nullable Object]>*/;
3126 var_mproperty73 = var72;
3127 /* <var_mproperty73:MProperty> isa MMethod */
3128 cltype75 = type_model__MMethod.color;
3129 idtype76 = type_model__MMethod.id;
3130 if(cltype75 >= var_mproperty73->type->table_size) {
3131 var74 = 0;
3132 } else {
3133 var74 = var_mproperty73->type->type_table[cltype75] == idtype76;
3134 }
3135 var77 = !var74;
3136 if (var77){
3137 goto CONTINUE_label78;
3138 } else {
3139 }
3140 if (var_layout == NULL) {
3141 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3142 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 354);
3143 show_backtrace(1);
3144 } else {
3145 var79 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[PropertyLayoutElement]>*/;
3146 }
3147 var80 = ((val* (*)(val*, val*))(var79->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var79, var_mproperty73) /* [] on <var79:Map[Object, Int](Map[PropertyLayoutElement, Int])>*/;
3148 var81 = ((struct instance_kernel__Int*)var80)->value; /* autounbox from nullable Object to Int */;
3149 var_color82 = var81;
3150 var83 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3151 { /* Inline kernel#Int#<= (var83,var_color82) */
3152 /* Covariant cast for argument 0 (i) <var_color82:Int> isa OTHER */
3153 /* <var_color82:Int> isa OTHER */
3154 var86 = 1; /* easy <var_color82:Int> isa OTHER*/
3155 if (!var86) {
3156 var_class_name89 = type_kernel__Int.name;
3157 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name89);
3158 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3159 show_backtrace(1);
3160 }
3161 var90 = var83 <= var_color82;
3162 var84 = var90;
3163 goto RET_LABEL85;
3164 RET_LABEL85:(void)0;
3165 }
3166 if (var84){
3167 var91 = NEW_range__Range(&type_range__Rangekernel__Int);
3168 var92 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3169 var93 = BOX_kernel__Int(var92); /* autobox from Int to Discrete */
3170 var94 = BOX_kernel__Int(var_color82); /* autobox from Int to Discrete */
3171 ((void (*)(val*, val*, val*))(var91->class->vft[COLOR_range__Range__without_last]))(var91, var93, var94) /* without_last on <var91:Range[Int]>*/;
3172 var95 = ((val* (*)(val*))(var91->class->vft[COLOR_abstract_collection__Collection__iterator]))(var91) /* iterator on <var91:Range[Int]>*/;
3173 for(;;) {
3174 var96 = ((short int (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var95) /* is_ok on <var95:Iterator[nullable Object]>*/;
3175 if(!var96) break;
3176 var97 = ((val* (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__item]))(var95) /* item on <var95:Iterator[nullable Object]>*/;
3177 var99 = ((struct instance_kernel__Int*)var97)->value; /* autounbox from nullable Object to Int */;
3178 var_i98 = var99;
3179 var100 = NULL;
3180 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_i98, var100) /* []= on <var_table:Array[nullable MPropDef]>*/;
3181 CONTINUE_label101: (void)0;
3182 ((void (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__next]))(var95) /* next on <var95:Iterator[nullable Object]>*/;
3183 }
3184 BREAK_label101: (void)0;
3185 } else {
3186 }
3187 var102 = ((val* (*)(val*))(var_mproperty73->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty73) /* mpropdefs on <var_mproperty73:MProperty(MMethod)>*/;
3188 var103 = ((val* (*)(val*))(var102->class->vft[COLOR_abstract_collection__Collection__iterator]))(var102) /* iterator on <var102:Array[MPropDef](Array[MMethodDef])>*/;
3189 for(;;) {
3190 var104 = ((short int (*)(val*))(var103->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var103) /* is_ok on <var103:Iterator[nullable Object]>*/;
3191 if(!var104) break;
3192 var105 = ((val* (*)(val*))(var103->class->vft[COLOR_abstract_collection__Iterator__item]))(var103) /* item on <var103:Iterator[nullable Object]>*/;
3193 var_mpropdef106 = var105;
3194 var107 = ((val* (*)(val*))(var_mpropdef106->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef106) /* mclassdef on <var_mpropdef106:MMethodDef>*/;
3195 var108 = ((val* (*)(val*))(var107->class->vft[COLOR_model__MClassDef__mclass]))(var107) /* mclass on <var107:MClassDef>*/;
3196 var109 = ((short int (*)(val*, val*))(var108->class->vft[COLOR_kernel__Object___61d_61d]))(var108, var_mclass) /* == on <var108:MClass>*/;
3197 if (var109){
3198 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_color82, var_mpropdef106) /* []= on <var_table:Array[nullable MPropDef]>*/;
3199 } else {
3200 }
3201 CONTINUE_label110: (void)0;
3202 ((void (*)(val*))(var103->class->vft[COLOR_abstract_collection__Iterator__next]))(var103) /* next on <var103:Iterator[nullable Object]>*/;
3203 }
3204 BREAK_label110: (void)0;
3205 CONTINUE_label78: (void)0;
3206 ((void (*)(val*))(var70->class->vft[COLOR_abstract_collection__Iterator__next]))(var70) /* next on <var70:Iterator[nullable Object]>*/;
3207 }
3208 BREAK_label78: (void)0;
3209 var111 = ((val* (*)(val*))(var_super_calls->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_super_calls) /* iterator on <var_super_calls:Set[MMethodDef]>*/;
3210 for(;;) {
3211 var112 = ((short int (*)(val*))(var111->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var111) /* is_ok on <var111:Iterator[nullable Object]>*/;
3212 if(!var112) break;
3213 var113 = ((val* (*)(val*))(var111->class->vft[COLOR_abstract_collection__Iterator__item]))(var111) /* item on <var111:Iterator[nullable Object]>*/;
3214 var_mmethoddef114 = var113;
3215 var115 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclassdefs]))(var_mclass) /* mclassdefs on <var_mclass:MClass>*/;
3216 var116 = ((val* (*)(val*))(var115->class->vft[COLOR_abstract_collection__Collection__iterator]))(var115) /* iterator on <var115:Array[MClassDef]>*/;
3217 for(;;) {
3218 var117 = ((short int (*)(val*))(var116->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var116) /* is_ok on <var116:Iterator[nullable Object]>*/;
3219 if(!var117) break;
3220 var118 = ((val* (*)(val*))(var116->class->vft[COLOR_abstract_collection__Iterator__item]))(var116) /* item on <var116:Iterator[nullable Object]>*/;
3221 var_mclassdef119 = var118;
3222 var120 = ((val* (*)(val*))(var_mclassdef119->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef119) /* mpropdefs on <var_mclassdef119:MClassDef>*/;
3223 var121 = ((short int (*)(val*, val*))(var120->class->vft[COLOR_abstract_collection__Collection__has]))(var120, var_mmethoddef114) /* has on <var120:Array[MPropDef]>*/;
3224 if (var121){
3225 ((void (*)(val*, val*))(var_supercalls->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_supercalls, var_mmethoddef114) /* add on <var_supercalls:List[MMethodDef]>*/;
3226 } else {
3227 }
3228 CONTINUE_label122: (void)0;
3229 ((void (*)(val*))(var116->class->vft[COLOR_abstract_collection__Iterator__next]))(var116) /* next on <var116:Iterator[nullable Object]>*/;
3230 }
3231 BREAK_label122: (void)0;
3232 CONTINUE_label123: (void)0;
3233 ((void (*)(val*))(var111->class->vft[COLOR_abstract_collection__Iterator__next]))(var111) /* next on <var111:Iterator[nullable Object]>*/;
3234 }
3235 BREAK_label123: (void)0;
3236 var124 = ((val* (*)(val*))(var_supercalls->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_supercalls) /* iterator on <var_supercalls:List[MMethodDef]>*/;
3237 for(;;) {
3238 var125 = ((short int (*)(val*))(var124->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var124) /* is_ok on <var124:Iterator[nullable Object]>*/;
3239 if(!var125) break;
3240 var126 = ((val* (*)(val*))(var124->class->vft[COLOR_abstract_collection__Iterator__item]))(var124) /* item on <var124:Iterator[nullable Object]>*/;
3241 var_supercall = var126;
3242 if (var_layout == NULL) {
3243 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3244 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 377);
3245 show_backtrace(1);
3246 } else {
3247 var127 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[PropertyLayoutElement]>*/;
3248 }
3249 var128 = ((val* (*)(val*, val*))(var127->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var127, var_supercall) /* [] on <var127:Map[Object, Int](Map[PropertyLayoutElement, Int])>*/;
3250 var129 = ((struct instance_kernel__Int*)var128)->value; /* autounbox from nullable Object to Int */;
3251 var_color130 = var129;
3252 var131 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3253 { /* Inline kernel#Int#<= (var131,var_color130) */
3254 /* Covariant cast for argument 0 (i) <var_color130:Int> isa OTHER */
3255 /* <var_color130:Int> isa OTHER */
3256 var134 = 1; /* easy <var_color130:Int> isa OTHER*/
3257 if (!var134) {
3258 var_class_name137 = type_kernel__Int.name;
3259 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name137);
3260 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3261 show_backtrace(1);
3262 }
3263 var138 = var131 <= var_color130;
3264 var132 = var138;
3265 goto RET_LABEL133;
3266 RET_LABEL133:(void)0;
3267 }
3268 if (var132){
3269 var139 = NEW_range__Range(&type_range__Rangekernel__Int);
3270 var140 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3271 var141 = BOX_kernel__Int(var140); /* autobox from Int to Discrete */
3272 var142 = BOX_kernel__Int(var_color130); /* autobox from Int to Discrete */
3273 ((void (*)(val*, val*, val*))(var139->class->vft[COLOR_range__Range__without_last]))(var139, var141, var142) /* without_last on <var139:Range[Int]>*/;
3274 var143 = ((val* (*)(val*))(var139->class->vft[COLOR_abstract_collection__Collection__iterator]))(var139) /* iterator on <var139:Range[Int]>*/;
3275 for(;;) {
3276 var144 = ((short int (*)(val*))(var143->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var143) /* is_ok on <var143:Iterator[nullable Object]>*/;
3277 if(!var144) break;
3278 var145 = ((val* (*)(val*))(var143->class->vft[COLOR_abstract_collection__Iterator__item]))(var143) /* item on <var143:Iterator[nullable Object]>*/;
3279 var147 = ((struct instance_kernel__Int*)var145)->value; /* autounbox from nullable Object to Int */;
3280 var_i146 = var147;
3281 var148 = NULL;
3282 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_i146, var148) /* []= on <var_table:Array[nullable MPropDef]>*/;
3283 CONTINUE_label149: (void)0;
3284 ((void (*)(val*))(var143->class->vft[COLOR_abstract_collection__Iterator__next]))(var143) /* next on <var143:Iterator[nullable Object]>*/;
3285 }
3286 BREAK_label149: (void)0;
3287 } else {
3288 }
3289 var150 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3290 var151 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro]))(var_mclass) /* intro on <var_mclass:MClass>*/;
3291 var152 = ((val* (*)(val*))(var151->class->vft[COLOR_model__MClassDef__bound_mtype]))(var151) /* bound_mtype on <var151:MClassDef>*/;
3292 var153 = ((val* (*)(val*, val*, val*))(var_supercall->class->vft[COLOR_model__MPropDef__lookup_next_definition]))(var_supercall, var150, var152) /* lookup_next_definition on <var_supercall:MMethodDef>*/;
3293 var_mmethoddef154 = var153;
3294 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_color130, var_mmethoddef154) /* []= on <var_table:Array[nullable MPropDef]>*/;
3295 CONTINUE_label155: (void)0;
3296 ((void (*)(val*))(var124->class->vft[COLOR_abstract_collection__Iterator__next]))(var124) /* next on <var124:Iterator[nullable Object]>*/;
3297 }
3298 BREAK_label155: (void)0;
3299 ((void (*)(val*, val*, val*))(var_tables->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_tables, var_mclass, var_table) /* []= on <var_tables:HashMap[MClass, Array[nullable MPropDef]]>*/;
3300 CONTINUE_label156: (void)0;
3301 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
3302 }
3303 BREAK_label156: (void)0;
3304 var = var_tables;
3305 goto RET_LABEL;
3306 RET_LABEL:;
3307 return var;
3308 }
3309 /* method separate_compiler#SeparateCompiler#build_method_tables for (self: Object, Set[MClass], Set[MMethodDef]): Map[MClass, Array[nullable MPropDef]] */
3310 val* VIRTUAL_separate_compiler__SeparateCompiler__build_method_tables(val* self, val* p0, val* p1) {
3311 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
3312 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
3313 var1 = separate_compiler__SeparateCompiler__build_method_tables(self, p0, p1);
3314 var = var1;
3315 RET_LABEL:;
3316 return var;
3317 }
3318 /* method separate_compiler#SeparateCompiler#build_attr_tables for (self: SeparateCompiler, Set[MClass]): Map[MClass, Array[nullable MPropDef]] */
3319 val* separate_compiler__SeparateCompiler__build_attr_tables(val* self, val* p0) {
3320 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
3321 val* var_mclasses /* var mclasses: Set[MClass] */;
3322 val* var1 /* : nullable Layout[MAttribute] */;
3323 val* var_layout /* var layout: nullable Layout[MAttribute] */;
3324 val* var2 /* : HashMap[MClass, Array[nullable MPropDef]] */;
3325 val* var_tables /* var tables: HashMap[MClass, Array[nullable MPropDef]] */;
3326 val* var3 /* : Iterator[nullable Object] */;
3327 short int var4 /* : Bool */;
3328 val* var5 /* : nullable Object */;
3329 val* var_mclass /* var mclass: MClass */;
3330 val* var6 /* : Array[nullable MPropDef] */;
3331 val* var_table /* var table: Array[nullable MPropDef] */;
3332 val* var7 /* : Array[MClass] */;
3333 val* var_parents /* var parents: Array[MClass] */;
3334 val* var8 /* : MModule */;
3335 val* var9 /* : POSet[MClass] */;
3336 short int var10 /* : Bool */;
3337 val* var11 /* : MModule */;
3338 val* var12 /* : POSetElement[MClass] */;
3339 val* var13 /* : Collection[Object] */;
3340 val* var14 /* : Array[nullable Object] */;
3341 val* var15 /* : MModule */;
3342 val* var16 /* : Iterator[nullable Object] */;
3343 short int var17 /* : Bool */;
3344 val* var18 /* : nullable Object */;
3345 val* var_parent /* var parent: MClass */;
3346 short int var19 /* : Bool */;
3347 val* var20 /* : MModule */;
3348 val* var21 /* : Set[MProperty] */;
3349 val* var22 /* : Iterator[nullable Object] */;
3350 short int var23 /* : Bool */;
3351 val* var24 /* : nullable Object */;
3352 val* var_mproperty /* var mproperty: MProperty */;
3353 short int var25 /* : Bool */;
3354 int cltype;
3355 int idtype;
3356 short int var26 /* : Bool */;
3357 val* var28 /* : Map[Object, Int] */;
3358 val* var29 /* : nullable Object */;
3359 long var30 /* : Int */;
3360 long var_color /* var color: Int */;
3361 long var31 /* : Int */;
3362 short int var32 /* : Bool */;
3363 short int var34 /* : Bool */;
3364 int cltype35;
3365 int idtype36;
3366 const char* var_class_name;
3367 short int var37 /* : Bool */;
3368 val* var38 /* : Range[Int] */;
3369 long var39 /* : Int */;
3370 val* var40 /* : Discrete */;
3371 val* var41 /* : Discrete */;
3372 val* var42 /* : Iterator[nullable Object] */;
3373 short int var43 /* : Bool */;
3374 val* var44 /* : nullable Object */;
3375 long var_i /* var i: Int */;
3376 long var45 /* : Int */;
3377 val* var46 /* : null */;
3378 val* var48 /* : Array[MPropDef] */;
3379 val* var49 /* : Iterator[nullable Object] */;
3380 short int var50 /* : Bool */;
3381 val* var51 /* : nullable Object */;
3382 val* var_mpropdef /* var mpropdef: MAttributeDef */;
3383 val* var52 /* : MClassDef */;
3384 val* var53 /* : MClass */;
3385 short int var54 /* : Bool */;
3386 val* var56 /* : MModule */;
3387 val* var57 /* : Set[MProperty] */;
3388 val* var58 /* : Iterator[nullable Object] */;
3389 short int var59 /* : Bool */;
3390 val* var60 /* : nullable Object */;
3391 val* var_mproperty61 /* var mproperty: MProperty */;
3392 short int var62 /* : Bool */;
3393 int cltype63;
3394 int idtype64;
3395 short int var65 /* : Bool */;
3396 val* var67 /* : Map[Object, Int] */;
3397 val* var68 /* : nullable Object */;
3398 long var69 /* : Int */;
3399 long var_color70 /* var color: Int */;
3400 long var71 /* : Int */;
3401 short int var72 /* : Bool */;
3402 short int var74 /* : Bool */;
3403 int cltype75;
3404 int idtype76;
3405 const char* var_class_name77;
3406 short int var78 /* : Bool */;
3407 val* var79 /* : Range[Int] */;
3408 long var80 /* : Int */;
3409 val* var81 /* : Discrete */;
3410 val* var82 /* : Discrete */;
3411 val* var83 /* : Iterator[nullable Object] */;
3412 short int var84 /* : Bool */;
3413 val* var85 /* : nullable Object */;
3414 long var_i86 /* var i: Int */;
3415 long var87 /* : Int */;
3416 val* var88 /* : null */;
3417 val* var90 /* : Array[MPropDef] */;
3418 val* var91 /* : Iterator[nullable Object] */;
3419 short int var92 /* : Bool */;
3420 val* var93 /* : nullable Object */;
3421 val* var_mpropdef94 /* var mpropdef: MAttributeDef */;
3422 val* var95 /* : MClassDef */;
3423 val* var96 /* : MClass */;
3424 short int var97 /* : Bool */;
3425 var_mclasses = p0;
3426 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_layout]))(self) /* attr_layout on <self:SeparateCompiler>*/;
3427 var_layout = var1;
3428 var2 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassarray__Arraynullable_model__MPropDef);
3429 ((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashMap__init]))(var2) /* init on <var2:HashMap[MClass, Array[nullable MPropDef]]>*/;
3430 var_tables = var2;
3431 var3 = ((val* (*)(val*))(var_mclasses->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasses) /* iterator on <var_mclasses:Set[MClass]>*/;
3432 for(;;) {
3433 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
3434 if(!var4) break;
3435 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
3436 var_mclass = var5;
3437 var6 = NEW_array__Array(&type_array__Arraynullable_model__MPropDef);
3438 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[nullable MPropDef]>*/;
3439 var_table = var6;
3440 var7 = NEW_array__Array(&type_array__Arraymodel__MClass);
3441 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[MClass]>*/;
3442 var_parents = var7;
3443 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3444 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var8) /* flatten_mclass_hierarchy on <var8:MModule>*/;
3445 var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__Collection__has]))(var9, var_mclass) /* has on <var9:POSet[MClass]>*/;
3446 if (var10){
3447 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3448 var12 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__in_hierarchy]))(var_mclass, var11) /* in_hierarchy on <var_mclass:MClass>*/;
3449 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_poset__POSetElement__greaters]))(var12) /* greaters on <var12:POSetElement[MClass]>*/;
3450 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_array__Collection__to_a]))(var13) /* to_a on <var13:Collection[Object](Collection[MClass])>*/;
3451 var_parents = var14;
3452 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3453 ((void (*)(val*, val*))(var15->class->vft[COLOR_model__MModule__linearize_mclasses]))(var15, var_parents) /* linearize_mclasses on <var15:MModule>*/;
3454 } else {
3455 }
3456 var16 = ((val* (*)(val*))(var_parents->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_parents) /* iterator on <var_parents:Array[MClass]>*/;
3457 for(;;) {
3458 var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on <var16:Iterator[nullable Object]>*/;
3459 if(!var17) break;
3460 var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on <var16:Iterator[nullable Object]>*/;
3461 var_parent = var18;
3462 var19 = ((short int (*)(val*, val*))(var_parent->class->vft[COLOR_kernel__Object___61d_61d]))(var_parent, var_mclass) /* == on <var_parent:MClass>*/;
3463 if (var19){
3464 goto CONTINUE_label;
3465 } else {
3466 }
3467 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3468 var21 = ((val* (*)(val*, val*))(var20->class->vft[COLOR_abstract_compiler__MModule__properties]))(var20, var_parent) /* properties on <var20:MModule>*/;
3469 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_abstract_collection__Collection__iterator]))(var21) /* iterator on <var21:Set[MProperty]>*/;
3470 for(;;) {
3471 var23 = ((short int (*)(val*))(var22->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var22) /* is_ok on <var22:Iterator[nullable Object]>*/;
3472 if(!var23) break;
3473 var24 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Iterator__item]))(var22) /* item on <var22:Iterator[nullable Object]>*/;
3474 var_mproperty = var24;
3475 /* <var_mproperty:MProperty> isa MAttribute */
3476 cltype = type_model__MAttribute.color;
3477 idtype = type_model__MAttribute.id;
3478 if(cltype >= var_mproperty->type->table_size) {
3479 var25 = 0;
3480 } else {
3481 var25 = var_mproperty->type->type_table[cltype] == idtype;
3482 }
3483 var26 = !var25;
3484 if (var26){
3485 goto CONTINUE_label27;
3486 } else {
3487 }
3488 if (var_layout == NULL) {
3489 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3490 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 406);
3491 show_backtrace(1);
3492 } else {
3493 var28 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[MAttribute]>*/;
3494 }
3495 var29 = ((val* (*)(val*, val*))(var28->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var28, var_mproperty) /* [] on <var28:Map[Object, Int](Map[MAttribute, Int])>*/;
3496 var30 = ((struct instance_kernel__Int*)var29)->value; /* autounbox from nullable Object to Int */;
3497 var_color = var30;
3498 var31 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3499 { /* Inline kernel#Int#<= (var31,var_color) */
3500 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
3501 /* <var_color:Int> isa OTHER */
3502 var34 = 1; /* easy <var_color:Int> isa OTHER*/
3503 if (!var34) {
3504 var_class_name = type_kernel__Int.name;
3505 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3506 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3507 show_backtrace(1);
3508 }
3509 var37 = var31 <= var_color;
3510 var32 = var37;
3511 goto RET_LABEL33;
3512 RET_LABEL33:(void)0;
3513 }
3514 if (var32){
3515 var38 = NEW_range__Range(&type_range__Rangekernel__Int);
3516 var39 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3517 var40 = BOX_kernel__Int(var39); /* autobox from Int to Discrete */
3518 var41 = BOX_kernel__Int(var_color); /* autobox from Int to Discrete */
3519 ((void (*)(val*, val*, val*))(var38->class->vft[COLOR_range__Range__without_last]))(var38, var40, var41) /* without_last on <var38:Range[Int]>*/;
3520 var42 = ((val* (*)(val*))(var38->class->vft[COLOR_abstract_collection__Collection__iterator]))(var38) /* iterator on <var38:Range[Int]>*/;
3521 for(;;) {
3522 var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
3523 if(!var43) break;
3524 var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
3525 var45 = ((struct instance_kernel__Int*)var44)->value; /* autounbox from nullable Object to Int */;
3526 var_i = var45;
3527 var46 = NULL;
3528 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_i, var46) /* []= on <var_table:Array[nullable MPropDef]>*/;
3529 CONTINUE_label47: (void)0;
3530 ((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
3531 }
3532 BREAK_label47: (void)0;
3533 } else {
3534 }
3535 var48 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on <var_mproperty:MProperty(MAttribute)>*/;
3536 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_collection__Collection__iterator]))(var48) /* iterator on <var48:Array[MPropDef](Array[MAttributeDef])>*/;
3537 for(;;) {
3538 var50 = ((short int (*)(val*))(var49->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var49) /* is_ok on <var49:Iterator[nullable Object]>*/;
3539 if(!var50) break;
3540 var51 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_collection__Iterator__item]))(var49) /* item on <var49:Iterator[nullable Object]>*/;
3541 var_mpropdef = var51;
3542 var52 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MAttributeDef>*/;
3543 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model__MClassDef__mclass]))(var52) /* mclass on <var52:MClassDef>*/;
3544 var54 = ((short int (*)(val*, val*))(var53->class->vft[COLOR_kernel__Object___61d_61d]))(var53, var_parent) /* == on <var53:MClass>*/;
3545 if (var54){
3546 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_color, var_mpropdef) /* []= on <var_table:Array[nullable MPropDef]>*/;
3547 } else {
3548 }
3549 CONTINUE_label55: (void)0;
3550 ((void (*)(val*))(var49->class->vft[COLOR_abstract_collection__Iterator__next]))(var49) /* next on <var49:Iterator[nullable Object]>*/;
3551 }
3552 BREAK_label55: (void)0;
3553 CONTINUE_label27: (void)0;
3554 ((void (*)(val*))(var22->class->vft[COLOR_abstract_collection__Iterator__next]))(var22) /* next on <var22:Iterator[nullable Object]>*/;
3555 }
3556 BREAK_label27: (void)0;
3557 CONTINUE_label: (void)0;
3558 ((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
3559 }
3560 BREAK_label: (void)0;
3561 var56 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3562 var57 = ((val* (*)(val*, val*))(var56->class->vft[COLOR_abstract_compiler__MModule__properties]))(var56, var_mclass) /* properties on <var56:MModule>*/;
3563 var58 = ((val* (*)(val*))(var57->class->vft[COLOR_abstract_collection__Collection__iterator]))(var57) /* iterator on <var57:Set[MProperty]>*/;
3564 for(;;) {
3565 var59 = ((short int (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var58) /* is_ok on <var58:Iterator[nullable Object]>*/;
3566 if(!var59) break;
3567 var60 = ((val* (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__item]))(var58) /* item on <var58:Iterator[nullable Object]>*/;
3568 var_mproperty61 = var60;
3569 /* <var_mproperty61:MProperty> isa MAttribute */
3570 cltype63 = type_model__MAttribute.color;
3571 idtype64 = type_model__MAttribute.id;
3572 if(cltype63 >= var_mproperty61->type->table_size) {
3573 var62 = 0;
3574 } else {
3575 var62 = var_mproperty61->type->type_table[cltype63] == idtype64;
3576 }
3577 var65 = !var62;
3578 if (var65){
3579 goto CONTINUE_label66;
3580 } else {
3581 }
3582 if (var_layout == NULL) {
3583 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3584 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 423);
3585 show_backtrace(1);
3586 } else {
3587 var67 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[MAttribute]>*/;
3588 }
3589 var68 = ((val* (*)(val*, val*))(var67->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var67, var_mproperty61) /* [] on <var67:Map[Object, Int](Map[MAttribute, Int])>*/;
3590 var69 = ((struct instance_kernel__Int*)var68)->value; /* autounbox from nullable Object to Int */;
3591 var_color70 = var69;
3592 var71 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3593 { /* Inline kernel#Int#<= (var71,var_color70) */
3594 /* Covariant cast for argument 0 (i) <var_color70:Int> isa OTHER */
3595 /* <var_color70:Int> isa OTHER */
3596 var74 = 1; /* easy <var_color70:Int> isa OTHER*/
3597 if (!var74) {
3598 var_class_name77 = type_kernel__Int.name;
3599 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name77);
3600 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3601 show_backtrace(1);
3602 }
3603 var78 = var71 <= var_color70;
3604 var72 = var78;
3605 goto RET_LABEL73;
3606 RET_LABEL73:(void)0;
3607 }
3608 if (var72){
3609 var79 = NEW_range__Range(&type_range__Rangekernel__Int);
3610 var80 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3611 var81 = BOX_kernel__Int(var80); /* autobox from Int to Discrete */
3612 var82 = BOX_kernel__Int(var_color70); /* autobox from Int to Discrete */
3613 ((void (*)(val*, val*, val*))(var79->class->vft[COLOR_range__Range__without_last]))(var79, var81, var82) /* without_last on <var79:Range[Int]>*/;
3614 var83 = ((val* (*)(val*))(var79->class->vft[COLOR_abstract_collection__Collection__iterator]))(var79) /* iterator on <var79:Range[Int]>*/;
3615 for(;;) {
3616 var84 = ((short int (*)(val*))(var83->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var83) /* is_ok on <var83:Iterator[nullable Object]>*/;
3617 if(!var84) break;
3618 var85 = ((val* (*)(val*))(var83->class->vft[COLOR_abstract_collection__Iterator__item]))(var83) /* item on <var83:Iterator[nullable Object]>*/;
3619 var87 = ((struct instance_kernel__Int*)var85)->value; /* autounbox from nullable Object to Int */;
3620 var_i86 = var87;
3621 var88 = NULL;
3622 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_i86, var88) /* []= on <var_table:Array[nullable MPropDef]>*/;
3623 CONTINUE_label89: (void)0;
3624 ((void (*)(val*))(var83->class->vft[COLOR_abstract_collection__Iterator__next]))(var83) /* next on <var83:Iterator[nullable Object]>*/;
3625 }
3626 BREAK_label89: (void)0;
3627 } else {
3628 }
3629 var90 = ((val* (*)(val*))(var_mproperty61->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty61) /* mpropdefs on <var_mproperty61:MProperty(MAttribute)>*/;
3630 var91 = ((val* (*)(val*))(var90->class->vft[COLOR_abstract_collection__Collection__iterator]))(var90) /* iterator on <var90:Array[MPropDef](Array[MAttributeDef])>*/;
3631 for(;;) {
3632 var92 = ((short int (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var91) /* is_ok on <var91:Iterator[nullable Object]>*/;
3633 if(!var92) break;
3634 var93 = ((val* (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__item]))(var91) /* item on <var91:Iterator[nullable Object]>*/;
3635 var_mpropdef94 = var93;
3636 var95 = ((val* (*)(val*))(var_mpropdef94->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef94) /* mclassdef on <var_mpropdef94:MAttributeDef>*/;
3637 var96 = ((val* (*)(val*))(var95->class->vft[COLOR_model__MClassDef__mclass]))(var95) /* mclass on <var95:MClassDef>*/;
3638 var97 = ((short int (*)(val*, val*))(var96->class->vft[COLOR_kernel__Object___61d_61d]))(var96, var_mclass) /* == on <var96:MClass>*/;
3639 if (var97){
3640 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_color70, var_mpropdef94) /* []= on <var_table:Array[nullable MPropDef]>*/;
3641 } else {
3642 }
3643 CONTINUE_label98: (void)0;
3644 ((void (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__next]))(var91) /* next on <var91:Iterator[nullable Object]>*/;
3645 }
3646 BREAK_label98: (void)0;
3647 CONTINUE_label66: (void)0;
3648 ((void (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__next]))(var58) /* next on <var58:Iterator[nullable Object]>*/;
3649 }
3650 BREAK_label66: (void)0;
3651 ((void (*)(val*, val*, val*))(var_tables->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_tables, var_mclass, var_table) /* []= on <var_tables:HashMap[MClass, Array[nullable MPropDef]]>*/;
3652 CONTINUE_label99: (void)0;
3653 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
3654 }
3655 BREAK_label99: (void)0;
3656 var = var_tables;
3657 goto RET_LABEL;
3658 RET_LABEL:;
3659 return var;
3660 }
3661 /* method separate_compiler#SeparateCompiler#build_attr_tables for (self: Object, Set[MClass]): Map[MClass, Array[nullable MPropDef]] */
3662 val* VIRTUAL_separate_compiler__SeparateCompiler__build_attr_tables(val* self, val* p0) {
3663 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
3664 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
3665 var1 = separate_compiler__SeparateCompiler__build_attr_tables(self, p0);
3666 var = var1;
3667 RET_LABEL:;
3668 return var;
3669 }
3670 /* method separate_compiler#SeparateCompiler#do_type_coloring for (self: SeparateCompiler): POSet[MType] */
3671 val* separate_compiler__SeparateCompiler__do_type_coloring(val* self) {
3672 val* var /* : POSet[MType] */;
3673 val* var1 /* : HashSet[MType] */;
3674 val* var_mtypes /* var mtypes: HashSet[MType] */;
3675 val* var2 /* : nullable RapidTypeAnalysis */;
3676 val* var3 /* : HashSet[MClassType] */;
3677 val* var4 /* : nullable RapidTypeAnalysis */;
3678 val* var5 /* : HashSet[MClassType] */;
3679 val* var6 /* : Set[MType] */;
3680 val* var7 /* : HashMap[MClass, Int] */;
3681 val* var8 /* : Collection[Object] */;
3682 val* var9 /* : Iterator[nullable Object] */;
3683 short int var10 /* : Bool */;
3684 val* var11 /* : nullable Object */;
3685 val* var_c /* var c: MClass */;
3686 val* var12 /* : MClassType */;
3687 val* var13 /* : Iterator[nullable Object] */;
3688 short int var14 /* : Bool */;
3689 val* var15 /* : nullable Object */;
3690 val* var_mtype /* var mtype: MType */;
3691 val* var17 /* : Set[MType] */;
3692 val* var18 /* : ModelBuilder */;
3693 val* var19 /* : ToolContext */;
3694 val* var20 /* : OptionBool */;
3695 val* var21 /* : nullable Object */;
3696 short int var22 /* : Bool */;
3697 val* var23 /* : MTypeBMizer */;
3698 val* var24 /* : MModule */;
3699 val* var_layout_builder /* var layout_builder: TypingLayoutBuilder[MType] */;
3700 val* var25 /* : ModelBuilder */;
3701 val* var26 /* : ToolContext */;
3702 val* var27 /* : OptionBool */;
3703 val* var28 /* : nullable Object */;
3704 short int var29 /* : Bool */;
3705 val* var30 /* : MTypeHasher */;
3706 val* var31 /* : PHModOperator */;
3707 val* var32 /* : MModule */;
3708 val* var33 /* : ModelBuilder */;
3709 val* var34 /* : ToolContext */;
3710 val* var35 /* : OptionBool */;
3711 val* var36 /* : nullable Object */;
3712 short int var37 /* : Bool */;
3713 val* var38 /* : MTypeHasher */;
3714 val* var39 /* : PHAndOperator */;
3715 val* var40 /* : MModule */;
3716 val* var41 /* : MTypeColorer */;
3717 val* var42 /* : MModule */;
3718 val* var43 /* : Layout[Object] */;
3719 val* var44 /* : nullable POSet[Object] */;
3720 val* var_poset /* var poset: POSet[MType] */;
3721 val* var45 /* : Map[MType, Array[nullable MType]] */;
3722 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
3723 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MType]>*/;
3724 var_mtypes = var1;
3725 var2 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
3726 if (var2 == NULL) {
3727 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3728 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 443);
3729 show_backtrace(1);
3730 } else {
3731 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var2) /* live_types on <var2:nullable RapidTypeAnalysis>*/;
3732 }
3733 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_mtypes, var3) /* add_all on <var_mtypes:HashSet[MType]>*/;
3734 var4 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
3735 if (var4 == NULL) {
3736 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3737 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 444);
3738 show_backtrace(1);
3739 } else {
3740 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_cast_types]))(var4) /* live_cast_types on <var4:nullable RapidTypeAnalysis>*/;
3741 }
3742 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_mtypes, var5) /* add_all on <var_mtypes:HashSet[MType]>*/;
3743 var6 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(self) /* undead_types on <self:SeparateCompiler>*/;
3744 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_mtypes, var6) /* add_all on <var_mtypes:HashSet[MType]>*/;
3745 var7 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
3746 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__MapRead__keys]))(var7) /* keys on <var7:HashMap[MClass, Int]>*/;
3747 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Collection[Object](HashMapKeys[MClass, Int])>*/;
3748 for(;;) {
3749 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
3750 if(!var10) break;
3751 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
3752 var_c = var11;
3753 var12 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__mclass_type]))(var_c) /* mclass_type on <var_c:MClass>*/;
3754 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mtypes, var12) /* add on <var_mtypes:HashSet[MType]>*/;
3755 CONTINUE_label: (void)0;
3756 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
3757 }
3758 BREAK_label: (void)0;
3759 var13 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:HashSet[MType]>*/;
3760 for(;;) {
3761 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
3762 if(!var14) break;
3763 var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
3764 var_mtype = var15;
3765 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__retrieve_partial_types]))(self, var_mtype) /* retrieve_partial_types on <self:SeparateCompiler>*/;
3766 CONTINUE_label16: (void)0;
3767 ((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
3768 }
3769 BREAK_label16: (void)0;
3770 var17 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__partial_types]))(self) /* partial_types on <self:SeparateCompiler>*/;
3771 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_mtypes, var17) /* add_all on <var_mtypes:HashSet[MType]>*/;
3772 var18 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
3773 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var18) /* toolcontext on <var18:ModelBuilder>*/;
3774 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_separate_compiler__ToolContext__opt_bm_typing]))(var19) /* opt_bm_typing on <var19:ToolContext>*/;
3775 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_opts__Option__value]))(var20) /* value on <var20:OptionBool>*/;
3776 var22 = ((struct instance_kernel__Bool*)var21)->value; /* autounbox from nullable Object to Bool */;
3777 if (var22){
3778 var23 = NEW_layout_builders__MTypeBMizer(&type_layout_builders__MTypeBMizer);
3779 var24 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3780 ((void (*)(val*, val*))(var23->class->vft[COLOR_layout_builders__MTypeBMizer__init]))(var23, var24) /* init on <var23:MTypeBMizer>*/;
3781 var_layout_builder = var23;
3782 } else {
3783 var25 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
3784 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var25) /* toolcontext on <var25:ModelBuilder>*/;
3785 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var26) /* opt_phmod_typing on <var26:ToolContext>*/;
3786 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_opts__Option__value]))(var27) /* value on <var27:OptionBool>*/;
3787 var29 = ((struct instance_kernel__Bool*)var28)->value; /* autounbox from nullable Object to Bool */;
3788 if (var29){
3789 var30 = NEW_layout_builders__MTypeHasher(&type_layout_builders__MTypeHasher);
3790 var31 = NEW_layout_builders__PHModOperator(&type_layout_builders__PHModOperator);
3791 ((void (*)(val*))(var31->class->vft[COLOR_layout_builders__PHModOperator__init]))(var31) /* init on <var31:PHModOperator>*/;
3792 var32 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3793 ((void (*)(val*, val*, val*))(var30->class->vft[COLOR_layout_builders__MTypeHasher__init]))(var30, var31, var32) /* init on <var30:MTypeHasher>*/;
3794 var_layout_builder = var30;
3795 } else {
3796 var33 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
3797 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var33) /* toolcontext on <var33:ModelBuilder>*/;
3798 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var34) /* opt_phand_typing on <var34:ToolContext>*/;
3799 var36 = ((val* (*)(val*))(var35->class->vft[COLOR_opts__Option__value]))(var35) /* value on <var35:OptionBool>*/;
3800 var37 = ((struct instance_kernel__Bool*)var36)->value; /* autounbox from nullable Object to Bool */;
3801 if (var37){
3802 var38 = NEW_layout_builders__MTypeHasher(&type_layout_builders__MTypeHasher);
3803 var39 = NEW_layout_builders__PHAndOperator(&type_layout_builders__PHAndOperator);
3804 ((void (*)(val*))(var39->class->vft[COLOR_layout_builders__PHAndOperator__init]))(var39) /* init on <var39:PHAndOperator>*/;
3805 var40 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3806 ((void (*)(val*, val*, val*))(var38->class->vft[COLOR_layout_builders__MTypeHasher__init]))(var38, var39, var40) /* init on <var38:MTypeHasher>*/;
3807 var_layout_builder = var38;
3808 } else {
3809 var41 = NEW_layout_builders__MTypeColorer(&type_layout_builders__MTypeColorer);
3810 var42 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3811 ((void (*)(val*, val*))(var41->class->vft[COLOR_layout_builders__MTypeColorer__init]))(var41, var42) /* init on <var41:MTypeColorer>*/;
3812 var_layout_builder = var41;
3813 }
3814 }
3815 }
3816 var43 = ((val* (*)(val*, val*))(var_layout_builder->class->vft[COLOR_layout_builders__TypingLayoutBuilder__build_layout]))(var_layout_builder, var_mtypes) /* build_layout on <var_layout_builder:TypingLayoutBuilder[MType]>*/;
3817 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_layout_61d]))(self, var43) /* type_layout= on <self:SeparateCompiler>*/;
3818 var44 = ((val* (*)(val*))(var_layout_builder->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(var_layout_builder) /* poset on <var_layout_builder:TypingLayoutBuilder[MType]>*/;
3819 if (var44 == NULL) {
3820 fprintf(stderr, "Runtime error: %s", "Cast failed");
3821 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 469);
3822 show_backtrace(1);
3823 }
3824 var_poset = var44;
3825 var45 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__build_type_tables]))(self, var_poset) /* build_type_tables on <self:SeparateCompiler>*/;
3826 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_tables_61d]))(self, var45) /* type_tables= on <self:SeparateCompiler>*/;
3827 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_resolution_tables]))(self, var_mtypes) /* compile_resolution_tables on <self:SeparateCompiler>*/;
3828 var = var_poset;
3829 goto RET_LABEL;
3830 RET_LABEL:;
3831 return var;
3832 }
3833 /* method separate_compiler#SeparateCompiler#do_type_coloring for (self: Object): POSet[MType] */
3834 val* VIRTUAL_separate_compiler__SeparateCompiler__do_type_coloring(val* self) {
3835 val* var /* : POSet[MType] */;
3836 val* var1 /* : POSet[MType] */;
3837 var1 = separate_compiler__SeparateCompiler__do_type_coloring(self);
3838 var = var1;
3839 RET_LABEL:;
3840 return var;
3841 }
3842 /* method separate_compiler#SeparateCompiler#build_type_tables for (self: SeparateCompiler, POSet[MType]): Map[MType, Array[nullable MType]] */
3843 val* separate_compiler__SeparateCompiler__build_type_tables(val* self, val* p0) {
3844 val* var /* : Map[MType, Array[nullable MType]] */;
3845 val* var_mtypes /* var mtypes: POSet[MType] */;
3846 val* var1 /* : HashMap[MType, Array[nullable MType]] */;
3847 val* var_tables /* var tables: HashMap[MType, Array[nullable MType]] */;
3848 val* var2 /* : nullable Layout[MType] */;
3849 val* var_layout /* var layout: nullable Layout[MType] */;
3850 val* var3 /* : Iterator[nullable Object] */;
3851 short int var4 /* : Bool */;
3852 val* var5 /* : nullable Object */;
3853 val* var_mtype /* var mtype: MType */;
3854 val* var6 /* : Array[nullable MType] */;
3855 val* var_table /* var table: Array[nullable MType] */;
3856 val* var7 /* : POSetElement[Object] */;
3857 val* var8 /* : Collection[Object] */;
3858 val* var9 /* : Iterator[nullable Object] */;
3859 short int var10 /* : Bool */;
3860 val* var11 /* : nullable Object */;
3861 val* var_sup /* var sup: MType */;
3862 short int var12 /* : Bool */;
3863 int cltype;
3864 int idtype;
3865 val* var13 /* : Map[Object, Map[Object, Int]] */;
3866 val* var14 /* : nullable Object */;
3867 val* var15 /* : nullable Object */;
3868 long var16 /* : Int */;
3869 long var_color /* var color: Int */;
3870 val* var17 /* : Map[Object, Int] */;
3871 val* var18 /* : nullable Object */;
3872 long var19 /* : Int */;
3873 long var20 /* : Int */;
3874 short int var21 /* : Bool */;
3875 short int var23 /* : Bool */;
3876 int cltype24;
3877 int idtype25;
3878 const char* var_class_name;
3879 short int var26 /* : Bool */;
3880 val* var27 /* : Range[Int] */;
3881 long var28 /* : Int */;
3882 val* var29 /* : Discrete */;
3883 val* var30 /* : Discrete */;
3884 val* var31 /* : Iterator[nullable Object] */;
3885 short int var32 /* : Bool */;
3886 val* var33 /* : nullable Object */;
3887 long var_i /* var i: Int */;
3888 long var34 /* : Int */;
3889 val* var35 /* : null */;
3890 var_mtypes = p0;
3891 var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypearray__Arraynullable_model__MType);
3892 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on <var1:HashMap[MType, Array[nullable MType]]>*/;
3893 var_tables = var1;
3894 var2 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_layout]))(self) /* type_layout on <self:SeparateCompiler>*/;
3895 var_layout = var2;
3896 var3 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:POSet[MType]>*/;
3897 for(;;) {
3898 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
3899 if(!var4) break;
3900 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
3901 var_mtype = var5;
3902 var6 = NEW_array__Array(&type_array__Arraynullable_model__MType);
3903 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[nullable MType]>*/;
3904 var_table = var6;
3905 var7 = ((val* (*)(val*, val*))(var_mtypes->class->vft[COLOR_poset__POSet___91d_93d]))(var_mtypes, var_mtype) /* [] on <var_mtypes:POSet[MType]>*/;
3906 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_poset__POSetElement__greaters]))(var7) /* greaters on <var7:POSetElement[Object](POSetElement[MType])>*/;
3907 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Collection[Object](Collection[MType])>*/;
3908 for(;;) {
3909 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
3910 if(!var10) break;
3911 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
3912 var_sup = var11;
3913 /* <var_layout:nullable Layout[MType]> isa PHLayout[MType, MType] */
3914 cltype = type_layout_builders__PHLayoutmodel__MTypemodel__MType.color;
3915 idtype = type_layout_builders__PHLayoutmodel__MTypemodel__MType.id;
3916 if(var_layout == NULL) {
3917 var12 = 0;
3918 } else {
3919 if(cltype >= var_layout->type->table_size) {
3920 var12 = 0;
3921 } else {
3922 var12 = var_layout->type->type_table[cltype] == idtype;
3923 }
3924 }
3925 if (var12){
3926 var13 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__PHLayout__hashes]))(var_layout) /* hashes on <var_layout:nullable Layout[MType](PHLayout[MType, MType])>*/;
3927 var14 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var_mtype) /* [] on <var13:Map[Object, Map[Object, Int]](Map[MType, Map[MType, Int]])>*/;
3928 var15 = ((val* (*)(val*, val*))(var14->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var14, var_sup) /* [] on <var14:nullable Object(Map[MType, Int])>*/;
3929 var16 = ((struct instance_kernel__Int*)var15)->value; /* autounbox from nullable Object to Int */;
3930 var_color = var16;
3931 } else {
3932 if (var_layout == NULL) {
3933 fprintf(stderr, "Runtime error: %s", "Reciever is null");
3934 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 489);
3935 show_backtrace(1);
3936 } else {
3937 var17 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[MType]>*/;
3938 }
3939 var18 = ((val* (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var17, var_sup) /* [] on <var17:Map[Object, Int](Map[MType, Int])>*/;
3940 var19 = ((struct instance_kernel__Int*)var18)->value; /* autounbox from nullable Object to Int */;
3941 var_color = var19;
3942 }
3943 var20 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MType]>*/;
3944 { /* Inline kernel#Int#<= (var20,var_color) */
3945 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
3946 /* <var_color:Int> isa OTHER */
3947 var23 = 1; /* easy <var_color:Int> isa OTHER*/
3948 if (!var23) {
3949 var_class_name = type_kernel__Int.name;
3950 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3951 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
3952 show_backtrace(1);
3953 }
3954 var26 = var20 <= var_color;
3955 var21 = var26;
3956 goto RET_LABEL22;
3957 RET_LABEL22:(void)0;
3958 }
3959 if (var21){
3960 var27 = NEW_range__Range(&type_range__Rangekernel__Int);
3961 var28 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MType]>*/;
3962 var29 = BOX_kernel__Int(var28); /* autobox from Int to Discrete */
3963 var30 = BOX_kernel__Int(var_color); /* autobox from Int to Discrete */
3964 ((void (*)(val*, val*, val*))(var27->class->vft[COLOR_range__Range__without_last]))(var27, var29, var30) /* without_last on <var27:Range[Int]>*/;
3965 var31 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Collection__iterator]))(var27) /* iterator on <var27:Range[Int]>*/;
3966 for(;;) {
3967 var32 = ((short int (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var31) /* is_ok on <var31:Iterator[nullable Object]>*/;
3968 if(!var32) break;
3969 var33 = ((val* (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__item]))(var31) /* item on <var31:Iterator[nullable Object]>*/;
3970 var34 = ((struct instance_kernel__Int*)var33)->value; /* autounbox from nullable Object to Int */;
3971 var_i = var34;
3972 var35 = NULL;
3973 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_i, var35) /* []= on <var_table:Array[nullable MType]>*/;
3974 CONTINUE_label: (void)0;
3975 ((void (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__next]))(var31) /* next on <var31:Iterator[nullable Object]>*/;
3976 }
3977 BREAK_label: (void)0;
3978 } else {
3979 }
3980 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_color, var_sup) /* []= on <var_table:Array[nullable MType]>*/;
3981 CONTINUE_label36: (void)0;
3982 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
3983 }
3984 BREAK_label36: (void)0;
3985 ((void (*)(val*, val*, val*))(var_tables->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_tables, var_mtype, var_table) /* []= on <var_tables:HashMap[MType, Array[nullable MType]]>*/;
3986 CONTINUE_label37: (void)0;
3987 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
3988 }
3989 BREAK_label37: (void)0;
3990 var = var_tables;
3991 goto RET_LABEL;
3992 RET_LABEL:;
3993 return var;
3994 }
3995 /* method separate_compiler#SeparateCompiler#build_type_tables for (self: Object, POSet[MType]): Map[MType, Array[nullable MType]] */
3996 val* VIRTUAL_separate_compiler__SeparateCompiler__build_type_tables(val* self, val* p0) {
3997 val* var /* : Map[MType, Array[nullable MType]] */;
3998 val* var1 /* : Map[MType, Array[nullable MType]] */;
3999 var1 = separate_compiler__SeparateCompiler__build_type_tables(self, p0);
4000 var = var1;
4001 RET_LABEL:;
4002 return var;
4003 }
4004 /* method separate_compiler#SeparateCompiler#compile_resolution_tables for (self: SeparateCompiler, Set[MType]) */
4005 void separate_compiler__SeparateCompiler__compile_resolution_tables(val* self, val* p0) {
4006 val* var_mtypes /* var mtypes: Set[MType] */;
4007 val* var /* : HashMap[MClassType, Set[MType]] */;
4008 val* var_mtype2unresolved /* var mtype2unresolved: HashMap[MClassType, Set[MType]] */;
4009 val* var1 /* : nullable RapidTypeAnalysis */;
4010 val* var2 /* : HashSet[MClassType] */;
4011 val* var3 /* : Iterator[nullable Object] */;
4012 short int var4 /* : Bool */;
4013 val* var5 /* : nullable Object */;
4014 val* var_mtype /* var mtype: MClassType */;
4015 val* var6 /* : HashSet[MType] */;
4016 val* var_set /* var set: HashSet[MType] */;
4017 val* var7 /* : MModule */;
4018 val* var8 /* : Set[MClassDef] */;
4019 val* var9 /* : Iterator[nullable Object] */;
4020 short int var10 /* : Bool */;
4021 val* var11 /* : nullable Object */;
4022 val* var_cd /* var cd: MClassDef */;
4023 val* var12 /* : Map[MClassDef, Set[MType]] */;
4024 short int var13 /* : Bool */;
4025 val* var14 /* : Map[MClassDef, Set[MType]] */;
4026 val* var15 /* : nullable Object */;
4027 val* var17 /* : ModelBuilder */;
4028 val* var18 /* : ToolContext */;
4029 val* var19 /* : OptionBool */;
4030 val* var20 /* : nullable Object */;
4031 short int var21 /* : Bool */;
4032 val* var22 /* : ResolutionBMizer */;
4033 val* var_resolution_builder /* var resolution_builder: ResolutionLayoutBuilder */;
4034 val* var23 /* : ModelBuilder */;
4035 val* var24 /* : ToolContext */;
4036 val* var25 /* : OptionBool */;
4037 val* var26 /* : nullable Object */;
4038 short int var27 /* : Bool */;
4039 val* var28 /* : ResolutionHasher */;
4040 val* var29 /* : PHModOperator */;
4041 val* var30 /* : ModelBuilder */;
4042 val* var31 /* : ToolContext */;
4043 val* var32 /* : OptionBool */;
4044 val* var33 /* : nullable Object */;
4045 short int var34 /* : Bool */;
4046 val* var35 /* : ResolutionHasher */;
4047 val* var36 /* : PHAndOperator */;
4048 val* var37 /* : ResolutionColorer */;
4049 val* var38 /* : Layout[MType] */;
4050 val* var39 /* : Map[MClassType, Array[nullable MType]] */;
4051 val* var40 /* : HashSet[MType] */;
4052 val* var_all_unresolved /* var all_unresolved: HashSet[MType] */;
4053 val* var41 /* : Map[MClassDef, Set[MType]] */;
4054 val* var42 /* : Collection[nullable Object] */;
4055 val* var43 /* : Iterator[nullable Object] */;
4056 short int var44 /* : Bool */;
4057 val* var45 /* : nullable Object */;
4058 val* var_t /* var t: Set[MType] */;
4059 val* var47 /* : HashMap[MType, Int] */;
4060 val* var_all_unresolved_types_colors /* var all_unresolved_types_colors: HashMap[MType, Int] */;
4061 val* var48 /* : Iterator[nullable Object] */;
4062 short int var49 /* : Bool */;
4063 val* var50 /* : nullable Object */;
4064 val* var_t51 /* var t: MType */;
4065 val* var52 /* : nullable Layout[MType] */;
4066 val* var53 /* : Map[Object, Int] */;
4067 short int var54 /* : Bool */;
4068 val* var55 /* : nullable Layout[MType] */;
4069 val* var56 /* : Map[Object, Int] */;
4070 val* var57 /* : nullable Object */;
4071 long var58 /* : Int */;
4072 long var59 /* : Int */;
4073 long var61 /* : Int */;
4074 val* var62 /* : nullable Object */;
4075 var_mtypes = p0;
4076 var = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassTypeabstract_collection__Setmodel__MType);
4077 ((void (*)(val*))(var->class->vft[COLOR_hash_collection__HashMap__init]))(var) /* init on <var:HashMap[MClassType, Set[MType]]>*/;
4078 var_mtype2unresolved = var;
4079 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
4080 if (var1 == NULL) {
4081 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4082 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 512);
4083 show_backtrace(1);
4084 } else {
4085 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var1) /* live_types on <var1:nullable RapidTypeAnalysis>*/;
4086 }
4087 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:HashSet[MClassType]>*/;
4088 for(;;) {
4089 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
4090 if(!var4) break;
4091 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
4092 var_mtype = var5;
4093 var6 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
4094 ((void (*)(val*))(var6->class->vft[COLOR_hash_collection__HashSet__init]))(var6) /* init on <var6:HashSet[MType]>*/;
4095 var_set = var6;
4096 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
4097 var8 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var7) /* collect_mclassdefs on <var_mtype:MClassType>*/;
4098 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Set[MClassDef]>*/;
4099 for(;;) {
4100 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
4101 if(!var10) break;
4102 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
4103 var_cd = var11;
4104 var12 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(self) /* live_unresolved_types on <self:SeparateCompiler>*/;
4105 var13 = ((short int (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var12, var_cd) /* has_key on <var12:Map[MClassDef, Set[MType]]>*/;
4106 if (var13){
4107 var14 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(self) /* live_unresolved_types on <self:SeparateCompiler>*/;
4108 var15 = ((val* (*)(val*, val*))(var14->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var14, var_cd) /* [] on <var14:Map[MClassDef, Set[MType]]>*/;
4109 ((void (*)(val*, val*))(var_set->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_set, var15) /* add_all on <var_set:HashSet[MType]>*/;
4110 } else {
4111 }
4112 CONTINUE_label: (void)0;
4113 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
4114 }
4115 BREAK_label: (void)0;
4116 ((void (*)(val*, val*, val*))(var_mtype2unresolved->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_mtype2unresolved, var_mtype, var_set) /* []= on <var_mtype2unresolved:HashMap[MClassType, Set[MType]]>*/;
4117 CONTINUE_label16: (void)0;
4118 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
4119 }
4120 BREAK_label16: (void)0;
4121 var17 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
4122 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var17) /* toolcontext on <var17:ModelBuilder>*/;
4123 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_separate_compiler__ToolContext__opt_bm_typing]))(var18) /* opt_bm_typing on <var18:ToolContext>*/;
4124 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_opts__Option__value]))(var19) /* value on <var19:OptionBool>*/;
4125 var21 = ((struct instance_kernel__Bool*)var20)->value; /* autounbox from nullable Object to Bool */;
4126 if (var21){
4127 var22 = NEW_layout_builders__ResolutionBMizer(&type_layout_builders__ResolutionBMizer);
4128 ((void (*)(val*))(var22->class->vft[COLOR_layout_builders__ResolutionBMizer__init]))(var22) /* init on <var22:ResolutionBMizer>*/;
4129 var_resolution_builder = var22;
4130 } else {
4131 var23 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
4132 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var23) /* toolcontext on <var23:ModelBuilder>*/;
4133 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var24) /* opt_phmod_typing on <var24:ToolContext>*/;
4134 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_opts__Option__value]))(var25) /* value on <var25:OptionBool>*/;
4135 var27 = ((struct instance_kernel__Bool*)var26)->value; /* autounbox from nullable Object to Bool */;
4136 if (var27){
4137 var28 = NEW_layout_builders__ResolutionHasher(&type_layout_builders__ResolutionHasher);
4138 var29 = NEW_layout_builders__PHModOperator(&type_layout_builders__PHModOperator);
4139 ((void (*)(val*))(var29->class->vft[COLOR_layout_builders__PHModOperator__init]))(var29) /* init on <var29:PHModOperator>*/;
4140 ((void (*)(val*, val*))(var28->class->vft[COLOR_layout_builders__ResolutionHasher__init]))(var28, var29) /* init on <var28:ResolutionHasher>*/;
4141 var_resolution_builder = var28;
4142 } else {
4143 var30 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
4144 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var30) /* toolcontext on <var30:ModelBuilder>*/;
4145 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var31) /* opt_phand_typing on <var31:ToolContext>*/;
4146 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_opts__Option__value]))(var32) /* value on <var32:OptionBool>*/;
4147 var34 = ((struct instance_kernel__Bool*)var33)->value; /* autounbox from nullable Object to Bool */;
4148 if (var34){
4149 var35 = NEW_layout_builders__ResolutionHasher(&type_layout_builders__ResolutionHasher);
4150 var36 = NEW_layout_builders__PHAndOperator(&type_layout_builders__PHAndOperator);
4151 ((void (*)(val*))(var36->class->vft[COLOR_layout_builders__PHAndOperator__init]))(var36) /* init on <var36:PHAndOperator>*/;
4152 ((void (*)(val*, val*))(var35->class->vft[COLOR_layout_builders__ResolutionHasher__init]))(var35, var36) /* init on <var35:ResolutionHasher>*/;
4153 var_resolution_builder = var35;
4154 } else {
4155 var37 = NEW_layout_builders__ResolutionColorer(&type_layout_builders__ResolutionColorer);
4156 ((void (*)(val*))(var37->class->vft[COLOR_layout_builders__ResolutionColorer__init]))(var37) /* init on <var37:ResolutionColorer>*/;
4157 var_resolution_builder = var37;
4158 }
4159 }
4160 }
4161 var38 = ((val* (*)(val*, val*))(var_resolution_builder->class->vft[COLOR_layout_builders__ResolutionLayoutBuilder__build_layout]))(var_resolution_builder, var_mtype2unresolved) /* build_layout on <var_resolution_builder:ResolutionLayoutBuilder>*/;
4162 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_layout_61d]))(self, var38) /* resolution_layout= on <self:SeparateCompiler>*/;
4163 var39 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__build_resolution_tables]))(self, var_mtype2unresolved) /* build_resolution_tables on <self:SeparateCompiler>*/;
4164 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_tables_61d]))(self, var39) /* resolution_tables= on <self:SeparateCompiler>*/;
4165 var40 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
4166 ((void (*)(val*))(var40->class->vft[COLOR_hash_collection__HashSet__init]))(var40) /* init on <var40:HashSet[MType]>*/;
4167 var_all_unresolved = var40;
4168 var41 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(self) /* live_unresolved_types on <self:SeparateCompiler>*/;
4169 var42 = ((val* (*)(val*))(var41->class->vft[COLOR_abstract_collection__MapRead__values]))(var41) /* values on <var41:Map[MClassDef, Set[MType]]>*/;
4170 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Collection__iterator]))(var42) /* iterator on <var42:Collection[nullable Object](RemovableCollection[Set[MType]])>*/;
4171 for(;;) {
4172 var44 = ((short int (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var43) /* is_ok on <var43:Iterator[nullable Object]>*/;
4173 if(!var44) break;
4174 var45 = ((val* (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__item]))(var43) /* item on <var43:Iterator[nullable Object]>*/;
4175 var_t = var45;
4176 ((void (*)(val*, val*))(var_all_unresolved->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_all_unresolved, var_t) /* add_all on <var_all_unresolved:HashSet[MType]>*/;
4177 CONTINUE_label46: (void)0;
4178 ((void (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__next]))(var43) /* next on <var43:Iterator[nullable Object]>*/;
4179 }
4180 BREAK_label46: (void)0;
4181 var47 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int);
4182 ((void (*)(val*))(var47->class->vft[COLOR_hash_collection__HashMap__init]))(var47) /* init on <var47:HashMap[MType, Int]>*/;
4183 var_all_unresolved_types_colors = var47;
4184 var48 = ((val* (*)(val*))(var_all_unresolved->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_all_unresolved) /* iterator on <var_all_unresolved:HashSet[MType]>*/;
4185 for(;;) {
4186 var49 = ((short int (*)(val*))(var48->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var48) /* is_ok on <var48:Iterator[nullable Object]>*/;
4187 if(!var49) break;
4188 var50 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_collection__Iterator__item]))(var48) /* item on <var48:Iterator[nullable Object]>*/;
4189 var_t51 = var50;
4190 var52 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_layout]))(self) /* resolution_layout on <self:SeparateCompiler>*/;
4191 if (var52 == NULL) {
4192 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4193 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 544);
4194 show_backtrace(1);
4195 } else {
4196 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_layout_builders__Layout__pos]))(var52) /* pos on <var52:nullable Layout[MType]>*/;
4197 }
4198 var54 = ((short int (*)(val*, val*))(var53->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var53, var_t51) /* has_key on <var53:Map[Object, Int](Map[MType, Int])>*/;
4199 if (var54){
4200 var55 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_layout]))(self) /* resolution_layout on <self:SeparateCompiler>*/;
4201 if (var55 == NULL) {
4202 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4203 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 545);
4204 show_backtrace(1);
4205 } else {
4206 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_layout_builders__Layout__pos]))(var55) /* pos on <var55:nullable Layout[MType]>*/;
4207 }
4208 var57 = ((val* (*)(val*, val*))(var56->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var56, var_t51) /* [] on <var56:Map[Object, Int](Map[MType, Int])>*/;
4209 ((void (*)(val*, val*, val*))(var_all_unresolved_types_colors->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_all_unresolved_types_colors, var_t51, var57) /* []= on <var_all_unresolved_types_colors:HashMap[MType, Int]>*/;
4210 } else {
4211 var58 = 1;
4212 { /* Inline kernel#Int#unary - (var58) */
4213 var61 = -var58;
4214 var59 = var61;
4215 goto RET_LABEL60;
4216 RET_LABEL60:(void)0;
4217 }
4218 var62 = BOX_kernel__Int(var59); /* autobox from Int to nullable Object */
4219 ((void (*)(val*, val*, val*))(var_all_unresolved_types_colors->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_all_unresolved_types_colors, var_t51, var62) /* []= on <var_all_unresolved_types_colors:HashMap[MType, Int]>*/;
4220 }
4221 CONTINUE_label63: (void)0;
4222 ((void (*)(val*))(var48->class->vft[COLOR_abstract_collection__Iterator__next]))(var48) /* next on <var48:Iterator[nullable Object]>*/;
4223 }
4224 BREAK_label63: (void)0;
4225 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_color_consts]))(self, var_all_unresolved_types_colors) /* compile_color_consts on <self:SeparateCompiler>*/;
4226 RET_LABEL:;
4227 }
4228 /* method separate_compiler#SeparateCompiler#compile_resolution_tables for (self: Object, Set[MType]) */
4229 void VIRTUAL_separate_compiler__SeparateCompiler__compile_resolution_tables(val* self, val* p0) {
4230 separate_compiler__SeparateCompiler__compile_resolution_tables(self, p0);
4231 RET_LABEL:;
4232 }
4233 /* method separate_compiler#SeparateCompiler#build_resolution_tables for (self: SeparateCompiler, Map[MClassType, Set[MType]]): Map[MClassType, Array[nullable MType]] */
4234 val* separate_compiler__SeparateCompiler__build_resolution_tables(val* self, val* p0) {
4235 val* var /* : Map[MClassType, Array[nullable MType]] */;
4236 val* var_elements /* var elements: Map[MClassType, Set[MType]] */;
4237 val* var1 /* : HashMap[MClassType, Array[nullable MType]] */;
4238 val* var_tables /* var tables: HashMap[MClassType, Array[nullable MType]] */;
4239 val* var2 /* : nullable Layout[MType] */;
4240 val* var_layout /* var layout: nullable Layout[MType] */;
4241 val* var3 /* : MapIterator[Object, nullable Object] */;
4242 short int var4 /* : Bool */;
4243 val* var5 /* : Object */;
4244 val* var_mclasstype /* var mclasstype: MClassType */;
4245 val* var6 /* : nullable Object */;
4246 val* var_mtypes /* var mtypes: Set[MType] */;
4247 val* var7 /* : Array[nullable MType] */;
4248 val* var_table /* var table: Array[nullable MType] */;
4249 val* var8 /* : Iterator[nullable Object] */;
4250 short int var9 /* : Bool */;
4251 val* var10 /* : nullable Object */;
4252 val* var_mtype /* var mtype: MType */;
4253 short int var11 /* : Bool */;
4254 int cltype;
4255 int idtype;
4256 val* var12 /* : Map[Object, Map[Object, Int]] */;
4257 val* var13 /* : nullable Object */;
4258 val* var14 /* : nullable Object */;
4259 long var15 /* : Int */;
4260 long var_color /* var color: Int */;
4261 val* var16 /* : Map[Object, Int] */;
4262 val* var17 /* : nullable Object */;
4263 long var18 /* : Int */;
4264 long var19 /* : Int */;
4265 short int var20 /* : Bool */;
4266 short int var22 /* : Bool */;
4267 int cltype23;
4268 int idtype24;
4269 const char* var_class_name;
4270 short int var25 /* : Bool */;
4271 val* var26 /* : Range[Int] */;
4272 long var27 /* : Int */;
4273 val* var28 /* : Discrete */;
4274 val* var29 /* : Discrete */;
4275 val* var30 /* : Iterator[nullable Object] */;
4276 short int var31 /* : Bool */;
4277 val* var32 /* : nullable Object */;
4278 long var_i /* var i: Int */;
4279 long var33 /* : Int */;
4280 val* var34 /* : null */;
4281 var_elements = p0;
4282 var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassTypearray__Arraynullable_model__MType);
4283 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on <var1:HashMap[MClassType, Array[nullable MType]]>*/;
4284 var_tables = var1;
4285 var2 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_layout]))(self) /* resolution_layout on <self:SeparateCompiler>*/;
4286 var_layout = var2;
4287 var3 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_elements) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
4288 for(;;) {
4289 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var3) /* is_ok on <var3:MapIterator[Object, nullable Object]>*/;
4290 if(!var4) break;
4291 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__key]))(var3) /* key on <var3:MapIterator[Object, nullable Object]>*/;
4292 var_mclasstype = var5;
4293 var6 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__item]))(var3) /* item on <var3:MapIterator[Object, nullable Object]>*/;
4294 var_mtypes = var6;
4295 var7 = NEW_array__Array(&type_array__Arraynullable_model__MType);
4296 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[nullable MType]>*/;
4297 var_table = var7;
4298 var8 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:Set[MType]>*/;
4299 for(;;) {
4300 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
4301 if(!var9) break;
4302 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
4303 var_mtype = var10;
4304 /* <var_layout:nullable Layout[MType]> isa PHLayout[MClassType, MType] */
4305 cltype = type_layout_builders__PHLayoutmodel__MClassTypemodel__MType.color;
4306 idtype = type_layout_builders__PHLayoutmodel__MClassTypemodel__MType.id;
4307 if(var_layout == NULL) {
4308 var11 = 0;
4309 } else {
4310 if(cltype >= var_layout->type->table_size) {
4311 var11 = 0;
4312 } else {
4313 var11 = var_layout->type->type_table[cltype] == idtype;
4314 }
4315 }
4316 if (var11){
4317 var12 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__PHLayout__hashes]))(var_layout) /* hashes on <var_layout:nullable Layout[MType](PHLayout[MClassType, MType])>*/;
4318 var13 = ((val* (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var12, var_mclasstype) /* [] on <var12:Map[Object, Map[Object, Int]](Map[MClassType, Map[MType, Int]])>*/;
4319 var14 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var_mtype) /* [] on <var13:nullable Object(Map[MType, Int])>*/;
4320 var15 = ((struct instance_kernel__Int*)var14)->value; /* autounbox from nullable Object to Int */;
4321 var_color = var15;
4322 } else {
4323 if (var_layout == NULL) {
4324 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4325 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 569);
4326 show_backtrace(1);
4327 } else {
4328 var16 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[MType]>*/;
4329 }
4330 var17 = ((val* (*)(val*, val*))(var16->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var16, var_mtype) /* [] on <var16:Map[Object, Int](Map[MType, Int])>*/;
4331 var18 = ((struct instance_kernel__Int*)var17)->value; /* autounbox from nullable Object to Int */;
4332 var_color = var18;
4333 }
4334 var19 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MType]>*/;
4335 { /* Inline kernel#Int#<= (var19,var_color) */
4336 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
4337 /* <var_color:Int> isa OTHER */
4338 var22 = 1; /* easy <var_color:Int> isa OTHER*/
4339 if (!var22) {
4340 var_class_name = type_kernel__Int.name;
4341 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4342 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
4343 show_backtrace(1);
4344 }
4345 var25 = var19 <= var_color;
4346 var20 = var25;
4347 goto RET_LABEL21;
4348 RET_LABEL21:(void)0;
4349 }
4350 if (var20){
4351 var26 = NEW_range__Range(&type_range__Rangekernel__Int);
4352 var27 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MType]>*/;
4353 var28 = BOX_kernel__Int(var27); /* autobox from Int to Discrete */
4354 var29 = BOX_kernel__Int(var_color); /* autobox from Int to Discrete */
4355 ((void (*)(val*, val*, val*))(var26->class->vft[COLOR_range__Range__without_last]))(var26, var28, var29) /* without_last on <var26:Range[Int]>*/;
4356 var30 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Collection__iterator]))(var26) /* iterator on <var26:Range[Int]>*/;
4357 for(;;) {
4358 var31 = ((short int (*)(val*))(var30->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var30) /* is_ok on <var30:Iterator[nullable Object]>*/;
4359 if(!var31) break;
4360 var32 = ((val* (*)(val*))(var30->class->vft[COLOR_abstract_collection__Iterator__item]))(var30) /* item on <var30:Iterator[nullable Object]>*/;
4361 var33 = ((struct instance_kernel__Int*)var32)->value; /* autounbox from nullable Object to Int */;
4362 var_i = var33;
4363 var34 = NULL;
4364 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_i, var34) /* []= on <var_table:Array[nullable MType]>*/;
4365 CONTINUE_label: (void)0;
4366 ((void (*)(val*))(var30->class->vft[COLOR_abstract_collection__Iterator__next]))(var30) /* next on <var30:Iterator[nullable Object]>*/;
4367 }
4368 BREAK_label: (void)0;
4369 } else {
4370 }
4371 ((void (*)(val*, long, val*))(var_table->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_table, var_color, var_mtype) /* []= on <var_table:Array[nullable MType]>*/;
4372 CONTINUE_label35: (void)0;
4373 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
4374 }
4375 BREAK_label35: (void)0;
4376 ((void (*)(val*, val*, val*))(var_tables->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_tables, var_mclasstype, var_table) /* []= on <var_tables:HashMap[MClassType, Array[nullable MType]]>*/;
4377 CONTINUE_label36: (void)0;
4378 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__next]))(var3) /* next on <var3:MapIterator[Object, nullable Object]>*/;
4379 }
4380 BREAK_label36: (void)0;
4381 var = var_tables;
4382 goto RET_LABEL;
4383 RET_LABEL:;
4384 return var;
4385 }
4386 /* method separate_compiler#SeparateCompiler#build_resolution_tables for (self: Object, Map[MClassType, Set[MType]]): Map[MClassType, Array[nullable MType]] */
4387 val* VIRTUAL_separate_compiler__SeparateCompiler__build_resolution_tables(val* self, val* p0) {
4388 val* var /* : Map[MClassType, Array[nullable MType]] */;
4389 val* var1 /* : Map[MClassType, Array[nullable MType]] */;
4390 var1 = separate_compiler__SeparateCompiler__build_resolution_tables(self, p0);
4391 var = var1;
4392 RET_LABEL:;
4393 return var;
4394 }
4395 /* method separate_compiler#SeparateCompiler#retrieve_partial_types for (self: SeparateCompiler, MType) */
4396 void separate_compiler__SeparateCompiler__retrieve_partial_types(val* self, val* p0) {
4397 val* var_mtype /* var mtype: MType */;
4398 short int var /* : Bool */;
4399 int cltype;
4400 int idtype;
4401 val* var1 /* : Array[MType] */;
4402 val* var2 /* : Iterator[nullable Object] */;
4403 short int var3 /* : Bool */;
4404 val* var4 /* : nullable Object */;
4405 val* var_ft /* var ft: MType */;
4406 short int var5 /* : Bool */;
4407 static val* varonce;
4408 val* var6 /* : String */;
4409 char* var7 /* : NativeString */;
4410 long var8 /* : Int */;
4411 val* var9 /* : String */;
4412 val* var10 /* : Set[MType] */;
4413 short int var11 /* : Bool */;
4414 int cltype12;
4415 int idtype13;
4416 val* var14 /* : MType */;
4417 short int var15 /* : Bool */;
4418 int cltype16;
4419 int idtype17;
4420 const char* var_class_name;
4421 val* var_mclass_type /* var mclass_type: MClassType */;
4422 short int var18 /* : Bool */;
4423 int cltype19;
4424 int idtype20;
4425 const char* var_class_name21;
4426 val* var22 /* : MModule */;
4427 val* var23 /* : MClass */;
4428 val* var24 /* : Set[MProperty] */;
4429 val* var25 /* : Iterator[nullable Object] */;
4430 short int var26 /* : Bool */;
4431 val* var27 /* : nullable Object */;
4432 val* var_vt /* var vt: MProperty */;
4433 short int var28 /* : Bool */;
4434 int cltype29;
4435 int idtype30;
4436 val* var31 /* : MVirtualType */;
4437 val* var32 /* : MModule */;
4438 val* var33 /* : MType */;
4439 val* var34 /* : MModule */;
4440 val* var35 /* : MType */;
4441 val* var_anchored /* var anchored: MType */;
4442 val* var36 /* : Set[MType] */;
4443 var_mtype = p0;
4444 /* <var_mtype:MType> isa MGenericType */
4445 cltype = type_model__MGenericType.color;
4446 idtype = type_model__MGenericType.id;
4447 if(cltype >= var_mtype->type->table_size) {
4448 var = 0;
4449 } else {
4450 var = var_mtype->type->type_table[cltype] == idtype;
4451 }
4452 if (var){
4453 var1 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__arguments]))(var_mtype) /* arguments on <var_mtype:MType(MGenericType)>*/;
4454 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on <var1:Array[MType]>*/;
4455 for(;;) {
4456 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
4457 if(!var3) break;
4458 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
4459 var_ft = var4;
4460 var5 = ((short int (*)(val*))(var_ft->class->vft[COLOR_model__MType__need_anchor]))(var_ft) /* need_anchor on <var_ft:MType>*/;
4461 if (var5){
4462 if (varonce) {
4463 var6 = varonce;
4464 } else {
4465 var7 = "Why do we need anchor here ?";
4466 var8 = 28;
4467 var9 = string__NativeString__to_s_with_length(var7, var8);
4468 var6 = var9;
4469 varonce = var6;
4470 }
4471 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var6) /* print on <self:SeparateCompiler>*/;
4472 fprintf(stderr, "Runtime error: %s", "Aborted");
4473 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 589);
4474 show_backtrace(1);
4475 } else {
4476 }
4477 var10 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__partial_types]))(self) /* partial_types on <self:SeparateCompiler>*/;
4478 ((void (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var10, var_ft) /* add on <var10:Set[MType]>*/;
4479 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__retrieve_partial_types]))(self, var_ft) /* retrieve_partial_types on <self:SeparateCompiler>*/;
4480 CONTINUE_label: (void)0;
4481 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
4482 }
4483 BREAK_label: (void)0;
4484 } else {
4485 }
4486 /* <var_mtype:MType> isa MNullableType */
4487 cltype12 = type_model__MNullableType.color;
4488 idtype13 = type_model__MNullableType.id;
4489 if(cltype12 >= var_mtype->type->table_size) {
4490 var11 = 0;
4491 } else {
4492 var11 = var_mtype->type->type_table[cltype12] == idtype13;
4493 }
4494 if (var11){
4495 var14 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
4496 /* <var14:MType> isa MClassType */
4497 cltype16 = type_model__MClassType.color;
4498 idtype17 = type_model__MClassType.id;
4499 if(cltype16 >= var14->type->table_size) {
4500 var15 = 0;
4501 } else {
4502 var15 = var14->type->type_table[cltype16] == idtype17;
4503 }
4504 if (!var15) {
4505 var_class_name = var14 == NULL ? "null" : var14->type->name;
4506 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
4507 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 597);
4508 show_backtrace(1);
4509 }
4510 var_mclass_type = var14;
4511 } else {
4512 /* <var_mtype:MType> isa MClassType */
4513 cltype19 = type_model__MClassType.color;
4514 idtype20 = type_model__MClassType.id;
4515 if(cltype19 >= var_mtype->type->table_size) {
4516 var18 = 0;
4517 } else {
4518 var18 = var_mtype->type->type_table[cltype19] == idtype20;
4519 }
4520 if (!var18) {
4521 var_class_name21 = var_mtype == NULL ? "null" : var_mtype->type->name;
4522 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name21);
4523 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 599);
4524 show_backtrace(1);
4525 }
4526 var_mclass_type = var_mtype;
4527 }
4528 var22 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
4529 var23 = ((val* (*)(val*))(var_mclass_type->class->vft[COLOR_model__MClassType__mclass]))(var_mclass_type) /* mclass on <var_mclass_type:MClassType>*/;
4530 var24 = ((val* (*)(val*, val*))(var22->class->vft[COLOR_abstract_compiler__MModule__properties]))(var22, var23) /* properties on <var22:MModule>*/;
4531 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_abstract_collection__Collection__iterator]))(var24) /* iterator on <var24:Set[MProperty]>*/;
4532 for(;;) {
4533 var26 = ((short int (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var25) /* is_ok on <var25:Iterator[nullable Object]>*/;
4534 if(!var26) break;
4535 var27 = ((val* (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__item]))(var25) /* item on <var25:Iterator[nullable Object]>*/;
4536 var_vt = var27;
4537 /* <var_vt:MProperty> isa MVirtualTypeProp */
4538 cltype29 = type_model__MVirtualTypeProp.color;
4539 idtype30 = type_model__MVirtualTypeProp.id;
4540 if(cltype29 >= var_vt->type->table_size) {
4541 var28 = 0;
4542 } else {
4543 var28 = var_vt->type->type_table[cltype29] == idtype30;
4544 }
4545 if (var28){
4546 var31 = ((val* (*)(val*))(var_vt->class->vft[COLOR_model__MVirtualTypeProp__mvirtualtype]))(var_vt) /* mvirtualtype on <var_vt:MProperty(MVirtualTypeProp)>*/;
4547 var32 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
4548 var33 = ((val* (*)(val*, val*, val*))(var31->class->vft[COLOR_model__MVirtualType__lookup_bound]))(var31, var32, var_mclass_type) /* lookup_bound on <var31:MVirtualType>*/;
4549 var34 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
4550 var35 = ((val* (*)(val*, val*, val*))(var33->class->vft[COLOR_model__MType__anchor_to]))(var33, var34, var_mclass_type) /* anchor_to on <var33:MType>*/;
4551 var_anchored = var35;
4552 var36 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__partial_types]))(self) /* partial_types on <self:SeparateCompiler>*/;
4553 ((void (*)(val*, val*))(var36->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var36, var_anchored) /* add on <var36:Set[MType]>*/;
4554 } else {
4555 }
4556 CONTINUE_label37: (void)0;
4557 ((void (*)(val*))(var25->class->vft[COLOR_abstract_collection__Iterator__next]))(var25) /* next on <var25:Iterator[nullable Object]>*/;
4558 }
4559 BREAK_label37: (void)0;
4560 RET_LABEL:;
4561 }
4562 /* method separate_compiler#SeparateCompiler#retrieve_partial_types for (self: Object, MType) */
4563 void VIRTUAL_separate_compiler__SeparateCompiler__retrieve_partial_types(val* self, val* p0) {
4564 separate_compiler__SeparateCompiler__retrieve_partial_types(self, p0);
4565 RET_LABEL:;
4566 }
4567 /* method separate_compiler#SeparateCompiler#compile_module_to_c for (self: SeparateCompiler, MModule) */
4568 void separate_compiler__SeparateCompiler__compile_module_to_c(val* self, val* p0) {
4569 val* var_mmodule /* var mmodule: MModule */;
4570 val* var /* : MModule */;
4571 val* var_old_module /* var old_module: MModule */;
4572 val* var1 /* : Array[MClassDef] */;
4573 val* var2 /* : Iterator[nullable Object] */;
4574 short int var3 /* : Bool */;
4575 val* var4 /* : nullable Object */;
4576 val* var_cd /* var cd: MClassDef */;
4577 val* var5 /* : Array[MPropDef] */;
4578 val* var6 /* : Iterator[nullable Object] */;
4579 short int var7 /* : Bool */;
4580 val* var8 /* : nullable Object */;
4581 val* var_pd /* var pd: MPropDef */;
4582 short int var9 /* : Bool */;
4583 int cltype;
4584 int idtype;
4585 short int var10 /* : Bool */;
4586 val* var11 /* : AbstractRuntimeFunction */;
4587 val* var_r /* var r: AbstractRuntimeFunction */;
4588 val* var12 /* : AbstractRuntimeFunction */;
4589 val* var_r2 /* var r2: AbstractRuntimeFunction */;
4590 var_mmodule = p0;
4591 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
4592 var_old_module = var;
4593 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(self, var_mmodule) /* mainmodule= on <self:SeparateCompiler>*/;
4594 var1 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model__MModule__mclassdefs]))(var_mmodule) /* mclassdefs on <var_mmodule:MModule>*/;
4595 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on <var1:Array[MClassDef]>*/;
4596 for(;;) {
4597 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
4598 if(!var3) break;
4599 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
4600 var_cd = var4;
4601 var5 = ((val* (*)(val*))(var_cd->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_cd) /* mpropdefs on <var_cd:MClassDef>*/;
4602 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:Array[MPropDef]>*/;
4603 for(;;) {
4604 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
4605 if(!var7) break;
4606 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
4607 var_pd = var8;
4608 /* <var_pd:MPropDef> isa MMethodDef */
4609 cltype = type_model__MMethodDef.color;
4610 idtype = type_model__MMethodDef.id;
4611 if(cltype >= var_pd->type->table_size) {
4612 var9 = 0;
4613 } else {
4614 var9 = var_pd->type->type_table[cltype] == idtype;
4615 }
4616 var10 = !var9;
4617 if (var10){
4618 goto CONTINUE_label;
4619 } else {
4620 }
4621 var11 = ((val* (*)(val*))(var_pd->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function]))(var_pd) /* separate_runtime_function on <var_pd:MPropDef(MMethodDef)>*/;
4622 var_r = var11;
4623 ((void (*)(val*, val*))(var_r->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__compile_to_c]))(var_r, self) /* compile_to_c on <var_r:AbstractRuntimeFunction>*/;
4624 var12 = ((val* (*)(val*))(var_pd->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function]))(var_pd) /* virtual_runtime_function on <var_pd:MPropDef(MMethodDef)>*/;
4625 var_r2 = var12;
4626 ((void (*)(val*, val*))(var_r2->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__compile_to_c]))(var_r2, self) /* compile_to_c on <var_r2:AbstractRuntimeFunction>*/;
4627 CONTINUE_label: (void)0;
4628 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
4629 }
4630 BREAK_label: (void)0;
4631 CONTINUE_label13: (void)0;
4632 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
4633 }
4634 BREAK_label13: (void)0;
4635 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(self, var_old_module) /* mainmodule= on <self:SeparateCompiler>*/;
4636 RET_LABEL:;
4637 }
4638 /* method separate_compiler#SeparateCompiler#compile_module_to_c for (self: Object, MModule) */
4639 void VIRTUAL_separate_compiler__SeparateCompiler__compile_module_to_c(val* self, val* p0) {
4640 separate_compiler__SeparateCompiler__compile_module_to_c(self, p0);
4641 RET_LABEL:;
4642 }
4643 /* method separate_compiler#SeparateCompiler#compile_type_to_c for (self: SeparateCompiler, MType) */
4644 void separate_compiler__SeparateCompiler__compile_type_to_c(val* self, val* p0) {
4645 val* var_mtype /* var mtype: MType */;
4646 val* var /* : String */;
4647 val* var_c_name /* var c_name: String */;
4648 val* var1 /* : SeparateCompilerVisitor */;
4649 val* var_v /* var v: SeparateCompilerVisitor */;
4650 static val* varonce;
4651 val* var2 /* : String */;
4652 char* var3 /* : NativeString */;
4653 long var4 /* : Int */;
4654 val* var5 /* : String */;
4655 static val* varonce6;
4656 val* var7 /* : String */;
4657 char* var8 /* : NativeString */;
4658 long var9 /* : Int */;
4659 val* var10 /* : String */;
4660 val* var11 /* : Array[Object] */;
4661 long var12 /* : Int */;
4662 val* var13 /* : NativeArray[Object] */;
4663 val* var14 /* : String */;
4664 static val* varonce15;
4665 val* var16 /* : String */;
4666 char* var17 /* : NativeString */;
4667 long var18 /* : Int */;
4668 val* var19 /* : String */;
4669 val* var20 /* : Array[Object] */;
4670 long var21 /* : Int */;
4671 val* var22 /* : NativeArray[Object] */;
4672 val* var23 /* : String */;
4673 static val* varonce24;
4674 val* var25 /* : String */;
4675 char* var26 /* : NativeString */;
4676 long var27 /* : Int */;
4677 val* var28 /* : String */;
4678 static val* varonce29;
4679 val* var30 /* : String */;
4680 char* var31 /* : NativeString */;
4681 long var32 /* : Int */;
4682 val* var33 /* : String */;
4683 val* var34 /* : Array[Object] */;
4684 long var35 /* : Int */;
4685 val* var36 /* : NativeArray[Object] */;
4686 val* var37 /* : String */;
4687 static val* varonce38;
4688 val* var39 /* : String */;
4689 char* var40 /* : NativeString */;
4690 long var41 /* : Int */;
4691 val* var42 /* : String */;
4692 static val* varonce43;
4693 val* var44 /* : String */;
4694 char* var45 /* : NativeString */;
4695 long var46 /* : Int */;
4696 val* var47 /* : String */;
4697 val* var48 /* : Array[Object] */;
4698 long var49 /* : Int */;
4699 val* var50 /* : NativeArray[Object] */;
4700 val* var51 /* : String */;
4701 val* var52 /* : nullable Layout[MType] */;
4702 val* var53 /* : Map[Object, Int] */;
4703 val* var54 /* : nullable Object */;
4704 static val* varonce55;
4705 val* var56 /* : String */;
4706 char* var57 /* : NativeString */;
4707 long var58 /* : Int */;
4708 val* var59 /* : String */;
4709 val* var60 /* : Array[Object] */;
4710 long var61 /* : Int */;
4711 val* var62 /* : NativeArray[Object] */;
4712 val* var63 /* : String */;
4713 static val* varonce64;
4714 val* var65 /* : String */;
4715 char* var66 /* : NativeString */;
4716 long var67 /* : Int */;
4717 val* var68 /* : String */;
4718 static val* varonce69;
4719 val* var70 /* : String */;
4720 char* var71 /* : NativeString */;
4721 long var72 /* : Int */;
4722 val* var73 /* : String */;
4723 val* var74 /* : Array[Object] */;
4724 long var75 /* : Int */;
4725 val* var76 /* : NativeArray[Object] */;
4726 val* var77 /* : String */;
4727 val* var78 /* : nullable Layout[MType] */;
4728 val* var_layout /* var layout: nullable Layout[MType] */;
4729 short int var79 /* : Bool */;
4730 int cltype;
4731 int idtype;
4732 val* var80 /* : Map[Object, Int] */;
4733 val* var81 /* : nullable Object */;
4734 static val* varonce82;
4735 val* var83 /* : String */;
4736 char* var84 /* : NativeString */;
4737 long var85 /* : Int */;
4738 val* var86 /* : String */;
4739 val* var87 /* : Array[Object] */;
4740 long var88 /* : Int */;
4741 val* var89 /* : NativeArray[Object] */;
4742 val* var90 /* : String */;
4743 val* var91 /* : Map[Object, Int] */;
4744 val* var92 /* : nullable Object */;
4745 static val* varonce93;
4746 val* var94 /* : String */;
4747 char* var95 /* : NativeString */;
4748 long var96 /* : Int */;
4749 val* var97 /* : String */;
4750 val* var98 /* : Array[Object] */;
4751 long var99 /* : Int */;
4752 val* var100 /* : NativeArray[Object] */;
4753 val* var101 /* : String */;
4754 short int var102 /* : Bool */;
4755 int cltype103;
4756 int idtype104;
4757 static val* varonce105;
4758 val* var106 /* : String */;
4759 char* var107 /* : NativeString */;
4760 long var108 /* : Int */;
4761 val* var109 /* : String */;
4762 static val* varonce110;
4763 val* var111 /* : String */;
4764 char* var112 /* : NativeString */;
4765 long var113 /* : Int */;
4766 val* var114 /* : String */;
4767 short int var115 /* : Bool */;
4768 static val* varonce116;
4769 val* var117 /* : String */;
4770 char* var118 /* : NativeString */;
4771 long var119 /* : Int */;
4772 val* var120 /* : String */;
4773 val* var121 /* : Array[Object] */;
4774 long var122 /* : Int */;
4775 val* var123 /* : NativeArray[Object] */;
4776 val* var124 /* : String */;
4777 static val* varonce125;
4778 val* var126 /* : String */;
4779 char* var127 /* : NativeString */;
4780 long var128 /* : Int */;
4781 val* var129 /* : String */;
4782 static val* varonce130;
4783 val* var131 /* : String */;
4784 char* var132 /* : NativeString */;
4785 long var133 /* : Int */;
4786 val* var134 /* : String */;
4787 val* var135 /* : Array[Object] */;
4788 long var136 /* : Int */;
4789 val* var137 /* : NativeArray[Object] */;
4790 val* var138 /* : String */;
4791 static val* varonce139;
4792 val* var140 /* : String */;
4793 char* var141 /* : NativeString */;
4794 long var142 /* : Int */;
4795 val* var143 /* : String */;
4796 val* var144 /* : Map[MType, Array[nullable MType]] */;
4797 val* var145 /* : nullable Object */;
4798 long var146 /* : Int */;
4799 static val* varonce147;
4800 val* var148 /* : String */;
4801 char* var149 /* : NativeString */;
4802 long var150 /* : Int */;
4803 val* var151 /* : String */;
4804 val* var152 /* : Array[Object] */;
4805 long var153 /* : Int */;
4806 val* var154 /* : NativeArray[Object] */;
4807 val* var155 /* : Object */;
4808 val* var156 /* : String */;
4809 static val* varonce157;
4810 val* var158 /* : String */;
4811 char* var159 /* : NativeString */;
4812 long var160 /* : Int */;
4813 val* var161 /* : String */;
4814 val* var162 /* : Map[MType, Array[nullable MType]] */;
4815 val* var163 /* : nullable Object */;
4816 val* var164 /* : Iterator[nullable Object] */;
4817 short int var165 /* : Bool */;
4818 val* var166 /* : nullable Object */;
4819 val* var_stype /* var stype: nullable MType */;
4820 val* var167 /* : null */;
4821 short int var168 /* : Bool */;
4822 static val* varonce169;
4823 val* var170 /* : String */;
4824 char* var171 /* : NativeString */;
4825 long var172 /* : Int */;
4826 val* var173 /* : String */;
4827 val* var174 /* : nullable Layout[MType] */;
4828 val* var175 /* : Map[Object, Int] */;
4829 val* var176 /* : nullable Object */;
4830 static val* varonce177;
4831 val* var178 /* : String */;
4832 char* var179 /* : NativeString */;
4833 long var180 /* : Int */;
4834 val* var181 /* : String */;
4835 static val* varonce182;
4836 val* var183 /* : String */;
4837 char* var184 /* : NativeString */;
4838 long var185 /* : Int */;
4839 val* var186 /* : String */;
4840 val* var187 /* : Array[Object] */;
4841 long var188 /* : Int */;
4842 val* var189 /* : NativeArray[Object] */;
4843 val* var190 /* : String */;
4844 static val* varonce191;
4845 val* var192 /* : String */;
4846 char* var193 /* : NativeString */;
4847 long var194 /* : Int */;
4848 val* var195 /* : String */;
4849 static val* varonce196;
4850 val* var197 /* : String */;
4851 char* var198 /* : NativeString */;
4852 long var199 /* : Int */;
4853 val* var200 /* : String */;
4854 var_mtype = p0;
4855 var = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
4856 var_c_name = var;
4857 var1 = NEW_separate_compiler__SeparateCompilerVisitor(&type_separate_compiler__SeparateCompilerVisitor);
4858 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init]))(var1, self) /* init on <var1:SeparateCompilerVisitor>*/;
4859 var_v = var1;
4860 if (varonce) {
4861 var2 = varonce;
4862 } else {
4863 var3 = "/* runtime type ";
4864 var4 = 16;
4865 var5 = string__NativeString__to_s_with_length(var3, var4);
4866 var2 = var5;
4867 varonce = var2;
4868 }
4869 if (varonce6) {
4870 var7 = varonce6;
4871 } else {
4872 var8 = " */";
4873 var9 = 3;
4874 var10 = string__NativeString__to_s_with_length(var8, var9);
4875 var7 = var10;
4876 varonce6 = var7;
4877 }
4878 var11 = NEW_array__Array(&type_array__Arraykernel__Object);
4879 { /* var11 = array_instance Array[Object] */
4880 var12 = 3;
4881 var13 = NEW_array__NativeArray(var12, &type_array__NativeArraykernel__Object);
4882 ((struct instance_array__NativeArray*)var13)->values[0] = (val*) var2;
4883 ((struct instance_array__NativeArray*)var13)->values[1] = (val*) var_mtype;
4884 ((struct instance_array__NativeArray*)var13)->values[2] = (val*) var7;
4885 ((void (*)(val*, val*, long))(var11->class->vft[COLOR_array__Array__with_native]))(var11, var13, var12) /* with_native on <var11:Array[Object]>*/;
4886 }
4887 var14 = ((val* (*)(val*))(var11->class->vft[COLOR_string__Object__to_s]))(var11) /* to_s on <var11:Array[Object]>*/;
4888 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var14) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4889 if (varonce15) {
4890 var16 = varonce15;
4891 } else {
4892 var17 = "type_";
4893 var18 = 5;
4894 var19 = string__NativeString__to_s_with_length(var17, var18);
4895 var16 = var19;
4896 varonce15 = var16;
4897 }
4898 var20 = NEW_array__Array(&type_array__Arraykernel__Object);
4899 { /* var20 = array_instance Array[Object] */
4900 var21 = 2;
4901 var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object);
4902 ((struct instance_array__NativeArray*)var22)->values[0] = (val*) var16;
4903 ((struct instance_array__NativeArray*)var22)->values[1] = (val*) var_c_name;
4904 ((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[Object]>*/;
4905 }
4906 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on <var20:Array[Object]>*/;
4907 if (varonce24) {
4908 var25 = varonce24;
4909 } else {
4910 var26 = "extern const struct type type_";
4911 var27 = 30;
4912 var28 = string__NativeString__to_s_with_length(var26, var27);
4913 var25 = var28;
4914 varonce24 = var25;
4915 }
4916 if (varonce29) {
4917 var30 = varonce29;
4918 } else {
4919 var31 = ";";
4920 var32 = 1;
4921 var33 = string__NativeString__to_s_with_length(var31, var32);
4922 var30 = var33;
4923 varonce29 = var30;
4924 }
4925 var34 = NEW_array__Array(&type_array__Arraykernel__Object);
4926 { /* var34 = array_instance Array[Object] */
4927 var35 = 3;
4928 var36 = NEW_array__NativeArray(var35, &type_array__NativeArraykernel__Object);
4929 ((struct instance_array__NativeArray*)var36)->values[0] = (val*) var25;
4930 ((struct instance_array__NativeArray*)var36)->values[1] = (val*) var_c_name;
4931 ((struct instance_array__NativeArray*)var36)->values[2] = (val*) var30;
4932 ((void (*)(val*, val*, long))(var34->class->vft[COLOR_array__Array__with_native]))(var34, var36, var35) /* with_native on <var34:Array[Object]>*/;
4933 }
4934 var37 = ((val* (*)(val*))(var34->class->vft[COLOR_string__Object__to_s]))(var34) /* to_s on <var34:Array[Object]>*/;
4935 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var23, var37) /* provide_declaration on <self:SeparateCompiler>*/;
4936 if (varonce38) {
4937 var39 = varonce38;
4938 } else {
4939 var40 = "const struct type type_";
4940 var41 = 23;
4941 var42 = string__NativeString__to_s_with_length(var40, var41);
4942 var39 = var42;
4943 varonce38 = var39;
4944 }
4945 if (varonce43) {
4946 var44 = varonce43;
4947 } else {
4948 var45 = " = {";
4949 var46 = 4;
4950 var47 = string__NativeString__to_s_with_length(var45, var46);
4951 var44 = var47;
4952 varonce43 = var44;
4953 }
4954 var48 = NEW_array__Array(&type_array__Arraykernel__Object);
4955 { /* var48 = array_instance Array[Object] */
4956 var49 = 3;
4957 var50 = NEW_array__NativeArray(var49, &type_array__NativeArraykernel__Object);
4958 ((struct instance_array__NativeArray*)var50)->values[0] = (val*) var39;
4959 ((struct instance_array__NativeArray*)var50)->values[1] = (val*) var_c_name;
4960 ((struct instance_array__NativeArray*)var50)->values[2] = (val*) var44;
4961 ((void (*)(val*, val*, long))(var48->class->vft[COLOR_array__Array__with_native]))(var48, var50, var49) /* with_native on <var48:Array[Object]>*/;
4962 }
4963 var51 = ((val* (*)(val*))(var48->class->vft[COLOR_string__Object__to_s]))(var48) /* to_s on <var48:Array[Object]>*/;
4964 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var51) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4965 var52 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_layout]))(self) /* type_layout on <self:SeparateCompiler>*/;
4966 if (var52 == NULL) {
4967 fprintf(stderr, "Runtime error: %s", "Reciever is null");
4968 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 641);
4969 show_backtrace(1);
4970 } else {
4971 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_layout_builders__Layout__ids]))(var52) /* ids on <var52:nullable Layout[MType]>*/;
4972 }
4973 var54 = ((val* (*)(val*, val*))(var53->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var53, var_mtype) /* [] on <var53:Map[Object, Int](Map[MType, Int])>*/;
4974 if (varonce55) {
4975 var56 = varonce55;
4976 } else {
4977 var57 = ",";
4978 var58 = 1;
4979 var59 = string__NativeString__to_s_with_length(var57, var58);
4980 var56 = var59;
4981 varonce55 = var56;
4982 }
4983 var60 = NEW_array__Array(&type_array__Arraykernel__Object);
4984 { /* var60 = array_instance Array[Object] */
4985 var61 = 2;
4986 var62 = NEW_array__NativeArray(var61, &type_array__NativeArraykernel__Object);
4987 ((struct instance_array__NativeArray*)var62)->values[0] = (val*) var54;
4988 ((struct instance_array__NativeArray*)var62)->values[1] = (val*) var56;
4989 ((void (*)(val*, val*, long))(var60->class->vft[COLOR_array__Array__with_native]))(var60, var62, var61) /* with_native on <var60:Array[Object]>*/;
4990 }
4991 var63 = ((val* (*)(val*))(var60->class->vft[COLOR_string__Object__to_s]))(var60) /* to_s on <var60:Array[Object]>*/;
4992 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var63) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4993 if (varonce64) {
4994 var65 = varonce64;
4995 } else {
4996 var66 = "\"";
4997 var67 = 1;
4998 var68 = string__NativeString__to_s_with_length(var66, var67);
4999 var65 = var68;
5000 varonce64 = var65;
5001 }
5002 if (varonce69) {
5003 var70 = varonce69;
5004 } else {
5005 var71 = "\", /* class_name_string */";
5006 var72 = 26;
5007 var73 = string__NativeString__to_s_with_length(var71, var72);
5008 var70 = var73;
5009 varonce69 = var70;
5010 }
5011 var74 = NEW_array__Array(&type_array__Arraykernel__Object);
5012 { /* var74 = array_instance Array[Object] */
5013 var75 = 3;
5014 var76 = NEW_array__NativeArray(var75, &type_array__NativeArraykernel__Object);
5015 ((struct instance_array__NativeArray*)var76)->values[0] = (val*) var65;
5016 ((struct instance_array__NativeArray*)var76)->values[1] = (val*) var_mtype;
5017 ((struct instance_array__NativeArray*)var76)->values[2] = (val*) var70;
5018 ((void (*)(val*, val*, long))(var74->class->vft[COLOR_array__Array__with_native]))(var74, var76, var75) /* with_native on <var74:Array[Object]>*/;
5019 }
5020 var77 = ((val* (*)(val*))(var74->class->vft[COLOR_string__Object__to_s]))(var74) /* to_s on <var74:Array[Object]>*/;
5021 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var77) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5022 var78 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_layout]))(self) /* type_layout on <self:SeparateCompiler>*/;
5023 var_layout = var78;
5024 /* <var_layout:nullable Layout[MType]> isa PHLayout[MType, MType] */
5025 cltype = type_layout_builders__PHLayoutmodel__MTypemodel__MType.color;
5026 idtype = type_layout_builders__PHLayoutmodel__MTypemodel__MType.id;
5027 if(var_layout == NULL) {
5028 var79 = 0;
5029 } else {
5030 if(cltype >= var_layout->type->table_size) {
5031 var79 = 0;
5032 } else {
5033 var79 = var_layout->type->type_table[cltype] == idtype;
5034 }
5035 }
5036 if (var79){
5037 var80 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__PHLayout__masks]))(var_layout) /* masks on <var_layout:nullable Layout[MType](PHLayout[MType, MType])>*/;
5038 var81 = ((val* (*)(val*, val*))(var80->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var80, var_mtype) /* [] on <var80:Map[Object, Int](Map[MType, Int])>*/;
5039 if (varonce82) {
5040 var83 = varonce82;
5041 } else {
5042 var84 = ",";
5043 var85 = 1;
5044 var86 = string__NativeString__to_s_with_length(var84, var85);
5045 var83 = var86;
5046 varonce82 = var83;
5047 }
5048 var87 = NEW_array__Array(&type_array__Arraykernel__Object);
5049 { /* var87 = array_instance Array[Object] */
5050 var88 = 2;
5051 var89 = NEW_array__NativeArray(var88, &type_array__NativeArraykernel__Object);
5052 ((struct instance_array__NativeArray*)var89)->values[0] = (val*) var81;
5053 ((struct instance_array__NativeArray*)var89)->values[1] = (val*) var83;
5054 ((void (*)(val*, val*, long))(var87->class->vft[COLOR_array__Array__with_native]))(var87, var89, var88) /* with_native on <var87:Array[Object]>*/;
5055 }
5056 var90 = ((val* (*)(val*))(var87->class->vft[COLOR_string__Object__to_s]))(var87) /* to_s on <var87:Array[Object]>*/;
5057 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var90) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5058 } else {
5059 if (var_layout == NULL) {
5060 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5061 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 647);
5062 show_backtrace(1);
5063 } else {
5064 var91 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[MType]>*/;
5065 }
5066 var92 = ((val* (*)(val*, val*))(var91->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var91, var_mtype) /* [] on <var91:Map[Object, Int](Map[MType, Int])>*/;
5067 if (varonce93) {
5068 var94 = varonce93;
5069 } else {
5070 var95 = ",";
5071 var96 = 1;
5072 var97 = string__NativeString__to_s_with_length(var95, var96);
5073 var94 = var97;
5074 varonce93 = var94;
5075 }
5076 var98 = NEW_array__Array(&type_array__Arraykernel__Object);
5077 { /* var98 = array_instance Array[Object] */
5078 var99 = 2;
5079 var100 = NEW_array__NativeArray(var99, &type_array__NativeArraykernel__Object);
5080 ((struct instance_array__NativeArray*)var100)->values[0] = (val*) var92;
5081 ((struct instance_array__NativeArray*)var100)->values[1] = (val*) var94;
5082 ((void (*)(val*, val*, long))(var98->class->vft[COLOR_array__Array__with_native]))(var98, var100, var99) /* with_native on <var98:Array[Object]>*/;
5083 }
5084 var101 = ((val* (*)(val*))(var98->class->vft[COLOR_string__Object__to_s]))(var98) /* to_s on <var98:Array[Object]>*/;
5085 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var101) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5086 }
5087 /* <var_mtype:MType> isa MNullableType */
5088 cltype103 = type_model__MNullableType.color;
5089 idtype104 = type_model__MNullableType.id;
5090 if(cltype103 >= var_mtype->type->table_size) {
5091 var102 = 0;
5092 } else {
5093 var102 = var_mtype->type->type_table[cltype103] == idtype104;
5094 }
5095 if (var102){
5096 if (varonce105) {
5097 var106 = varonce105;
5098 } else {
5099 var107 = "1,";
5100 var108 = 2;
5101 var109 = string__NativeString__to_s_with_length(var107, var108);
5102 var106 = var109;
5103 varonce105 = var106;
5104 }
5105 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var106) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5106 } else {
5107 if (varonce110) {
5108 var111 = varonce110;
5109 } else {
5110 var112 = "0,";
5111 var113 = 2;
5112 var114 = string__NativeString__to_s_with_length(var112, var113);
5113 var111 = var114;
5114 varonce110 = var111;
5115 }
5116 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var111) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5117 }
5118 var115 = ((short int (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_type_resolution_table]))(self, var_mtype) /* compile_type_resolution_table on <self:SeparateCompiler>*/;
5119 if (var115){
5120 if (varonce116) {
5121 var117 = varonce116;
5122 } else {
5123 var118 = "resolution_table_";
5124 var119 = 17;
5125 var120 = string__NativeString__to_s_with_length(var118, var119);
5126 var117 = var120;
5127 varonce116 = var117;
5128 }
5129 var121 = NEW_array__Array(&type_array__Arraykernel__Object);
5130 { /* var121 = array_instance Array[Object] */
5131 var122 = 2;
5132 var123 = NEW_array__NativeArray(var122, &type_array__NativeArraykernel__Object);
5133 ((struct instance_array__NativeArray*)var123)->values[0] = (val*) var117;
5134 ((struct instance_array__NativeArray*)var123)->values[1] = (val*) var_c_name;
5135 ((void (*)(val*, val*, long))(var121->class->vft[COLOR_array__Array__with_native]))(var121, var123, var122) /* with_native on <var121:Array[Object]>*/;
5136 }
5137 var124 = ((val* (*)(val*))(var121->class->vft[COLOR_string__Object__to_s]))(var121) /* to_s on <var121:Array[Object]>*/;
5138 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var124) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
5139 if (varonce125) {
5140 var126 = varonce125;
5141 } else {
5142 var127 = "&resolution_table_";
5143 var128 = 18;
5144 var129 = string__NativeString__to_s_with_length(var127, var128);
5145 var126 = var129;
5146 varonce125 = var126;
5147 }
5148 if (varonce130) {
5149 var131 = varonce130;
5150 } else {
5151 var132 = ",";
5152 var133 = 1;
5153 var134 = string__NativeString__to_s_with_length(var132, var133);
5154 var131 = var134;
5155 varonce130 = var131;
5156 }
5157 var135 = NEW_array__Array(&type_array__Arraykernel__Object);
5158 { /* var135 = array_instance Array[Object] */
5159 var136 = 3;
5160 var137 = NEW_array__NativeArray(var136, &type_array__NativeArraykernel__Object);
5161 ((struct instance_array__NativeArray*)var137)->values[0] = (val*) var126;
5162 ((struct instance_array__NativeArray*)var137)->values[1] = (val*) var_c_name;
5163 ((struct instance_array__NativeArray*)var137)->values[2] = (val*) var131;
5164 ((void (*)(val*, val*, long))(var135->class->vft[COLOR_array__Array__with_native]))(var135, var137, var136) /* with_native on <var135:Array[Object]>*/;
5165 }
5166 var138 = ((val* (*)(val*))(var135->class->vft[COLOR_string__Object__to_s]))(var135) /* to_s on <var135:Array[Object]>*/;
5167 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var138) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5168 } else {
5169 if (varonce139) {
5170 var140 = varonce139;
5171 } else {
5172 var141 = "NULL,";
5173 var142 = 5;
5174 var143 = string__NativeString__to_s_with_length(var141, var142);
5175 var140 = var143;
5176 varonce139 = var140;
5177 }
5178 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var140) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5179 }
5180 var144 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_tables]))(self) /* type_tables on <self:SeparateCompiler>*/;
5181 var145 = ((val* (*)(val*, val*))(var144->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var144, var_mtype) /* [] on <var144:Map[MType, Array[nullable MType]]>*/;
5182 var146 = ((long (*)(val*))(var145->class->vft[COLOR_abstract_collection__Collection__length]))(var145) /* length on <var145:nullable Object(Array[nullable MType])>*/;
5183 if (varonce147) {
5184 var148 = varonce147;
5185 } else {
5186 var149 = ",";
5187 var150 = 1;
5188 var151 = string__NativeString__to_s_with_length(var149, var150);
5189 var148 = var151;
5190 varonce147 = var148;
5191 }
5192 var152 = NEW_array__Array(&type_array__Arraykernel__Object);
5193 { /* var152 = array_instance Array[Object] */
5194 var153 = 2;
5195 var154 = NEW_array__NativeArray(var153, &type_array__NativeArraykernel__Object);
5196 var155 = BOX_kernel__Int(var146); /* autobox from Int to Object */
5197 ((struct instance_array__NativeArray*)var154)->values[0] = (val*) var155;
5198 ((struct instance_array__NativeArray*)var154)->values[1] = (val*) var148;
5199 ((void (*)(val*, val*, long))(var152->class->vft[COLOR_array__Array__with_native]))(var152, var154, var153) /* with_native on <var152:Array[Object]>*/;
5200 }
5201 var156 = ((val* (*)(val*))(var152->class->vft[COLOR_string__Object__to_s]))(var152) /* to_s on <var152:Array[Object]>*/;
5202 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var156) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5203 if (varonce157) {
5204 var158 = varonce157;
5205 } else {
5206 var159 = "{";
5207 var160 = 1;
5208 var161 = string__NativeString__to_s_with_length(var159, var160);
5209 var158 = var161;
5210 varonce157 = var158;
5211 }
5212 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var158) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5213 var162 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_tables]))(self) /* type_tables on <self:SeparateCompiler>*/;
5214 var163 = ((val* (*)(val*, val*))(var162->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var162, var_mtype) /* [] on <var162:Map[MType, Array[nullable MType]]>*/;
5215 var164 = ((val* (*)(val*))(var163->class->vft[COLOR_abstract_collection__Collection__iterator]))(var163) /* iterator on <var163:nullable Object(Array[nullable MType])>*/;
5216 for(;;) {
5217 var165 = ((short int (*)(val*))(var164->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var164) /* is_ok on <var164:Iterator[nullable Object]>*/;
5218 if(!var165) break;
5219 var166 = ((val* (*)(val*))(var164->class->vft[COLOR_abstract_collection__Iterator__item]))(var164) /* item on <var164:Iterator[nullable Object]>*/;
5220 var_stype = var166;
5221 var167 = NULL;
5222 if (var_stype == NULL) {
5223 var168 = 1; /* is null */
5224 } else {
5225 var168 = 0; /* arg is null but recv is not */
5226 }
5227 if (var168){
5228 if (varonce169) {
5229 var170 = varonce169;
5230 } else {
5231 var171 = "-1, /* empty */";
5232 var172 = 15;
5233 var173 = string__NativeString__to_s_with_length(var171, var172);
5234 var170 = var173;
5235 varonce169 = var170;
5236 }
5237 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var170) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5238 } else {
5239 var174 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_layout]))(self) /* type_layout on <self:SeparateCompiler>*/;
5240 if (var174 == NULL) {
5241 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5242 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 666);
5243 show_backtrace(1);
5244 } else {
5245 var175 = ((val* (*)(val*))(var174->class->vft[COLOR_layout_builders__Layout__ids]))(var174) /* ids on <var174:nullable Layout[MType]>*/;
5246 }
5247 var176 = ((val* (*)(val*, val*))(var175->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var175, var_stype) /* [] on <var175:Map[Object, Int](Map[MType, Int])>*/;
5248 if (varonce177) {
5249 var178 = varonce177;
5250 } else {
5251 var179 = ", /* ";
5252 var180 = 5;
5253 var181 = string__NativeString__to_s_with_length(var179, var180);
5254 var178 = var181;
5255 varonce177 = var178;
5256 }
5257 if (varonce182) {
5258 var183 = varonce182;
5259 } else {
5260 var184 = " */";
5261 var185 = 3;
5262 var186 = string__NativeString__to_s_with_length(var184, var185);
5263 var183 = var186;
5264 varonce182 = var183;
5265 }
5266 var187 = NEW_array__Array(&type_array__Arraykernel__Object);
5267 { /* var187 = array_instance Array[Object] */
5268 var188 = 4;
5269 var189 = NEW_array__NativeArray(var188, &type_array__NativeArraykernel__Object);
5270 ((struct instance_array__NativeArray*)var189)->values[0] = (val*) var176;
5271 ((struct instance_array__NativeArray*)var189)->values[1] = (val*) var178;
5272 ((struct instance_array__NativeArray*)var189)->values[2] = (val*) var_stype;
5273 ((struct instance_array__NativeArray*)var189)->values[3] = (val*) var183;
5274 ((void (*)(val*, val*, long))(var187->class->vft[COLOR_array__Array__with_native]))(var187, var189, var188) /* with_native on <var187:Array[Object]>*/;
5275 }
5276 var190 = ((val* (*)(val*))(var187->class->vft[COLOR_string__Object__to_s]))(var187) /* to_s on <var187:Array[Object]>*/;
5277 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var190) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5278 }
5279 CONTINUE_label: (void)0;
5280 ((void (*)(val*))(var164->class->vft[COLOR_abstract_collection__Iterator__next]))(var164) /* next on <var164:Iterator[nullable Object]>*/;
5281 }
5282 BREAK_label: (void)0;
5283 if (varonce191) {
5284 var192 = varonce191;
5285 } else {
5286 var193 = "},";
5287 var194 = 2;
5288 var195 = string__NativeString__to_s_with_length(var193, var194);
5289 var192 = var195;
5290 varonce191 = var192;
5291 }
5292 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var192) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5293 if (varonce196) {
5294 var197 = varonce196;
5295 } else {
5296 var198 = "};";
5297 var199 = 2;
5298 var200 = string__NativeString__to_s_with_length(var198, var199);
5299 var197 = var200;
5300 varonce196 = var197;
5301 }
5302 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var197) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5303 RET_LABEL:;
5304 }
5305 /* method separate_compiler#SeparateCompiler#compile_type_to_c for (self: Object, MType) */
5306 void VIRTUAL_separate_compiler__SeparateCompiler__compile_type_to_c(val* self, val* p0) {
5307 separate_compiler__SeparateCompiler__compile_type_to_c(self, p0);
5308 RET_LABEL:;
5309 }
5310 /* method separate_compiler#SeparateCompiler#compile_type_resolution_table for (self: SeparateCompiler, MType): Bool */
5311 short int separate_compiler__SeparateCompiler__compile_type_resolution_table(val* self, val* p0) {
5312 short int var /* : Bool */;
5313 val* var_mtype /* var mtype: MType */;
5314 short int var1 /* : Bool */;
5315 int cltype;
5316 int idtype;
5317 val* var2 /* : MType */;
5318 short int var3 /* : Bool */;
5319 int cltype4;
5320 int idtype5;
5321 const char* var_class_name;
5322 val* var_mclass_type /* var mclass_type: MClassType */;
5323 short int var6 /* : Bool */;
5324 int cltype7;
5325 int idtype8;
5326 const char* var_class_name9;
5327 val* var10 /* : Map[MClassType, Array[nullable MType]] */;
5328 short int var11 /* : Bool */;
5329 short int var12 /* : Bool */;
5330 short int var13 /* : Bool */;
5331 val* var14 /* : nullable Layout[MType] */;
5332 val* var_layout /* var layout: nullable Layout[MType] */;
5333 static val* varonce;
5334 val* var15 /* : String */;
5335 char* var16 /* : NativeString */;
5336 long var17 /* : Int */;
5337 val* var18 /* : String */;
5338 val* var19 /* : String */;
5339 val* var20 /* : Array[Object] */;
5340 long var21 /* : Int */;
5341 val* var22 /* : NativeArray[Object] */;
5342 val* var23 /* : String */;
5343 static val* varonce24;
5344 val* var25 /* : String */;
5345 char* var26 /* : NativeString */;
5346 long var27 /* : Int */;
5347 val* var28 /* : String */;
5348 val* var29 /* : String */;
5349 static val* varonce30;
5350 val* var31 /* : String */;
5351 char* var32 /* : NativeString */;
5352 long var33 /* : Int */;
5353 val* var34 /* : String */;
5354 val* var35 /* : Array[Object] */;
5355 long var36 /* : Int */;
5356 val* var37 /* : NativeArray[Object] */;
5357 val* var38 /* : String */;
5358 val* var39 /* : AbstractCompilerVisitor */;
5359 val* var_v /* var v: SeparateCompilerVisitor */;
5360 static val* varonce40;
5361 val* var41 /* : String */;
5362 char* var42 /* : NativeString */;
5363 long var43 /* : Int */;
5364 val* var44 /* : String */;
5365 val* var45 /* : String */;
5366 static val* varonce46;
5367 val* var47 /* : String */;
5368 char* var48 /* : NativeString */;
5369 long var49 /* : Int */;
5370 val* var50 /* : String */;
5371 val* var51 /* : Array[Object] */;
5372 long var52 /* : Int */;
5373 val* var53 /* : NativeArray[Object] */;
5374 val* var54 /* : String */;
5375 short int var55 /* : Bool */;
5376 int cltype56;
5377 int idtype57;
5378 val* var58 /* : Map[Object, Int] */;
5379 val* var59 /* : nullable Object */;
5380 static val* varonce60;
5381 val* var61 /* : String */;
5382 char* var62 /* : NativeString */;
5383 long var63 /* : Int */;
5384 val* var64 /* : String */;
5385 val* var65 /* : Array[Object] */;
5386 long var66 /* : Int */;
5387 val* var67 /* : NativeArray[Object] */;
5388 val* var68 /* : String */;
5389 static val* varonce69;
5390 val* var70 /* : String */;
5391 char* var71 /* : NativeString */;
5392 long var72 /* : Int */;
5393 val* var73 /* : String */;
5394 static val* varonce74;
5395 val* var75 /* : String */;
5396 char* var76 /* : NativeString */;
5397 long var77 /* : Int */;
5398 val* var78 /* : String */;
5399 val* var79 /* : Map[MClassType, Array[nullable MType]] */;
5400 val* var80 /* : nullable Object */;
5401 val* var81 /* : Iterator[nullable Object] */;
5402 short int var82 /* : Bool */;
5403 val* var83 /* : nullable Object */;
5404 val* var_t /* var t: nullable MType */;
5405 val* var84 /* : null */;
5406 short int var85 /* : Bool */;
5407 static val* varonce86;
5408 val* var87 /* : String */;
5409 char* var88 /* : NativeString */;
5410 long var89 /* : Int */;
5411 val* var90 /* : String */;
5412 val* var91 /* : MModule */;
5413 short int var92 /* : Bool */;
5414 val* var93 /* : MType */;
5415 val* var_tv /* var tv: MType */;
5416 val* var94 /* : nullable Layout[MType] */;
5417 val* var95 /* : Map[Object, Int] */;
5418 short int var96 /* : Bool */;
5419 static val* varonce97;
5420 val* var98 /* : String */;
5421 char* var99 /* : NativeString */;
5422 long var100 /* : Int */;
5423 val* var101 /* : String */;
5424 val* var102 /* : String */;
5425 val* var103 /* : Array[Object] */;
5426 long var104 /* : Int */;
5427 val* var105 /* : NativeArray[Object] */;
5428 val* var106 /* : String */;
5429 static val* varonce107;
5430 val* var108 /* : String */;
5431 char* var109 /* : NativeString */;
5432 long var110 /* : Int */;
5433 val* var111 /* : String */;
5434 val* var112 /* : String */;
5435 static val* varonce113;
5436 val* var114 /* : String */;
5437 char* var115 /* : NativeString */;
5438 long var116 /* : Int */;
5439 val* var117 /* : String */;
5440 static val* varonce118;
5441 val* var119 /* : String */;
5442 char* var120 /* : NativeString */;
5443 long var121 /* : Int */;
5444 val* var122 /* : String */;
5445 static val* varonce123;
5446 val* var124 /* : String */;
5447 char* var125 /* : NativeString */;
5448 long var126 /* : Int */;
5449 val* var127 /* : String */;
5450 val* var128 /* : Array[Object] */;
5451 long var129 /* : Int */;
5452 val* var130 /* : NativeArray[Object] */;
5453 val* var131 /* : String */;
5454 static val* varonce132;
5455 val* var133 /* : String */;
5456 char* var134 /* : NativeString */;
5457 long var135 /* : Int */;
5458 val* var136 /* : String */;
5459 static val* varonce137;
5460 val* var138 /* : String */;
5461 char* var139 /* : NativeString */;
5462 long var140 /* : Int */;
5463 val* var141 /* : String */;
5464 static val* varonce142;
5465 val* var143 /* : String */;
5466 char* var144 /* : NativeString */;
5467 long var145 /* : Int */;
5468 val* var146 /* : String */;
5469 val* var147 /* : Array[Object] */;
5470 long var148 /* : Int */;
5471 val* var149 /* : NativeArray[Object] */;
5472 val* var150 /* : String */;
5473 static val* varonce151;
5474 val* var152 /* : String */;
5475 char* var153 /* : NativeString */;
5476 long var154 /* : Int */;
5477 val* var155 /* : String */;
5478 static val* varonce156;
5479 val* var157 /* : String */;
5480 char* var158 /* : NativeString */;
5481 long var159 /* : Int */;
5482 val* var160 /* : String */;
5483 short int var161 /* : Bool */;
5484 var_mtype = p0;
5485 /* <var_mtype:MType> isa MNullableType */
5486 cltype = type_model__MNullableType.color;
5487 idtype = type_model__MNullableType.id;
5488 if(cltype >= var_mtype->type->table_size) {
5489 var1 = 0;
5490 } else {
5491 var1 = var_mtype->type->type_table[cltype] == idtype;
5492 }
5493 if (var1){
5494 var2 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
5495 /* <var2:MType> isa MClassType */
5496 cltype4 = type_model__MClassType.color;
5497 idtype5 = type_model__MClassType.id;
5498 if(cltype4 >= var2->type->table_size) {
5499 var3 = 0;
5500 } else {
5501 var3 = var2->type->type_table[cltype4] == idtype5;
5502 }
5503 if (!var3) {
5504 var_class_name = var2 == NULL ? "null" : var2->type->name;
5505 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5506 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 677);
5507 show_backtrace(1);
5508 }
5509 var_mclass_type = var2;
5510 } else {
5511 /* <var_mtype:MType> isa MClassType */
5512 cltype7 = type_model__MClassType.color;
5513 idtype8 = type_model__MClassType.id;
5514 if(cltype7 >= var_mtype->type->table_size) {
5515 var6 = 0;
5516 } else {
5517 var6 = var_mtype->type->type_table[cltype7] == idtype8;
5518 }
5519 if (!var6) {
5520 var_class_name9 = var_mtype == NULL ? "null" : var_mtype->type->name;
5521 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name9);
5522 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 679);
5523 show_backtrace(1);
5524 }
5525 var_mclass_type = var_mtype;
5526 }
5527 var10 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_tables]))(self) /* resolution_tables on <self:SeparateCompiler>*/;
5528 var11 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var10, var_mclass_type) /* has_key on <var10:Map[MClassType, Array[nullable MType]]>*/;
5529 var12 = !var11;
5530 if (var12){
5531 var13 = 0;
5532 var = var13;
5533 goto RET_LABEL;
5534 } else {
5535 }
5536 var14 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_layout]))(self) /* resolution_layout on <self:SeparateCompiler>*/;
5537 var_layout = var14;
5538 if (varonce) {
5539 var15 = varonce;
5540 } else {
5541 var16 = "resolution_table_";
5542 var17 = 17;
5543 var18 = string__NativeString__to_s_with_length(var16, var17);
5544 var15 = var18;
5545 varonce = var15;
5546 }
5547 var19 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
5548 var20 = NEW_array__Array(&type_array__Arraykernel__Object);
5549 { /* var20 = array_instance Array[Object] */
5550 var21 = 2;
5551 var22 = NEW_array__NativeArray(var21, &type_array__NativeArraykernel__Object);
5552 ((struct instance_array__NativeArray*)var22)->values[0] = (val*) var15;
5553 ((struct instance_array__NativeArray*)var22)->values[1] = (val*) var19;
5554 ((void (*)(val*, val*, long))(var20->class->vft[COLOR_array__Array__with_native]))(var20, var22, var21) /* with_native on <var20:Array[Object]>*/;
5555 }
5556 var23 = ((val* (*)(val*))(var20->class->vft[COLOR_string__Object__to_s]))(var20) /* to_s on <var20:Array[Object]>*/;
5557 if (varonce24) {
5558 var25 = varonce24;
5559 } else {
5560 var26 = "extern const struct types resolution_table_";
5561 var27 = 43;
5562 var28 = string__NativeString__to_s_with_length(var26, var27);
5563 var25 = var28;
5564 varonce24 = var25;
5565 }
5566 var29 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
5567 if (varonce30) {
5568 var31 = varonce30;
5569 } else {
5570 var32 = ";";
5571 var33 = 1;
5572 var34 = string__NativeString__to_s_with_length(var32, var33);
5573 var31 = var34;
5574 varonce30 = var31;
5575 }
5576 var35 = NEW_array__Array(&type_array__Arraykernel__Object);
5577 { /* var35 = array_instance Array[Object] */
5578 var36 = 3;
5579 var37 = NEW_array__NativeArray(var36, &type_array__NativeArraykernel__Object);
5580 ((struct instance_array__NativeArray*)var37)->values[0] = (val*) var25;
5581 ((struct instance_array__NativeArray*)var37)->values[1] = (val*) var29;
5582 ((struct instance_array__NativeArray*)var37)->values[2] = (val*) var31;
5583 ((void (*)(val*, val*, long))(var35->class->vft[COLOR_array__Array__with_native]))(var35, var37, var36) /* with_native on <var35:Array[Object]>*/;
5584 }
5585 var38 = ((val* (*)(val*))(var35->class->vft[COLOR_string__Object__to_s]))(var35) /* to_s on <var35:Array[Object]>*/;
5586 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var23, var38) /* provide_declaration on <self:SeparateCompiler>*/;
5587 var39 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:SeparateCompiler>*/;
5588 var_v = var39;
5589 if (varonce40) {
5590 var41 = varonce40;
5591 } else {
5592 var42 = "const struct types resolution_table_";
5593 var43 = 36;
5594 var44 = string__NativeString__to_s_with_length(var42, var43);
5595 var41 = var44;
5596 varonce40 = var41;
5597 }
5598 var45 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
5599 if (varonce46) {
5600 var47 = varonce46;
5601 } else {
5602 var48 = " = {";
5603 var49 = 4;
5604 var50 = string__NativeString__to_s_with_length(var48, var49);
5605 var47 = var50;
5606 varonce46 = var47;
5607 }
5608 var51 = NEW_array__Array(&type_array__Arraykernel__Object);
5609 { /* var51 = array_instance Array[Object] */
5610 var52 = 3;
5611 var53 = NEW_array__NativeArray(var52, &type_array__NativeArraykernel__Object);
5612 ((struct instance_array__NativeArray*)var53)->values[0] = (val*) var41;
5613 ((struct instance_array__NativeArray*)var53)->values[1] = (val*) var45;
5614 ((struct instance_array__NativeArray*)var53)->values[2] = (val*) var47;
5615 ((void (*)(val*, val*, long))(var51->class->vft[COLOR_array__Array__with_native]))(var51, var53, var52) /* with_native on <var51:Array[Object]>*/;
5616 }
5617 var54 = ((val* (*)(val*))(var51->class->vft[COLOR_string__Object__to_s]))(var51) /* to_s on <var51:Array[Object]>*/;
5618 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var54) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5619 /* <var_layout:nullable Layout[MType]> isa PHLayout[MClassType, MType] */
5620 cltype56 = type_layout_builders__PHLayoutmodel__MClassTypemodel__MType.color;
5621 idtype57 = type_layout_builders__PHLayoutmodel__MClassTypemodel__MType.id;
5622 if(var_layout == NULL) {
5623 var55 = 0;
5624 } else {
5625 if(cltype56 >= var_layout->type->table_size) {
5626 var55 = 0;
5627 } else {
5628 var55 = var_layout->type->type_table[cltype56] == idtype57;
5629 }
5630 }
5631 if (var55){
5632 var58 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__PHLayout__masks]))(var_layout) /* masks on <var_layout:nullable Layout[MType](PHLayout[MClassType, MType])>*/;
5633 var59 = ((val* (*)(val*, val*))(var58->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var58, var_mclass_type) /* [] on <var58:Map[Object, Int](Map[MClassType, Int])>*/;
5634 if (varonce60) {
5635 var61 = varonce60;
5636 } else {
5637 var62 = ",";
5638 var63 = 1;
5639 var64 = string__NativeString__to_s_with_length(var62, var63);
5640 var61 = var64;
5641 varonce60 = var61;
5642 }
5643 var65 = NEW_array__Array(&type_array__Arraykernel__Object);
5644 { /* var65 = array_instance Array[Object] */
5645 var66 = 2;
5646 var67 = NEW_array__NativeArray(var66, &type_array__NativeArraykernel__Object);
5647 ((struct instance_array__NativeArray*)var67)->values[0] = (val*) var59;
5648 ((struct instance_array__NativeArray*)var67)->values[1] = (val*) var61;
5649 ((void (*)(val*, val*, long))(var65->class->vft[COLOR_array__Array__with_native]))(var65, var67, var66) /* with_native on <var65:Array[Object]>*/;
5650 }
5651 var68 = ((val* (*)(val*))(var65->class->vft[COLOR_string__Object__to_s]))(var65) /* to_s on <var65:Array[Object]>*/;
5652 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var68) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5653 } else {
5654 if (varonce69) {
5655 var70 = varonce69;
5656 } else {
5657 var71 = "0, /* dummy */";
5658 var72 = 14;
5659 var73 = string__NativeString__to_s_with_length(var71, var72);
5660 var70 = var73;
5661 varonce69 = var70;
5662 }
5663 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var70) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5664 }
5665 if (varonce74) {
5666 var75 = varonce74;
5667 } else {
5668 var76 = "{";
5669 var77 = 1;
5670 var78 = string__NativeString__to_s_with_length(var76, var77);
5671 var75 = var78;
5672 varonce74 = var75;
5673 }
5674 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var75) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5675 var79 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_tables]))(self) /* resolution_tables on <self:SeparateCompiler>*/;
5676 var80 = ((val* (*)(val*, val*))(var79->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var79, var_mclass_type) /* [] on <var79:Map[MClassType, Array[nullable MType]]>*/;
5677 var81 = ((val* (*)(val*))(var80->class->vft[COLOR_abstract_collection__Collection__iterator]))(var80) /* iterator on <var80:nullable Object(Array[nullable MType])>*/;
5678 for(;;) {
5679 var82 = ((short int (*)(val*))(var81->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var81) /* is_ok on <var81:Iterator[nullable Object]>*/;
5680 if(!var82) break;
5681 var83 = ((val* (*)(val*))(var81->class->vft[COLOR_abstract_collection__Iterator__item]))(var81) /* item on <var81:Iterator[nullable Object]>*/;
5682 var_t = var83;
5683 var84 = NULL;
5684 if (var_t == NULL) {
5685 var85 = 1; /* is null */
5686 } else {
5687 var85 = 0; /* arg is null but recv is not */
5688 }
5689 if (var85){
5690 if (varonce86) {
5691 var87 = varonce86;
5692 } else {
5693 var88 = "NULL, /* empty */";
5694 var89 = 17;
5695 var90 = string__NativeString__to_s_with_length(var88, var89);
5696 var87 = var90;
5697 varonce86 = var87;
5698 }
5699 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var87) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5700 } else {
5701 var91 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
5702 var92 = 1;
5703 var93 = ((val* (*)(val*, val*, val*, val*, short int))(var_t->class->vft[COLOR_model__MType__resolve_for]))(var_t, var_mclass_type, var_mclass_type, var91, var92) /* resolve_for on <var_t:nullable MType(MType)>*/;
5704 var_tv = var93;
5705 var94 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_layout]))(self) /* type_layout on <self:SeparateCompiler>*/;
5706 if (var94 == NULL) {
5707 fprintf(stderr, "Runtime error: %s", "Reciever is null");
5708 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 706);
5709 show_backtrace(1);
5710 } else {
5711 var95 = ((val* (*)(val*))(var94->class->vft[COLOR_layout_builders__Layout__ids]))(var94) /* ids on <var94:nullable Layout[MType]>*/;
5712 }
5713 var96 = ((short int (*)(val*, val*))(var95->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var95, var_tv) /* has_key on <var95:Map[Object, Int](Map[MType, Int])>*/;
5714 if (var96){
5715 if (varonce97) {
5716 var98 = varonce97;
5717 } else {
5718 var99 = "type_";
5719 var100 = 5;
5720 var101 = string__NativeString__to_s_with_length(var99, var100);
5721 var98 = var101;
5722 varonce97 = var98;
5723 }
5724 var102 = ((val* (*)(val*))(var_tv->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_tv) /* c_name on <var_tv:MType>*/;
5725 var103 = NEW_array__Array(&type_array__Arraykernel__Object);
5726 { /* var103 = array_instance Array[Object] */
5727 var104 = 2;
5728 var105 = NEW_array__NativeArray(var104, &type_array__NativeArraykernel__Object);
5729 ((struct instance_array__NativeArray*)var105)->values[0] = (val*) var98;
5730 ((struct instance_array__NativeArray*)var105)->values[1] = (val*) var102;
5731 ((void (*)(val*, val*, long))(var103->class->vft[COLOR_array__Array__with_native]))(var103, var105, var104) /* with_native on <var103:Array[Object]>*/;
5732 }
5733 var106 = ((val* (*)(val*))(var103->class->vft[COLOR_string__Object__to_s]))(var103) /* to_s on <var103:Array[Object]>*/;
5734 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var106) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
5735 if (varonce107) {
5736 var108 = varonce107;
5737 } else {
5738 var109 = "&type_";
5739 var110 = 6;
5740 var111 = string__NativeString__to_s_with_length(var109, var110);
5741 var108 = var111;
5742 varonce107 = var108;
5743 }
5744 var112 = ((val* (*)(val*))(var_tv->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_tv) /* c_name on <var_tv:MType>*/;
5745 if (varonce113) {
5746 var114 = varonce113;
5747 } else {
5748 var115 = ", /* ";
5749 var116 = 5;
5750 var117 = string__NativeString__to_s_with_length(var115, var116);
5751 var114 = var117;
5752 varonce113 = var114;
5753 }
5754 if (varonce118) {
5755 var119 = varonce118;
5756 } else {
5757 var120 = ": ";
5758 var121 = 2;
5759 var122 = string__NativeString__to_s_with_length(var120, var121);
5760 var119 = var122;
5761 varonce118 = var119;
5762 }
5763 if (varonce123) {
5764 var124 = varonce123;
5765 } else {
5766 var125 = " */";
5767 var126 = 3;
5768 var127 = string__NativeString__to_s_with_length(var125, var126);
5769 var124 = var127;
5770 varonce123 = var124;
5771 }
5772 var128 = NEW_array__Array(&type_array__Arraykernel__Object);
5773 { /* var128 = array_instance Array[Object] */
5774 var129 = 7;
5775 var130 = NEW_array__NativeArray(var129, &type_array__NativeArraykernel__Object);
5776 ((struct instance_array__NativeArray*)var130)->values[0] = (val*) var108;
5777 ((struct instance_array__NativeArray*)var130)->values[1] = (val*) var112;
5778 ((struct instance_array__NativeArray*)var130)->values[2] = (val*) var114;
5779 ((struct instance_array__NativeArray*)var130)->values[3] = (val*) var_t;
5780 ((struct instance_array__NativeArray*)var130)->values[4] = (val*) var119;
5781 ((struct instance_array__NativeArray*)var130)->values[5] = (val*) var_tv;
5782 ((struct instance_array__NativeArray*)var130)->values[6] = (val*) var124;
5783 ((void (*)(val*, val*, long))(var128->class->vft[COLOR_array__Array__with_native]))(var128, var130, var129) /* with_native on <var128:Array[Object]>*/;
5784 }
5785 var131 = ((val* (*)(val*))(var128->class->vft[COLOR_string__Object__to_s]))(var128) /* to_s on <var128:Array[Object]>*/;
5786 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var131) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5787 } else {
5788 if (varonce132) {
5789 var133 = varonce132;
5790 } else {
5791 var134 = "NULL, /* empty (";
5792 var135 = 16;
5793 var136 = string__NativeString__to_s_with_length(var134, var135);
5794 var133 = var136;
5795 varonce132 = var133;
5796 }
5797 if (varonce137) {
5798 var138 = varonce137;
5799 } else {
5800 var139 = ": ";
5801 var140 = 2;
5802 var141 = string__NativeString__to_s_with_length(var139, var140);
5803 var138 = var141;
5804 varonce137 = var138;
5805 }
5806 if (varonce142) {
5807 var143 = varonce142;
5808 } else {
5809 var144 = " not a live type) */";
5810 var145 = 20;
5811 var146 = string__NativeString__to_s_with_length(var144, var145);
5812 var143 = var146;
5813 varonce142 = var143;
5814 }
5815 var147 = NEW_array__Array(&type_array__Arraykernel__Object);
5816 { /* var147 = array_instance Array[Object] */
5817 var148 = 5;
5818 var149 = NEW_array__NativeArray(var148, &type_array__NativeArraykernel__Object);
5819 ((struct instance_array__NativeArray*)var149)->values[0] = (val*) var133;
5820 ((struct instance_array__NativeArray*)var149)->values[1] = (val*) var_t;
5821 ((struct instance_array__NativeArray*)var149)->values[2] = (val*) var138;
5822 ((struct instance_array__NativeArray*)var149)->values[3] = (val*) var_tv;
5823 ((struct instance_array__NativeArray*)var149)->values[4] = (val*) var143;
5824 ((void (*)(val*, val*, long))(var147->class->vft[COLOR_array__Array__with_native]))(var147, var149, var148) /* with_native on <var147:Array[Object]>*/;
5825 }
5826 var150 = ((val* (*)(val*))(var147->class->vft[COLOR_string__Object__to_s]))(var147) /* to_s on <var147:Array[Object]>*/;
5827 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var150) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5828 }
5829 }
5830 CONTINUE_label: (void)0;
5831 ((void (*)(val*))(var81->class->vft[COLOR_abstract_collection__Iterator__next]))(var81) /* next on <var81:Iterator[nullable Object]>*/;
5832 }
5833 BREAK_label: (void)0;
5834 if (varonce151) {
5835 var152 = varonce151;
5836 } else {
5837 var153 = "}";
5838 var154 = 1;
5839 var155 = string__NativeString__to_s_with_length(var153, var154);
5840 var152 = var155;
5841 varonce151 = var152;
5842 }
5843 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var152) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5844 if (varonce156) {
5845 var157 = varonce156;
5846 } else {
5847 var158 = "};";
5848 var159 = 2;
5849 var160 = string__NativeString__to_s_with_length(var158, var159);
5850 var157 = var160;
5851 varonce156 = var157;
5852 }
5853 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var157) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5854 var161 = 1;
5855 var = var161;
5856 goto RET_LABEL;
5857 RET_LABEL:;
5858 return var;
5859 }
5860 /* method separate_compiler#SeparateCompiler#compile_type_resolution_table for (self: Object, MType): Bool */
5861 short int VIRTUAL_separate_compiler__SeparateCompiler__compile_type_resolution_table(val* self, val* p0) {
5862 short int var /* : Bool */;
5863 short int var1 /* : Bool */;
5864 var1 = separate_compiler__SeparateCompiler__compile_type_resolution_table(self, p0);
5865 var = var1;
5866 RET_LABEL:;
5867 return var;
5868 }
5869 /* method separate_compiler#SeparateCompiler#compile_class_to_c for (self: SeparateCompiler, MClass) */
5870 void separate_compiler__SeparateCompiler__compile_class_to_c(val* self, val* p0) {
5871 val* var_mclass /* var mclass: MClass */;
5872 val* var /* : MClassDef */;
5873 val* var1 /* : MClassType */;
5874 val* var_mtype /* var mtype: MClassType */;
5875 val* var2 /* : String */;
5876 val* var_c_name /* var c_name: String */;
5877 val* var3 /* : Map[MClass, Array[nullable MPropDef]] */;
5878 val* var4 /* : nullable Object */;
5879 val* var_vft /* var vft: Array[nullable MPropDef] */;
5880 val* var5 /* : Map[MClass, Array[nullable MPropDef]] */;
5881 val* var6 /* : nullable Object */;
5882 val* var_attrs /* var attrs: Array[nullable MPropDef] */;
5883 val* var7 /* : AbstractCompilerVisitor */;
5884 val* var_v /* var v: SeparateCompilerVisitor */;
5885 short int var8 /* : Bool */;
5886 short int var9 /* : Bool */;
5887 short int var10 /* : Bool */;
5888 val* var11 /* : nullable RapidTypeAnalysis */;
5889 val* var12 /* : null */;
5890 short int var13 /* : Bool */;
5891 short int var_ /* var : Bool */;
5892 val* var14 /* : nullable RapidTypeAnalysis */;
5893 val* var15 /* : HashSet[MClass] */;
5894 short int var16 /* : Bool */;
5895 short int var17 /* : Bool */;
5896 short int var_18 /* var : Bool */;
5897 val* var19 /* : String */;
5898 static val* varonce;
5899 val* var20 /* : String */;
5900 char* var21 /* : NativeString */;
5901 long var22 /* : Int */;
5902 val* var23 /* : String */;
5903 short int var24 /* : Bool */;
5904 short int var_25 /* var : Bool */;
5905 val* var26 /* : String */;
5906 static val* varonce27;
5907 val* var28 /* : String */;
5908 char* var29 /* : NativeString */;
5909 long var30 /* : Int */;
5910 val* var31 /* : String */;
5911 short int var32 /* : Bool */;
5912 short int var_is_dead /* var is_dead: Bool */;
5913 static val* varonce33;
5914 val* var34 /* : String */;
5915 char* var35 /* : NativeString */;
5916 long var36 /* : Int */;
5917 val* var37 /* : String */;
5918 static val* varonce38;
5919 val* var39 /* : String */;
5920 char* var40 /* : NativeString */;
5921 long var41 /* : Int */;
5922 val* var42 /* : String */;
5923 val* var43 /* : Array[Object] */;
5924 long var44 /* : Int */;
5925 val* var45 /* : NativeArray[Object] */;
5926 val* var46 /* : String */;
5927 short int var47 /* : Bool */;
5928 static val* varonce48;
5929 val* var49 /* : String */;
5930 char* var50 /* : NativeString */;
5931 long var51 /* : Int */;
5932 val* var52 /* : String */;
5933 val* var53 /* : Array[Object] */;
5934 long var54 /* : Int */;
5935 val* var55 /* : NativeArray[Object] */;
5936 val* var56 /* : String */;
5937 static val* varonce57;
5938 val* var58 /* : String */;
5939 char* var59 /* : NativeString */;
5940 long var60 /* : Int */;
5941 val* var61 /* : String */;
5942 static val* varonce62;
5943 val* var63 /* : String */;
5944 char* var64 /* : NativeString */;
5945 long var65 /* : Int */;
5946 val* var66 /* : String */;
5947 val* var67 /* : Array[Object] */;
5948 long var68 /* : Int */;
5949 val* var69 /* : NativeArray[Object] */;
5950 val* var70 /* : String */;
5951 static val* varonce71;
5952 val* var72 /* : String */;
5953 char* var73 /* : NativeString */;
5954 long var74 /* : Int */;
5955 val* var75 /* : String */;
5956 static val* varonce76;
5957 val* var77 /* : String */;
5958 char* var78 /* : NativeString */;
5959 long var79 /* : Int */;
5960 val* var80 /* : String */;
5961 val* var81 /* : Array[Object] */;
5962 long var82 /* : Int */;
5963 val* var83 /* : NativeArray[Object] */;
5964 val* var84 /* : String */;
5965 long var85 /* : Int */;
5966 static val* varonce86;
5967 val* var87 /* : String */;
5968 char* var88 /* : NativeString */;
5969 long var89 /* : Int */;
5970 val* var90 /* : String */;
5971 val* var91 /* : Array[Object] */;
5972 long var92 /* : Int */;
5973 val* var93 /* : NativeArray[Object] */;
5974 val* var94 /* : Object */;
5975 val* var95 /* : String */;
5976 static val* varonce96;
5977 val* var97 /* : String */;
5978 char* var98 /* : NativeString */;
5979 long var99 /* : Int */;
5980 val* var100 /* : String */;
5981 val* var101 /* : Range[Int] */;
5982 long var102 /* : Int */;
5983 long var103 /* : Int */;
5984 val* var104 /* : Discrete */;
5985 val* var105 /* : Discrete */;
5986 val* var106 /* : Iterator[nullable Object] */;
5987 short int var107 /* : Bool */;
5988 val* var108 /* : nullable Object */;
5989 long var_i /* var i: Int */;
5990 long var109 /* : Int */;
5991 val* var110 /* : nullable Object */;
5992 val* var_mpropdef /* var mpropdef: nullable MPropDef */;
5993 val* var111 /* : null */;
5994 short int var112 /* : Bool */;
5995 static val* varonce113;
5996 val* var114 /* : String */;
5997 char* var115 /* : NativeString */;
5998 long var116 /* : Int */;
5999 val* var117 /* : String */;
6000 short int var118 /* : Bool */;
6001 int cltype;
6002 int idtype;
6003 val* var119 /* : AbstractRuntimeFunction */;
6004 val* var_rf /* var rf: AbstractRuntimeFunction */;
6005 val* var120 /* : String */;
6006 static val* varonce121;
6007 val* var122 /* : String */;
6008 char* var123 /* : NativeString */;
6009 long var124 /* : Int */;
6010 val* var125 /* : String */;
6011 val* var126 /* : String */;
6012 static val* varonce127;
6013 val* var128 /* : String */;
6014 char* var129 /* : NativeString */;
6015 long var130 /* : Int */;
6016 val* var131 /* : String */;
6017 val* var132 /* : MModule */;
6018 static val* varonce133;
6019 val* var134 /* : String */;
6020 char* var135 /* : NativeString */;
6021 long var136 /* : Int */;
6022 val* var137 /* : String */;
6023 static val* varonce138;
6024 val* var139 /* : String */;
6025 char* var140 /* : NativeString */;
6026 long var141 /* : Int */;
6027 val* var142 /* : String */;
6028 static val* varonce143;
6029 val* var144 /* : String */;
6030 char* var145 /* : NativeString */;
6031 long var146 /* : Int */;
6032 val* var147 /* : String */;
6033 val* var148 /* : Array[Object] */;
6034 long var149 /* : Int */;
6035 val* var150 /* : NativeArray[Object] */;
6036 val* var151 /* : String */;
6037 static val* varonce152;
6038 val* var153 /* : String */;
6039 char* var154 /* : NativeString */;
6040 long var155 /* : Int */;
6041 val* var156 /* : String */;
6042 static val* varonce157;
6043 val* var158 /* : String */;
6044 char* var159 /* : NativeString */;
6045 long var160 /* : Int */;
6046 val* var161 /* : String */;
6047 val* var162 /* : String */;
6048 static val* varonce163;
6049 val* var164 /* : String */;
6050 char* var165 /* : NativeString */;
6051 long var166 /* : Int */;
6052 val* var167 /* : String */;
6053 short int var168 /* : Bool */;
6054 val* var169 /* : CodeWriter */;
6055 static val* varonce170;
6056 val* var171 /* : String */;
6057 char* var172 /* : NativeString */;
6058 long var173 /* : Int */;
6059 val* var174 /* : String */;
6060 static val* varonce175;
6061 val* var176 /* : String */;
6062 char* var177 /* : NativeString */;
6063 long var178 /* : Int */;
6064 val* var179 /* : String */;
6065 val* var180 /* : Array[Object] */;
6066 long var181 /* : Int */;
6067 val* var182 /* : NativeArray[Object] */;
6068 val* var183 /* : String */;
6069 val* var184 /* : CodeWriter */;
6070 static val* varonce185;
6071 val* var186 /* : String */;
6072 char* var187 /* : NativeString */;
6073 long var188 /* : Int */;
6074 val* var189 /* : String */;
6075 val* var190 /* : CodeWriter */;
6076 static val* varonce191;
6077 val* var192 /* : String */;
6078 char* var193 /* : NativeString */;
6079 long var194 /* : Int */;
6080 val* var195 /* : String */;
6081 val* var196 /* : CodeWriter */;
6082 val* var197 /* : String */;
6083 static val* varonce198;
6084 val* var199 /* : String */;
6085 char* var200 /* : NativeString */;
6086 long var201 /* : Int */;
6087 val* var202 /* : String */;
6088 val* var203 /* : Array[Object] */;
6089 long var204 /* : Int */;
6090 val* var205 /* : NativeArray[Object] */;
6091 val* var206 /* : String */;
6092 val* var207 /* : CodeWriter */;
6093 static val* varonce208;
6094 val* var209 /* : String */;
6095 char* var210 /* : NativeString */;
6096 long var211 /* : Int */;
6097 val* var212 /* : String */;
6098 val* var213 /* : nullable RapidTypeAnalysis */;
6099 val* var214 /* : HashSet[MClassType] */;
6100 short int var215 /* : Bool */;
6101 short int var216 /* : Bool */;
6102 val* var217 /* : CodeWriter */;
6103 static val* varonce218;
6104 val* var219 /* : String */;
6105 char* var220 /* : NativeString */;
6106 long var221 /* : Int */;
6107 val* var222 /* : String */;
6108 static val* varonce223;
6109 val* var224 /* : String */;
6110 char* var225 /* : NativeString */;
6111 long var226 /* : Int */;
6112 val* var227 /* : String */;
6113 val* var228 /* : String */;
6114 static val* varonce229;
6115 val* var230 /* : String */;
6116 char* var231 /* : NativeString */;
6117 long var232 /* : Int */;
6118 val* var233 /* : String */;
6119 val* var234 /* : Array[Object] */;
6120 long var235 /* : Int */;
6121 val* var236 /* : NativeArray[Object] */;
6122 val* var237 /* : String */;
6123 static val* varonce238;
6124 val* var239 /* : String */;
6125 char* var240 /* : NativeString */;
6126 long var241 /* : Int */;
6127 val* var242 /* : String */;
6128 static val* varonce243;
6129 val* var244 /* : String */;
6130 char* var245 /* : NativeString */;
6131 long var246 /* : Int */;
6132 val* var247 /* : String */;
6133 val* var248 /* : Array[Object] */;
6134 long var249 /* : Int */;
6135 val* var250 /* : NativeArray[Object] */;
6136 val* var251 /* : String */;
6137 static val* varonce252;
6138 val* var253 /* : String */;
6139 char* var254 /* : NativeString */;
6140 long var255 /* : Int */;
6141 val* var256 /* : String */;
6142 val* var257 /* : String */;
6143 static val* varonce258;
6144 val* var259 /* : String */;
6145 char* var260 /* : NativeString */;
6146 long var261 /* : Int */;
6147 val* var262 /* : String */;
6148 val* var263 /* : String */;
6149 static val* varonce264;
6150 val* var265 /* : String */;
6151 char* var266 /* : NativeString */;
6152 long var267 /* : Int */;
6153 val* var268 /* : String */;
6154 val* var269 /* : Array[Object] */;
6155 long var270 /* : Int */;
6156 val* var271 /* : NativeArray[Object] */;
6157 val* var272 /* : String */;
6158 static val* varonce273;
6159 val* var274 /* : String */;
6160 char* var275 /* : NativeString */;
6161 long var276 /* : Int */;
6162 val* var277 /* : String */;
6163 static val* varonce278;
6164 val* var279 /* : String */;
6165 char* var280 /* : NativeString */;
6166 long var281 /* : Int */;
6167 val* var282 /* : String */;
6168 static val* varonce283;
6169 val* var284 /* : String */;
6170 char* var285 /* : NativeString */;
6171 long var286 /* : Int */;
6172 val* var287 /* : String */;
6173 val* var288 /* : Array[Object] */;
6174 long var289 /* : Int */;
6175 val* var290 /* : NativeArray[Object] */;
6176 val* var291 /* : String */;
6177 static val* varonce292;
6178 val* var293 /* : String */;
6179 char* var294 /* : NativeString */;
6180 long var295 /* : Int */;
6181 val* var296 /* : String */;
6182 val* var297 /* : Array[Object] */;
6183 long var298 /* : Int */;
6184 val* var299 /* : NativeArray[Object] */;
6185 val* var300 /* : String */;
6186 static val* varonce301;
6187 val* var302 /* : String */;
6188 char* var303 /* : NativeString */;
6189 long var304 /* : Int */;
6190 val* var305 /* : String */;
6191 static val* varonce306;
6192 val* var307 /* : String */;
6193 char* var308 /* : NativeString */;
6194 long var309 /* : Int */;
6195 val* var310 /* : String */;
6196 val* var311 /* : Array[Object] */;
6197 long var312 /* : Int */;
6198 val* var313 /* : NativeArray[Object] */;
6199 val* var314 /* : String */;
6200 static val* varonce315;
6201 val* var316 /* : String */;
6202 char* var317 /* : NativeString */;
6203 long var318 /* : Int */;
6204 val* var319 /* : String */;
6205 val* var320 /* : Array[Object] */;
6206 long var321 /* : Int */;
6207 val* var322 /* : NativeArray[Object] */;
6208 val* var323 /* : String */;
6209 static val* varonce324;
6210 val* var325 /* : String */;
6211 char* var326 /* : NativeString */;
6212 long var327 /* : Int */;
6213 val* var328 /* : String */;
6214 static val* varonce329;
6215 val* var330 /* : String */;
6216 char* var331 /* : NativeString */;
6217 long var332 /* : Int */;
6218 val* var333 /* : String */;
6219 val* var334 /* : Array[Object] */;
6220 long var335 /* : Int */;
6221 val* var336 /* : NativeArray[Object] */;
6222 val* var337 /* : String */;
6223 static val* varonce338;
6224 val* var339 /* : String */;
6225 char* var340 /* : NativeString */;
6226 long var341 /* : Int */;
6227 val* var342 /* : String */;
6228 static val* varonce343;
6229 val* var344 /* : String */;
6230 char* var345 /* : NativeString */;
6231 long var346 /* : Int */;
6232 val* var347 /* : String */;
6233 static val* varonce348;
6234 val* var349 /* : String */;
6235 char* var350 /* : NativeString */;
6236 long var351 /* : Int */;
6237 val* var352 /* : String */;
6238 val* var353 /* : String */;
6239 static val* varonce354;
6240 val* var355 /* : String */;
6241 char* var356 /* : NativeString */;
6242 long var357 /* : Int */;
6243 val* var358 /* : String */;
6244 short int var359 /* : Bool */;
6245 val* var360 /* : CodeWriter */;
6246 static val* varonce361;
6247 val* var362 /* : String */;
6248 char* var363 /* : NativeString */;
6249 long var364 /* : Int */;
6250 val* var365 /* : String */;
6251 static val* varonce366;
6252 val* var367 /* : String */;
6253 char* var368 /* : NativeString */;
6254 long var369 /* : Int */;
6255 val* var370 /* : String */;
6256 val* var371 /* : Array[Object] */;
6257 long var372 /* : Int */;
6258 val* var373 /* : NativeArray[Object] */;
6259 val* var374 /* : String */;
6260 val* var375 /* : CodeWriter */;
6261 static val* varonce376;
6262 val* var377 /* : String */;
6263 char* var378 /* : NativeString */;
6264 long var379 /* : Int */;
6265 val* var380 /* : String */;
6266 val* var381 /* : CodeWriter */;
6267 static val* varonce382;
6268 val* var383 /* : String */;
6269 char* var384 /* : NativeString */;
6270 long var385 /* : Int */;
6271 val* var386 /* : String */;
6272 val* var387 /* : CodeWriter */;
6273 static val* varonce388;
6274 val* var389 /* : String */;
6275 char* var390 /* : NativeString */;
6276 long var391 /* : Int */;
6277 val* var392 /* : String */;
6278 val* var393 /* : CodeWriter */;
6279 static val* varonce394;
6280 val* var395 /* : String */;
6281 char* var396 /* : NativeString */;
6282 long var397 /* : Int */;
6283 val* var398 /* : String */;
6284 static val* varonce399;
6285 val* var400 /* : String */;
6286 char* var401 /* : NativeString */;
6287 long var402 /* : Int */;
6288 val* var403 /* : String */;
6289 val* var404 /* : Array[Object] */;
6290 long var405 /* : Int */;
6291 val* var406 /* : NativeArray[Object] */;
6292 val* var407 /* : String */;
6293 val* var408 /* : String */;
6294 static val* varonce409;
6295 val* var410 /* : String */;
6296 char* var411 /* : NativeString */;
6297 long var412 /* : Int */;
6298 val* var413 /* : String */;
6299 static val* varonce414;
6300 val* var415 /* : String */;
6301 char* var416 /* : NativeString */;
6302 long var417 /* : Int */;
6303 val* var418 /* : String */;
6304 val* var419 /* : Array[Object] */;
6305 long var420 /* : Int */;
6306 val* var421 /* : NativeArray[Object] */;
6307 val* var422 /* : String */;
6308 static val* varonce423;
6309 val* var424 /* : String */;
6310 char* var425 /* : NativeString */;
6311 long var426 /* : Int */;
6312 val* var427 /* : String */;
6313 static val* varonce428;
6314 val* var429 /* : String */;
6315 char* var430 /* : NativeString */;
6316 long var431 /* : Int */;
6317 val* var432 /* : String */;
6318 val* var433 /* : Array[Object] */;
6319 long var434 /* : Int */;
6320 val* var435 /* : NativeArray[Object] */;
6321 val* var436 /* : String */;
6322 val* var437 /* : String */;
6323 static val* varonce438;
6324 val* var439 /* : String */;
6325 char* var440 /* : NativeString */;
6326 long var441 /* : Int */;
6327 val* var442 /* : String */;
6328 static val* varonce443;
6329 val* var444 /* : String */;
6330 char* var445 /* : NativeString */;
6331 long var446 /* : Int */;
6332 val* var447 /* : String */;
6333 val* var448 /* : Array[Object] */;
6334 long var449 /* : Int */;
6335 val* var450 /* : NativeArray[Object] */;
6336 val* var451 /* : String */;
6337 static val* varonce452;
6338 val* var453 /* : String */;
6339 char* var454 /* : NativeString */;
6340 long var455 /* : Int */;
6341 val* var456 /* : String */;
6342 val* var457 /* : RuntimeVariable */;
6343 val* var_res /* var res: RuntimeVariable */;
6344 short int var458 /* : Bool */;
6345 val* var459 /* : Array[MType] */;
6346 val* var460 /* : nullable Object */;
6347 val* var_mtype_elt /* var mtype_elt: MType */;
6348 static val* varonce461;
6349 val* var462 /* : String */;
6350 char* var463 /* : NativeString */;
6351 long var464 /* : Int */;
6352 val* var465 /* : String */;
6353 static val* varonce466;
6354 val* var467 /* : String */;
6355 char* var468 /* : NativeString */;
6356 long var469 /* : Int */;
6357 val* var470 /* : String */;
6358 val* var471 /* : String */;
6359 static val* varonce472;
6360 val* var473 /* : String */;
6361 char* var474 /* : NativeString */;
6362 long var475 /* : Int */;
6363 val* var476 /* : String */;
6364 val* var477 /* : Array[Object] */;
6365 long var478 /* : Int */;
6366 val* var479 /* : NativeArray[Object] */;
6367 val* var480 /* : String */;
6368 static val* varonce481;
6369 val* var482 /* : String */;
6370 char* var483 /* : NativeString */;
6371 long var484 /* : Int */;
6372 val* var485 /* : String */;
6373 val* var486 /* : Array[Object] */;
6374 long var487 /* : Int */;
6375 val* var488 /* : NativeArray[Object] */;
6376 val* var489 /* : String */;
6377 static val* varonce490;
6378 val* var491 /* : String */;
6379 char* var492 /* : NativeString */;
6380 long var493 /* : Int */;
6381 val* var494 /* : String */;
6382 static val* varonce495;
6383 val* var496 /* : String */;
6384 char* var497 /* : NativeString */;
6385 long var498 /* : Int */;
6386 val* var499 /* : String */;
6387 val* var500 /* : Array[Object] */;
6388 long var501 /* : Int */;
6389 val* var502 /* : NativeArray[Object] */;
6390 val* var503 /* : String */;
6391 static val* varonce504;
6392 val* var505 /* : String */;
6393 char* var506 /* : NativeString */;
6394 long var507 /* : Int */;
6395 val* var508 /* : String */;
6396 static val* varonce509;
6397 val* var510 /* : String */;
6398 char* var511 /* : NativeString */;
6399 long var512 /* : Int */;
6400 val* var513 /* : String */;
6401 val* var514 /* : Array[Object] */;
6402 long var515 /* : Int */;
6403 val* var516 /* : NativeArray[Object] */;
6404 val* var517 /* : String */;
6405 static val* varonce518;
6406 val* var519 /* : String */;
6407 char* var520 /* : NativeString */;
6408 long var521 /* : Int */;
6409 val* var522 /* : String */;
6410 static val* varonce523;
6411 val* var524 /* : String */;
6412 char* var525 /* : NativeString */;
6413 long var526 /* : Int */;
6414 val* var527 /* : String */;
6415 val* var528 /* : Array[Object] */;
6416 long var529 /* : Int */;
6417 val* var530 /* : NativeArray[Object] */;
6418 val* var531 /* : String */;
6419 static val* varonce532;
6420 val* var533 /* : String */;
6421 char* var534 /* : NativeString */;
6422 long var535 /* : Int */;
6423 val* var536 /* : String */;
6424 static val* varonce537;
6425 val* var538 /* : String */;
6426 char* var539 /* : NativeString */;
6427 long var540 /* : Int */;
6428 val* var541 /* : String */;
6429 val* var542 /* : Array[Object] */;
6430 long var543 /* : Int */;
6431 val* var544 /* : NativeArray[Object] */;
6432 val* var545 /* : String */;
6433 val* var546 /* : String */;
6434 static val* varonce547;
6435 val* var548 /* : String */;
6436 char* var549 /* : NativeString */;
6437 long var550 /* : Int */;
6438 val* var551 /* : String */;
6439 static val* varonce552;
6440 val* var553 /* : String */;
6441 char* var554 /* : NativeString */;
6442 long var555 /* : Int */;
6443 val* var556 /* : String */;
6444 val* var557 /* : Array[Object] */;
6445 long var558 /* : Int */;
6446 val* var559 /* : NativeArray[Object] */;
6447 val* var560 /* : String */;
6448 static val* varonce561;
6449 val* var562 /* : String */;
6450 char* var563 /* : NativeString */;
6451 long var564 /* : Int */;
6452 val* var565 /* : String */;
6453 static val* varonce566;
6454 val* var567 /* : String */;
6455 char* var568 /* : NativeString */;
6456 long var569 /* : Int */;
6457 val* var570 /* : String */;
6458 val* var571 /* : Array[Object] */;
6459 long var572 /* : Int */;
6460 val* var573 /* : NativeArray[Object] */;
6461 val* var574 /* : String */;
6462 val* var575 /* : String */;
6463 static val* varonce576;
6464 val* var577 /* : String */;
6465 char* var578 /* : NativeString */;
6466 long var579 /* : Int */;
6467 val* var580 /* : String */;
6468 static val* varonce581;
6469 val* var582 /* : String */;
6470 char* var583 /* : NativeString */;
6471 long var584 /* : Int */;
6472 val* var585 /* : String */;
6473 val* var586 /* : Array[Object] */;
6474 long var587 /* : Int */;
6475 val* var588 /* : NativeArray[Object] */;
6476 val* var589 /* : String */;
6477 static val* varonce590;
6478 val* var591 /* : String */;
6479 char* var592 /* : NativeString */;
6480 long var593 /* : Int */;
6481 val* var594 /* : String */;
6482 val* var595 /* : Array[Object] */;
6483 long var596 /* : Int */;
6484 val* var597 /* : NativeArray[Object] */;
6485 val* var598 /* : String */;
6486 static val* varonce599;
6487 val* var600 /* : String */;
6488 char* var601 /* : NativeString */;
6489 long var602 /* : Int */;
6490 val* var603 /* : String */;
6491 val* var604 /* : RuntimeVariable */;
6492 val* var_res605 /* var res: RuntimeVariable */;
6493 short int var606 /* : Bool */;
6494 static val* varonce607;
6495 val* var608 /* : String */;
6496 char* var609 /* : NativeString */;
6497 long var610 /* : Int */;
6498 val* var611 /* : String */;
6499 long var612 /* : Int */;
6500 static val* varonce613;
6501 val* var614 /* : String */;
6502 char* var615 /* : NativeString */;
6503 long var616 /* : Int */;
6504 val* var617 /* : String */;
6505 val* var618 /* : Array[Object] */;
6506 long var619 /* : Int */;
6507 val* var620 /* : NativeArray[Object] */;
6508 val* var621 /* : Object */;
6509 val* var622 /* : String */;
6510 static val* varonce623;
6511 val* var624 /* : String */;
6512 char* var625 /* : NativeString */;
6513 long var626 /* : Int */;
6514 val* var627 /* : String */;
6515 val* var628 /* : Array[Object] */;
6516 long var629 /* : Int */;
6517 val* var630 /* : NativeArray[Object] */;
6518 val* var631 /* : String */;
6519 static val* varonce632;
6520 val* var633 /* : String */;
6521 char* var634 /* : NativeString */;
6522 long var635 /* : Int */;
6523 val* var636 /* : String */;
6524 static val* varonce637;
6525 val* var638 /* : String */;
6526 char* var639 /* : NativeString */;
6527 long var640 /* : Int */;
6528 val* var641 /* : String */;
6529 val* var642 /* : Array[Object] */;
6530 long var643 /* : Int */;
6531 val* var644 /* : NativeArray[Object] */;
6532 val* var645 /* : String */;
6533 static val* varonce646;
6534 val* var647 /* : String */;
6535 char* var648 /* : NativeString */;
6536 long var649 /* : Int */;
6537 val* var650 /* : String */;
6538 static val* varonce651;
6539 val* var652 /* : String */;
6540 char* var653 /* : NativeString */;
6541 long var654 /* : Int */;
6542 val* var655 /* : String */;
6543 val* var656 /* : Array[Object] */;
6544 long var657 /* : Int */;
6545 val* var658 /* : NativeArray[Object] */;
6546 val* var659 /* : String */;
6547 static val* varonce660;
6548 val* var661 /* : String */;
6549 char* var662 /* : NativeString */;
6550 long var663 /* : Int */;
6551 val* var664 /* : String */;
6552 static val* varonce665;
6553 val* var666 /* : String */;
6554 char* var667 /* : NativeString */;
6555 long var668 /* : Int */;
6556 val* var669 /* : String */;
6557 val* var670 /* : Array[Object] */;
6558 long var671 /* : Int */;
6559 val* var672 /* : NativeArray[Object] */;
6560 val* var673 /* : String */;
6561 static val* varonce674;
6562 val* var675 /* : String */;
6563 char* var676 /* : NativeString */;
6564 long var677 /* : Int */;
6565 val* var678 /* : String */;
6566 var_mclass = p0;
6567 var = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro]))(var_mclass) /* intro on <var_mclass:MClass>*/;
6568 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MClassDef__bound_mtype]))(var) /* bound_mtype on <var:MClassDef>*/;
6569 var_mtype = var1;
6570 var2 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_mclass) /* c_name on <var_mclass:MClass>*/;
6571 var_c_name = var2;
6572 var3 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_tables]))(self) /* method_tables on <self:SeparateCompiler>*/;
6573 var4 = ((val* (*)(val*, val*))(var3->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var3, var_mclass) /* [] on <var3:Map[MClass, Array[nullable MPropDef]]>*/;
6574 var_vft = var4;
6575 var5 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_tables]))(self) /* attr_tables on <self:SeparateCompiler>*/;
6576 var6 = ((val* (*)(val*, val*))(var5->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var5, var_mclass) /* [] on <var5:Map[MClass, Array[nullable MPropDef]]>*/;
6577 var_attrs = var6;
6578 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:SeparateCompiler>*/;
6579 var_v = var7;
6580 var11 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
6581 var12 = NULL;
6582 if (var11 == NULL) {
6583 var13 = 0; /* is null */
6584 } else {
6585 var13 = 1; /* arg is null and recv is not */
6586 }
6587 var_ = var13;
6588 if (var13){
6589 var14 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
6590 if (var14 == NULL) {
6591 fprintf(stderr, "Runtime error: %s", "Reciever is null");
6592 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 731);
6593 show_backtrace(1);
6594 } else {
6595 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_classes]))(var14) /* live_classes on <var14:nullable RapidTypeAnalysis>*/;
6596 }
6597 var16 = ((short int (*)(val*, val*))(var15->class->vft[COLOR_abstract_collection__Collection__has]))(var15, var_mclass) /* has on <var15:HashSet[MClass]>*/;
6598 var17 = !var16;
6599 var10 = var17;
6600 } else {
6601 var10 = var_;
6602 }
6603 var_18 = var10;
6604 if (var10){
6605 var19 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
6606 if (varonce) {
6607 var20 = varonce;
6608 } else {
6609 var21 = "val*";
6610 var22 = 4;
6611 var23 = string__NativeString__to_s_with_length(var21, var22);
6612 var20 = var23;
6613 varonce = var20;
6614 }
6615 var24 = ((short int (*)(val*, val*))(var19->class->vft[COLOR_kernel__Object___61d_61d]))(var19, var20) /* == on <var19:String>*/;
6616 var9 = var24;
6617 } else {
6618 var9 = var_18;
6619 }
6620 var_25 = var9;
6621 if (var9){
6622 var26 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__name]))(var_mclass) /* name on <var_mclass:MClass>*/;
6623 if (varonce27) {
6624 var28 = varonce27;
6625 } else {
6626 var29 = "NativeArray";
6627 var30 = 11;
6628 var31 = string__NativeString__to_s_with_length(var29, var30);
6629 var28 = var31;
6630 varonce27 = var28;
6631 }
6632 var32 = ((short int (*)(val*, val*))(var26->class->vft[COLOR_kernel__Object___33d_61d]))(var26, var28) /* != on <var26:String>*/;
6633 var8 = var32;
6634 } else {
6635 var8 = var_25;
6636 }
6637 var_is_dead = var8;
6638 if (varonce33) {
6639 var34 = varonce33;
6640 } else {
6641 var35 = "/* runtime class ";
6642 var36 = 17;
6643 var37 = string__NativeString__to_s_with_length(var35, var36);
6644 var34 = var37;
6645 varonce33 = var34;
6646 }
6647 if (varonce38) {
6648 var39 = varonce38;
6649 } else {
6650 var40 = " */";
6651 var41 = 3;
6652 var42 = string__NativeString__to_s_with_length(var40, var41);
6653 var39 = var42;
6654 varonce38 = var39;
6655 }
6656 var43 = NEW_array__Array(&type_array__Arraykernel__Object);
6657 { /* var43 = array_instance Array[Object] */
6658 var44 = 3;
6659 var45 = NEW_array__NativeArray(var44, &type_array__NativeArraykernel__Object);
6660 ((struct instance_array__NativeArray*)var45)->values[0] = (val*) var34;
6661 ((struct instance_array__NativeArray*)var45)->values[1] = (val*) var_c_name;
6662 ((struct instance_array__NativeArray*)var45)->values[2] = (val*) var39;
6663 ((void (*)(val*, val*, long))(var43->class->vft[COLOR_array__Array__with_native]))(var43, var45, var44) /* with_native on <var43:Array[Object]>*/;
6664 }
6665 var46 = ((val* (*)(val*))(var43->class->vft[COLOR_string__Object__to_s]))(var43) /* to_s on <var43:Array[Object]>*/;
6666 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var46) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6667 var47 = !var_is_dead;
6668 if (var47){
6669 if (varonce48) {
6670 var49 = varonce48;
6671 } else {
6672 var50 = "class_";
6673 var51 = 6;
6674 var52 = string__NativeString__to_s_with_length(var50, var51);
6675 var49 = var52;
6676 varonce48 = var49;
6677 }
6678 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
6679 { /* var53 = array_instance Array[Object] */
6680 var54 = 2;
6681 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
6682 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var49;
6683 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var_c_name;
6684 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
6685 }
6686 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
6687 if (varonce57) {
6688 var58 = varonce57;
6689 } else {
6690 var59 = "extern const struct class class_";
6691 var60 = 32;
6692 var61 = string__NativeString__to_s_with_length(var59, var60);
6693 var58 = var61;
6694 varonce57 = var58;
6695 }
6696 if (varonce62) {
6697 var63 = varonce62;
6698 } else {
6699 var64 = ";";
6700 var65 = 1;
6701 var66 = string__NativeString__to_s_with_length(var64, var65);
6702 var63 = var66;
6703 varonce62 = var63;
6704 }
6705 var67 = NEW_array__Array(&type_array__Arraykernel__Object);
6706 { /* var67 = array_instance Array[Object] */
6707 var68 = 3;
6708 var69 = NEW_array__NativeArray(var68, &type_array__NativeArraykernel__Object);
6709 ((struct instance_array__NativeArray*)var69)->values[0] = (val*) var58;
6710 ((struct instance_array__NativeArray*)var69)->values[1] = (val*) var_c_name;
6711 ((struct instance_array__NativeArray*)var69)->values[2] = (val*) var63;
6712 ((void (*)(val*, val*, long))(var67->class->vft[COLOR_array__Array__with_native]))(var67, var69, var68) /* with_native on <var67:Array[Object]>*/;
6713 }
6714 var70 = ((val* (*)(val*))(var67->class->vft[COLOR_string__Object__to_s]))(var67) /* to_s on <var67:Array[Object]>*/;
6715 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var56, var70) /* provide_declaration on <self:SeparateCompiler>*/;
6716 if (varonce71) {
6717 var72 = varonce71;
6718 } else {
6719 var73 = "const struct class class_";
6720 var74 = 25;
6721 var75 = string__NativeString__to_s_with_length(var73, var74);
6722 var72 = var75;
6723 varonce71 = var72;
6724 }
6725 if (varonce76) {
6726 var77 = varonce76;
6727 } else {
6728 var78 = " = {";
6729 var79 = 4;
6730 var80 = string__NativeString__to_s_with_length(var78, var79);
6731 var77 = var80;
6732 varonce76 = var77;
6733 }
6734 var81 = NEW_array__Array(&type_array__Arraykernel__Object);
6735 { /* var81 = array_instance Array[Object] */
6736 var82 = 3;
6737 var83 = NEW_array__NativeArray(var82, &type_array__NativeArraykernel__Object);
6738 ((struct instance_array__NativeArray*)var83)->values[0] = (val*) var72;
6739 ((struct instance_array__NativeArray*)var83)->values[1] = (val*) var_c_name;
6740 ((struct instance_array__NativeArray*)var83)->values[2] = (val*) var77;
6741 ((void (*)(val*, val*, long))(var81->class->vft[COLOR_array__Array__with_native]))(var81, var83, var82) /* with_native on <var81:Array[Object]>*/;
6742 }
6743 var84 = ((val* (*)(val*))(var81->class->vft[COLOR_string__Object__to_s]))(var81) /* to_s on <var81:Array[Object]>*/;
6744 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var84) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6745 var85 = ((long (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kind_of]))(self, var_mclass) /* box_kind_of on <self:SeparateCompiler>*/;
6746 if (varonce86) {
6747 var87 = varonce86;
6748 } else {
6749 var88 = ", /* box_kind */";
6750 var89 = 16;
6751 var90 = string__NativeString__to_s_with_length(var88, var89);
6752 var87 = var90;
6753 varonce86 = var87;
6754 }
6755 var91 = NEW_array__Array(&type_array__Arraykernel__Object);
6756 { /* var91 = array_instance Array[Object] */
6757 var92 = 2;
6758 var93 = NEW_array__NativeArray(var92, &type_array__NativeArraykernel__Object);
6759 var94 = BOX_kernel__Int(var85); /* autobox from Int to Object */
6760 ((struct instance_array__NativeArray*)var93)->values[0] = (val*) var94;
6761 ((struct instance_array__NativeArray*)var93)->values[1] = (val*) var87;
6762 ((void (*)(val*, val*, long))(var91->class->vft[COLOR_array__Array__with_native]))(var91, var93, var92) /* with_native on <var91:Array[Object]>*/;
6763 }
6764 var95 = ((val* (*)(val*))(var91->class->vft[COLOR_string__Object__to_s]))(var91) /* to_s on <var91:Array[Object]>*/;
6765 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var95) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6766 if (varonce96) {
6767 var97 = varonce96;
6768 } else {
6769 var98 = "{";
6770 var99 = 1;
6771 var100 = string__NativeString__to_s_with_length(var98, var99);
6772 var97 = var100;
6773 varonce96 = var97;
6774 }
6775 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var97) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6776 var101 = NEW_range__Range(&type_range__Rangekernel__Int);
6777 var102 = 0;
6778 var103 = ((long (*)(val*))(var_vft->class->vft[COLOR_abstract_collection__Collection__length]))(var_vft) /* length on <var_vft:Array[nullable MPropDef]>*/;
6779 var104 = BOX_kernel__Int(var102); /* autobox from Int to Discrete */
6780 var105 = BOX_kernel__Int(var103); /* autobox from Int to Discrete */
6781 ((void (*)(val*, val*, val*))(var101->class->vft[COLOR_range__Range__without_last]))(var101, var104, var105) /* without_last on <var101:Range[Int]>*/;
6782 var106 = ((val* (*)(val*))(var101->class->vft[COLOR_abstract_collection__Collection__iterator]))(var101) /* iterator on <var101:Range[Int]>*/;
6783 for(;;) {
6784 var107 = ((short int (*)(val*))(var106->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var106) /* is_ok on <var106:Iterator[nullable Object]>*/;
6785 if(!var107) break;
6786 var108 = ((val* (*)(val*))(var106->class->vft[COLOR_abstract_collection__Iterator__item]))(var106) /* item on <var106:Iterator[nullable Object]>*/;
6787 var109 = ((struct instance_kernel__Int*)var108)->value; /* autounbox from nullable Object to Int */;
6788 var_i = var109;
6789 var110 = ((val* (*)(val*, long))(var_vft->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_vft, var_i) /* [] on <var_vft:Array[nullable MPropDef]>*/;
6790 var_mpropdef = var110;
6791 var111 = NULL;
6792 if (var_mpropdef == NULL) {
6793 var112 = 1; /* is null */
6794 } else {
6795 var112 = 0; /* arg is null but recv is not */
6796 }
6797 if (var112){
6798 if (varonce113) {
6799 var114 = varonce113;
6800 } else {
6801 var115 = "NULL, /* empty */";
6802 var116 = 17;
6803 var117 = string__NativeString__to_s_with_length(var115, var116);
6804 var114 = var117;
6805 varonce113 = var114;
6806 }
6807 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var114) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6808 } else {
6809 /* <var_mpropdef:nullable MPropDef(MPropDef)> isa MMethodDef */
6810 cltype = type_model__MMethodDef.color;
6811 idtype = type_model__MMethodDef.id;
6812 if(cltype >= var_mpropdef->type->table_size) {
6813 var118 = 0;
6814 } else {
6815 var118 = var_mpropdef->type->type_table[cltype] == idtype;
6816 }
6817 if (!var118) {
6818 fprintf(stderr, "Runtime error: %s", "Assert failed");
6819 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 746);
6820 show_backtrace(1);
6821 }
6822 var119 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function]))(var_mpropdef) /* virtual_runtime_function on <var_mpropdef:nullable MPropDef(MMethodDef)>*/;
6823 var_rf = var119;
6824 var120 = ((val* (*)(val*))(var_rf->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(var_rf) /* c_name on <var_rf:AbstractRuntimeFunction>*/;
6825 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var120) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
6826 if (varonce121) {
6827 var122 = varonce121;
6828 } else {
6829 var123 = "(nitmethod_t)";
6830 var124 = 13;
6831 var125 = string__NativeString__to_s_with_length(var123, var124);
6832 var122 = var125;
6833 varonce121 = var122;
6834 }
6835 var126 = ((val* (*)(val*))(var_rf->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(var_rf) /* c_name on <var_rf:AbstractRuntimeFunction>*/;
6836 if (varonce127) {
6837 var128 = varonce127;
6838 } else {
6839 var129 = ", /* pointer to ";
6840 var130 = 16;
6841 var131 = string__NativeString__to_s_with_length(var129, var130);
6842 var128 = var131;
6843 varonce127 = var128;
6844 }
6845 var132 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on <var_mclass:MClass>*/;
6846 if (varonce133) {
6847 var134 = varonce133;
6848 } else {
6849 var135 = ":";
6850 var136 = 1;
6851 var137 = string__NativeString__to_s_with_length(var135, var136);
6852 var134 = var137;
6853 varonce133 = var134;
6854 }
6855 if (varonce138) {
6856 var139 = varonce138;
6857 } else {
6858 var140 = ":";
6859 var141 = 1;
6860 var142 = string__NativeString__to_s_with_length(var140, var141);
6861 var139 = var142;
6862 varonce138 = var139;
6863 }
6864 if (varonce143) {
6865 var144 = varonce143;
6866 } else {
6867 var145 = " */";
6868 var146 = 3;
6869 var147 = string__NativeString__to_s_with_length(var145, var146);
6870 var144 = var147;
6871 varonce143 = var144;
6872 }
6873 var148 = NEW_array__Array(&type_array__Arraykernel__Object);
6874 { /* var148 = array_instance Array[Object] */
6875 var149 = 9;
6876 var150 = NEW_array__NativeArray(var149, &type_array__NativeArraykernel__Object);
6877 ((struct instance_array__NativeArray*)var150)->values[0] = (val*) var122;
6878 ((struct instance_array__NativeArray*)var150)->values[1] = (val*) var126;
6879 ((struct instance_array__NativeArray*)var150)->values[2] = (val*) var128;
6880 ((struct instance_array__NativeArray*)var150)->values[3] = (val*) var132;
6881 ((struct instance_array__NativeArray*)var150)->values[4] = (val*) var134;
6882 ((struct instance_array__NativeArray*)var150)->values[5] = (val*) var_mclass;
6883 ((struct instance_array__NativeArray*)var150)->values[6] = (val*) var139;
6884 ((struct instance_array__NativeArray*)var150)->values[7] = (val*) var_mpropdef;
6885 ((struct instance_array__NativeArray*)var150)->values[8] = (val*) var144;
6886 ((void (*)(val*, val*, long))(var148->class->vft[COLOR_array__Array__with_native]))(var148, var150, var149) /* with_native on <var148:Array[Object]>*/;
6887 }
6888 var151 = ((val* (*)(val*))(var148->class->vft[COLOR_string__Object__to_s]))(var148) /* to_s on <var148:Array[Object]>*/;
6889 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var151) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6890 }
6891 CONTINUE_label: (void)0;
6892 ((void (*)(val*))(var106->class->vft[COLOR_abstract_collection__Iterator__next]))(var106) /* next on <var106:Iterator[nullable Object]>*/;
6893 }
6894 BREAK_label: (void)0;
6895 if (varonce152) {
6896 var153 = varonce152;
6897 } else {
6898 var154 = "}";
6899 var155 = 1;
6900 var156 = string__NativeString__to_s_with_length(var154, var155);
6901 var153 = var156;
6902 varonce152 = var153;
6903 }
6904 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var153) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6905 if (varonce157) {
6906 var158 = varonce157;
6907 } else {
6908 var159 = "};";
6909 var160 = 2;
6910 var161 = string__NativeString__to_s_with_length(var159, var160);
6911 var158 = var161;
6912 varonce157 = var158;
6913 }
6914 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var158) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6915 } else {
6916 }
6917 var162 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
6918 if (varonce163) {
6919 var164 = varonce163;
6920 } else {
6921 var165 = "val*";
6922 var166 = 4;
6923 var167 = string__NativeString__to_s_with_length(var165, var166);
6924 var164 = var167;
6925 varonce163 = var164;
6926 }
6927 var168 = ((short int (*)(val*, val*))(var162->class->vft[COLOR_kernel__Object___33d_61d]))(var162, var164) /* != on <var162:String>*/;
6928 if (var168){
6929 var169 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
6930 if (varonce170) {
6931 var171 = varonce170;
6932 } else {
6933 var172 = "struct instance_";
6934 var173 = 16;
6935 var174 = string__NativeString__to_s_with_length(var172, var173);
6936 var171 = var174;
6937 varonce170 = var171;
6938 }
6939 if (varonce175) {
6940 var176 = varonce175;
6941 } else {
6942 var177 = " {";
6943 var178 = 2;
6944 var179 = string__NativeString__to_s_with_length(var177, var178);
6945 var176 = var179;
6946 varonce175 = var176;
6947 }
6948 var180 = NEW_array__Array(&type_array__Arraykernel__Object);
6949 { /* var180 = array_instance Array[Object] */
6950 var181 = 3;
6951 var182 = NEW_array__NativeArray(var181, &type_array__NativeArraykernel__Object);
6952 ((struct instance_array__NativeArray*)var182)->values[0] = (val*) var171;
6953 ((struct instance_array__NativeArray*)var182)->values[1] = (val*) var_c_name;
6954 ((struct instance_array__NativeArray*)var182)->values[2] = (val*) var176;
6955 ((void (*)(val*, val*, long))(var180->class->vft[COLOR_array__Array__with_native]))(var180, var182, var181) /* with_native on <var180:Array[Object]>*/;
6956 }
6957 var183 = ((val* (*)(val*))(var180->class->vft[COLOR_string__Object__to_s]))(var180) /* to_s on <var180:Array[Object]>*/;
6958 ((void (*)(val*, val*))(var169->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var169, var183) /* add_decl on <var169:CodeWriter>*/;
6959 var184 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
6960 if (varonce185) {
6961 var186 = varonce185;
6962 } else {
6963 var187 = "const struct type *type;";
6964 var188 = 24;
6965 var189 = string__NativeString__to_s_with_length(var187, var188);
6966 var186 = var189;
6967 varonce185 = var186;
6968 }
6969 ((void (*)(val*, val*))(var184->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var184, var186) /* add_decl on <var184:CodeWriter>*/;
6970 var190 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
6971 if (varonce191) {
6972 var192 = varonce191;
6973 } else {
6974 var193 = "const struct class *class;";
6975 var194 = 26;
6976 var195 = string__NativeString__to_s_with_length(var193, var194);
6977 var192 = var195;
6978 varonce191 = var192;
6979 }
6980 ((void (*)(val*, val*))(var190->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var190, var192) /* add_decl on <var190:CodeWriter>*/;
6981 var196 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
6982 var197 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
6983 if (varonce198) {
6984 var199 = varonce198;
6985 } else {
6986 var200 = " value;";
6987 var201 = 7;
6988 var202 = string__NativeString__to_s_with_length(var200, var201);
6989 var199 = var202;
6990 varonce198 = var199;
6991 }
6992 var203 = NEW_array__Array(&type_array__Arraykernel__Object);
6993 { /* var203 = array_instance Array[Object] */
6994 var204 = 2;
6995 var205 = NEW_array__NativeArray(var204, &type_array__NativeArraykernel__Object);
6996 ((struct instance_array__NativeArray*)var205)->values[0] = (val*) var197;
6997 ((struct instance_array__NativeArray*)var205)->values[1] = (val*) var199;
6998 ((void (*)(val*, val*, long))(var203->class->vft[COLOR_array__Array__with_native]))(var203, var205, var204) /* with_native on <var203:Array[Object]>*/;
6999 }
7000 var206 = ((val* (*)(val*))(var203->class->vft[COLOR_string__Object__to_s]))(var203) /* to_s on <var203:Array[Object]>*/;
7001 ((void (*)(val*, val*))(var196->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var196, var206) /* add_decl on <var196:CodeWriter>*/;
7002 var207 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7003 if (varonce208) {
7004 var209 = varonce208;
7005 } else {
7006 var210 = "};";
7007 var211 = 2;
7008 var212 = string__NativeString__to_s_with_length(var210, var211);
7009 var209 = var212;
7010 varonce208 = var209;
7011 }
7012 ((void (*)(val*, val*))(var207->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var207, var209) /* add_decl on <var207:CodeWriter>*/;
7013 var213 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
7014 if (var213 == NULL) {
7015 fprintf(stderr, "Runtime error: %s", "Reciever is null");
7016 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 764);
7017 show_backtrace(1);
7018 } else {
7019 var214 = ((val* (*)(val*))(var213->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var213) /* live_types on <var213:nullable RapidTypeAnalysis>*/;
7020 }
7021 var215 = ((short int (*)(val*, val*))(var214->class->vft[COLOR_abstract_collection__Collection__has]))(var214, var_mtype) /* has on <var214:HashSet[MClassType]>*/;
7022 var216 = !var215;
7023 if (var216){
7024 goto RET_LABEL;
7025 } else {
7026 }
7027 var217 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7028 if (varonce218) {
7029 var219 = varonce218;
7030 } else {
7031 var220 = "val* BOX_";
7032 var221 = 9;
7033 var222 = string__NativeString__to_s_with_length(var220, var221);
7034 var219 = var222;
7035 varonce218 = var219;
7036 }
7037 if (varonce223) {
7038 var224 = varonce223;
7039 } else {
7040 var225 = "(";
7041 var226 = 1;
7042 var227 = string__NativeString__to_s_with_length(var225, var226);
7043 var224 = var227;
7044 varonce223 = var224;
7045 }
7046 var228 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7047 if (varonce229) {
7048 var230 = varonce229;
7049 } else {
7050 var231 = ");";
7051 var232 = 2;
7052 var233 = string__NativeString__to_s_with_length(var231, var232);
7053 var230 = var233;
7054 varonce229 = var230;
7055 }
7056 var234 = NEW_array__Array(&type_array__Arraykernel__Object);
7057 { /* var234 = array_instance Array[Object] */
7058 var235 = 5;
7059 var236 = NEW_array__NativeArray(var235, &type_array__NativeArraykernel__Object);
7060 ((struct instance_array__NativeArray*)var236)->values[0] = (val*) var219;
7061 ((struct instance_array__NativeArray*)var236)->values[1] = (val*) var_c_name;
7062 ((struct instance_array__NativeArray*)var236)->values[2] = (val*) var224;
7063 ((struct instance_array__NativeArray*)var236)->values[3] = (val*) var228;
7064 ((struct instance_array__NativeArray*)var236)->values[4] = (val*) var230;
7065 ((void (*)(val*, val*, long))(var234->class->vft[COLOR_array__Array__with_native]))(var234, var236, var235) /* with_native on <var234:Array[Object]>*/;
7066 }
7067 var237 = ((val* (*)(val*))(var234->class->vft[COLOR_string__Object__to_s]))(var234) /* to_s on <var234:Array[Object]>*/;
7068 ((void (*)(val*, val*))(var217->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var217, var237) /* add_decl on <var217:CodeWriter>*/;
7069 if (varonce238) {
7070 var239 = varonce238;
7071 } else {
7072 var240 = "/* allocate ";
7073 var241 = 12;
7074 var242 = string__NativeString__to_s_with_length(var240, var241);
7075 var239 = var242;
7076 varonce238 = var239;
7077 }
7078 if (varonce243) {
7079 var244 = varonce243;
7080 } else {
7081 var245 = " */";
7082 var246 = 3;
7083 var247 = string__NativeString__to_s_with_length(var245, var246);
7084 var244 = var247;
7085 varonce243 = var244;
7086 }
7087 var248 = NEW_array__Array(&type_array__Arraykernel__Object);
7088 { /* var248 = array_instance Array[Object] */
7089 var249 = 3;
7090 var250 = NEW_array__NativeArray(var249, &type_array__NativeArraykernel__Object);
7091 ((struct instance_array__NativeArray*)var250)->values[0] = (val*) var239;
7092 ((struct instance_array__NativeArray*)var250)->values[1] = (val*) var_mtype;
7093 ((struct instance_array__NativeArray*)var250)->values[2] = (val*) var244;
7094 ((void (*)(val*, val*, long))(var248->class->vft[COLOR_array__Array__with_native]))(var248, var250, var249) /* with_native on <var248:Array[Object]>*/;
7095 }
7096 var251 = ((val* (*)(val*))(var248->class->vft[COLOR_string__Object__to_s]))(var248) /* to_s on <var248:Array[Object]>*/;
7097 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var251) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7098 if (varonce252) {
7099 var253 = varonce252;
7100 } else {
7101 var254 = "val* BOX_";
7102 var255 = 9;
7103 var256 = string__NativeString__to_s_with_length(var254, var255);
7104 var253 = var256;
7105 varonce252 = var253;
7106 }
7107 var257 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
7108 if (varonce258) {
7109 var259 = varonce258;
7110 } else {
7111 var260 = "(";
7112 var261 = 1;
7113 var262 = string__NativeString__to_s_with_length(var260, var261);
7114 var259 = var262;
7115 varonce258 = var259;
7116 }
7117 var263 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7118 if (varonce264) {
7119 var265 = varonce264;
7120 } else {
7121 var266 = " value) {";
7122 var267 = 9;
7123 var268 = string__NativeString__to_s_with_length(var266, var267);
7124 var265 = var268;
7125 varonce264 = var265;
7126 }
7127 var269 = NEW_array__Array(&type_array__Arraykernel__Object);
7128 { /* var269 = array_instance Array[Object] */
7129 var270 = 5;
7130 var271 = NEW_array__NativeArray(var270, &type_array__NativeArraykernel__Object);
7131 ((struct instance_array__NativeArray*)var271)->values[0] = (val*) var253;
7132 ((struct instance_array__NativeArray*)var271)->values[1] = (val*) var257;
7133 ((struct instance_array__NativeArray*)var271)->values[2] = (val*) var259;
7134 ((struct instance_array__NativeArray*)var271)->values[3] = (val*) var263;
7135 ((struct instance_array__NativeArray*)var271)->values[4] = (val*) var265;
7136 ((void (*)(val*, val*, long))(var269->class->vft[COLOR_array__Array__with_native]))(var269, var271, var270) /* with_native on <var269:Array[Object]>*/;
7137 }
7138 var272 = ((val* (*)(val*))(var269->class->vft[COLOR_string__Object__to_s]))(var269) /* to_s on <var269:Array[Object]>*/;
7139 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var272) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7140 if (varonce273) {
7141 var274 = varonce273;
7142 } else {
7143 var275 = "struct instance_";
7144 var276 = 16;
7145 var277 = string__NativeString__to_s_with_length(var275, var276);
7146 var274 = var277;
7147 varonce273 = var274;
7148 }
7149 if (varonce278) {
7150 var279 = varonce278;
7151 } else {
7152 var280 = "*res = nit_alloc(sizeof(struct instance_";
7153 var281 = 40;
7154 var282 = string__NativeString__to_s_with_length(var280, var281);
7155 var279 = var282;
7156 varonce278 = var279;
7157 }
7158 if (varonce283) {
7159 var284 = varonce283;
7160 } else {
7161 var285 = "));";
7162 var286 = 3;
7163 var287 = string__NativeString__to_s_with_length(var285, var286);
7164 var284 = var287;
7165 varonce283 = var284;
7166 }
7167 var288 = NEW_array__Array(&type_array__Arraykernel__Object);
7168 { /* var288 = array_instance Array[Object] */
7169 var289 = 5;
7170 var290 = NEW_array__NativeArray(var289, &type_array__NativeArraykernel__Object);
7171 ((struct instance_array__NativeArray*)var290)->values[0] = (val*) var274;
7172 ((struct instance_array__NativeArray*)var290)->values[1] = (val*) var_c_name;
7173 ((struct instance_array__NativeArray*)var290)->values[2] = (val*) var279;
7174 ((struct instance_array__NativeArray*)var290)->values[3] = (val*) var_c_name;
7175 ((struct instance_array__NativeArray*)var290)->values[4] = (val*) var284;
7176 ((void (*)(val*, val*, long))(var288->class->vft[COLOR_array__Array__with_native]))(var288, var290, var289) /* with_native on <var288:Array[Object]>*/;
7177 }
7178 var291 = ((val* (*)(val*))(var288->class->vft[COLOR_string__Object__to_s]))(var288) /* to_s on <var288:Array[Object]>*/;
7179 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var291) /* add on <var_v:SeparateCompilerVisitor>*/;
7180 if (varonce292) {
7181 var293 = varonce292;
7182 } else {
7183 var294 = "type_";
7184 var295 = 5;
7185 var296 = string__NativeString__to_s_with_length(var294, var295);
7186 var293 = var296;
7187 varonce292 = var293;
7188 }
7189 var297 = NEW_array__Array(&type_array__Arraykernel__Object);
7190 { /* var297 = array_instance Array[Object] */
7191 var298 = 2;
7192 var299 = NEW_array__NativeArray(var298, &type_array__NativeArraykernel__Object);
7193 ((struct instance_array__NativeArray*)var299)->values[0] = (val*) var293;
7194 ((struct instance_array__NativeArray*)var299)->values[1] = (val*) var_c_name;
7195 ((void (*)(val*, val*, long))(var297->class->vft[COLOR_array__Array__with_native]))(var297, var299, var298) /* with_native on <var297:Array[Object]>*/;
7196 }
7197 var300 = ((val* (*)(val*))(var297->class->vft[COLOR_string__Object__to_s]))(var297) /* to_s on <var297:Array[Object]>*/;
7198 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var300) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
7199 if (varonce301) {
7200 var302 = varonce301;
7201 } else {
7202 var303 = "res->type = &type_";
7203 var304 = 18;
7204 var305 = string__NativeString__to_s_with_length(var303, var304);
7205 var302 = var305;
7206 varonce301 = var302;
7207 }
7208 if (varonce306) {
7209 var307 = varonce306;
7210 } else {
7211 var308 = ";";
7212 var309 = 1;
7213 var310 = string__NativeString__to_s_with_length(var308, var309);
7214 var307 = var310;
7215 varonce306 = var307;
7216 }
7217 var311 = NEW_array__Array(&type_array__Arraykernel__Object);
7218 { /* var311 = array_instance Array[Object] */
7219 var312 = 3;
7220 var313 = NEW_array__NativeArray(var312, &type_array__NativeArraykernel__Object);
7221 ((struct instance_array__NativeArray*)var313)->values[0] = (val*) var302;
7222 ((struct instance_array__NativeArray*)var313)->values[1] = (val*) var_c_name;
7223 ((struct instance_array__NativeArray*)var313)->values[2] = (val*) var307;
7224 ((void (*)(val*, val*, long))(var311->class->vft[COLOR_array__Array__with_native]))(var311, var313, var312) /* with_native on <var311:Array[Object]>*/;
7225 }
7226 var314 = ((val* (*)(val*))(var311->class->vft[COLOR_string__Object__to_s]))(var311) /* to_s on <var311:Array[Object]>*/;
7227 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var314) /* add on <var_v:SeparateCompilerVisitor>*/;
7228 if (varonce315) {
7229 var316 = varonce315;
7230 } else {
7231 var317 = "class_";
7232 var318 = 6;
7233 var319 = string__NativeString__to_s_with_length(var317, var318);
7234 var316 = var319;
7235 varonce315 = var316;
7236 }
7237 var320 = NEW_array__Array(&type_array__Arraykernel__Object);
7238 { /* var320 = array_instance Array[Object] */
7239 var321 = 2;
7240 var322 = NEW_array__NativeArray(var321, &type_array__NativeArraykernel__Object);
7241 ((struct instance_array__NativeArray*)var322)->values[0] = (val*) var316;
7242 ((struct instance_array__NativeArray*)var322)->values[1] = (val*) var_c_name;
7243 ((void (*)(val*, val*, long))(var320->class->vft[COLOR_array__Array__with_native]))(var320, var322, var321) /* with_native on <var320:Array[Object]>*/;
7244 }
7245 var323 = ((val* (*)(val*))(var320->class->vft[COLOR_string__Object__to_s]))(var320) /* to_s on <var320:Array[Object]>*/;
7246 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var323) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
7247 if (varonce324) {
7248 var325 = varonce324;
7249 } else {
7250 var326 = "res->class = &class_";
7251 var327 = 20;
7252 var328 = string__NativeString__to_s_with_length(var326, var327);
7253 var325 = var328;
7254 varonce324 = var325;
7255 }
7256 if (varonce329) {
7257 var330 = varonce329;
7258 } else {
7259 var331 = ";";
7260 var332 = 1;
7261 var333 = string__NativeString__to_s_with_length(var331, var332);
7262 var330 = var333;
7263 varonce329 = var330;
7264 }
7265 var334 = NEW_array__Array(&type_array__Arraykernel__Object);
7266 { /* var334 = array_instance Array[Object] */
7267 var335 = 3;
7268 var336 = NEW_array__NativeArray(var335, &type_array__NativeArraykernel__Object);
7269 ((struct instance_array__NativeArray*)var336)->values[0] = (val*) var325;
7270 ((struct instance_array__NativeArray*)var336)->values[1] = (val*) var_c_name;
7271 ((struct instance_array__NativeArray*)var336)->values[2] = (val*) var330;
7272 ((void (*)(val*, val*, long))(var334->class->vft[COLOR_array__Array__with_native]))(var334, var336, var335) /* with_native on <var334:Array[Object]>*/;
7273 }
7274 var337 = ((val* (*)(val*))(var334->class->vft[COLOR_string__Object__to_s]))(var334) /* to_s on <var334:Array[Object]>*/;
7275 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var337) /* add on <var_v:SeparateCompilerVisitor>*/;
7276 if (varonce338) {
7277 var339 = varonce338;
7278 } else {
7279 var340 = "res->value = value;";
7280 var341 = 19;
7281 var342 = string__NativeString__to_s_with_length(var340, var341);
7282 var339 = var342;
7283 varonce338 = var339;
7284 }
7285 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var339) /* add on <var_v:SeparateCompilerVisitor>*/;
7286 if (varonce343) {
7287 var344 = varonce343;
7288 } else {
7289 var345 = "return (val*)res;";
7290 var346 = 17;
7291 var347 = string__NativeString__to_s_with_length(var345, var346);
7292 var344 = var347;
7293 varonce343 = var344;
7294 }
7295 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var344) /* add on <var_v:SeparateCompilerVisitor>*/;
7296 if (varonce348) {
7297 var349 = varonce348;
7298 } else {
7299 var350 = "}";
7300 var351 = 1;
7301 var352 = string__NativeString__to_s_with_length(var350, var351);
7302 var349 = var352;
7303 varonce348 = var349;
7304 }
7305 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var349) /* add on <var_v:SeparateCompilerVisitor>*/;
7306 goto RET_LABEL;
7307 } else {
7308 var353 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__name]))(var_mclass) /* name on <var_mclass:MClass>*/;
7309 if (varonce354) {
7310 var355 = varonce354;
7311 } else {
7312 var356 = "NativeArray";
7313 var357 = 11;
7314 var358 = string__NativeString__to_s_with_length(var356, var357);
7315 var355 = var358;
7316 varonce354 = var355;
7317 }
7318 var359 = ((short int (*)(val*, val*))(var353->class->vft[COLOR_kernel__Object___61d_61d]))(var353, var355) /* == on <var353:String>*/;
7319 if (var359){
7320 var360 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7321 if (varonce361) {
7322 var362 = varonce361;
7323 } else {
7324 var363 = "struct instance_";
7325 var364 = 16;
7326 var365 = string__NativeString__to_s_with_length(var363, var364);
7327 var362 = var365;
7328 varonce361 = var362;
7329 }
7330 if (varonce366) {
7331 var367 = varonce366;
7332 } else {
7333 var368 = " {";
7334 var369 = 2;
7335 var370 = string__NativeString__to_s_with_length(var368, var369);
7336 var367 = var370;
7337 varonce366 = var367;
7338 }
7339 var371 = NEW_array__Array(&type_array__Arraykernel__Object);
7340 { /* var371 = array_instance Array[Object] */
7341 var372 = 3;
7342 var373 = NEW_array__NativeArray(var372, &type_array__NativeArraykernel__Object);
7343 ((struct instance_array__NativeArray*)var373)->values[0] = (val*) var362;
7344 ((struct instance_array__NativeArray*)var373)->values[1] = (val*) var_c_name;
7345 ((struct instance_array__NativeArray*)var373)->values[2] = (val*) var367;
7346 ((void (*)(val*, val*, long))(var371->class->vft[COLOR_array__Array__with_native]))(var371, var373, var372) /* with_native on <var371:Array[Object]>*/;
7347 }
7348 var374 = ((val* (*)(val*))(var371->class->vft[COLOR_string__Object__to_s]))(var371) /* to_s on <var371:Array[Object]>*/;
7349 ((void (*)(val*, val*))(var360->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var360, var374) /* add_decl on <var360:CodeWriter>*/;
7350 var375 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7351 if (varonce376) {
7352 var377 = varonce376;
7353 } else {
7354 var378 = "const struct type *type;";
7355 var379 = 24;
7356 var380 = string__NativeString__to_s_with_length(var378, var379);
7357 var377 = var380;
7358 varonce376 = var377;
7359 }
7360 ((void (*)(val*, val*))(var375->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var375, var377) /* add_decl on <var375:CodeWriter>*/;
7361 var381 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7362 if (varonce382) {
7363 var383 = varonce382;
7364 } else {
7365 var384 = "const struct class *class;";
7366 var385 = 26;
7367 var386 = string__NativeString__to_s_with_length(var384, var385);
7368 var383 = var386;
7369 varonce382 = var383;
7370 }
7371 ((void (*)(val*, val*))(var381->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var381, var383) /* add_decl on <var381:CodeWriter>*/;
7372 var387 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7373 if (varonce388) {
7374 var389 = varonce388;
7375 } else {
7376 var390 = "val* values[0];";
7377 var391 = 15;
7378 var392 = string__NativeString__to_s_with_length(var390, var391);
7379 var389 = var392;
7380 varonce388 = var389;
7381 }
7382 ((void (*)(val*, val*))(var387->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var387, var389) /* add_decl on <var387:CodeWriter>*/;
7383 var393 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7384 if (varonce394) {
7385 var395 = varonce394;
7386 } else {
7387 var396 = "};";
7388 var397 = 2;
7389 var398 = string__NativeString__to_s_with_length(var396, var397);
7390 var395 = var398;
7391 varonce394 = var395;
7392 }
7393 ((void (*)(val*, val*))(var393->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var393, var395) /* add_decl on <var393:CodeWriter>*/;
7394 if (varonce399) {
7395 var400 = varonce399;
7396 } else {
7397 var401 = "NEW_";
7398 var402 = 4;
7399 var403 = string__NativeString__to_s_with_length(var401, var402);
7400 var400 = var403;
7401 varonce399 = var400;
7402 }
7403 var404 = NEW_array__Array(&type_array__Arraykernel__Object);
7404 { /* var404 = array_instance Array[Object] */
7405 var405 = 2;
7406 var406 = NEW_array__NativeArray(var405, &type_array__NativeArraykernel__Object);
7407 ((struct instance_array__NativeArray*)var406)->values[0] = (val*) var400;
7408 ((struct instance_array__NativeArray*)var406)->values[1] = (val*) var_c_name;
7409 ((void (*)(val*, val*, long))(var404->class->vft[COLOR_array__Array__with_native]))(var404, var406, var405) /* with_native on <var404:Array[Object]>*/;
7410 }
7411 var407 = ((val* (*)(val*))(var404->class->vft[COLOR_string__Object__to_s]))(var404) /* to_s on <var404:Array[Object]>*/;
7412 var408 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7413 if (varonce409) {
7414 var410 = varonce409;
7415 } else {
7416 var411 = " NEW_";
7417 var412 = 5;
7418 var413 = string__NativeString__to_s_with_length(var411, var412);
7419 var410 = var413;
7420 varonce409 = var410;
7421 }
7422 if (varonce414) {
7423 var415 = varonce414;
7424 } else {
7425 var416 = "(int length, const struct type* type);";
7426 var417 = 38;
7427 var418 = string__NativeString__to_s_with_length(var416, var417);
7428 var415 = var418;
7429 varonce414 = var415;
7430 }
7431 var419 = NEW_array__Array(&type_array__Arraykernel__Object);
7432 { /* var419 = array_instance Array[Object] */
7433 var420 = 4;
7434 var421 = NEW_array__NativeArray(var420, &type_array__NativeArraykernel__Object);
7435 ((struct instance_array__NativeArray*)var421)->values[0] = (val*) var408;
7436 ((struct instance_array__NativeArray*)var421)->values[1] = (val*) var410;
7437 ((struct instance_array__NativeArray*)var421)->values[2] = (val*) var_c_name;
7438 ((struct instance_array__NativeArray*)var421)->values[3] = (val*) var415;
7439 ((void (*)(val*, val*, long))(var419->class->vft[COLOR_array__Array__with_native]))(var419, var421, var420) /* with_native on <var419:Array[Object]>*/;
7440 }
7441 var422 = ((val* (*)(val*))(var419->class->vft[COLOR_string__Object__to_s]))(var419) /* to_s on <var419:Array[Object]>*/;
7442 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var407, var422) /* provide_declaration on <self:SeparateCompiler>*/;
7443 if (varonce423) {
7444 var424 = varonce423;
7445 } else {
7446 var425 = "/* allocate ";
7447 var426 = 12;
7448 var427 = string__NativeString__to_s_with_length(var425, var426);
7449 var424 = var427;
7450 varonce423 = var424;
7451 }
7452 if (varonce428) {
7453 var429 = varonce428;
7454 } else {
7455 var430 = " */";
7456 var431 = 3;
7457 var432 = string__NativeString__to_s_with_length(var430, var431);
7458 var429 = var432;
7459 varonce428 = var429;
7460 }
7461 var433 = NEW_array__Array(&type_array__Arraykernel__Object);
7462 { /* var433 = array_instance Array[Object] */
7463 var434 = 3;
7464 var435 = NEW_array__NativeArray(var434, &type_array__NativeArraykernel__Object);
7465 ((struct instance_array__NativeArray*)var435)->values[0] = (val*) var424;
7466 ((struct instance_array__NativeArray*)var435)->values[1] = (val*) var_mtype;
7467 ((struct instance_array__NativeArray*)var435)->values[2] = (val*) var429;
7468 ((void (*)(val*, val*, long))(var433->class->vft[COLOR_array__Array__with_native]))(var433, var435, var434) /* with_native on <var433:Array[Object]>*/;
7469 }
7470 var436 = ((val* (*)(val*))(var433->class->vft[COLOR_string__Object__to_s]))(var433) /* to_s on <var433:Array[Object]>*/;
7471 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var436) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7472 var437 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7473 if (varonce438) {
7474 var439 = varonce438;
7475 } else {
7476 var440 = " NEW_";
7477 var441 = 5;
7478 var442 = string__NativeString__to_s_with_length(var440, var441);
7479 var439 = var442;
7480 varonce438 = var439;
7481 }
7482 if (varonce443) {
7483 var444 = varonce443;
7484 } else {
7485 var445 = "(int length, const struct type* type) {";
7486 var446 = 39;
7487 var447 = string__NativeString__to_s_with_length(var445, var446);
7488 var444 = var447;
7489 varonce443 = var444;
7490 }
7491 var448 = NEW_array__Array(&type_array__Arraykernel__Object);
7492 { /* var448 = array_instance Array[Object] */
7493 var449 = 4;
7494 var450 = NEW_array__NativeArray(var449, &type_array__NativeArraykernel__Object);
7495 ((struct instance_array__NativeArray*)var450)->values[0] = (val*) var437;
7496 ((struct instance_array__NativeArray*)var450)->values[1] = (val*) var439;
7497 ((struct instance_array__NativeArray*)var450)->values[2] = (val*) var_c_name;
7498 ((struct instance_array__NativeArray*)var450)->values[3] = (val*) var444;
7499 ((void (*)(val*, val*, long))(var448->class->vft[COLOR_array__Array__with_native]))(var448, var450, var449) /* with_native on <var448:Array[Object]>*/;
7500 }
7501 var451 = ((val* (*)(val*))(var448->class->vft[COLOR_string__Object__to_s]))(var448) /* to_s on <var448:Array[Object]>*/;
7502 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var451) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7503 if (varonce452) {
7504 var453 = varonce452;
7505 } else {
7506 var454 = "self";
7507 var455 = 4;
7508 var456 = string__NativeString__to_s_with_length(var454, var455);
7509 var453 = var456;
7510 varonce452 = var453;
7511 }
7512 var457 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_named_var]))(var_v, var_mtype, var453) /* new_named_var on <var_v:SeparateCompilerVisitor>*/;
7513 var_res = var457;
7514 var458 = 1;
7515 ((void (*)(val*, short int))(var_res->class->vft[COLOR_abstract_compiler__RuntimeVariable__is_exact_61d]))(var_res, var458) /* is_exact= on <var_res:RuntimeVariable>*/;
7516 var459 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__arguments]))(var_mtype) /* arguments on <var_mtype:MClassType>*/;
7517 var460 = ((val* (*)(val*))(var459->class->vft[COLOR_abstract_collection__Collection__first]))(var459) /* first on <var459:Array[MType]>*/;
7518 var_mtype_elt = var460;
7519 if (varonce461) {
7520 var462 = varonce461;
7521 } else {
7522 var463 = " = nit_alloc(sizeof(struct instance_";
7523 var464 = 36;
7524 var465 = string__NativeString__to_s_with_length(var463, var464);
7525 var462 = var465;
7526 varonce461 = var462;
7527 }
7528 if (varonce466) {
7529 var467 = varonce466;
7530 } else {
7531 var468 = ") + length*sizeof(";
7532 var469 = 18;
7533 var470 = string__NativeString__to_s_with_length(var468, var469);
7534 var467 = var470;
7535 varonce466 = var467;
7536 }
7537 var471 = ((val* (*)(val*))(var_mtype_elt->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype_elt) /* ctype on <var_mtype_elt:MType>*/;
7538 if (varonce472) {
7539 var473 = varonce472;
7540 } else {
7541 var474 = "));";
7542 var475 = 3;
7543 var476 = string__NativeString__to_s_with_length(var474, var475);
7544 var473 = var476;
7545 varonce472 = var473;
7546 }
7547 var477 = NEW_array__Array(&type_array__Arraykernel__Object);
7548 { /* var477 = array_instance Array[Object] */
7549 var478 = 6;
7550 var479 = NEW_array__NativeArray(var478, &type_array__NativeArraykernel__Object);
7551 ((struct instance_array__NativeArray*)var479)->values[0] = (val*) var_res;
7552 ((struct instance_array__NativeArray*)var479)->values[1] = (val*) var462;
7553 ((struct instance_array__NativeArray*)var479)->values[2] = (val*) var_c_name;
7554 ((struct instance_array__NativeArray*)var479)->values[3] = (val*) var467;
7555 ((struct instance_array__NativeArray*)var479)->values[4] = (val*) var471;
7556 ((struct instance_array__NativeArray*)var479)->values[5] = (val*) var473;
7557 ((void (*)(val*, val*, long))(var477->class->vft[COLOR_array__Array__with_native]))(var477, var479, var478) /* with_native on <var477:Array[Object]>*/;
7558 }
7559 var480 = ((val* (*)(val*))(var477->class->vft[COLOR_string__Object__to_s]))(var477) /* to_s on <var477:Array[Object]>*/;
7560 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var480) /* add on <var_v:SeparateCompilerVisitor>*/;
7561 if (varonce481) {
7562 var482 = varonce481;
7563 } else {
7564 var483 = "->type = type;";
7565 var484 = 14;
7566 var485 = string__NativeString__to_s_with_length(var483, var484);
7567 var482 = var485;
7568 varonce481 = var482;
7569 }
7570 var486 = NEW_array__Array(&type_array__Arraykernel__Object);
7571 { /* var486 = array_instance Array[Object] */
7572 var487 = 2;
7573 var488 = NEW_array__NativeArray(var487, &type_array__NativeArraykernel__Object);
7574 ((struct instance_array__NativeArray*)var488)->values[0] = (val*) var_res;
7575 ((struct instance_array__NativeArray*)var488)->values[1] = (val*) var482;
7576 ((void (*)(val*, val*, long))(var486->class->vft[COLOR_array__Array__with_native]))(var486, var488, var487) /* with_native on <var486:Array[Object]>*/;
7577 }
7578 var489 = ((val* (*)(val*))(var486->class->vft[COLOR_string__Object__to_s]))(var486) /* to_s on <var486:Array[Object]>*/;
7579 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var489) /* add on <var_v:SeparateCompilerVisitor>*/;
7580 if (varonce490) {
7581 var491 = varonce490;
7582 } else {
7583 var492 = "type";
7584 var493 = 4;
7585 var494 = string__NativeString__to_s_with_length(var492, var493);
7586 var491 = var494;
7587 varonce490 = var491;
7588 }
7589 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__hardening_live_type]))(self, var_v, var491) /* hardening_live_type on <self:SeparateCompiler>*/;
7590 if (varonce495) {
7591 var496 = varonce495;
7592 } else {
7593 var497 = "class_";
7594 var498 = 6;
7595 var499 = string__NativeString__to_s_with_length(var497, var498);
7596 var496 = var499;
7597 varonce495 = var496;
7598 }
7599 var500 = NEW_array__Array(&type_array__Arraykernel__Object);
7600 { /* var500 = array_instance Array[Object] */
7601 var501 = 2;
7602 var502 = NEW_array__NativeArray(var501, &type_array__NativeArraykernel__Object);
7603 ((struct instance_array__NativeArray*)var502)->values[0] = (val*) var496;
7604 ((struct instance_array__NativeArray*)var502)->values[1] = (val*) var_c_name;
7605 ((void (*)(val*, val*, long))(var500->class->vft[COLOR_array__Array__with_native]))(var500, var502, var501) /* with_native on <var500:Array[Object]>*/;
7606 }
7607 var503 = ((val* (*)(val*))(var500->class->vft[COLOR_string__Object__to_s]))(var500) /* to_s on <var500:Array[Object]>*/;
7608 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var503) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
7609 if (varonce504) {
7610 var505 = varonce504;
7611 } else {
7612 var506 = "->class = &class_";
7613 var507 = 17;
7614 var508 = string__NativeString__to_s_with_length(var506, var507);
7615 var505 = var508;
7616 varonce504 = var505;
7617 }
7618 if (varonce509) {
7619 var510 = varonce509;
7620 } else {
7621 var511 = ";";
7622 var512 = 1;
7623 var513 = string__NativeString__to_s_with_length(var511, var512);
7624 var510 = var513;
7625 varonce509 = var510;
7626 }
7627 var514 = NEW_array__Array(&type_array__Arraykernel__Object);
7628 { /* var514 = array_instance Array[Object] */
7629 var515 = 4;
7630 var516 = NEW_array__NativeArray(var515, &type_array__NativeArraykernel__Object);
7631 ((struct instance_array__NativeArray*)var516)->values[0] = (val*) var_res;
7632 ((struct instance_array__NativeArray*)var516)->values[1] = (val*) var505;
7633 ((struct instance_array__NativeArray*)var516)->values[2] = (val*) var_c_name;
7634 ((struct instance_array__NativeArray*)var516)->values[3] = (val*) var510;
7635 ((void (*)(val*, val*, long))(var514->class->vft[COLOR_array__Array__with_native]))(var514, var516, var515) /* with_native on <var514:Array[Object]>*/;
7636 }
7637 var517 = ((val* (*)(val*))(var514->class->vft[COLOR_string__Object__to_s]))(var514) /* to_s on <var514:Array[Object]>*/;
7638 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var517) /* add on <var_v:SeparateCompilerVisitor>*/;
7639 if (varonce518) {
7640 var519 = varonce518;
7641 } else {
7642 var520 = "return ";
7643 var521 = 7;
7644 var522 = string__NativeString__to_s_with_length(var520, var521);
7645 var519 = var522;
7646 varonce518 = var519;
7647 }
7648 if (varonce523) {
7649 var524 = varonce523;
7650 } else {
7651 var525 = ";";
7652 var526 = 1;
7653 var527 = string__NativeString__to_s_with_length(var525, var526);
7654 var524 = var527;
7655 varonce523 = var524;
7656 }
7657 var528 = NEW_array__Array(&type_array__Arraykernel__Object);
7658 { /* var528 = array_instance Array[Object] */
7659 var529 = 3;
7660 var530 = NEW_array__NativeArray(var529, &type_array__NativeArraykernel__Object);
7661 ((struct instance_array__NativeArray*)var530)->values[0] = (val*) var519;
7662 ((struct instance_array__NativeArray*)var530)->values[1] = (val*) var_res;
7663 ((struct instance_array__NativeArray*)var530)->values[2] = (val*) var524;
7664 ((void (*)(val*, val*, long))(var528->class->vft[COLOR_array__Array__with_native]))(var528, var530, var529) /* with_native on <var528:Array[Object]>*/;
7665 }
7666 var531 = ((val* (*)(val*))(var528->class->vft[COLOR_string__Object__to_s]))(var528) /* to_s on <var528:Array[Object]>*/;
7667 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var531) /* add on <var_v:SeparateCompilerVisitor>*/;
7668 if (varonce532) {
7669 var533 = varonce532;
7670 } else {
7671 var534 = "}";
7672 var535 = 1;
7673 var536 = string__NativeString__to_s_with_length(var534, var535);
7674 var533 = var536;
7675 varonce532 = var533;
7676 }
7677 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var533) /* add on <var_v:SeparateCompilerVisitor>*/;
7678 goto RET_LABEL;
7679 } else {
7680 }
7681 }
7682 if (varonce537) {
7683 var538 = varonce537;
7684 } else {
7685 var539 = "NEW_";
7686 var540 = 4;
7687 var541 = string__NativeString__to_s_with_length(var539, var540);
7688 var538 = var541;
7689 varonce537 = var538;
7690 }
7691 var542 = NEW_array__Array(&type_array__Arraykernel__Object);
7692 { /* var542 = array_instance Array[Object] */
7693 var543 = 2;
7694 var544 = NEW_array__NativeArray(var543, &type_array__NativeArraykernel__Object);
7695 ((struct instance_array__NativeArray*)var544)->values[0] = (val*) var538;
7696 ((struct instance_array__NativeArray*)var544)->values[1] = (val*) var_c_name;
7697 ((void (*)(val*, val*, long))(var542->class->vft[COLOR_array__Array__with_native]))(var542, var544, var543) /* with_native on <var542:Array[Object]>*/;
7698 }
7699 var545 = ((val* (*)(val*))(var542->class->vft[COLOR_string__Object__to_s]))(var542) /* to_s on <var542:Array[Object]>*/;
7700 var546 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7701 if (varonce547) {
7702 var548 = varonce547;
7703 } else {
7704 var549 = " NEW_";
7705 var550 = 5;
7706 var551 = string__NativeString__to_s_with_length(var549, var550);
7707 var548 = var551;
7708 varonce547 = var548;
7709 }
7710 if (varonce552) {
7711 var553 = varonce552;
7712 } else {
7713 var554 = "(const struct type* type);";
7714 var555 = 26;
7715 var556 = string__NativeString__to_s_with_length(var554, var555);
7716 var553 = var556;
7717 varonce552 = var553;
7718 }
7719 var557 = NEW_array__Array(&type_array__Arraykernel__Object);
7720 { /* var557 = array_instance Array[Object] */
7721 var558 = 4;
7722 var559 = NEW_array__NativeArray(var558, &type_array__NativeArraykernel__Object);
7723 ((struct instance_array__NativeArray*)var559)->values[0] = (val*) var546;
7724 ((struct instance_array__NativeArray*)var559)->values[1] = (val*) var548;
7725 ((struct instance_array__NativeArray*)var559)->values[2] = (val*) var_c_name;
7726 ((struct instance_array__NativeArray*)var559)->values[3] = (val*) var553;
7727 ((void (*)(val*, val*, long))(var557->class->vft[COLOR_array__Array__with_native]))(var557, var559, var558) /* with_native on <var557:Array[Object]>*/;
7728 }
7729 var560 = ((val* (*)(val*))(var557->class->vft[COLOR_string__Object__to_s]))(var557) /* to_s on <var557:Array[Object]>*/;
7730 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var545, var560) /* provide_declaration on <self:SeparateCompiler>*/;
7731 if (varonce561) {
7732 var562 = varonce561;
7733 } else {
7734 var563 = "/* allocate ";
7735 var564 = 12;
7736 var565 = string__NativeString__to_s_with_length(var563, var564);
7737 var562 = var565;
7738 varonce561 = var562;
7739 }
7740 if (varonce566) {
7741 var567 = varonce566;
7742 } else {
7743 var568 = " */";
7744 var569 = 3;
7745 var570 = string__NativeString__to_s_with_length(var568, var569);
7746 var567 = var570;
7747 varonce566 = var567;
7748 }
7749 var571 = NEW_array__Array(&type_array__Arraykernel__Object);
7750 { /* var571 = array_instance Array[Object] */
7751 var572 = 3;
7752 var573 = NEW_array__NativeArray(var572, &type_array__NativeArraykernel__Object);
7753 ((struct instance_array__NativeArray*)var573)->values[0] = (val*) var562;
7754 ((struct instance_array__NativeArray*)var573)->values[1] = (val*) var_mtype;
7755 ((struct instance_array__NativeArray*)var573)->values[2] = (val*) var567;
7756 ((void (*)(val*, val*, long))(var571->class->vft[COLOR_array__Array__with_native]))(var571, var573, var572) /* with_native on <var571:Array[Object]>*/;
7757 }
7758 var574 = ((val* (*)(val*))(var571->class->vft[COLOR_string__Object__to_s]))(var571) /* to_s on <var571:Array[Object]>*/;
7759 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var574) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7760 var575 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7761 if (varonce576) {
7762 var577 = varonce576;
7763 } else {
7764 var578 = " NEW_";
7765 var579 = 5;
7766 var580 = string__NativeString__to_s_with_length(var578, var579);
7767 var577 = var580;
7768 varonce576 = var577;
7769 }
7770 if (varonce581) {
7771 var582 = varonce581;
7772 } else {
7773 var583 = "(const struct type* type) {";
7774 var584 = 27;
7775 var585 = string__NativeString__to_s_with_length(var583, var584);
7776 var582 = var585;
7777 varonce581 = var582;
7778 }
7779 var586 = NEW_array__Array(&type_array__Arraykernel__Object);
7780 { /* var586 = array_instance Array[Object] */
7781 var587 = 4;
7782 var588 = NEW_array__NativeArray(var587, &type_array__NativeArraykernel__Object);
7783 ((struct instance_array__NativeArray*)var588)->values[0] = (val*) var575;
7784 ((struct instance_array__NativeArray*)var588)->values[1] = (val*) var577;
7785 ((struct instance_array__NativeArray*)var588)->values[2] = (val*) var_c_name;
7786 ((struct instance_array__NativeArray*)var588)->values[3] = (val*) var582;
7787 ((void (*)(val*, val*, long))(var586->class->vft[COLOR_array__Array__with_native]))(var586, var588, var587) /* with_native on <var586:Array[Object]>*/;
7788 }
7789 var589 = ((val* (*)(val*))(var586->class->vft[COLOR_string__Object__to_s]))(var586) /* to_s on <var586:Array[Object]>*/;
7790 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var589) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7791 if (var_is_dead){
7792 if (varonce590) {
7793 var591 = varonce590;
7794 } else {
7795 var592 = " is DEAD";
7796 var593 = 8;
7797 var594 = string__NativeString__to_s_with_length(var592, var593);
7798 var591 = var594;
7799 varonce590 = var591;
7800 }
7801 var595 = NEW_array__Array(&type_array__Arraykernel__Object);
7802 { /* var595 = array_instance Array[Object] */
7803 var596 = 2;
7804 var597 = NEW_array__NativeArray(var596, &type_array__NativeArraykernel__Object);
7805 ((struct instance_array__NativeArray*)var597)->values[0] = (val*) var_mclass;
7806 ((struct instance_array__NativeArray*)var597)->values[1] = (val*) var591;
7807 ((void (*)(val*, val*, long))(var595->class->vft[COLOR_array__Array__with_native]))(var595, var597, var596) /* with_native on <var595:Array[Object]>*/;
7808 }
7809 var598 = ((val* (*)(val*))(var595->class->vft[COLOR_string__Object__to_s]))(var595) /* to_s on <var595:Array[Object]>*/;
7810 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(var_v, var598) /* add_abort on <var_v:SeparateCompilerVisitor>*/;
7811 } else {
7812 if (varonce599) {
7813 var600 = varonce599;
7814 } else {
7815 var601 = "self";
7816 var602 = 4;
7817 var603 = string__NativeString__to_s_with_length(var601, var602);
7818 var600 = var603;
7819 varonce599 = var600;
7820 }
7821 var604 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_named_var]))(var_v, var_mtype, var600) /* new_named_var on <var_v:SeparateCompilerVisitor>*/;
7822 var_res605 = var604;
7823 var606 = 1;
7824 ((void (*)(val*, short int))(var_res605->class->vft[COLOR_abstract_compiler__RuntimeVariable__is_exact_61d]))(var_res605, var606) /* is_exact= on <var_res605:RuntimeVariable>*/;
7825 if (varonce607) {
7826 var608 = varonce607;
7827 } else {
7828 var609 = " = nit_alloc(sizeof(struct instance) + ";
7829 var610 = 39;
7830 var611 = string__NativeString__to_s_with_length(var609, var610);
7831 var608 = var611;
7832 varonce607 = var608;
7833 }
7834 var612 = ((long (*)(val*))(var_attrs->class->vft[COLOR_abstract_collection__Collection__length]))(var_attrs) /* length on <var_attrs:Array[nullable MPropDef]>*/;
7835 if (varonce613) {
7836 var614 = varonce613;
7837 } else {
7838 var615 = "*sizeof(nitattribute_t));";
7839 var616 = 25;
7840 var617 = string__NativeString__to_s_with_length(var615, var616);
7841 var614 = var617;
7842 varonce613 = var614;
7843 }
7844 var618 = NEW_array__Array(&type_array__Arraykernel__Object);
7845 { /* var618 = array_instance Array[Object] */
7846 var619 = 4;
7847 var620 = NEW_array__NativeArray(var619, &type_array__NativeArraykernel__Object);
7848 ((struct instance_array__NativeArray*)var620)->values[0] = (val*) var_res605;
7849 ((struct instance_array__NativeArray*)var620)->values[1] = (val*) var608;
7850 var621 = BOX_kernel__Int(var612); /* autobox from Int to Object */
7851 ((struct instance_array__NativeArray*)var620)->values[2] = (val*) var621;
7852 ((struct instance_array__NativeArray*)var620)->values[3] = (val*) var614;
7853 ((void (*)(val*, val*, long))(var618->class->vft[COLOR_array__Array__with_native]))(var618, var620, var619) /* with_native on <var618:Array[Object]>*/;
7854 }
7855 var622 = ((val* (*)(val*))(var618->class->vft[COLOR_string__Object__to_s]))(var618) /* to_s on <var618:Array[Object]>*/;
7856 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var622) /* add on <var_v:SeparateCompilerVisitor>*/;
7857 if (varonce623) {
7858 var624 = varonce623;
7859 } else {
7860 var625 = "->type = type;";
7861 var626 = 14;
7862 var627 = string__NativeString__to_s_with_length(var625, var626);
7863 var624 = var627;
7864 varonce623 = var624;
7865 }
7866 var628 = NEW_array__Array(&type_array__Arraykernel__Object);
7867 { /* var628 = array_instance Array[Object] */
7868 var629 = 2;
7869 var630 = NEW_array__NativeArray(var629, &type_array__NativeArraykernel__Object);
7870 ((struct instance_array__NativeArray*)var630)->values[0] = (val*) var_res605;
7871 ((struct instance_array__NativeArray*)var630)->values[1] = (val*) var624;
7872 ((void (*)(val*, val*, long))(var628->class->vft[COLOR_array__Array__with_native]))(var628, var630, var629) /* with_native on <var628:Array[Object]>*/;
7873 }
7874 var631 = ((val* (*)(val*))(var628->class->vft[COLOR_string__Object__to_s]))(var628) /* to_s on <var628:Array[Object]>*/;
7875 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var631) /* add on <var_v:SeparateCompilerVisitor>*/;
7876 if (varonce632) {
7877 var633 = varonce632;
7878 } else {
7879 var634 = "type";
7880 var635 = 4;
7881 var636 = string__NativeString__to_s_with_length(var634, var635);
7882 var633 = var636;
7883 varonce632 = var633;
7884 }
7885 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__hardening_live_type]))(self, var_v, var633) /* hardening_live_type on <self:SeparateCompiler>*/;
7886 if (varonce637) {
7887 var638 = varonce637;
7888 } else {
7889 var639 = "class_";
7890 var640 = 6;
7891 var641 = string__NativeString__to_s_with_length(var639, var640);
7892 var638 = var641;
7893 varonce637 = var638;
7894 }
7895 var642 = NEW_array__Array(&type_array__Arraykernel__Object);
7896 { /* var642 = array_instance Array[Object] */
7897 var643 = 2;
7898 var644 = NEW_array__NativeArray(var643, &type_array__NativeArraykernel__Object);
7899 ((struct instance_array__NativeArray*)var644)->values[0] = (val*) var638;
7900 ((struct instance_array__NativeArray*)var644)->values[1] = (val*) var_c_name;
7901 ((void (*)(val*, val*, long))(var642->class->vft[COLOR_array__Array__with_native]))(var642, var644, var643) /* with_native on <var642:Array[Object]>*/;
7902 }
7903 var645 = ((val* (*)(val*))(var642->class->vft[COLOR_string__Object__to_s]))(var642) /* to_s on <var642:Array[Object]>*/;
7904 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var645) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
7905 if (varonce646) {
7906 var647 = varonce646;
7907 } else {
7908 var648 = "->class = &class_";
7909 var649 = 17;
7910 var650 = string__NativeString__to_s_with_length(var648, var649);
7911 var647 = var650;
7912 varonce646 = var647;
7913 }
7914 if (varonce651) {
7915 var652 = varonce651;
7916 } else {
7917 var653 = ";";
7918 var654 = 1;
7919 var655 = string__NativeString__to_s_with_length(var653, var654);
7920 var652 = var655;
7921 varonce651 = var652;
7922 }
7923 var656 = NEW_array__Array(&type_array__Arraykernel__Object);
7924 { /* var656 = array_instance Array[Object] */
7925 var657 = 4;
7926 var658 = NEW_array__NativeArray(var657, &type_array__NativeArraykernel__Object);
7927 ((struct instance_array__NativeArray*)var658)->values[0] = (val*) var_res605;
7928 ((struct instance_array__NativeArray*)var658)->values[1] = (val*) var647;
7929 ((struct instance_array__NativeArray*)var658)->values[2] = (val*) var_c_name;
7930 ((struct instance_array__NativeArray*)var658)->values[3] = (val*) var652;
7931 ((void (*)(val*, val*, long))(var656->class->vft[COLOR_array__Array__with_native]))(var656, var658, var657) /* with_native on <var656:Array[Object]>*/;
7932 }
7933 var659 = ((val* (*)(val*))(var656->class->vft[COLOR_string__Object__to_s]))(var656) /* to_s on <var656:Array[Object]>*/;
7934 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var659) /* add on <var_v:SeparateCompilerVisitor>*/;
7935 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__generate_init_attr]))(self, var_v, var_res605, var_mtype) /* generate_init_attr on <self:SeparateCompiler>*/;
7936 if (varonce660) {
7937 var661 = varonce660;
7938 } else {
7939 var662 = "return ";
7940 var663 = 7;
7941 var664 = string__NativeString__to_s_with_length(var662, var663);
7942 var661 = var664;
7943 varonce660 = var661;
7944 }
7945 if (varonce665) {
7946 var666 = varonce665;
7947 } else {
7948 var667 = ";";
7949 var668 = 1;
7950 var669 = string__NativeString__to_s_with_length(var667, var668);
7951 var666 = var669;
7952 varonce665 = var666;
7953 }
7954 var670 = NEW_array__Array(&type_array__Arraykernel__Object);
7955 { /* var670 = array_instance Array[Object] */
7956 var671 = 3;
7957 var672 = NEW_array__NativeArray(var671, &type_array__NativeArraykernel__Object);
7958 ((struct instance_array__NativeArray*)var672)->values[0] = (val*) var661;
7959 ((struct instance_array__NativeArray*)var672)->values[1] = (val*) var_res605;
7960 ((struct instance_array__NativeArray*)var672)->values[2] = (val*) var666;
7961 ((void (*)(val*, val*, long))(var670->class->vft[COLOR_array__Array__with_native]))(var670, var672, var671) /* with_native on <var670:Array[Object]>*/;
7962 }
7963 var673 = ((val* (*)(val*))(var670->class->vft[COLOR_string__Object__to_s]))(var670) /* to_s on <var670:Array[Object]>*/;
7964 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var673) /* add on <var_v:SeparateCompilerVisitor>*/;
7965 }
7966 if (varonce674) {
7967 var675 = varonce674;
7968 } else {
7969 var676 = "}";
7970 var677 = 1;
7971 var678 = string__NativeString__to_s_with_length(var676, var677);
7972 var675 = var678;
7973 varonce674 = var675;
7974 }
7975 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var675) /* add on <var_v:SeparateCompilerVisitor>*/;
7976 RET_LABEL:;
7977 }
7978 /* method separate_compiler#SeparateCompiler#compile_class_to_c for (self: Object, MClass) */
7979 void VIRTUAL_separate_compiler__SeparateCompiler__compile_class_to_c(val* self, val* p0) {
7980 separate_compiler__SeparateCompiler__compile_class_to_c(self, p0);
7981 RET_LABEL:;
7982 }
7983 /* method separate_compiler#SeparateCompiler#hardening_live_type for (self: SeparateCompiler, SeparateCompilerVisitor, String) */
7984 void separate_compiler__SeparateCompiler__hardening_live_type(val* self, val* p0, val* p1) {
7985 short int var /* : Bool */;
7986 int cltype;
7987 int idtype;
7988 const struct type* type_struct;
7989 const char* var_class_name;
7990 val* var_v /* var v: SeparateCompilerVisitor */;
7991 val* var_t /* var t: String */;
7992 val* var1 /* : AbstractCompiler */;
7993 val* var2 /* : ModelBuilder */;
7994 val* var3 /* : ToolContext */;
7995 val* var4 /* : OptionBool */;
7996 val* var5 /* : nullable Object */;
7997 short int var6 /* : Bool */;
7998 short int var7 /* : Bool */;
7999 static val* varonce;
8000 val* var8 /* : String */;
8001 char* var9 /* : NativeString */;
8002 long var10 /* : Int */;
8003 val* var11 /* : String */;
8004 static val* varonce12;
8005 val* var13 /* : String */;
8006 char* var14 /* : NativeString */;
8007 long var15 /* : Int */;
8008 val* var16 /* : String */;
8009 val* var17 /* : Array[Object] */;
8010 long var18 /* : Int */;
8011 val* var19 /* : NativeArray[Object] */;
8012 val* var20 /* : String */;
8013 static val* varonce21;
8014 val* var22 /* : String */;
8015 char* var23 /* : NativeString */;
8016 long var24 /* : Int */;
8017 val* var25 /* : String */;
8018 static val* varonce26;
8019 val* var27 /* : String */;
8020 char* var28 /* : NativeString */;
8021 long var29 /* : Int */;
8022 val* var30 /* : String */;
8023 static val* varonce31;
8024 val* var32 /* : String */;
8025 char* var33 /* : NativeString */;
8026 long var34 /* : Int */;
8027 val* var35 /* : String */;
8028 static val* varonce36;
8029 val* var37 /* : String */;
8030 char* var38 /* : NativeString */;
8031 long var39 /* : Int */;
8032 val* var40 /* : String */;
8033 val* var41 /* : Array[Object] */;
8034 long var42 /* : Int */;
8035 val* var43 /* : NativeArray[Object] */;
8036 val* var44 /* : String */;
8037 static val* varonce45;
8038 val* var46 /* : String */;
8039 char* var47 /* : NativeString */;
8040 long var48 /* : Int */;
8041 val* var49 /* : String */;
8042 static val* varonce50;
8043 val* var51 /* : String */;
8044 char* var52 /* : NativeString */;
8045 long var53 /* : Int */;
8046 val* var54 /* : String */;
8047 val* var55 /* : Array[Object] */;
8048 long var56 /* : Int */;
8049 val* var57 /* : NativeArray[Object] */;
8050 val* var58 /* : String */;
8051 static val* varonce59;
8052 val* var60 /* : String */;
8053 char* var61 /* : NativeString */;
8054 long var62 /* : Int */;
8055 val* var63 /* : String */;
8056 static val* varonce64;
8057 val* var65 /* : String */;
8058 char* var66 /* : NativeString */;
8059 long var67 /* : Int */;
8060 val* var68 /* : String */;
8061 /* Covariant cast for argument 0 (v) <p0:SeparateCompilerVisitor> isa VISITOR */
8062 /* <p0:SeparateCompilerVisitor> isa VISITOR */
8063 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
8064 cltype = type_struct->color;
8065 idtype = type_struct->id;
8066 if(cltype >= p0->type->table_size) {
8067 var = 0;
8068 } else {
8069 var = p0->type->type_table[cltype] == idtype;
8070 }
8071 if (!var) {
8072 var_class_name = p0 == NULL ? "null" : p0->type->name;
8073 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
8074 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 825);
8075 show_backtrace(1);
8076 }
8077 var_v = p0;
8078 var_t = p1;
8079 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:SeparateCompilerVisitor>*/;
8080 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var1) /* modelbuilder on <var1:AbstractCompiler(SeparateCompiler)>*/;
8081 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var2) /* toolcontext on <var2:ModelBuilder>*/;
8082 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__ToolContext__opt_hardening]))(var3) /* opt_hardening on <var3:ToolContext>*/;
8083 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_opts__Option__value]))(var4) /* value on <var4:OptionBool>*/;
8084 var6 = ((struct instance_kernel__Bool*)var5)->value; /* autounbox from nullable Object to Bool */;
8085 var7 = !var6;
8086 if (var7){
8087 goto RET_LABEL;
8088 } else {
8089 }
8090 if (varonce) {
8091 var8 = varonce;
8092 } else {
8093 var9 = "if(";
8094 var10 = 3;
8095 var11 = string__NativeString__to_s_with_length(var9, var10);
8096 var8 = var11;
8097 varonce = var8;
8098 }
8099 if (varonce12) {
8100 var13 = varonce12;
8101 } else {
8102 var14 = " == NULL) {";
8103 var15 = 11;
8104 var16 = string__NativeString__to_s_with_length(var14, var15);
8105 var13 = var16;
8106 varonce12 = var13;
8107 }
8108 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
8109 { /* var17 = array_instance Array[Object] */
8110 var18 = 3;
8111 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
8112 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var8;
8113 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var_t;
8114 ((struct instance_array__NativeArray*)var19)->values[2] = (val*) var13;
8115 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
8116 }
8117 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
8118 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var20) /* add on <var_v:SeparateCompilerVisitor>*/;
8119 if (varonce21) {
8120 var22 = varonce21;
8121 } else {
8122 var23 = "type null";
8123 var24 = 9;
8124 var25 = string__NativeString__to_s_with_length(var23, var24);
8125 var22 = var25;
8126 varonce21 = var22;
8127 }
8128 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(var_v, var22) /* add_abort on <var_v:SeparateCompilerVisitor>*/;
8129 if (varonce26) {
8130 var27 = varonce26;
8131 } else {
8132 var28 = "}";
8133 var29 = 1;
8134 var30 = string__NativeString__to_s_with_length(var28, var29);
8135 var27 = var30;
8136 varonce26 = var27;
8137 }
8138 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var27) /* add on <var_v:SeparateCompilerVisitor>*/;
8139 if (varonce31) {
8140 var32 = varonce31;
8141 } else {
8142 var33 = "if(";
8143 var34 = 3;
8144 var35 = string__NativeString__to_s_with_length(var33, var34);
8145 var32 = var35;
8146 varonce31 = var32;
8147 }
8148 if (varonce36) {
8149 var37 = varonce36;
8150 } else {
8151 var38 = "->resolution_table == NULL) {";
8152 var39 = 29;
8153 var40 = string__NativeString__to_s_with_length(var38, var39);
8154 var37 = var40;
8155 varonce36 = var37;
8156 }
8157 var41 = NEW_array__Array(&type_array__Arraykernel__Object);
8158 { /* var41 = array_instance Array[Object] */
8159 var42 = 3;
8160 var43 = NEW_array__NativeArray(var42, &type_array__NativeArraykernel__Object);
8161 ((struct instance_array__NativeArray*)var43)->values[0] = (val*) var32;
8162 ((struct instance_array__NativeArray*)var43)->values[1] = (val*) var_t;
8163 ((struct instance_array__NativeArray*)var43)->values[2] = (val*) var37;
8164 ((void (*)(val*, val*, long))(var41->class->vft[COLOR_array__Array__with_native]))(var41, var43, var42) /* with_native on <var41:Array[Object]>*/;
8165 }
8166 var44 = ((val* (*)(val*))(var41->class->vft[COLOR_string__Object__to_s]))(var41) /* to_s on <var41:Array[Object]>*/;
8167 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var44) /* add on <var_v:SeparateCompilerVisitor>*/;
8168 if (varonce45) {
8169 var46 = varonce45;
8170 } else {
8171 var47 = "fprintf(stderr, \"Insantiation of a dead type: %s\\n\", ";
8172 var48 = 53;
8173 var49 = string__NativeString__to_s_with_length(var47, var48);
8174 var46 = var49;
8175 varonce45 = var46;
8176 }
8177 if (varonce50) {
8178 var51 = varonce50;
8179 } else {
8180 var52 = "->name);";
8181 var53 = 8;
8182 var54 = string__NativeString__to_s_with_length(var52, var53);
8183 var51 = var54;
8184 varonce50 = var51;
8185 }
8186 var55 = NEW_array__Array(&type_array__Arraykernel__Object);
8187 { /* var55 = array_instance Array[Object] */
8188 var56 = 3;
8189 var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
8190 ((struct instance_array__NativeArray*)var57)->values[0] = (val*) var46;
8191 ((struct instance_array__NativeArray*)var57)->values[1] = (val*) var_t;
8192 ((struct instance_array__NativeArray*)var57)->values[2] = (val*) var51;
8193 ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
8194 }
8195 var58 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
8196 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var58) /* add on <var_v:SeparateCompilerVisitor>*/;
8197 if (varonce59) {
8198 var60 = varonce59;
8199 } else {
8200 var61 = "type dead";
8201 var62 = 9;
8202 var63 = string__NativeString__to_s_with_length(var61, var62);
8203 var60 = var63;
8204 varonce59 = var60;
8205 }
8206 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(var_v, var60) /* add_abort on <var_v:SeparateCompilerVisitor>*/;
8207 if (varonce64) {
8208 var65 = varonce64;
8209 } else {
8210 var66 = "}";
8211 var67 = 1;
8212 var68 = string__NativeString__to_s_with_length(var66, var67);
8213 var65 = var68;
8214 varonce64 = var65;
8215 }
8216 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var65) /* add on <var_v:SeparateCompilerVisitor>*/;
8217 RET_LABEL:;
8218 }
8219 /* method separate_compiler#SeparateCompiler#hardening_live_type for (self: Object, SeparateCompilerVisitor, String) */
8220 void VIRTUAL_separate_compiler__SeparateCompiler__hardening_live_type(val* self, val* p0, val* p1) {
8221 separate_compiler__SeparateCompiler__hardening_live_type(self, p0, p1);
8222 RET_LABEL:;
8223 }
8224 /* method separate_compiler#SeparateCompiler#new_visitor for (self: SeparateCompiler): SeparateCompilerVisitor */
8225 val* separate_compiler__SeparateCompiler__new_visitor(val* self) {
8226 val* var /* : SeparateCompilerVisitor */;
8227 val* var1 /* : SeparateCompilerVisitor */;
8228 short int var2 /* : Bool */;
8229 int cltype;
8230 int idtype;
8231 const struct type* type_struct;
8232 const char* var_class_name;
8233 var1 = NEW_separate_compiler__SeparateCompilerVisitor(&type_separate_compiler__SeparateCompilerVisitor);
8234 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init]))(var1, self) /* init on <var1:SeparateCompilerVisitor>*/;
8235 /* <var1:SeparateCompilerVisitor> isa VISITOR */
8236 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
8237 cltype = type_struct->color;
8238 idtype = type_struct->id;
8239 if(cltype >= var1->type->table_size) {
8240 var2 = 0;
8241 } else {
8242 var2 = var1->type->type_table[cltype] == idtype;
8243 }
8244 if (!var2) {
8245 var_class_name = var1 == NULL ? "null" : var1->type->name;
8246 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
8247 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 838);
8248 show_backtrace(1);
8249 }
8250 var = var1;
8251 goto RET_LABEL;
8252 RET_LABEL:;
8253 return var;
8254 }
8255 /* method separate_compiler#SeparateCompiler#new_visitor for (self: Object): AbstractCompilerVisitor */
8256 val* VIRTUAL_separate_compiler__SeparateCompiler__new_visitor(val* self) {
8257 val* var /* : AbstractCompilerVisitor */;
8258 val* var1 /* : SeparateCompilerVisitor */;
8259 var1 = separate_compiler__SeparateCompiler__new_visitor(self);
8260 var = var1;
8261 RET_LABEL:;
8262 return var;
8263 }
8264 /* method separate_compiler#SeparateCompiler#type_tables for (self: SeparateCompiler): Map[MType, Array[nullable MType]] */
8265 val* separate_compiler__SeparateCompiler__type_tables(val* self) {
8266 val* var /* : Map[MType, Array[nullable MType]] */;
8267 val* var1 /* : Map[MType, Array[nullable MType]] */;
8268 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dtype_tables].val; /* @type_tables on <self:SeparateCompiler> */
8269 if (var1 == NULL) {
8270 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @type_tables");
8271 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 842);
8272 show_backtrace(1);
8273 }
8274 var = var1;
8275 RET_LABEL:;
8276 return var;
8277 }
8278 /* method separate_compiler#SeparateCompiler#type_tables for (self: Object): Map[MType, Array[nullable MType]] */
8279 val* VIRTUAL_separate_compiler__SeparateCompiler__type_tables(val* self) {
8280 val* var /* : Map[MType, Array[nullable MType]] */;
8281 val* var1 /* : Map[MType, Array[nullable MType]] */;
8282 var1 = separate_compiler__SeparateCompiler__type_tables(self);
8283 var = var1;
8284 RET_LABEL:;
8285 return var;
8286 }
8287 /* method separate_compiler#SeparateCompiler#type_tables= for (self: SeparateCompiler, Map[MType, Array[nullable MType]]) */
8288 void separate_compiler__SeparateCompiler__type_tables_61d(val* self, val* p0) {
8289 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dtype_tables].val = p0; /* @type_tables on <self:SeparateCompiler> */
8290 RET_LABEL:;
8291 }
8292 /* method separate_compiler#SeparateCompiler#type_tables= for (self: Object, Map[MType, Array[nullable MType]]) */
8293 void VIRTUAL_separate_compiler__SeparateCompiler__type_tables_61d(val* self, val* p0) {
8294 separate_compiler__SeparateCompiler__type_tables_61d(self, p0);
8295 RET_LABEL:;
8296 }
8297 /* method separate_compiler#SeparateCompiler#resolution_tables for (self: SeparateCompiler): Map[MClassType, Array[nullable MType]] */
8298 val* separate_compiler__SeparateCompiler__resolution_tables(val* self) {
8299 val* var /* : Map[MClassType, Array[nullable MType]] */;
8300 val* var1 /* : Map[MClassType, Array[nullable MType]] */;
8301 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dresolution_tables].val; /* @resolution_tables on <self:SeparateCompiler> */
8302 if (var1 == NULL) {
8303 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @resolution_tables");
8304 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 843);
8305 show_backtrace(1);
8306 }
8307 var = var1;
8308 RET_LABEL:;
8309 return var;
8310 }
8311 /* method separate_compiler#SeparateCompiler#resolution_tables for (self: Object): Map[MClassType, Array[nullable MType]] */
8312 val* VIRTUAL_separate_compiler__SeparateCompiler__resolution_tables(val* self) {
8313 val* var /* : Map[MClassType, Array[nullable MType]] */;
8314 val* var1 /* : Map[MClassType, Array[nullable MType]] */;
8315 var1 = separate_compiler__SeparateCompiler__resolution_tables(self);
8316 var = var1;
8317 RET_LABEL:;
8318 return var;
8319 }
8320 /* method separate_compiler#SeparateCompiler#resolution_tables= for (self: SeparateCompiler, Map[MClassType, Array[nullable MType]]) */
8321 void separate_compiler__SeparateCompiler__resolution_tables_61d(val* self, val* p0) {
8322 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dresolution_tables].val = p0; /* @resolution_tables on <self:SeparateCompiler> */
8323 RET_LABEL:;
8324 }
8325 /* method separate_compiler#SeparateCompiler#resolution_tables= for (self: Object, Map[MClassType, Array[nullable MType]]) */
8326 void VIRTUAL_separate_compiler__SeparateCompiler__resolution_tables_61d(val* self, val* p0) {
8327 separate_compiler__SeparateCompiler__resolution_tables_61d(self, p0);
8328 RET_LABEL:;
8329 }
8330 /* method separate_compiler#SeparateCompiler#method_tables for (self: SeparateCompiler): Map[MClass, Array[nullable MPropDef]] */
8331 val* separate_compiler__SeparateCompiler__method_tables(val* self) {
8332 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
8333 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
8334 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dmethod_tables].val; /* @method_tables on <self:SeparateCompiler> */
8335 if (var1 == NULL) {
8336 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @method_tables");
8337 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 844);
8338 show_backtrace(1);
8339 }
8340 var = var1;
8341 RET_LABEL:;
8342 return var;
8343 }
8344 /* method separate_compiler#SeparateCompiler#method_tables for (self: Object): Map[MClass, Array[nullable MPropDef]] */
8345 val* VIRTUAL_separate_compiler__SeparateCompiler__method_tables(val* self) {
8346 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
8347 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
8348 var1 = separate_compiler__SeparateCompiler__method_tables(self);
8349 var = var1;
8350 RET_LABEL:;
8351 return var;
8352 }
8353 /* method separate_compiler#SeparateCompiler#method_tables= for (self: SeparateCompiler, Map[MClass, Array[nullable MPropDef]]) */
8354 void separate_compiler__SeparateCompiler__method_tables_61d(val* self, val* p0) {
8355 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dmethod_tables].val = p0; /* @method_tables on <self:SeparateCompiler> */
8356 RET_LABEL:;
8357 }
8358 /* method separate_compiler#SeparateCompiler#method_tables= for (self: Object, Map[MClass, Array[nullable MPropDef]]) */
8359 void VIRTUAL_separate_compiler__SeparateCompiler__method_tables_61d(val* self, val* p0) {
8360 separate_compiler__SeparateCompiler__method_tables_61d(self, p0);
8361 RET_LABEL:;
8362 }
8363 /* method separate_compiler#SeparateCompiler#attr_tables for (self: SeparateCompiler): Map[MClass, Array[nullable MPropDef]] */
8364 val* separate_compiler__SeparateCompiler__attr_tables(val* self) {
8365 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
8366 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
8367 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dattr_tables].val; /* @attr_tables on <self:SeparateCompiler> */
8368 if (var1 == NULL) {
8369 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @attr_tables");
8370 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 845);
8371 show_backtrace(1);
8372 }
8373 var = var1;
8374 RET_LABEL:;
8375 return var;
8376 }
8377 /* method separate_compiler#SeparateCompiler#attr_tables for (self: Object): Map[MClass, Array[nullable MPropDef]] */
8378 val* VIRTUAL_separate_compiler__SeparateCompiler__attr_tables(val* self) {
8379 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
8380 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
8381 var1 = separate_compiler__SeparateCompiler__attr_tables(self);
8382 var = var1;
8383 RET_LABEL:;
8384 return var;
8385 }
8386 /* method separate_compiler#SeparateCompiler#attr_tables= for (self: SeparateCompiler, Map[MClass, Array[nullable MPropDef]]) */
8387 void separate_compiler__SeparateCompiler__attr_tables_61d(val* self, val* p0) {
8388 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dattr_tables].val = p0; /* @attr_tables on <self:SeparateCompiler> */
8389 RET_LABEL:;
8390 }
8391 /* method separate_compiler#SeparateCompiler#attr_tables= for (self: Object, Map[MClass, Array[nullable MPropDef]]) */
8392 void VIRTUAL_separate_compiler__SeparateCompiler__attr_tables_61d(val* self, val* p0) {
8393 separate_compiler__SeparateCompiler__attr_tables_61d(self, p0);
8394 RET_LABEL:;
8395 }
8396 /* method separate_compiler#SeparateCompiler#display_stats for (self: SeparateCompiler) */
8397 void separate_compiler__SeparateCompiler__display_stats(val* self) {
8398 val* var /* : ModelBuilder */;
8399 val* var1 /* : ToolContext */;
8400 val* var2 /* : OptionBool */;
8401 val* var3 /* : nullable Object */;
8402 short int var4 /* : Bool */;
8403 ((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__display_stats]))(self) /* display_stats on <self:SeparateCompiler>*/;
8404 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
8405 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
8406 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_separate_compiler__ToolContext__opt_tables_metrics]))(var1) /* opt_tables_metrics on <var1:ToolContext>*/;
8407 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_opts__Option__value]))(var2) /* value on <var2:OptionBool>*/;
8408 var4 = ((struct instance_kernel__Bool*)var3)->value; /* autounbox from nullable Object to Bool */;
8409 if (var4){
8410 ((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__display_sizes]))(self) /* display_sizes on <self:SeparateCompiler>*/;
8411 } else {
8412 }
8413 RET_LABEL:;
8414 }
8415 /* method separate_compiler#SeparateCompiler#display_stats for (self: Object) */
8416 void VIRTUAL_separate_compiler__SeparateCompiler__display_stats(val* self) {
8417 separate_compiler__SeparateCompiler__display_stats(self);
8418 RET_LABEL:;
8419 }
8420 /* method separate_compiler#SeparateCompiler#display_sizes for (self: SeparateCompiler) */
8421 void separate_compiler__SeparateCompiler__display_sizes(val* self) {
8422 static val* varonce;
8423 val* var /* : String */;
8424 char* var1 /* : NativeString */;
8425 long var2 /* : Int */;
8426 val* var3 /* : String */;
8427 static val* varonce4;
8428 val* var5 /* : String */;
8429 char* var6 /* : NativeString */;
8430 long var7 /* : Int */;
8431 val* var8 /* : String */;
8432 long var9 /* : Int */;
8433 long var_total /* var total: Int */;
8434 long var10 /* : Int */;
8435 long var_holes /* var holes: Int */;
8436 val* var11 /* : Map[MType, Array[nullable MType]] */;
8437 val* var12 /* : MapIterator[Object, nullable Object] */;
8438 short int var13 /* : Bool */;
8439 val* var14 /* : Object */;
8440 val* var_t /* var t: MType */;
8441 val* var15 /* : nullable Object */;
8442 val* var_table /* var table: Array[nullable MType] */;
8443 long var16 /* : Int */;
8444 long var17 /* : Int */;
8445 long var19 /* : Int */;
8446 val* var20 /* : Iterator[nullable Object] */;
8447 short int var21 /* : Bool */;
8448 val* var22 /* : nullable Object */;
8449 val* var_e /* var e: nullable MType */;
8450 val* var23 /* : null */;
8451 short int var24 /* : Bool */;
8452 long var25 /* : Int */;
8453 long var26 /* : Int */;
8454 long var28 /* : Int */;
8455 static val* varonce30;
8456 val* var31 /* : String */;
8457 char* var32 /* : NativeString */;
8458 long var33 /* : Int */;
8459 val* var34 /* : String */;
8460 static val* varonce35;
8461 val* var36 /* : String */;
8462 char* var37 /* : NativeString */;
8463 long var38 /* : Int */;
8464 val* var39 /* : String */;
8465 val* var40 /* : Array[Object] */;
8466 long var41 /* : Int */;
8467 val* var42 /* : NativeArray[Object] */;
8468 val* var43 /* : Object */;
8469 val* var44 /* : Object */;
8470 val* var45 /* : String */;
8471 static val* varonce46;
8472 val* var47 /* : String */;
8473 char* var48 /* : NativeString */;
8474 long var49 /* : Int */;
8475 val* var50 /* : String */;
8476 static val* varonce51;
8477 val* var52 /* : String */;
8478 char* var53 /* : NativeString */;
8479 long var54 /* : Int */;
8480 val* var55 /* : String */;
8481 long var56 /* : Int */;
8482 long var57 /* : Int */;
8483 val* var58 /* : Map[MClassType, Array[nullable MType]] */;
8484 val* var59 /* : MapIterator[Object, nullable Object] */;
8485 short int var60 /* : Bool */;
8486 val* var61 /* : Object */;
8487 val* var_t62 /* var t: MClassType */;
8488 val* var63 /* : nullable Object */;
8489 val* var_table64 /* var table: Array[nullable MType] */;
8490 long var65 /* : Int */;
8491 long var66 /* : Int */;
8492 long var68 /* : Int */;
8493 val* var69 /* : Iterator[nullable Object] */;
8494 short int var70 /* : Bool */;
8495 val* var71 /* : nullable Object */;
8496 val* var_e72 /* var e: nullable MType */;
8497 val* var73 /* : null */;
8498 short int var74 /* : Bool */;
8499 long var75 /* : Int */;
8500 long var76 /* : Int */;
8501 long var78 /* : Int */;
8502 static val* varonce81;
8503 val* var82 /* : String */;
8504 char* var83 /* : NativeString */;
8505 long var84 /* : Int */;
8506 val* var85 /* : String */;
8507 static val* varonce86;
8508 val* var87 /* : String */;
8509 char* var88 /* : NativeString */;
8510 long var89 /* : Int */;
8511 val* var90 /* : String */;
8512 val* var91 /* : Array[Object] */;
8513 long var92 /* : Int */;
8514 val* var93 /* : NativeArray[Object] */;
8515 val* var94 /* : Object */;
8516 val* var95 /* : Object */;
8517 val* var96 /* : String */;
8518 static val* varonce97;
8519 val* var98 /* : String */;
8520 char* var99 /* : NativeString */;
8521 long var100 /* : Int */;
8522 val* var101 /* : String */;
8523 static val* varonce102;
8524 val* var103 /* : String */;
8525 char* var104 /* : NativeString */;
8526 long var105 /* : Int */;
8527 val* var106 /* : String */;
8528 long var107 /* : Int */;
8529 long var108 /* : Int */;
8530 val* var109 /* : Map[MClass, Array[nullable MPropDef]] */;
8531 val* var110 /* : MapIterator[Object, nullable Object] */;
8532 short int var111 /* : Bool */;
8533 val* var112 /* : Object */;
8534 val* var_t113 /* var t: MClass */;
8535 val* var114 /* : nullable Object */;
8536 val* var_table115 /* var table: Array[nullable MPropDef] */;
8537 long var116 /* : Int */;
8538 long var117 /* : Int */;
8539 long var119 /* : Int */;
8540 val* var120 /* : Iterator[nullable Object] */;
8541 short int var121 /* : Bool */;
8542 val* var122 /* : nullable Object */;
8543 val* var_e123 /* var e: nullable MPropDef */;
8544 val* var124 /* : null */;
8545 short int var125 /* : Bool */;
8546 long var126 /* : Int */;
8547 long var127 /* : Int */;
8548 long var129 /* : Int */;
8549 static val* varonce132;
8550 val* var133 /* : String */;
8551 char* var134 /* : NativeString */;
8552 long var135 /* : Int */;
8553 val* var136 /* : String */;
8554 static val* varonce137;
8555 val* var138 /* : String */;
8556 char* var139 /* : NativeString */;
8557 long var140 /* : Int */;
8558 val* var141 /* : String */;
8559 val* var142 /* : Array[Object] */;
8560 long var143 /* : Int */;
8561 val* var144 /* : NativeArray[Object] */;
8562 val* var145 /* : Object */;
8563 val* var146 /* : Object */;
8564 val* var147 /* : String */;
8565 static val* varonce148;
8566 val* var149 /* : String */;
8567 char* var150 /* : NativeString */;
8568 long var151 /* : Int */;
8569 val* var152 /* : String */;
8570 static val* varonce153;
8571 val* var154 /* : String */;
8572 char* var155 /* : NativeString */;
8573 long var156 /* : Int */;
8574 val* var157 /* : String */;
8575 long var158 /* : Int */;
8576 long var159 /* : Int */;
8577 val* var160 /* : Map[MClass, Array[nullable MPropDef]] */;
8578 val* var161 /* : MapIterator[Object, nullable Object] */;
8579 short int var162 /* : Bool */;
8580 val* var163 /* : Object */;
8581 val* var_t164 /* var t: MClass */;
8582 val* var165 /* : nullable Object */;
8583 val* var_table166 /* var table: Array[nullable MPropDef] */;
8584 long var167 /* : Int */;
8585 long var168 /* : Int */;
8586 long var170 /* : Int */;
8587 val* var171 /* : Iterator[nullable Object] */;
8588 short int var172 /* : Bool */;
8589 val* var173 /* : nullable Object */;
8590 val* var_e174 /* var e: nullable MPropDef */;
8591 val* var175 /* : null */;
8592 short int var176 /* : Bool */;
8593 long var177 /* : Int */;
8594 long var178 /* : Int */;
8595 long var180 /* : Int */;
8596 static val* varonce183;
8597 val* var184 /* : String */;
8598 char* var185 /* : NativeString */;
8599 long var186 /* : Int */;
8600 val* var187 /* : String */;
8601 static val* varonce188;
8602 val* var189 /* : String */;
8603 char* var190 /* : NativeString */;
8604 long var191 /* : Int */;
8605 val* var192 /* : String */;
8606 val* var193 /* : Array[Object] */;
8607 long var194 /* : Int */;
8608 val* var195 /* : NativeArray[Object] */;
8609 val* var196 /* : Object */;
8610 val* var197 /* : Object */;
8611 val* var198 /* : String */;
8612 if (varonce) {
8613 var = varonce;
8614 } else {
8615 var1 = "# size of subtyping tables";
8616 var2 = 26;
8617 var3 = string__NativeString__to_s_with_length(var1, var2);
8618 var = var3;
8619 varonce = var;
8620 }
8621 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var) /* print on <self:SeparateCompiler>*/;
8622 if (varonce4) {
8623 var5 = varonce4;
8624 } else {
8625 var6 = "\11total \11holes";
8626 var7 = 13;
8627 var8 = string__NativeString__to_s_with_length(var6, var7);
8628 var5 = var8;
8629 varonce4 = var5;
8630 }
8631 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var5) /* print on <self:SeparateCompiler>*/;
8632 var9 = 0;
8633 var_total = var9;
8634 var10 = 0;
8635 var_holes = var10;
8636 var11 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_tables]))(self) /* type_tables on <self:SeparateCompiler>*/;
8637 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var11) /* iterator on <var11:Map[MType, Array[nullable MType]]>*/;
8638 for(;;) {
8639 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var12) /* is_ok on <var12:MapIterator[Object, nullable Object]>*/;
8640 if(!var13) break;
8641 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__MapIterator__key]))(var12) /* key on <var12:MapIterator[Object, nullable Object]>*/;
8642 var_t = var14;
8643 var15 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__MapIterator__item]))(var12) /* item on <var12:MapIterator[Object, nullable Object]>*/;
8644 var_table = var15;
8645 var16 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MType]>*/;
8646 { /* Inline kernel#Int#+ (var_total,var16) */
8647 var19 = var_total + var16;
8648 var17 = var19;
8649 goto RET_LABEL18;
8650 RET_LABEL18:(void)0;
8651 }
8652 var_total = var17;
8653 var20 = ((val* (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_table) /* iterator on <var_table:Array[nullable MType]>*/;
8654 for(;;) {
8655 var21 = ((short int (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var20) /* is_ok on <var20:Iterator[nullable Object]>*/;
8656 if(!var21) break;
8657 var22 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__item]))(var20) /* item on <var20:Iterator[nullable Object]>*/;
8658 var_e = var22;
8659 var23 = NULL;
8660 if (var_e == NULL) {
8661 var24 = 1; /* is null */
8662 } else {
8663 var24 = 0; /* arg is null but recv is not */
8664 }
8665 if (var24){
8666 var25 = 1;
8667 { /* Inline kernel#Int#+ (var_holes,var25) */
8668 var28 = var_holes + var25;
8669 var26 = var28;
8670 goto RET_LABEL27;
8671 RET_LABEL27:(void)0;
8672 }
8673 var_holes = var26;
8674 } else {
8675 }
8676 CONTINUE_label: (void)0;
8677 ((void (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__next]))(var20) /* next on <var20:Iterator[nullable Object]>*/;
8678 }
8679 BREAK_label: (void)0;
8680 CONTINUE_label29: (void)0;
8681 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__MapIterator__next]))(var12) /* next on <var12:MapIterator[Object, nullable Object]>*/;
8682 }
8683 BREAK_label29: (void)0;
8684 if (varonce30) {
8685 var31 = varonce30;
8686 } else {
8687 var32 = "\11";
8688 var33 = 1;
8689 var34 = string__NativeString__to_s_with_length(var32, var33);
8690 var31 = var34;
8691 varonce30 = var31;
8692 }
8693 if (varonce35) {
8694 var36 = varonce35;
8695 } else {
8696 var37 = "\11";
8697 var38 = 1;
8698 var39 = string__NativeString__to_s_with_length(var37, var38);
8699 var36 = var39;
8700 varonce35 = var36;
8701 }
8702 var40 = NEW_array__Array(&type_array__Arraykernel__Object);
8703 { /* var40 = array_instance Array[Object] */
8704 var41 = 4;
8705 var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object);
8706 ((struct instance_array__NativeArray*)var42)->values[0] = (val*) var31;
8707 var43 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
8708 ((struct instance_array__NativeArray*)var42)->values[1] = (val*) var43;
8709 ((struct instance_array__NativeArray*)var42)->values[2] = (val*) var36;
8710 var44 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
8711 ((struct instance_array__NativeArray*)var42)->values[3] = (val*) var44;
8712 ((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on <var40:Array[Object]>*/;
8713 }
8714 var45 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on <var40:Array[Object]>*/;
8715 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var45) /* print on <self:SeparateCompiler>*/;
8716 if (varonce46) {
8717 var47 = varonce46;
8718 } else {
8719 var48 = "# size of resolution tables";
8720 var49 = 27;
8721 var50 = string__NativeString__to_s_with_length(var48, var49);
8722 var47 = var50;
8723 varonce46 = var47;
8724 }
8725 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var47) /* print on <self:SeparateCompiler>*/;
8726 if (varonce51) {
8727 var52 = varonce51;
8728 } else {
8729 var53 = "\11total \11holes";
8730 var54 = 13;
8731 var55 = string__NativeString__to_s_with_length(var53, var54);
8732 var52 = var55;
8733 varonce51 = var52;
8734 }
8735 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var52) /* print on <self:SeparateCompiler>*/;
8736 var56 = 0;
8737 var_total = var56;
8738 var57 = 0;
8739 var_holes = var57;
8740 var58 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_tables]))(self) /* resolution_tables on <self:SeparateCompiler>*/;
8741 var59 = ((val* (*)(val*))(var58->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var58) /* iterator on <var58:Map[MClassType, Array[nullable MType]]>*/;
8742 for(;;) {
8743 var60 = ((short int (*)(val*))(var59->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var59) /* is_ok on <var59:MapIterator[Object, nullable Object]>*/;
8744 if(!var60) break;
8745 var61 = ((val* (*)(val*))(var59->class->vft[COLOR_abstract_collection__MapIterator__key]))(var59) /* key on <var59:MapIterator[Object, nullable Object]>*/;
8746 var_t62 = var61;
8747 var63 = ((val* (*)(val*))(var59->class->vft[COLOR_abstract_collection__MapIterator__item]))(var59) /* item on <var59:MapIterator[Object, nullable Object]>*/;
8748 var_table64 = var63;
8749 var65 = ((long (*)(val*))(var_table64->class->vft[COLOR_abstract_collection__Collection__length]))(var_table64) /* length on <var_table64:Array[nullable MType]>*/;
8750 { /* Inline kernel#Int#+ (var_total,var65) */
8751 var68 = var_total + var65;
8752 var66 = var68;
8753 goto RET_LABEL67;
8754 RET_LABEL67:(void)0;
8755 }
8756 var_total = var66;
8757 var69 = ((val* (*)(val*))(var_table64->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_table64) /* iterator on <var_table64:Array[nullable MType]>*/;
8758 for(;;) {
8759 var70 = ((short int (*)(val*))(var69->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var69) /* is_ok on <var69:Iterator[nullable Object]>*/;
8760 if(!var70) break;
8761 var71 = ((val* (*)(val*))(var69->class->vft[COLOR_abstract_collection__Iterator__item]))(var69) /* item on <var69:Iterator[nullable Object]>*/;
8762 var_e72 = var71;
8763 var73 = NULL;
8764 if (var_e72 == NULL) {
8765 var74 = 1; /* is null */
8766 } else {
8767 var74 = 0; /* arg is null but recv is not */
8768 }
8769 if (var74){
8770 var75 = 1;
8771 { /* Inline kernel#Int#+ (var_holes,var75) */
8772 var78 = var_holes + var75;
8773 var76 = var78;
8774 goto RET_LABEL77;
8775 RET_LABEL77:(void)0;
8776 }
8777 var_holes = var76;
8778 } else {
8779 }
8780 CONTINUE_label79: (void)0;
8781 ((void (*)(val*))(var69->class->vft[COLOR_abstract_collection__Iterator__next]))(var69) /* next on <var69:Iterator[nullable Object]>*/;
8782 }
8783 BREAK_label79: (void)0;
8784 CONTINUE_label80: (void)0;
8785 ((void (*)(val*))(var59->class->vft[COLOR_abstract_collection__MapIterator__next]))(var59) /* next on <var59:MapIterator[Object, nullable Object]>*/;
8786 }
8787 BREAK_label80: (void)0;
8788 if (varonce81) {
8789 var82 = varonce81;
8790 } else {
8791 var83 = "\11";
8792 var84 = 1;
8793 var85 = string__NativeString__to_s_with_length(var83, var84);
8794 var82 = var85;
8795 varonce81 = var82;
8796 }
8797 if (varonce86) {
8798 var87 = varonce86;
8799 } else {
8800 var88 = "\11";
8801 var89 = 1;
8802 var90 = string__NativeString__to_s_with_length(var88, var89);
8803 var87 = var90;
8804 varonce86 = var87;
8805 }
8806 var91 = NEW_array__Array(&type_array__Arraykernel__Object);
8807 { /* var91 = array_instance Array[Object] */
8808 var92 = 4;
8809 var93 = NEW_array__NativeArray(var92, &type_array__NativeArraykernel__Object);
8810 ((struct instance_array__NativeArray*)var93)->values[0] = (val*) var82;
8811 var94 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
8812 ((struct instance_array__NativeArray*)var93)->values[1] = (val*) var94;
8813 ((struct instance_array__NativeArray*)var93)->values[2] = (val*) var87;
8814 var95 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
8815 ((struct instance_array__NativeArray*)var93)->values[3] = (val*) var95;
8816 ((void (*)(val*, val*, long))(var91->class->vft[COLOR_array__Array__with_native]))(var91, var93, var92) /* with_native on <var91:Array[Object]>*/;
8817 }
8818 var96 = ((val* (*)(val*))(var91->class->vft[COLOR_string__Object__to_s]))(var91) /* to_s on <var91:Array[Object]>*/;
8819 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var96) /* print on <self:SeparateCompiler>*/;
8820 if (varonce97) {
8821 var98 = varonce97;
8822 } else {
8823 var99 = "# size of methods tables";
8824 var100 = 24;
8825 var101 = string__NativeString__to_s_with_length(var99, var100);
8826 var98 = var101;
8827 varonce97 = var98;
8828 }
8829 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var98) /* print on <self:SeparateCompiler>*/;
8830 if (varonce102) {
8831 var103 = varonce102;
8832 } else {
8833 var104 = "\11total \11holes";
8834 var105 = 13;
8835 var106 = string__NativeString__to_s_with_length(var104, var105);
8836 var103 = var106;
8837 varonce102 = var103;
8838 }
8839 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var103) /* print on <self:SeparateCompiler>*/;
8840 var107 = 0;
8841 var_total = var107;
8842 var108 = 0;
8843 var_holes = var108;
8844 var109 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_tables]))(self) /* method_tables on <self:SeparateCompiler>*/;
8845 var110 = ((val* (*)(val*))(var109->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var109) /* iterator on <var109:Map[MClass, Array[nullable MPropDef]]>*/;
8846 for(;;) {
8847 var111 = ((short int (*)(val*))(var110->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var110) /* is_ok on <var110:MapIterator[Object, nullable Object]>*/;
8848 if(!var111) break;
8849 var112 = ((val* (*)(val*))(var110->class->vft[COLOR_abstract_collection__MapIterator__key]))(var110) /* key on <var110:MapIterator[Object, nullable Object]>*/;
8850 var_t113 = var112;
8851 var114 = ((val* (*)(val*))(var110->class->vft[COLOR_abstract_collection__MapIterator__item]))(var110) /* item on <var110:MapIterator[Object, nullable Object]>*/;
8852 var_table115 = var114;
8853 var116 = ((long (*)(val*))(var_table115->class->vft[COLOR_abstract_collection__Collection__length]))(var_table115) /* length on <var_table115:Array[nullable MPropDef]>*/;
8854 { /* Inline kernel#Int#+ (var_total,var116) */
8855 var119 = var_total + var116;
8856 var117 = var119;
8857 goto RET_LABEL118;
8858 RET_LABEL118:(void)0;
8859 }
8860 var_total = var117;
8861 var120 = ((val* (*)(val*))(var_table115->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_table115) /* iterator on <var_table115:Array[nullable MPropDef]>*/;
8862 for(;;) {
8863 var121 = ((short int (*)(val*))(var120->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var120) /* is_ok on <var120:Iterator[nullable Object]>*/;
8864 if(!var121) break;
8865 var122 = ((val* (*)(val*))(var120->class->vft[COLOR_abstract_collection__Iterator__item]))(var120) /* item on <var120:Iterator[nullable Object]>*/;
8866 var_e123 = var122;
8867 var124 = NULL;
8868 if (var_e123 == NULL) {
8869 var125 = 1; /* is null */
8870 } else {
8871 var125 = 0; /* arg is null but recv is not */
8872 }
8873 if (var125){
8874 var126 = 1;
8875 { /* Inline kernel#Int#+ (var_holes,var126) */
8876 var129 = var_holes + var126;
8877 var127 = var129;
8878 goto RET_LABEL128;
8879 RET_LABEL128:(void)0;
8880 }
8881 var_holes = var127;
8882 } else {
8883 }
8884 CONTINUE_label130: (void)0;
8885 ((void (*)(val*))(var120->class->vft[COLOR_abstract_collection__Iterator__next]))(var120) /* next on <var120:Iterator[nullable Object]>*/;
8886 }
8887 BREAK_label130: (void)0;
8888 CONTINUE_label131: (void)0;
8889 ((void (*)(val*))(var110->class->vft[COLOR_abstract_collection__MapIterator__next]))(var110) /* next on <var110:MapIterator[Object, nullable Object]>*/;
8890 }
8891 BREAK_label131: (void)0;
8892 if (varonce132) {
8893 var133 = varonce132;
8894 } else {
8895 var134 = "\11";
8896 var135 = 1;
8897 var136 = string__NativeString__to_s_with_length(var134, var135);
8898 var133 = var136;
8899 varonce132 = var133;
8900 }
8901 if (varonce137) {
8902 var138 = varonce137;
8903 } else {
8904 var139 = "\11";
8905 var140 = 1;
8906 var141 = string__NativeString__to_s_with_length(var139, var140);
8907 var138 = var141;
8908 varonce137 = var138;
8909 }
8910 var142 = NEW_array__Array(&type_array__Arraykernel__Object);
8911 { /* var142 = array_instance Array[Object] */
8912 var143 = 4;
8913 var144 = NEW_array__NativeArray(var143, &type_array__NativeArraykernel__Object);
8914 ((struct instance_array__NativeArray*)var144)->values[0] = (val*) var133;
8915 var145 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
8916 ((struct instance_array__NativeArray*)var144)->values[1] = (val*) var145;
8917 ((struct instance_array__NativeArray*)var144)->values[2] = (val*) var138;
8918 var146 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
8919 ((struct instance_array__NativeArray*)var144)->values[3] = (val*) var146;
8920 ((void (*)(val*, val*, long))(var142->class->vft[COLOR_array__Array__with_native]))(var142, var144, var143) /* with_native on <var142:Array[Object]>*/;
8921 }
8922 var147 = ((val* (*)(val*))(var142->class->vft[COLOR_string__Object__to_s]))(var142) /* to_s on <var142:Array[Object]>*/;
8923 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var147) /* print on <self:SeparateCompiler>*/;
8924 if (varonce148) {
8925 var149 = varonce148;
8926 } else {
8927 var150 = "# size of attributes tables";
8928 var151 = 27;
8929 var152 = string__NativeString__to_s_with_length(var150, var151);
8930 var149 = var152;
8931 varonce148 = var149;
8932 }
8933 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var149) /* print on <self:SeparateCompiler>*/;
8934 if (varonce153) {
8935 var154 = varonce153;
8936 } else {
8937 var155 = "\11total \11holes";
8938 var156 = 13;
8939 var157 = string__NativeString__to_s_with_length(var155, var156);
8940 var154 = var157;
8941 varonce153 = var154;
8942 }
8943 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var154) /* print on <self:SeparateCompiler>*/;
8944 var158 = 0;
8945 var_total = var158;
8946 var159 = 0;
8947 var_holes = var159;
8948 var160 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_tables]))(self) /* attr_tables on <self:SeparateCompiler>*/;
8949 var161 = ((val* (*)(val*))(var160->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var160) /* iterator on <var160:Map[MClass, Array[nullable MPropDef]]>*/;
8950 for(;;) {
8951 var162 = ((short int (*)(val*))(var161->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var161) /* is_ok on <var161:MapIterator[Object, nullable Object]>*/;
8952 if(!var162) break;
8953 var163 = ((val* (*)(val*))(var161->class->vft[COLOR_abstract_collection__MapIterator__key]))(var161) /* key on <var161:MapIterator[Object, nullable Object]>*/;
8954 var_t164 = var163;
8955 var165 = ((val* (*)(val*))(var161->class->vft[COLOR_abstract_collection__MapIterator__item]))(var161) /* item on <var161:MapIterator[Object, nullable Object]>*/;
8956 var_table166 = var165;
8957 var167 = ((long (*)(val*))(var_table166->class->vft[COLOR_abstract_collection__Collection__length]))(var_table166) /* length on <var_table166:Array[nullable MPropDef]>*/;
8958 { /* Inline kernel#Int#+ (var_total,var167) */
8959 var170 = var_total + var167;
8960 var168 = var170;
8961 goto RET_LABEL169;
8962 RET_LABEL169:(void)0;
8963 }
8964 var_total = var168;
8965 var171 = ((val* (*)(val*))(var_table166->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_table166) /* iterator on <var_table166:Array[nullable MPropDef]>*/;
8966 for(;;) {
8967 var172 = ((short int (*)(val*))(var171->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var171) /* is_ok on <var171:Iterator[nullable Object]>*/;
8968 if(!var172) break;
8969 var173 = ((val* (*)(val*))(var171->class->vft[COLOR_abstract_collection__Iterator__item]))(var171) /* item on <var171:Iterator[nullable Object]>*/;
8970 var_e174 = var173;
8971 var175 = NULL;
8972 if (var_e174 == NULL) {
8973 var176 = 1; /* is null */
8974 } else {
8975 var176 = 0; /* arg is null but recv is not */
8976 }
8977 if (var176){
8978 var177 = 1;
8979 { /* Inline kernel#Int#+ (var_holes,var177) */
8980 var180 = var_holes + var177;
8981 var178 = var180;
8982 goto RET_LABEL179;
8983 RET_LABEL179:(void)0;
8984 }
8985 var_holes = var178;
8986 } else {
8987 }
8988 CONTINUE_label181: (void)0;
8989 ((void (*)(val*))(var171->class->vft[COLOR_abstract_collection__Iterator__next]))(var171) /* next on <var171:Iterator[nullable Object]>*/;
8990 }
8991 BREAK_label181: (void)0;
8992 CONTINUE_label182: (void)0;
8993 ((void (*)(val*))(var161->class->vft[COLOR_abstract_collection__MapIterator__next]))(var161) /* next on <var161:MapIterator[Object, nullable Object]>*/;
8994 }
8995 BREAK_label182: (void)0;
8996 if (varonce183) {
8997 var184 = varonce183;
8998 } else {
8999 var185 = "\11";
9000 var186 = 1;
9001 var187 = string__NativeString__to_s_with_length(var185, var186);
9002 var184 = var187;
9003 varonce183 = var184;
9004 }
9005 if (varonce188) {
9006 var189 = varonce188;
9007 } else {
9008 var190 = "\11";
9009 var191 = 1;
9010 var192 = string__NativeString__to_s_with_length(var190, var191);
9011 var189 = var192;
9012 varonce188 = var189;
9013 }
9014 var193 = NEW_array__Array(&type_array__Arraykernel__Object);
9015 { /* var193 = array_instance Array[Object] */
9016 var194 = 4;
9017 var195 = NEW_array__NativeArray(var194, &type_array__NativeArraykernel__Object);
9018 ((struct instance_array__NativeArray*)var195)->values[0] = (val*) var184;
9019 var196 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
9020 ((struct instance_array__NativeArray*)var195)->values[1] = (val*) var196;
9021 ((struct instance_array__NativeArray*)var195)->values[2] = (val*) var189;
9022 var197 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
9023 ((struct instance_array__NativeArray*)var195)->values[3] = (val*) var197;
9024 ((void (*)(val*, val*, long))(var193->class->vft[COLOR_array__Array__with_native]))(var193, var195, var194) /* with_native on <var193:Array[Object]>*/;
9025 }
9026 var198 = ((val* (*)(val*))(var193->class->vft[COLOR_string__Object__to_s]))(var193) /* to_s on <var193:Array[Object]>*/;
9027 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var198) /* print on <self:SeparateCompiler>*/;
9028 RET_LABEL:;
9029 }
9030 /* method separate_compiler#SeparateCompiler#display_sizes for (self: Object) */
9031 void VIRTUAL_separate_compiler__SeparateCompiler__display_sizes(val* self) {
9032 separate_compiler__SeparateCompiler__display_sizes(self);
9033 RET_LABEL:;
9034 }
9035 /* method separate_compiler#SeparateCompilerVisitor#adapt_signature for (self: SeparateCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
9036 void separate_compiler__SeparateCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
9037 val* var_m /* var m: MMethodDef */;
9038 val* var_args /* var args: Array[RuntimeVariable] */;
9039 val* var /* : nullable MSignature */;
9040 val* var1 /* : MClassDef */;
9041 val* var2 /* : MClassType */;
9042 val* var3 /* : MClassDef */;
9043 val* var4 /* : MClassType */;
9044 val* var5 /* : MClassDef */;
9045 val* var6 /* : MModule */;
9046 short int var7 /* : Bool */;
9047 val* var8 /* : MType */;
9048 val* var_msignature /* var msignature: MSignature */;
9049 val* var9 /* : nullable Object */;
9050 val* var_recv /* var recv: RuntimeVariable */;
9051 val* var10 /* : MType */;
9052 val* var11 /* : String */;
9053 val* var12 /* : MClassDef */;
9054 val* var13 /* : MClass */;
9055 val* var14 /* : MClassType */;
9056 val* var15 /* : String */;
9057 short int var16 /* : Bool */;
9058 val* var17 /* : nullable Object */;
9059 val* var18 /* : MClassDef */;
9060 val* var19 /* : MClass */;
9061 val* var20 /* : MClassType */;
9062 val* var21 /* : RuntimeVariable */;
9063 val* var22 /* : Range[Int] */;
9064 long var23 /* : Int */;
9065 long var24 /* : Int */;
9066 val* var25 /* : Discrete */;
9067 val* var26 /* : Discrete */;
9068 val* var27 /* : Iterator[nullable Object] */;
9069 short int var28 /* : Bool */;
9070 val* var29 /* : nullable Object */;
9071 long var_i /* var i: Int */;
9072 long var30 /* : Int */;
9073 val* var31 /* : Array[MParameter] */;
9074 val* var32 /* : nullable Object */;
9075 val* var33 /* : MType */;
9076 val* var_t /* var t: MType */;
9077 long var34 /* : Int */;
9078 short int var35 /* : Bool */;
9079 short int var37 /* : Bool */;
9080 long var38 /* : Int */;
9081 long var39 /* : Int */;
9082 long var41 /* : Int */;
9083 val* var42 /* : nullable Object */;
9084 val* var43 /* : MType */;
9085 long var44 /* : Int */;
9086 long var45 /* : Int */;
9087 long var47 /* : Int */;
9088 long var48 /* : Int */;
9089 long var49 /* : Int */;
9090 long var51 /* : Int */;
9091 val* var52 /* : nullable Object */;
9092 val* var53 /* : RuntimeVariable */;
9093 var_m = p0;
9094 var_args = p1;
9095 var = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MMethodDef__msignature]))(var_m) /* msignature on <var_m:MMethodDef>*/;
9096 var1 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mclassdef]))(var_m) /* mclassdef on <var_m:MMethodDef>*/;
9097 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:MClassDef>*/;
9098 var3 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mclassdef]))(var_m) /* mclassdef on <var_m:MMethodDef>*/;
9099 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
9100 var5 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mclassdef]))(var_m) /* mclassdef on <var_m:MMethodDef>*/;
9101 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__mmodule]))(var5) /* mmodule on <var5:MClassDef>*/;
9102 var7 = 1;
9103 if (var == NULL) {
9104 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9105 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 907);
9106 show_backtrace(1);
9107 } else {
9108 var8 = ((val* (*)(val*, val*, val*, val*, short int))(var->class->vft[COLOR_model__MType__resolve_for]))(var, var2, var4, var6, var7) /* resolve_for on <var:nullable MSignature>*/;
9109 }
9110 var_msignature = var8;
9111 var9 = ((val* (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__first]))(var_args) /* first on <var_args:Array[RuntimeVariable]>*/;
9112 var_recv = var9;
9113 var10 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_recv) /* mtype on <var_recv:RuntimeVariable>*/;
9114 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_compiler__MType__ctype]))(var10) /* ctype on <var10:MType>*/;
9115 var12 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mclassdef]))(var_m) /* mclassdef on <var_m:MMethodDef>*/;
9116 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClassDef__mclass]))(var12) /* mclass on <var12:MClassDef>*/;
9117 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClass__mclass_type]))(var13) /* mclass_type on <var13:MClass>*/;
9118 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_compiler__MType__ctype]))(var14) /* ctype on <var14:MClassType>*/;
9119 var16 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___33d_61d]))(var11, var15) /* != on <var11:String>*/;
9120 if (var16){
9121 var17 = ((val* (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__first]))(var_args) /* first on <var_args:Array[RuntimeVariable]>*/;
9122 var18 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mclassdef]))(var_m) /* mclassdef on <var_m:MMethodDef>*/;
9123 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MClassDef__mclass]))(var18) /* mclass on <var18:MClassDef>*/;
9124 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MClass__mclass_type]))(var19) /* mclass_type on <var19:MClass>*/;
9125 var21 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var17, var20) /* autobox on <self:SeparateCompilerVisitor>*/;
9126 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__Sequence__first_61d]))(var_args, var21) /* first= on <var_args:Array[RuntimeVariable]>*/;
9127 } else {
9128 }
9129 var22 = NEW_range__Range(&type_range__Rangekernel__Int);
9130 var23 = 0;
9131 var24 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
9132 var25 = BOX_kernel__Int(var23); /* autobox from Int to Discrete */
9133 var26 = BOX_kernel__Int(var24); /* autobox from Int to Discrete */
9134 ((void (*)(val*, val*, val*))(var22->class->vft[COLOR_range__Range__without_last]))(var22, var25, var26) /* without_last on <var22:Range[Int]>*/;
9135 var27 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__iterator]))(var22) /* iterator on <var22:Range[Int]>*/;
9136 for(;;) {
9137 var28 = ((short int (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var27) /* is_ok on <var27:Iterator[nullable Object]>*/;
9138 if(!var28) break;
9139 var29 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__item]))(var27) /* item on <var27:Iterator[nullable Object]>*/;
9140 var30 = ((struct instance_kernel__Int*)var29)->value; /* autounbox from nullable Object to Int */;
9141 var_i = var30;
9142 var31 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
9143 var32 = ((val* (*)(val*, long))(var31->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var31, var_i) /* [] on <var31:Array[MParameter]>*/;
9144 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_model__MParameter__mtype]))(var32) /* mtype on <var32:nullable Object(MParameter)>*/;
9145 var_t = var33;
9146 var34 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
9147 { /* Inline kernel#Int#== (var_i,var34) */
9148 var37 = var_i == var34;
9149 var35 = var37;
9150 goto RET_LABEL36;
9151 RET_LABEL36:(void)0;
9152 }
9153 if (var35){
9154 var38 = 1;
9155 { /* Inline kernel#Int#+ (var_i,var38) */
9156 var41 = var_i + var38;
9157 var39 = var41;
9158 goto RET_LABEL40;
9159 RET_LABEL40:(void)0;
9160 }
9161 var42 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var39) /* [] on <var_args:Array[RuntimeVariable]>*/;
9162 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var42) /* mtype on <var42:nullable Object(RuntimeVariable)>*/;
9163 var_t = var43;
9164 } else {
9165 }
9166 var44 = 1;
9167 { /* Inline kernel#Int#+ (var_i,var44) */
9168 var47 = var_i + var44;
9169 var45 = var47;
9170 goto RET_LABEL46;
9171 RET_LABEL46:(void)0;
9172 }
9173 var48 = 1;
9174 { /* Inline kernel#Int#+ (var_i,var48) */
9175 var51 = var_i + var48;
9176 var49 = var51;
9177 goto RET_LABEL50;
9178 RET_LABEL50:(void)0;
9179 }
9180 var52 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var49) /* [] on <var_args:Array[RuntimeVariable]>*/;
9181 var53 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var52, var_t) /* autobox on <self:SeparateCompilerVisitor>*/;
9182 ((void (*)(val*, long, val*))(var_args->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_args, var45, var53) /* []= on <var_args:Array[RuntimeVariable]>*/;
9183 CONTINUE_label: (void)0;
9184 ((void (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__next]))(var27) /* next on <var27:Iterator[nullable Object]>*/;
9185 }
9186 BREAK_label: (void)0;
9187 RET_LABEL:;
9188 }
9189 /* method separate_compiler#SeparateCompilerVisitor#adapt_signature for (self: Object, MMethodDef, Array[RuntimeVariable]) */
9190 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
9191 separate_compiler__SeparateCompilerVisitor__adapt_signature(self, p0, p1);
9192 RET_LABEL:;
9193 }
9194 /* method separate_compiler#SeparateCompilerVisitor#autobox for (self: SeparateCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
9195 val* separate_compiler__SeparateCompilerVisitor__autobox(val* self, val* p0, val* p1) {
9196 val* var /* : RuntimeVariable */;
9197 val* var_value /* var value: RuntimeVariable */;
9198 val* var_mtype /* var mtype: MType */;
9199 val* var1 /* : MType */;
9200 short int var2 /* : Bool */;
9201 short int var3 /* : Bool */;
9202 val* var4 /* : MType */;
9203 val* var5 /* : String */;
9204 static val* varonce;
9205 val* var6 /* : String */;
9206 char* var7 /* : NativeString */;
9207 long var8 /* : Int */;
9208 val* var9 /* : String */;
9209 short int var10 /* : Bool */;
9210 short int var_ /* var : Bool */;
9211 val* var11 /* : String */;
9212 static val* varonce12;
9213 val* var13 /* : String */;
9214 char* var14 /* : NativeString */;
9215 long var15 /* : Int */;
9216 val* var16 /* : String */;
9217 short int var17 /* : Bool */;
9218 val* var18 /* : MType */;
9219 val* var19 /* : String */;
9220 static val* varonce20;
9221 val* var21 /* : String */;
9222 char* var22 /* : NativeString */;
9223 long var23 /* : Int */;
9224 val* var24 /* : String */;
9225 short int var25 /* : Bool */;
9226 static val* varonce26;
9227 val* var27 /* : String */;
9228 char* var28 /* : NativeString */;
9229 long var29 /* : Int */;
9230 val* var30 /* : String */;
9231 val* var31 /* : String */;
9232 static val* varonce32;
9233 val* var33 /* : String */;
9234 char* var34 /* : NativeString */;
9235 long var35 /* : Int */;
9236 val* var36 /* : String */;
9237 static val* varonce37;
9238 val* var38 /* : String */;
9239 char* var39 /* : NativeString */;
9240 long var40 /* : Int */;
9241 val* var41 /* : String */;
9242 val* var42 /* : MType */;
9243 static val* varonce43;
9244 val* var44 /* : String */;
9245 char* var45 /* : NativeString */;
9246 long var46 /* : Int */;
9247 val* var47 /* : String */;
9248 static val* varonce48;
9249 val* var49 /* : String */;
9250 char* var50 /* : NativeString */;
9251 long var51 /* : Int */;
9252 val* var52 /* : String */;
9253 val* var53 /* : Array[Object] */;
9254 long var54 /* : Int */;
9255 val* var55 /* : NativeArray[Object] */;
9256 val* var56 /* : String */;
9257 val* var57 /* : RuntimeVariable */;
9258 val* var58 /* : String */;
9259 static val* varonce59;
9260 val* var60 /* : String */;
9261 char* var61 /* : NativeString */;
9262 long var62 /* : Int */;
9263 val* var63 /* : String */;
9264 short int var64 /* : Bool */;
9265 val* var65 /* : MType */;
9266 short int var66 /* : Bool */;
9267 int cltype;
9268 int idtype;
9269 const char* var_class_name;
9270 val* var_valtype /* var valtype: MClassType */;
9271 val* var67 /* : RuntimeVariable */;
9272 val* var_res /* var res: RuntimeVariable */;
9273 short int var68 /* : Bool */;
9274 val* var69 /* : AbstractCompiler */;
9275 val* var70 /* : nullable RapidTypeAnalysis */;
9276 val* var71 /* : null */;
9277 short int var72 /* : Bool */;
9278 short int var_73 /* var : Bool */;
9279 val* var74 /* : AbstractCompiler */;
9280 val* var75 /* : nullable RapidTypeAnalysis */;
9281 val* var76 /* : HashSet[MClassType] */;
9282 short int var77 /* : Bool */;
9283 short int var78 /* : Bool */;
9284 static val* varonce79;
9285 val* var80 /* : String */;
9286 char* var81 /* : NativeString */;
9287 long var82 /* : Int */;
9288 val* var83 /* : String */;
9289 val* var84 /* : MType */;
9290 static val* varonce85;
9291 val* var86 /* : String */;
9292 char* var87 /* : NativeString */;
9293 long var88 /* : Int */;
9294 val* var89 /* : String */;
9295 static val* varonce90;
9296 val* var91 /* : String */;
9297 char* var92 /* : NativeString */;
9298 long var93 /* : Int */;
9299 val* var94 /* : String */;
9300 val* var95 /* : MType */;
9301 static val* varonce96;
9302 val* var97 /* : String */;
9303 char* var98 /* : NativeString */;
9304 long var99 /* : Int */;
9305 val* var100 /* : String */;
9306 val* var101 /* : Array[Object] */;
9307 long var102 /* : Int */;
9308 val* var103 /* : NativeArray[Object] */;
9309 val* var104 /* : String */;
9310 static val* varonce105;
9311 val* var106 /* : String */;
9312 char* var107 /* : NativeString */;
9313 long var108 /* : Int */;
9314 val* var109 /* : String */;
9315 static val* varonce110;
9316 val* var111 /* : String */;
9317 char* var112 /* : NativeString */;
9318 long var113 /* : Int */;
9319 val* var114 /* : String */;
9320 val* var115 /* : String */;
9321 static val* varonce116;
9322 val* var117 /* : String */;
9323 char* var118 /* : NativeString */;
9324 long var119 /* : Int */;
9325 val* var120 /* : String */;
9326 static val* varonce121;
9327 val* var122 /* : String */;
9328 char* var123 /* : NativeString */;
9329 long var124 /* : Int */;
9330 val* var125 /* : String */;
9331 val* var126 /* : MType */;
9332 static val* varonce127;
9333 val* var128 /* : String */;
9334 char* var129 /* : NativeString */;
9335 long var130 /* : Int */;
9336 val* var131 /* : String */;
9337 static val* varonce132;
9338 val* var133 /* : String */;
9339 char* var134 /* : NativeString */;
9340 long var135 /* : Int */;
9341 val* var136 /* : String */;
9342 val* var137 /* : Array[Object] */;
9343 long var138 /* : Int */;
9344 val* var139 /* : NativeArray[Object] */;
9345 val* var140 /* : String */;
9346 val* var141 /* : RuntimeVariable */;
9347 val* var_res142 /* var res: RuntimeVariable */;
9348 static val* varonce143;
9349 val* var144 /* : String */;
9350 char* var145 /* : NativeString */;
9351 long var146 /* : Int */;
9352 val* var147 /* : String */;
9353 static val* varonce148;
9354 val* var149 /* : String */;
9355 char* var150 /* : NativeString */;
9356 long var151 /* : Int */;
9357 val* var152 /* : String */;
9358 val* var153 /* : MType */;
9359 static val* varonce154;
9360 val* var155 /* : String */;
9361 char* var156 /* : NativeString */;
9362 long var157 /* : Int */;
9363 val* var158 /* : String */;
9364 static val* varonce159;
9365 val* var160 /* : String */;
9366 char* var161 /* : NativeString */;
9367 long var162 /* : Int */;
9368 val* var163 /* : String */;
9369 val* var164 /* : Array[Object] */;
9370 long var165 /* : Int */;
9371 val* var166 /* : NativeArray[Object] */;
9372 val* var167 /* : String */;
9373 static val* varonce168;
9374 val* var169 /* : String */;
9375 char* var170 /* : NativeString */;
9376 long var171 /* : Int */;
9377 val* var172 /* : String */;
9378 val* var173 /* : MType */;
9379 static val* varonce174;
9380 val* var175 /* : String */;
9381 char* var176 /* : NativeString */;
9382 long var177 /* : Int */;
9383 val* var178 /* : String */;
9384 static val* varonce179;
9385 val* var180 /* : String */;
9386 char* var181 /* : NativeString */;
9387 long var182 /* : Int */;
9388 val* var183 /* : String */;
9389 val* var184 /* : Array[Object] */;
9390 long var185 /* : Int */;
9391 val* var186 /* : NativeArray[Object] */;
9392 val* var187 /* : String */;
9393 var_value = p0;
9394 var_mtype = p1;
9395 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9396 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var_mtype) /* == on <var1:MType>*/;
9397 if (var2){
9398 var = var_value;
9399 goto RET_LABEL;
9400 } else {
9401 var4 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9402 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
9403 if (varonce) {
9404 var6 = varonce;
9405 } else {
9406 var7 = "val*";
9407 var8 = 4;
9408 var9 = string__NativeString__to_s_with_length(var7, var8);
9409 var6 = var9;
9410 varonce = var6;
9411 }
9412 var10 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var6) /* == on <var5:String>*/;
9413 var_ = var10;
9414 if (var10){
9415 var11 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
9416 if (varonce12) {
9417 var13 = varonce12;
9418 } else {
9419 var14 = "val*";
9420 var15 = 4;
9421 var16 = string__NativeString__to_s_with_length(var14, var15);
9422 var13 = var16;
9423 varonce12 = var13;
9424 }
9425 var17 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___61d_61d]))(var11, var13) /* == on <var11:String>*/;
9426 var3 = var17;
9427 } else {
9428 var3 = var_;
9429 }
9430 if (var3){
9431 var = var_value;
9432 goto RET_LABEL;
9433 } else {
9434 var18 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9435 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_compiler__MType__ctype]))(var18) /* ctype on <var18:MType>*/;
9436 if (varonce20) {
9437 var21 = varonce20;
9438 } else {
9439 var22 = "val*";
9440 var23 = 4;
9441 var24 = string__NativeString__to_s_with_length(var22, var23);
9442 var21 = var24;
9443 varonce20 = var21;
9444 }
9445 var25 = ((short int (*)(val*, val*))(var19->class->vft[COLOR_kernel__Object___61d_61d]))(var19, var21) /* == on <var19:String>*/;
9446 if (var25){
9447 if (varonce26) {
9448 var27 = varonce26;
9449 } else {
9450 var28 = "((struct instance_";
9451 var29 = 18;
9452 var30 = string__NativeString__to_s_with_length(var28, var29);
9453 var27 = var30;
9454 varonce26 = var27;
9455 }
9456 var31 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
9457 if (varonce32) {
9458 var33 = varonce32;
9459 } else {
9460 var34 = "*)";
9461 var35 = 2;
9462 var36 = string__NativeString__to_s_with_length(var34, var35);
9463 var33 = var36;
9464 varonce32 = var33;
9465 }
9466 if (varonce37) {
9467 var38 = varonce37;
9468 } else {
9469 var39 = ")->value; /* autounbox from ";
9470 var40 = 28;
9471 var41 = string__NativeString__to_s_with_length(var39, var40);
9472 var38 = var41;
9473 varonce37 = var38;
9474 }
9475 var42 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9476 if (varonce43) {
9477 var44 = varonce43;
9478 } else {
9479 var45 = " to ";
9480 var46 = 4;
9481 var47 = string__NativeString__to_s_with_length(var45, var46);
9482 var44 = var47;
9483 varonce43 = var44;
9484 }
9485 if (varonce48) {
9486 var49 = varonce48;
9487 } else {
9488 var50 = " */";
9489 var51 = 3;
9490 var52 = string__NativeString__to_s_with_length(var50, var51);
9491 var49 = var52;
9492 varonce48 = var49;
9493 }
9494 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
9495 { /* var53 = array_instance Array[Object] */
9496 var54 = 9;
9497 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
9498 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var27;
9499 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var31;
9500 ((struct instance_array__NativeArray*)var55)->values[2] = (val*) var33;
9501 ((struct instance_array__NativeArray*)var55)->values[3] = (val*) var_value;
9502 ((struct instance_array__NativeArray*)var55)->values[4] = (val*) var38;
9503 ((struct instance_array__NativeArray*)var55)->values[5] = (val*) var42;
9504 ((struct instance_array__NativeArray*)var55)->values[6] = (val*) var44;
9505 ((struct instance_array__NativeArray*)var55)->values[7] = (val*) var_mtype;
9506 ((struct instance_array__NativeArray*)var55)->values[8] = (val*) var49;
9507 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
9508 }
9509 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
9510 var57 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var56, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
9511 var = var57;
9512 goto RET_LABEL;
9513 } else {
9514 var58 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
9515 if (varonce59) {
9516 var60 = varonce59;
9517 } else {
9518 var61 = "val*";
9519 var62 = 4;
9520 var63 = string__NativeString__to_s_with_length(var61, var62);
9521 var60 = var63;
9522 varonce59 = var60;
9523 }
9524 var64 = ((short int (*)(val*, val*))(var58->class->vft[COLOR_kernel__Object___61d_61d]))(var58, var60) /* == on <var58:String>*/;
9525 if (var64){
9526 var65 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9527 /* <var65:MType> isa MClassType */
9528 cltype = type_model__MClassType.color;
9529 idtype = type_model__MClassType.id;
9530 if(cltype >= var65->type->table_size) {
9531 var66 = 0;
9532 } else {
9533 var66 = var65->type->type_table[cltype] == idtype;
9534 }
9535 if (!var66) {
9536 var_class_name = var65 == NULL ? "null" : var65->type->name;
9537 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
9538 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 930);
9539 show_backtrace(1);
9540 }
9541 var_valtype = var65;
9542 var67 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_mtype) /* new_var on <self:SeparateCompilerVisitor>*/;
9543 var_res = var67;
9544 var69 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
9545 var70 = ((val* (*)(val*))(var69->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(var69) /* runtime_type_analysis on <var69:AbstractCompiler(SeparateCompiler)>*/;
9546 var71 = NULL;
9547 if (var70 == NULL) {
9548 var72 = 0; /* is null */
9549 } else {
9550 var72 = 1; /* arg is null and recv is not */
9551 }
9552 var_73 = var72;
9553 if (var72){
9554 var74 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
9555 var75 = ((val* (*)(val*))(var74->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(var74) /* runtime_type_analysis on <var74:AbstractCompiler(SeparateCompiler)>*/;
9556 if (var75 == NULL) {
9557 fprintf(stderr, "Runtime error: %s", "Reciever is null");
9558 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 932);
9559 show_backtrace(1);
9560 } else {
9561 var76 = ((val* (*)(val*))(var75->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var75) /* live_types on <var75:nullable RapidTypeAnalysis>*/;
9562 }
9563 var77 = ((short int (*)(val*, val*))(var76->class->vft[COLOR_abstract_collection__Collection__has]))(var76, var_valtype) /* has on <var76:HashSet[MClassType]>*/;
9564 var78 = !var77;
9565 var68 = var78;
9566 } else {
9567 var68 = var_73;
9568 }
9569 if (var68){
9570 if (varonce79) {
9571 var80 = varonce79;
9572 } else {
9573 var81 = "/*no autobox from ";
9574 var82 = 18;
9575 var83 = string__NativeString__to_s_with_length(var81, var82);
9576 var80 = var83;
9577 varonce79 = var80;
9578 }
9579 var84 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9580 if (varonce85) {
9581 var86 = varonce85;
9582 } else {
9583 var87 = " to ";
9584 var88 = 4;
9585 var89 = string__NativeString__to_s_with_length(var87, var88);
9586 var86 = var89;
9587 varonce85 = var86;
9588 }
9589 if (varonce90) {
9590 var91 = varonce90;
9591 } else {
9592 var92 = ": ";
9593 var93 = 2;
9594 var94 = string__NativeString__to_s_with_length(var92, var93);
9595 var91 = var94;
9596 varonce90 = var91;
9597 }
9598 var95 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9599 if (varonce96) {
9600 var97 = varonce96;
9601 } else {
9602 var98 = " is not live! */";
9603 var99 = 16;
9604 var100 = string__NativeString__to_s_with_length(var98, var99);
9605 var97 = var100;
9606 varonce96 = var97;
9607 }
9608 var101 = NEW_array__Array(&type_array__Arraykernel__Object);
9609 { /* var101 = array_instance Array[Object] */
9610 var102 = 7;
9611 var103 = NEW_array__NativeArray(var102, &type_array__NativeArraykernel__Object);
9612 ((struct instance_array__NativeArray*)var103)->values[0] = (val*) var80;
9613 ((struct instance_array__NativeArray*)var103)->values[1] = (val*) var84;
9614 ((struct instance_array__NativeArray*)var103)->values[2] = (val*) var86;
9615 ((struct instance_array__NativeArray*)var103)->values[3] = (val*) var_mtype;
9616 ((struct instance_array__NativeArray*)var103)->values[4] = (val*) var91;
9617 ((struct instance_array__NativeArray*)var103)->values[5] = (val*) var95;
9618 ((struct instance_array__NativeArray*)var103)->values[6] = (val*) var97;
9619 ((void (*)(val*, val*, long))(var101->class->vft[COLOR_array__Array__with_native]))(var101, var103, var102) /* with_native on <var101:Array[Object]>*/;
9620 }
9621 var104 = ((val* (*)(val*))(var101->class->vft[COLOR_string__Object__to_s]))(var101) /* to_s on <var101:Array[Object]>*/;
9622 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var104) /* add on <self:SeparateCompilerVisitor>*/;
9623 if (varonce105) {
9624 var106 = varonce105;
9625 } else {
9626 var107 = "printf(\"Dead code executed!\\n\"); show_backtrace(1);";
9627 var108 = 51;
9628 var109 = string__NativeString__to_s_with_length(var107, var108);
9629 var106 = var109;
9630 varonce105 = var106;
9631 }
9632 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var106) /* add on <self:SeparateCompilerVisitor>*/;
9633 var = var_res;
9634 goto RET_LABEL;
9635 } else {
9636 }
9637 if (varonce110) {
9638 var111 = varonce110;
9639 } else {
9640 var112 = " = BOX_";
9641 var113 = 7;
9642 var114 = string__NativeString__to_s_with_length(var112, var113);
9643 var111 = var114;
9644 varonce110 = var111;
9645 }
9646 var115 = ((val* (*)(val*))(var_valtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_valtype) /* c_name on <var_valtype:MClassType>*/;
9647 if (varonce116) {
9648 var117 = varonce116;
9649 } else {
9650 var118 = "(";
9651 var119 = 1;
9652 var120 = string__NativeString__to_s_with_length(var118, var119);
9653 var117 = var120;
9654 varonce116 = var117;
9655 }
9656 if (varonce121) {
9657 var122 = varonce121;
9658 } else {
9659 var123 = "); /* autobox from ";
9660 var124 = 19;
9661 var125 = string__NativeString__to_s_with_length(var123, var124);
9662 var122 = var125;
9663 varonce121 = var122;
9664 }
9665 var126 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9666 if (varonce127) {
9667 var128 = varonce127;
9668 } else {
9669 var129 = " to ";
9670 var130 = 4;
9671 var131 = string__NativeString__to_s_with_length(var129, var130);
9672 var128 = var131;
9673 varonce127 = var128;
9674 }
9675 if (varonce132) {
9676 var133 = varonce132;
9677 } else {
9678 var134 = " */";
9679 var135 = 3;
9680 var136 = string__NativeString__to_s_with_length(var134, var135);
9681 var133 = var136;
9682 varonce132 = var133;
9683 }
9684 var137 = NEW_array__Array(&type_array__Arraykernel__Object);
9685 { /* var137 = array_instance Array[Object] */
9686 var138 = 10;
9687 var139 = NEW_array__NativeArray(var138, &type_array__NativeArraykernel__Object);
9688 ((struct instance_array__NativeArray*)var139)->values[0] = (val*) var_res;
9689 ((struct instance_array__NativeArray*)var139)->values[1] = (val*) var111;
9690 ((struct instance_array__NativeArray*)var139)->values[2] = (val*) var115;
9691 ((struct instance_array__NativeArray*)var139)->values[3] = (val*) var117;
9692 ((struct instance_array__NativeArray*)var139)->values[4] = (val*) var_value;
9693 ((struct instance_array__NativeArray*)var139)->values[5] = (val*) var122;
9694 ((struct instance_array__NativeArray*)var139)->values[6] = (val*) var126;
9695 ((struct instance_array__NativeArray*)var139)->values[7] = (val*) var128;
9696 ((struct instance_array__NativeArray*)var139)->values[8] = (val*) var_mtype;
9697 ((struct instance_array__NativeArray*)var139)->values[9] = (val*) var133;
9698 ((void (*)(val*, val*, long))(var137->class->vft[COLOR_array__Array__with_native]))(var137, var139, var138) /* with_native on <var137:Array[Object]>*/;
9699 }
9700 var140 = ((val* (*)(val*))(var137->class->vft[COLOR_string__Object__to_s]))(var137) /* to_s on <var137:Array[Object]>*/;
9701 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var140) /* add on <self:SeparateCompilerVisitor>*/;
9702 var = var_res;
9703 goto RET_LABEL;
9704 } else {
9705 var141 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_mtype) /* new_var on <self:SeparateCompilerVisitor>*/;
9706 var_res142 = var141;
9707 if (varonce143) {
9708 var144 = varonce143;
9709 } else {
9710 var145 = "/* ";
9711 var146 = 3;
9712 var147 = string__NativeString__to_s_with_length(var145, var146);
9713 var144 = var147;
9714 varonce143 = var144;
9715 }
9716 if (varonce148) {
9717 var149 = varonce148;
9718 } else {
9719 var150 = " left unintialized (cannot convert ";
9720 var151 = 35;
9721 var152 = string__NativeString__to_s_with_length(var150, var151);
9722 var149 = var152;
9723 varonce148 = var149;
9724 }
9725 var153 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9726 if (varonce154) {
9727 var155 = varonce154;
9728 } else {
9729 var156 = " to ";
9730 var157 = 4;
9731 var158 = string__NativeString__to_s_with_length(var156, var157);
9732 var155 = var158;
9733 varonce154 = var155;
9734 }
9735 if (varonce159) {
9736 var160 = varonce159;
9737 } else {
9738 var161 = ") */";
9739 var162 = 4;
9740 var163 = string__NativeString__to_s_with_length(var161, var162);
9741 var160 = var163;
9742 varonce159 = var160;
9743 }
9744 var164 = NEW_array__Array(&type_array__Arraykernel__Object);
9745 { /* var164 = array_instance Array[Object] */
9746 var165 = 7;
9747 var166 = NEW_array__NativeArray(var165, &type_array__NativeArraykernel__Object);
9748 ((struct instance_array__NativeArray*)var166)->values[0] = (val*) var144;
9749 ((struct instance_array__NativeArray*)var166)->values[1] = (val*) var_res142;
9750 ((struct instance_array__NativeArray*)var166)->values[2] = (val*) var149;
9751 ((struct instance_array__NativeArray*)var166)->values[3] = (val*) var153;
9752 ((struct instance_array__NativeArray*)var166)->values[4] = (val*) var155;
9753 ((struct instance_array__NativeArray*)var166)->values[5] = (val*) var_mtype;
9754 ((struct instance_array__NativeArray*)var166)->values[6] = (val*) var160;
9755 ((void (*)(val*, val*, long))(var164->class->vft[COLOR_array__Array__with_native]))(var164, var166, var165) /* with_native on <var164:Array[Object]>*/;
9756 }
9757 var167 = ((val* (*)(val*))(var164->class->vft[COLOR_string__Object__to_s]))(var164) /* to_s on <var164:Array[Object]>*/;
9758 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var167) /* add on <self:SeparateCompilerVisitor>*/;
9759 if (varonce168) {
9760 var169 = varonce168;
9761 } else {
9762 var170 = "printf(\"Cast error: Cannot cast %s to %s.\\n\", \"";
9763 var171 = 47;
9764 var172 = string__NativeString__to_s_with_length(var170, var171);
9765 var169 = var172;
9766 varonce168 = var169;
9767 }
9768 var173 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9769 if (varonce174) {
9770 var175 = varonce174;
9771 } else {
9772 var176 = "\", \"";
9773 var177 = 4;
9774 var178 = string__NativeString__to_s_with_length(var176, var177);
9775 var175 = var178;
9776 varonce174 = var175;
9777 }
9778 if (varonce179) {
9779 var180 = varonce179;
9780 } else {
9781 var181 = "\"); show_backtrace(1);";
9782 var182 = 22;
9783 var183 = string__NativeString__to_s_with_length(var181, var182);
9784 var180 = var183;
9785 varonce179 = var180;
9786 }
9787 var184 = NEW_array__Array(&type_array__Arraykernel__Object);
9788 { /* var184 = array_instance Array[Object] */
9789 var185 = 5;
9790 var186 = NEW_array__NativeArray(var185, &type_array__NativeArraykernel__Object);
9791 ((struct instance_array__NativeArray*)var186)->values[0] = (val*) var169;
9792 ((struct instance_array__NativeArray*)var186)->values[1] = (val*) var173;
9793 ((struct instance_array__NativeArray*)var186)->values[2] = (val*) var175;
9794 ((struct instance_array__NativeArray*)var186)->values[3] = (val*) var_mtype;
9795 ((struct instance_array__NativeArray*)var186)->values[4] = (val*) var180;
9796 ((void (*)(val*, val*, long))(var184->class->vft[COLOR_array__Array__with_native]))(var184, var186, var185) /* with_native on <var184:Array[Object]>*/;
9797 }
9798 var187 = ((val* (*)(val*))(var184->class->vft[COLOR_string__Object__to_s]))(var184) /* to_s on <var184:Array[Object]>*/;
9799 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var187) /* add on <self:SeparateCompilerVisitor>*/;
9800 var = var_res142;
9801 goto RET_LABEL;
9802 }
9803 }
9804 }
9805 }
9806 RET_LABEL:;
9807 return var;
9808 }
9809 /* method separate_compiler#SeparateCompilerVisitor#autobox for (self: Object, RuntimeVariable, MType): RuntimeVariable */
9810 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__autobox(val* self, val* p0, val* p1) {
9811 val* var /* : RuntimeVariable */;
9812 val* var1 /* : RuntimeVariable */;
9813 var1 = separate_compiler__SeparateCompilerVisitor__autobox(self, p0, p1);
9814 var = var1;
9815 RET_LABEL:;
9816 return var;
9817 }
9818 /* method separate_compiler#SeparateCompilerVisitor#type_info for (self: SeparateCompilerVisitor, RuntimeVariable): String */
9819 val* separate_compiler__SeparateCompilerVisitor__type_info(val* self, val* p0) {
9820 val* var /* : String */;
9821 val* var_value /* var value: RuntimeVariable */;
9822 val* var1 /* : MType */;
9823 val* var2 /* : String */;
9824 static val* varonce;
9825 val* var3 /* : String */;
9826 char* var4 /* : NativeString */;
9827 long var5 /* : Int */;
9828 val* var6 /* : String */;
9829 short int var7 /* : Bool */;
9830 val* var8 /* : Array[Object] */;
9831 long var9 /* : Int */;
9832 val* var_ /* var : Array[Object] */;
9833 static val* varonce10;
9834 val* var11 /* : String */;
9835 char* var12 /* : NativeString */;
9836 long var13 /* : Int */;
9837 val* var14 /* : String */;
9838 static val* varonce15;
9839 val* var16 /* : String */;
9840 char* var17 /* : NativeString */;
9841 long var18 /* : Int */;
9842 val* var19 /* : String */;
9843 val* var20 /* : String */;
9844 static val* varonce21;
9845 val* var22 /* : String */;
9846 char* var23 /* : NativeString */;
9847 long var24 /* : Int */;
9848 val* var25 /* : String */;
9849 val* var26 /* : MType */;
9850 val* var27 /* : String */;
9851 val* var28 /* : Array[Object] */;
9852 long var29 /* : Int */;
9853 val* var30 /* : NativeArray[Object] */;
9854 val* var31 /* : String */;
9855 val* var32 /* : Array[Object] */;
9856 long var33 /* : Int */;
9857 val* var_34 /* var : Array[Object] */;
9858 static val* varonce35;
9859 val* var36 /* : String */;
9860 char* var37 /* : NativeString */;
9861 long var38 /* : Int */;
9862 val* var39 /* : String */;
9863 val* var40 /* : MType */;
9864 val* var41 /* : String */;
9865 static val* varonce42;
9866 val* var43 /* : String */;
9867 char* var44 /* : NativeString */;
9868 long var45 /* : Int */;
9869 val* var46 /* : String */;
9870 val* var47 /* : String */;
9871 var_value = p0;
9872 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9873 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var1) /* ctype on <var1:MType>*/;
9874 if (varonce) {
9875 var3 = varonce;
9876 } else {
9877 var4 = "val*";
9878 var5 = 4;
9879 var6 = string__NativeString__to_s_with_length(var4, var5);
9880 var3 = var6;
9881 varonce = var3;
9882 }
9883 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, var3) /* == on <var2:String>*/;
9884 if (var7){
9885 var8 = NEW_array__Array(&type_array__Arraykernel__Object);
9886 var9 = 3;
9887 ((void (*)(val*, long))(var8->class->vft[COLOR_array__Array__with_capacity]))(var8, var9) /* with_capacity on <var8:Array[Object]>*/;
9888 var_ = var8;
9889 if (varonce10) {
9890 var11 = varonce10;
9891 } else {
9892 var12 = "";
9893 var13 = 0;
9894 var14 = string__NativeString__to_s_with_length(var12, var13);
9895 var11 = var14;
9896 varonce10 = var11;
9897 }
9898 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var11) /* add on <var_:Array[Object]>*/;
9899 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var_value) /* add on <var_:Array[Object]>*/;
9900 if (varonce15) {
9901 var16 = varonce15;
9902 } else {
9903 var17 = "->type";
9904 var18 = 6;
9905 var19 = string__NativeString__to_s_with_length(var17, var18);
9906 var16 = var19;
9907 varonce15 = var16;
9908 }
9909 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_, var16) /* add on <var_:Array[Object]>*/;
9910 var20 = ((val* (*)(val*))(var_->class->vft[COLOR_string__Object__to_s]))(var_) /* to_s on <var_:Array[Object]>*/;
9911 var = var20;
9912 goto RET_LABEL;
9913 } else {
9914 if (varonce21) {
9915 var22 = varonce21;
9916 } else {
9917 var23 = "type_";
9918 var24 = 5;
9919 var25 = string__NativeString__to_s_with_length(var23, var24);
9920 var22 = var25;
9921 varonce21 = var22;
9922 }
9923 var26 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9924 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_compiler__MType__c_name]))(var26) /* c_name on <var26:MType>*/;
9925 var28 = NEW_array__Array(&type_array__Arraykernel__Object);
9926 { /* var28 = array_instance Array[Object] */
9927 var29 = 2;
9928 var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
9929 ((struct instance_array__NativeArray*)var30)->values[0] = (val*) var22;
9930 ((struct instance_array__NativeArray*)var30)->values[1] = (val*) var27;
9931 ((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
9932 }
9933 var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
9934 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var31) /* require_declaration on <self:SeparateCompilerVisitor>*/;
9935 var32 = NEW_array__Array(&type_array__Arraykernel__Object);
9936 var33 = 3;
9937 ((void (*)(val*, long))(var32->class->vft[COLOR_array__Array__with_capacity]))(var32, var33) /* with_capacity on <var32:Array[Object]>*/;
9938 var_34 = var32;
9939 if (varonce35) {
9940 var36 = varonce35;
9941 } else {
9942 var37 = "(&type_";
9943 var38 = 7;
9944 var39 = string__NativeString__to_s_with_length(var37, var38);
9945 var36 = var39;
9946 varonce35 = var36;
9947 }
9948 ((void (*)(val*, val*))(var_34->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_34, var36) /* add on <var_34:Array[Object]>*/;
9949 var40 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9950 var41 = ((val* (*)(val*))(var40->class->vft[COLOR_abstract_compiler__MType__c_name]))(var40) /* c_name on <var40:MType>*/;
9951 ((void (*)(val*, val*))(var_34->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_34, var41) /* add on <var_34:Array[Object]>*/;
9952 if (varonce42) {
9953 var43 = varonce42;
9954 } else {
9955 var44 = ")";
9956 var45 = 1;
9957 var46 = string__NativeString__to_s_with_length(var44, var45);
9958 var43 = var46;
9959 varonce42 = var43;
9960 }
9961 ((void (*)(val*, val*))(var_34->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_34, var43) /* add on <var_34:Array[Object]>*/;
9962 var47 = ((val* (*)(val*))(var_34->class->vft[COLOR_string__Object__to_s]))(var_34) /* to_s on <var_34:Array[Object]>*/;
9963 var = var47;
9964 goto RET_LABEL;
9965 }
9966 RET_LABEL:;
9967 return var;
9968 }
9969 /* method separate_compiler#SeparateCompilerVisitor#type_info for (self: Object, RuntimeVariable): String */
9970 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__type_info(val* self, val* p0) {
9971 val* var /* : String */;
9972 val* var1 /* : String */;
9973 var1 = separate_compiler__SeparateCompilerVisitor__type_info(self, p0);
9974 var = var1;
9975 RET_LABEL:;
9976 return var;
9977 }