pep8analysis: intro the web interface
[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 val* var106 /* : Set[MType] */;
560 val* var107 /* : Iterator[nullable Object] */;
561 short int var108 /* : Bool */;
562 val* var109 /* : nullable Object */;
563 val* var_t110 /* var t: MType */;
564 short int var111 /* : Bool */;
565 long var113 /* : Int */;
566 long var_time1 /* var time1: Int */;
567 val* var114 /* : ToolContext */;
568 static val* varonce115;
569 val* var116 /* : String */;
570 char* var117 /* : NativeString */;
571 long var118 /* : Int */;
572 val* var119 /* : String */;
573 long var120 /* : Int */;
574 long var122 /* : Int */;
575 static val* varonce123;
576 val* var124 /* : String */;
577 char* var125 /* : NativeString */;
578 long var126 /* : Int */;
579 val* var127 /* : String */;
580 val* var128 /* : Array[Object] */;
581 long var129 /* : Int */;
582 val* var130 /* : NativeArray[Object] */;
583 val* var131 /* : Object */;
584 val* var132 /* : String */;
585 long var133 /* : Int */;
586 var_mainmodule = p0;
587 var_runtime_type_analysis = p1;
588 var = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
589 var_time0 = var;
590 var1 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
591 if (varonce) {
592 var2 = varonce;
593 } else {
594 var3 = "*** GENERATING C ***";
595 var4 = 20;
596 var5 = string__NativeString__to_s_with_length(var3, var4);
597 var2 = var5;
598 varonce = var2;
599 }
600 var6 = 1;
601 ((void (*)(val*, val*, long))(var1->class->vft[COLOR_toolcontext__ToolContext__info]))(var1, var2, var6) /* info on <var1:ToolContext>*/;
602 var7 = NEW_separate_compiler__SeparateCompiler(&type_separate_compiler__SeparateCompiler);
603 ((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>*/;
604 var_compiler = var7;
605 ((void (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__compile_header]))(var_compiler) /* compile_header on <var_compiler:SeparateCompiler>*/;
606 var8 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
607 if (varonce9) {
608 var10 = varonce9;
609 } else {
610 var11 = "Property coloring";
611 var12 = 17;
612 var13 = string__NativeString__to_s_with_length(var11, var12);
613 var10 = var13;
614 varonce9 = var10;
615 }
616 var14 = 2;
617 ((void (*)(val*, val*, long))(var8->class->vft[COLOR_toolcontext__ToolContext__info]))(var8, var10, var14) /* info on <var8:ToolContext>*/;
618 var15 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
619 if (varonce16) {
620 var17 = varonce16;
621 } else {
622 var18 = ".classes";
623 var19 = 8;
624 var20 = string__NativeString__to_s_with_length(var18, var19);
625 var17 = var20;
626 varonce16 = var17;
627 }
628 var21 = NEW_array__Array(&type_array__Arraykernel__Object);
629 { /* var21 = array_instance Array[Object] */
630 var22 = 2;
631 var23 = NEW_array__NativeArray(var22, &type_array__NativeArraykernel__Object);
632 ((struct instance_array__NativeArray*)var23)->values[0] = (val*) var15;
633 ((struct instance_array__NativeArray*)var23)->values[1] = (val*) var17;
634 ((void (*)(val*, val*, long))(var21->class->vft[COLOR_array__Array__with_native]))(var21, var23, var22) /* with_native on <var21:Array[Object]>*/;
635 }
636 var24 = ((val* (*)(val*))(var21->class->vft[COLOR_string__Object__to_s]))(var21) /* to_s on <var21:Array[Object]>*/;
637 var25 = ((val* (*)(val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_file]))(var_compiler, var24) /* new_file on <var_compiler:SeparateCompiler>*/;
638 var25;
639 ((void (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__do_property_coloring]))(var_compiler) /* do_property_coloring on <var_compiler:SeparateCompiler>*/;
640 var26 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mainmodule) /* in_importation on <var_mainmodule:MModule>*/;
641 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_poset__POSetElement__greaters]))(var26) /* greaters on <var26:POSetElement[MModule]>*/;
642 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Collection__iterator]))(var27) /* iterator on <var27:Collection[Object](Collection[MModule])>*/;
643 for(;;) {
644 var29 = ((short int (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var28) /* is_ok on <var28:Iterator[nullable Object]>*/;
645 if(!var29) break;
646 var30 = ((val* (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__item]))(var28) /* item on <var28:Iterator[nullable Object]>*/;
647 var_m = var30;
648 var31 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MModule__intro_mclasses]))(var_m) /* intro_mclasses on <var_m:MModule>*/;
649 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_abstract_collection__Collection__iterator]))(var31) /* iterator on <var31:Array[MClass]>*/;
650 for(;;) {
651 var33 = ((short int (*)(val*))(var32->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var32) /* is_ok on <var32:Iterator[nullable Object]>*/;
652 if(!var33) break;
653 var34 = ((val* (*)(val*))(var32->class->vft[COLOR_abstract_collection__Iterator__item]))(var32) /* item on <var32:Iterator[nullable Object]>*/;
654 var_mclass = var34;
655 var36 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:MClass>*/;
656 var37 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__abstract_kind]))(self) /* abstract_kind on <self:ModelBuilder>*/;
657 var38 = ((short int (*)(val*, val*))(var36->class->vft[COLOR_kernel__Object___61d_61d]))(var36, var37) /* == on <var36:MClassKind>*/;
658 var_ = var38;
659 if (var38){
660 var35 = var_;
661 } else {
662 var39 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:MClass>*/;
663 var40 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__interface_kind]))(self) /* interface_kind on <self:ModelBuilder>*/;
664 var41 = ((short int (*)(val*, val*))(var39->class->vft[COLOR_kernel__Object___61d_61d]))(var39, var40) /* == on <var39:MClassKind>*/;
665 var35 = var41;
666 }
667 if (var35){
668 goto CONTINUE_label;
669 } else {
670 }
671 ((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>*/;
672 CONTINUE_label: (void)0;
673 ((void (*)(val*))(var32->class->vft[COLOR_abstract_collection__Iterator__next]))(var32) /* next on <var32:Iterator[nullable Object]>*/;
674 }
675 BREAK_label: (void)0;
676 CONTINUE_label42: (void)0;
677 ((void (*)(val*))(var28->class->vft[COLOR_abstract_collection__Iterator__next]))(var28) /* next on <var28:Iterator[nullable Object]>*/;
678 }
679 BREAK_label42: (void)0;
680 var43 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
681 if (varonce44) {
682 var45 = varonce44;
683 } else {
684 var46 = ".main";
685 var47 = 5;
686 var48 = string__NativeString__to_s_with_length(var46, var47);
687 var45 = var48;
688 varonce44 = var45;
689 }
690 var49 = NEW_array__Array(&type_array__Arraykernel__Object);
691 { /* var49 = array_instance Array[Object] */
692 var50 = 2;
693 var51 = NEW_array__NativeArray(var50, &type_array__NativeArraykernel__Object);
694 ((struct instance_array__NativeArray*)var51)->values[0] = (val*) var43;
695 ((struct instance_array__NativeArray*)var51)->values[1] = (val*) var45;
696 ((void (*)(val*, val*, long))(var49->class->vft[COLOR_array__Array__with_native]))(var49, var51, var50) /* with_native on <var49:Array[Object]>*/;
697 }
698 var52 = ((val* (*)(val*))(var49->class->vft[COLOR_string__Object__to_s]))(var49) /* to_s on <var49:Array[Object]>*/;
699 var53 = ((val* (*)(val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_file]))(var_compiler, var52) /* new_file on <var_compiler:SeparateCompiler>*/;
700 var53;
701 ((void (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__compile_main_function]))(var_compiler) /* compile_main_function on <var_compiler:SeparateCompiler>*/;
702 var54 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__in_importation]))(var_mainmodule) /* in_importation on <var_mainmodule:MModule>*/;
703 var55 = ((val* (*)(val*))(var54->class->vft[COLOR_poset__POSetElement__greaters]))(var54) /* greaters on <var54:POSetElement[MModule]>*/;
704 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_abstract_collection__Collection__iterator]))(var55) /* iterator on <var55:Collection[Object](Collection[MModule])>*/;
705 for(;;) {
706 var57 = ((short int (*)(val*))(var56->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var56) /* is_ok on <var56:Iterator[nullable Object]>*/;
707 if(!var57) break;
708 var58 = ((val* (*)(val*))(var56->class->vft[COLOR_abstract_collection__Iterator__item]))(var56) /* item on <var56:Iterator[nullable Object]>*/;
709 var_m59 = var58;
710 var60 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
711 if (varonce61) {
712 var62 = varonce61;
713 } else {
714 var63 = "Generate C for module ";
715 var64 = 22;
716 var65 = string__NativeString__to_s_with_length(var63, var64);
717 var62 = var65;
718 varonce61 = var62;
719 }
720 var66 = NEW_array__Array(&type_array__Arraykernel__Object);
721 { /* var66 = array_instance Array[Object] */
722 var67 = 2;
723 var68 = NEW_array__NativeArray(var67, &type_array__NativeArraykernel__Object);
724 ((struct instance_array__NativeArray*)var68)->values[0] = (val*) var62;
725 ((struct instance_array__NativeArray*)var68)->values[1] = (val*) var_m59;
726 ((void (*)(val*, val*, long))(var66->class->vft[COLOR_array__Array__with_native]))(var66, var68, var67) /* with_native on <var66:Array[Object]>*/;
727 }
728 var69 = ((val* (*)(val*))(var66->class->vft[COLOR_string__Object__to_s]))(var66) /* to_s on <var66:Array[Object]>*/;
729 var70 = 2;
730 ((void (*)(val*, val*, long))(var60->class->vft[COLOR_toolcontext__ToolContext__info]))(var60, var69, var70) /* info on <var60:ToolContext>*/;
731 var71 = ((val* (*)(val*))(var_m59->class->vft[COLOR_mmodule__MModule__name]))(var_m59) /* name on <var_m59:MModule>*/;
732 if (varonce72) {
733 var73 = varonce72;
734 } else {
735 var74 = ".sep";
736 var75 = 4;
737 var76 = string__NativeString__to_s_with_length(var74, var75);
738 var73 = var76;
739 varonce72 = var73;
740 }
741 var77 = NEW_array__Array(&type_array__Arraykernel__Object);
742 { /* var77 = array_instance Array[Object] */
743 var78 = 2;
744 var79 = NEW_array__NativeArray(var78, &type_array__NativeArraykernel__Object);
745 ((struct instance_array__NativeArray*)var79)->values[0] = (val*) var71;
746 ((struct instance_array__NativeArray*)var79)->values[1] = (val*) var73;
747 ((void (*)(val*, val*, long))(var77->class->vft[COLOR_array__Array__with_native]))(var77, var79, var78) /* with_native on <var77:Array[Object]>*/;
748 }
749 var80 = ((val* (*)(val*))(var77->class->vft[COLOR_string__Object__to_s]))(var77) /* to_s on <var77:Array[Object]>*/;
750 var81 = ((val* (*)(val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_file]))(var_compiler, var80) /* new_file on <var_compiler:SeparateCompiler>*/;
751 var81;
752 ((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>*/;
753 CONTINUE_label82: (void)0;
754 ((void (*)(val*))(var56->class->vft[COLOR_abstract_collection__Iterator__next]))(var56) /* next on <var56:Iterator[nullable Object]>*/;
755 }
756 BREAK_label82: (void)0;
757 var83 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
758 if (varonce84) {
759 var85 = varonce84;
760 } else {
761 var86 = "Type coloring";
762 var87 = 13;
763 var88 = string__NativeString__to_s_with_length(var86, var87);
764 var85 = var88;
765 varonce84 = var85;
766 }
767 var89 = 2;
768 ((void (*)(val*, val*, long))(var83->class->vft[COLOR_toolcontext__ToolContext__info]))(var83, var85, var89) /* info on <var83:ToolContext>*/;
769 var90 = ((val* (*)(val*))(var_mainmodule->class->vft[COLOR_mmodule__MModule__name]))(var_mainmodule) /* name on <var_mainmodule:MModule>*/;
770 if (varonce91) {
771 var92 = varonce91;
772 } else {
773 var93 = ".types";
774 var94 = 6;
775 var95 = string__NativeString__to_s_with_length(var93, var94);
776 var92 = var95;
777 varonce91 = var92;
778 }
779 var96 = NEW_array__Array(&type_array__Arraykernel__Object);
780 { /* var96 = array_instance Array[Object] */
781 var97 = 2;
782 var98 = NEW_array__NativeArray(var97, &type_array__NativeArraykernel__Object);
783 ((struct instance_array__NativeArray*)var98)->values[0] = (val*) var90;
784 ((struct instance_array__NativeArray*)var98)->values[1] = (val*) var92;
785 ((void (*)(val*, val*, long))(var96->class->vft[COLOR_array__Array__with_native]))(var96, var98, var97) /* with_native on <var96:Array[Object]>*/;
786 }
787 var99 = ((val* (*)(val*))(var96->class->vft[COLOR_string__Object__to_s]))(var96) /* to_s on <var96:Array[Object]>*/;
788 var100 = ((val* (*)(val*, val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_file]))(var_compiler, var99) /* new_file on <var_compiler:SeparateCompiler>*/;
789 var100;
790 var101 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__do_type_coloring]))(var_compiler) /* do_type_coloring on <var_compiler:SeparateCompiler>*/;
791 var_mtypes = var101;
792 var102 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:POSet[MType]>*/;
793 for(;;) {
794 var103 = ((short int (*)(val*))(var102->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var102) /* is_ok on <var102:Iterator[nullable Object]>*/;
795 if(!var103) break;
796 var104 = ((val* (*)(val*))(var102->class->vft[COLOR_abstract_collection__Iterator__item]))(var102) /* item on <var102:Iterator[nullable Object]>*/;
797 var_t = var104;
798 ((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>*/;
799 CONTINUE_label105: (void)0;
800 ((void (*)(val*))(var102->class->vft[COLOR_abstract_collection__Iterator__next]))(var102) /* next on <var102:Iterator[nullable Object]>*/;
801 }
802 BREAK_label105: (void)0;
803 var106 = ((val* (*)(val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__undead_types]))(var_compiler) /* undead_types on <var_compiler:SeparateCompiler>*/;
804 var107 = ((val* (*)(val*))(var106->class->vft[COLOR_abstract_collection__Collection__iterator]))(var106) /* iterator on <var106:Set[MType]>*/;
805 for(;;) {
806 var108 = ((short int (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var107) /* is_ok on <var107:Iterator[nullable Object]>*/;
807 if(!var108) break;
808 var109 = ((val* (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__item]))(var107) /* item on <var107:Iterator[nullable Object]>*/;
809 var_t110 = var109;
810 var111 = ((short int (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__has]))(var_mtypes, var_t110) /* has on <var_mtypes:POSet[MType]>*/;
811 if (var111){
812 goto CONTINUE_label112;
813 } else {
814 }
815 ((void (*)(val*, val*))(var_compiler->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_type_to_c]))(var_compiler, var_t110) /* compile_type_to_c on <var_compiler:SeparateCompiler>*/;
816 CONTINUE_label112: (void)0;
817 ((void (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__next]))(var107) /* next on <var107:Iterator[nullable Object]>*/;
818 }
819 BREAK_label112: (void)0;
820 ((void (*)(val*))(var_compiler->class->vft[COLOR_abstract_compiler__AbstractCompiler__display_stats]))(var_compiler) /* display_stats on <var_compiler:SeparateCompiler>*/;
821 var113 = ((long (*)(val*))(self->class->vft[COLOR_time__Object__get_time]))(self) /* get_time on <self:ModelBuilder>*/;
822 var_time1 = var113;
823 var114 = ((val* (*)(val*))(self->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(self) /* toolcontext on <self:ModelBuilder>*/;
824 if (varonce115) {
825 var116 = varonce115;
826 } else {
827 var117 = "*** END GENERATING C: ";
828 var118 = 22;
829 var119 = string__NativeString__to_s_with_length(var117, var118);
830 var116 = var119;
831 varonce115 = var116;
832 }
833 { /* Inline kernel#Int#- (var_time1,var_time0) */
834 var122 = var_time1 - var_time0;
835 var120 = var122;
836 goto RET_LABEL121;
837 RET_LABEL121:(void)0;
838 }
839 if (varonce123) {
840 var124 = varonce123;
841 } else {
842 var125 = " ***";
843 var126 = 4;
844 var127 = string__NativeString__to_s_with_length(var125, var126);
845 var124 = var127;
846 varonce123 = var124;
847 }
848 var128 = NEW_array__Array(&type_array__Arraykernel__Object);
849 { /* var128 = array_instance Array[Object] */
850 var129 = 3;
851 var130 = NEW_array__NativeArray(var129, &type_array__NativeArraykernel__Object);
852 ((struct instance_array__NativeArray*)var130)->values[0] = (val*) var116;
853 var131 = BOX_kernel__Int(var120); /* autobox from Int to Object */
854 ((struct instance_array__NativeArray*)var130)->values[1] = (val*) var131;
855 ((struct instance_array__NativeArray*)var130)->values[2] = (val*) var124;
856 ((void (*)(val*, val*, long))(var128->class->vft[COLOR_array__Array__with_native]))(var128, var130, var129) /* with_native on <var128:Array[Object]>*/;
857 }
858 var132 = ((val* (*)(val*))(var128->class->vft[COLOR_string__Object__to_s]))(var128) /* to_s on <var128:Array[Object]>*/;
859 var133 = 2;
860 ((void (*)(val*, val*, long))(var114->class->vft[COLOR_toolcontext__ToolContext__info]))(var114, var132, var133) /* info on <var114:ToolContext>*/;
861 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__ModelBuilder__write_and_make]))(self, var_compiler) /* write_and_make on <self:ModelBuilder>*/;
862 RET_LABEL:;
863 }
864 /* method separate_compiler#ModelBuilder#run_separate_compiler for (self: Object, MModule, nullable RapidTypeAnalysis) */
865 void VIRTUAL_separate_compiler__ModelBuilder__run_separate_compiler(val* self, val* p0, val* p1) {
866 separate_compiler__ModelBuilder__run_separate_compiler(self, p0, p1);
867 RET_LABEL:;
868 }
869 /* method separate_compiler#SeparateCompiler#runtime_type_analysis for (self: SeparateCompiler): nullable RapidTypeAnalysis */
870 val* separate_compiler__SeparateCompiler__runtime_type_analysis(val* self) {
871 val* var /* : nullable RapidTypeAnalysis */;
872 val* var1 /* : nullable RapidTypeAnalysis */;
873 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64druntime_type_analysis].val; /* @runtime_type_analysis on <self:SeparateCompiler> */
874 var = var1;
875 RET_LABEL:;
876 return var;
877 }
878 /* method separate_compiler#SeparateCompiler#runtime_type_analysis for (self: Object): nullable RapidTypeAnalysis */
879 val* VIRTUAL_separate_compiler__SeparateCompiler__runtime_type_analysis(val* self) {
880 val* var /* : nullable RapidTypeAnalysis */;
881 val* var1 /* : nullable RapidTypeAnalysis */;
882 var1 = separate_compiler__SeparateCompiler__runtime_type_analysis(self);
883 var = var1;
884 RET_LABEL:;
885 return var;
886 }
887 /* method separate_compiler#SeparateCompiler#runtime_type_analysis= for (self: SeparateCompiler, nullable RapidTypeAnalysis) */
888 void separate_compiler__SeparateCompiler__runtime_type_analysis_61d(val* self, val* p0) {
889 self->attrs[COLOR_separate_compiler__SeparateCompiler___64druntime_type_analysis].val = p0; /* @runtime_type_analysis on <self:SeparateCompiler> */
890 RET_LABEL:;
891 }
892 /* method separate_compiler#SeparateCompiler#runtime_type_analysis= for (self: Object, nullable RapidTypeAnalysis) */
893 void VIRTUAL_separate_compiler__SeparateCompiler__runtime_type_analysis_61d(val* self, val* p0) {
894 separate_compiler__SeparateCompiler__runtime_type_analysis_61d(self, p0);
895 RET_LABEL:;
896 }
897 /* method separate_compiler#SeparateCompiler#undead_types for (self: SeparateCompiler): Set[MType] */
898 val* separate_compiler__SeparateCompiler__undead_types(val* self) {
899 val* var /* : Set[MType] */;
900 val* var1 /* : Set[MType] */;
901 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dundead_types].val; /* @undead_types on <self:SeparateCompiler> */
902 if (var1 == NULL) {
903 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @undead_types");
904 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 120);
905 show_backtrace(1);
906 }
907 var = var1;
908 RET_LABEL:;
909 return var;
910 }
911 /* method separate_compiler#SeparateCompiler#undead_types for (self: Object): Set[MType] */
912 val* VIRTUAL_separate_compiler__SeparateCompiler__undead_types(val* self) {
913 val* var /* : Set[MType] */;
914 val* var1 /* : Set[MType] */;
915 var1 = separate_compiler__SeparateCompiler__undead_types(self);
916 var = var1;
917 RET_LABEL:;
918 return var;
919 }
920 /* method separate_compiler#SeparateCompiler#undead_types= for (self: SeparateCompiler, Set[MType]) */
921 void separate_compiler__SeparateCompiler__undead_types_61d(val* self, val* p0) {
922 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dundead_types].val = p0; /* @undead_types on <self:SeparateCompiler> */
923 RET_LABEL:;
924 }
925 /* method separate_compiler#SeparateCompiler#undead_types= for (self: Object, Set[MType]) */
926 void VIRTUAL_separate_compiler__SeparateCompiler__undead_types_61d(val* self, val* p0) {
927 separate_compiler__SeparateCompiler__undead_types_61d(self, p0);
928 RET_LABEL:;
929 }
930 /* method separate_compiler#SeparateCompiler#live_unresolved_types for (self: SeparateCompiler): Map[MClassDef, Set[MType]] */
931 val* separate_compiler__SeparateCompiler__live_unresolved_types(val* self) {
932 val* var /* : Map[MClassDef, Set[MType]] */;
933 val* var1 /* : Map[MClassDef, Set[MType]] */;
934 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dlive_unresolved_types].val; /* @live_unresolved_types on <self:SeparateCompiler> */
935 if (var1 == NULL) {
936 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @live_unresolved_types");
937 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 121);
938 show_backtrace(1);
939 }
940 var = var1;
941 RET_LABEL:;
942 return var;
943 }
944 /* method separate_compiler#SeparateCompiler#live_unresolved_types for (self: Object): Map[MClassDef, Set[MType]] */
945 val* VIRTUAL_separate_compiler__SeparateCompiler__live_unresolved_types(val* self) {
946 val* var /* : Map[MClassDef, Set[MType]] */;
947 val* var1 /* : Map[MClassDef, Set[MType]] */;
948 var1 = separate_compiler__SeparateCompiler__live_unresolved_types(self);
949 var = var1;
950 RET_LABEL:;
951 return var;
952 }
953 /* method separate_compiler#SeparateCompiler#live_unresolved_types= for (self: SeparateCompiler, Map[MClassDef, Set[MType]]) */
954 void separate_compiler__SeparateCompiler__live_unresolved_types_61d(val* self, val* p0) {
955 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dlive_unresolved_types].val = p0; /* @live_unresolved_types on <self:SeparateCompiler> */
956 RET_LABEL:;
957 }
958 /* method separate_compiler#SeparateCompiler#live_unresolved_types= for (self: Object, Map[MClassDef, Set[MType]]) */
959 void VIRTUAL_separate_compiler__SeparateCompiler__live_unresolved_types_61d(val* self, val* p0) {
960 separate_compiler__SeparateCompiler__live_unresolved_types_61d(self, p0);
961 RET_LABEL:;
962 }
963 /* method separate_compiler#SeparateCompiler#type_layout for (self: SeparateCompiler): nullable Layout[MType] */
964 val* separate_compiler__SeparateCompiler__type_layout(val* self) {
965 val* var /* : nullable Layout[MType] */;
966 val* var1 /* : nullable Layout[MType] */;
967 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dtype_layout].val; /* @type_layout on <self:SeparateCompiler> */
968 var = var1;
969 RET_LABEL:;
970 return var;
971 }
972 /* method separate_compiler#SeparateCompiler#type_layout for (self: Object): nullable Layout[MType] */
973 val* VIRTUAL_separate_compiler__SeparateCompiler__type_layout(val* self) {
974 val* var /* : nullable Layout[MType] */;
975 val* var1 /* : nullable Layout[MType] */;
976 var1 = separate_compiler__SeparateCompiler__type_layout(self);
977 var = var1;
978 RET_LABEL:;
979 return var;
980 }
981 /* method separate_compiler#SeparateCompiler#type_layout= for (self: SeparateCompiler, nullable Layout[MType]) */
982 void separate_compiler__SeparateCompiler__type_layout_61d(val* self, val* p0) {
983 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dtype_layout].val = p0; /* @type_layout on <self:SeparateCompiler> */
984 RET_LABEL:;
985 }
986 /* method separate_compiler#SeparateCompiler#type_layout= for (self: Object, nullable Layout[MType]) */
987 void VIRTUAL_separate_compiler__SeparateCompiler__type_layout_61d(val* self, val* p0) {
988 separate_compiler__SeparateCompiler__type_layout_61d(self, p0);
989 RET_LABEL:;
990 }
991 /* method separate_compiler#SeparateCompiler#resolution_layout for (self: SeparateCompiler): nullable Layout[MType] */
992 val* separate_compiler__SeparateCompiler__resolution_layout(val* self) {
993 val* var /* : nullable Layout[MType] */;
994 val* var1 /* : nullable Layout[MType] */;
995 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dresolution_layout].val; /* @resolution_layout on <self:SeparateCompiler> */
996 var = var1;
997 RET_LABEL:;
998 return var;
999 }
1000 /* method separate_compiler#SeparateCompiler#resolution_layout for (self: Object): nullable Layout[MType] */
1001 val* VIRTUAL_separate_compiler__SeparateCompiler__resolution_layout(val* self) {
1002 val* var /* : nullable Layout[MType] */;
1003 val* var1 /* : nullable Layout[MType] */;
1004 var1 = separate_compiler__SeparateCompiler__resolution_layout(self);
1005 var = var1;
1006 RET_LABEL:;
1007 return var;
1008 }
1009 /* method separate_compiler#SeparateCompiler#resolution_layout= for (self: SeparateCompiler, nullable Layout[MType]) */
1010 void separate_compiler__SeparateCompiler__resolution_layout_61d(val* self, val* p0) {
1011 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dresolution_layout].val = p0; /* @resolution_layout on <self:SeparateCompiler> */
1012 RET_LABEL:;
1013 }
1014 /* method separate_compiler#SeparateCompiler#resolution_layout= for (self: Object, nullable Layout[MType]) */
1015 void VIRTUAL_separate_compiler__SeparateCompiler__resolution_layout_61d(val* self, val* p0) {
1016 separate_compiler__SeparateCompiler__resolution_layout_61d(self, p0);
1017 RET_LABEL:;
1018 }
1019 /* method separate_compiler#SeparateCompiler#method_layout for (self: SeparateCompiler): nullable Layout[PropertyLayoutElement] */
1020 val* separate_compiler__SeparateCompiler__method_layout(val* self) {
1021 val* var /* : nullable Layout[PropertyLayoutElement] */;
1022 val* var1 /* : nullable Layout[PropertyLayoutElement] */;
1023 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dmethod_layout].val; /* @method_layout on <self:SeparateCompiler> */
1024 var = var1;
1025 RET_LABEL:;
1026 return var;
1027 }
1028 /* method separate_compiler#SeparateCompiler#method_layout for (self: Object): nullable Layout[PropertyLayoutElement] */
1029 val* VIRTUAL_separate_compiler__SeparateCompiler__method_layout(val* self) {
1030 val* var /* : nullable Layout[PropertyLayoutElement] */;
1031 val* var1 /* : nullable Layout[PropertyLayoutElement] */;
1032 var1 = separate_compiler__SeparateCompiler__method_layout(self);
1033 var = var1;
1034 RET_LABEL:;
1035 return var;
1036 }
1037 /* method separate_compiler#SeparateCompiler#method_layout= for (self: SeparateCompiler, nullable Layout[PropertyLayoutElement]) */
1038 void separate_compiler__SeparateCompiler__method_layout_61d(val* self, val* p0) {
1039 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dmethod_layout].val = p0; /* @method_layout on <self:SeparateCompiler> */
1040 RET_LABEL:;
1041 }
1042 /* method separate_compiler#SeparateCompiler#method_layout= for (self: Object, nullable Layout[PropertyLayoutElement]) */
1043 void VIRTUAL_separate_compiler__SeparateCompiler__method_layout_61d(val* self, val* p0) {
1044 separate_compiler__SeparateCompiler__method_layout_61d(self, p0);
1045 RET_LABEL:;
1046 }
1047 /* method separate_compiler#SeparateCompiler#attr_layout for (self: SeparateCompiler): nullable Layout[MAttribute] */
1048 val* separate_compiler__SeparateCompiler__attr_layout(val* self) {
1049 val* var /* : nullable Layout[MAttribute] */;
1050 val* var1 /* : nullable Layout[MAttribute] */;
1051 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dattr_layout].val; /* @attr_layout on <self:SeparateCompiler> */
1052 var = var1;
1053 RET_LABEL:;
1054 return var;
1055 }
1056 /* method separate_compiler#SeparateCompiler#attr_layout for (self: Object): nullable Layout[MAttribute] */
1057 val* VIRTUAL_separate_compiler__SeparateCompiler__attr_layout(val* self) {
1058 val* var /* : nullable Layout[MAttribute] */;
1059 val* var1 /* : nullable Layout[MAttribute] */;
1060 var1 = separate_compiler__SeparateCompiler__attr_layout(self);
1061 var = var1;
1062 RET_LABEL:;
1063 return var;
1064 }
1065 /* method separate_compiler#SeparateCompiler#attr_layout= for (self: SeparateCompiler, nullable Layout[MAttribute]) */
1066 void separate_compiler__SeparateCompiler__attr_layout_61d(val* self, val* p0) {
1067 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dattr_layout].val = p0; /* @attr_layout on <self:SeparateCompiler> */
1068 RET_LABEL:;
1069 }
1070 /* method separate_compiler#SeparateCompiler#attr_layout= for (self: Object, nullable Layout[MAttribute]) */
1071 void VIRTUAL_separate_compiler__SeparateCompiler__attr_layout_61d(val* self, val* p0) {
1072 separate_compiler__SeparateCompiler__attr_layout_61d(self, p0);
1073 RET_LABEL:;
1074 }
1075 /* method separate_compiler#SeparateCompiler#init for (self: SeparateCompiler, MModule, ModelBuilder, nullable RapidTypeAnalysis) */
1076 void separate_compiler__SeparateCompiler__init(val* self, val* p0, val* p1, val* p2) {
1077 val* var_mainmodule /* var mainmodule: MModule */;
1078 val* var_mmbuilder /* var mmbuilder: ModelBuilder */;
1079 val* var_runtime_type_analysis /* var runtime_type_analysis: nullable RapidTypeAnalysis */;
1080 static val* varonce;
1081 val* var /* : String */;
1082 char* var1 /* : NativeString */;
1083 long var2 /* : Int */;
1084 val* var3 /* : String */;
1085 val* var4 /* : CodeFile */;
1086 val* var_file /* var file: CodeFile */;
1087 val* var5 /* : CodeWriter */;
1088 var_mainmodule = p0;
1089 var_mmbuilder = p1;
1090 var_runtime_type_analysis = p2;
1091 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__init]))(self, var_mainmodule, var_mmbuilder) /* init on <self:SeparateCompiler>*/;
1092 if (varonce) {
1093 var = varonce;
1094 } else {
1095 var1 = "nit.common";
1096 var2 = 10;
1097 var3 = string__NativeString__to_s_with_length(var1, var2);
1098 var = var3;
1099 varonce = var;
1100 }
1101 var4 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_file]))(self, var) /* new_file on <self:SeparateCompiler>*/;
1102 var_file = var4;
1103 var5 = NEW_abstract_compiler__CodeWriter(&type_abstract_compiler__CodeWriter);
1104 ((void (*)(val*, val*))(var5->class->vft[COLOR_abstract_compiler__CodeWriter__init]))(var5, var_file) /* init on <var5:CodeWriter>*/;
1105 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header_61d]))(self, var5) /* header= on <self:SeparateCompiler>*/;
1106 ((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>*/;
1107 ((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_box_kinds]))(self) /* compile_box_kinds on <self:SeparateCompiler>*/;
1108 RET_LABEL:;
1109 }
1110 /* method separate_compiler#SeparateCompiler#init for (self: Object, MModule, ModelBuilder, nullable RapidTypeAnalysis) */
1111 void VIRTUAL_separate_compiler__SeparateCompiler__init(val* self, val* p0, val* p1, val* p2) {
1112 separate_compiler__SeparateCompiler__init(self, p0, p1, p2);
1113 RET_LABEL:;
1114 }
1115 /* method separate_compiler#SeparateCompiler#compile_header_structs for (self: SeparateCompiler) */
1116 void separate_compiler__SeparateCompiler__compile_header_structs(val* self) {
1117 val* var /* : CodeWriter */;
1118 static val* varonce;
1119 val* var1 /* : String */;
1120 char* var2 /* : NativeString */;
1121 long var3 /* : Int */;
1122 val* var4 /* : String */;
1123 val* var5 /* : CodeWriter */;
1124 static val* varonce6;
1125 val* var7 /* : String */;
1126 char* var8 /* : NativeString */;
1127 long var9 /* : Int */;
1128 val* var10 /* : String */;
1129 val* var11 /* : CodeWriter */;
1130 static val* varonce12;
1131 val* var13 /* : String */;
1132 char* var14 /* : NativeString */;
1133 long var15 /* : Int */;
1134 val* var16 /* : String */;
1135 val* var17 /* : CodeWriter */;
1136 static val* varonce18;
1137 val* var19 /* : String */;
1138 char* var20 /* : NativeString */;
1139 long var21 /* : Int */;
1140 val* var22 /* : String */;
1141 short int var23 /* : Bool */;
1142 val* var24 /* : ModelBuilder */;
1143 val* var25 /* : ToolContext */;
1144 val* var26 /* : OptionBool */;
1145 val* var27 /* : nullable Object */;
1146 short int var28 /* : Bool */;
1147 short int var_ /* var : Bool */;
1148 val* var29 /* : ModelBuilder */;
1149 val* var30 /* : ToolContext */;
1150 val* var31 /* : OptionBool */;
1151 val* var32 /* : nullable Object */;
1152 short int var33 /* : Bool */;
1153 val* var34 /* : CodeWriter */;
1154 static val* varonce35;
1155 val* var36 /* : String */;
1156 char* var37 /* : NativeString */;
1157 long var38 /* : Int */;
1158 val* var39 /* : String */;
1159 val* var40 /* : CodeWriter */;
1160 static val* varonce41;
1161 val* var42 /* : String */;
1162 char* var43 /* : NativeString */;
1163 long var44 /* : Int */;
1164 val* var45 /* : String */;
1165 val* var46 /* : ModelBuilder */;
1166 val* var47 /* : ToolContext */;
1167 val* var48 /* : OptionBool */;
1168 val* var49 /* : nullable Object */;
1169 short int var50 /* : Bool */;
1170 val* var51 /* : CodeWriter */;
1171 static val* varonce52;
1172 val* var53 /* : String */;
1173 char* var54 /* : NativeString */;
1174 long var55 /* : Int */;
1175 val* var56 /* : String */;
1176 val* var57 /* : ModelBuilder */;
1177 val* var58 /* : ToolContext */;
1178 val* var59 /* : OptionBool */;
1179 val* var60 /* : nullable Object */;
1180 short int var61 /* : Bool */;
1181 val* var62 /* : CodeWriter */;
1182 static val* varonce63;
1183 val* var64 /* : String */;
1184 char* var65 /* : NativeString */;
1185 long var66 /* : Int */;
1186 val* var67 /* : String */;
1187 val* var68 /* : CodeWriter */;
1188 static val* varonce69;
1189 val* var70 /* : String */;
1190 char* var71 /* : NativeString */;
1191 long var72 /* : Int */;
1192 val* var73 /* : String */;
1193 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1194 if (varonce) {
1195 var1 = varonce;
1196 } else {
1197 var2 = "typedef void(*nitmethod_t)(void); /* general C type representing a Nit method. */";
1198 var3 = 81;
1199 var4 = string__NativeString__to_s_with_length(var2, var3);
1200 var1 = var4;
1201 varonce = var1;
1202 }
1203 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var, var1) /* add_decl on <var:CodeWriter>*/;
1204 ((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_header_attribute_structs]))(self) /* compile_header_attribute_structs on <self:SeparateCompiler>*/;
1205 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1206 if (varonce6) {
1207 var7 = varonce6;
1208 } else {
1209 var8 = "struct class { int box_kind; nitmethod_t vft[]; }; /* general C type representing a Nit class. */";
1210 var9 = 97;
1211 var10 = string__NativeString__to_s_with_length(var8, var9);
1212 var7 = var10;
1213 varonce6 = var7;
1214 }
1215 ((void (*)(val*, val*))(var5->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var5, var7) /* add_decl on <var5:CodeWriter>*/;
1216 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1217 if (varonce12) {
1218 var13 = varonce12;
1219 } else {
1220 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. */";
1221 var15 = 194;
1222 var16 = string__NativeString__to_s_with_length(var14, var15);
1223 var13 = var16;
1224 varonce12 = var13;
1225 }
1226 ((void (*)(val*, val*))(var11->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var11, var13) /* add_decl on <var11:CodeWriter>*/;
1227 var17 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1228 if (varonce18) {
1229 var19 = varonce18;
1230 } else {
1231 var20 = "struct instance { const struct type *type; const struct class *class; nitattribute_t attrs[]; }; /* general C type representing a Nit instance. */";
1232 var21 = 146;
1233 var22 = string__NativeString__to_s_with_length(var20, var21);
1234 var19 = var22;
1235 varonce18 = var19;
1236 }
1237 ((void (*)(val*, val*))(var17->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var17, var19) /* add_decl on <var17:CodeWriter>*/;
1238 var24 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
1239 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var24) /* toolcontext on <var24:ModelBuilder>*/;
1240 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var25) /* opt_phmod_typing on <var25:ToolContext>*/;
1241 var27 = ((val* (*)(val*))(var26->class->vft[COLOR_opts__Option__value]))(var26) /* value on <var26:OptionBool>*/;
1242 var28 = ((struct instance_kernel__Bool*)var27)->value; /* autounbox from nullable Object to Bool */;
1243 var_ = var28;
1244 if (var28){
1245 var23 = var_;
1246 } else {
1247 var29 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
1248 var30 = ((val* (*)(val*))(var29->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var29) /* toolcontext on <var29:ModelBuilder>*/;
1249 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var30) /* opt_phand_typing on <var30:ToolContext>*/;
1250 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_opts__Option__value]))(var31) /* value on <var31:OptionBool>*/;
1251 var33 = ((struct instance_kernel__Bool*)var32)->value; /* autounbox from nullable Object to Bool */;
1252 var23 = var33;
1253 }
1254 if (var23){
1255 var34 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1256 if (varonce35) {
1257 var36 = varonce35;
1258 } else {
1259 var37 = "struct types { int mask; const struct type *types[]; }; /* a list types (used for vts, fts and unresolved lists). */";
1260 var38 = 116;
1261 var39 = string__NativeString__to_s_with_length(var37, var38);
1262 var36 = var39;
1263 varonce35 = var36;
1264 }
1265 ((void (*)(val*, val*))(var34->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var34, var36) /* add_decl on <var34:CodeWriter>*/;
1266 } else {
1267 var40 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1268 if (varonce41) {
1269 var42 = varonce41;
1270 } else {
1271 var43 = "struct types { int dummy; const struct type *types[]; }; /* a list types (used for vts, fts and unresolved lists). */";
1272 var44 = 117;
1273 var45 = string__NativeString__to_s_with_length(var43, var44);
1274 var42 = var45;
1275 varonce41 = var42;
1276 }
1277 ((void (*)(val*, val*))(var40->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var40, var42) /* add_decl on <var40:CodeWriter>*/;
1278 }
1279 var46 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
1280 var47 = ((val* (*)(val*))(var46->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var46) /* toolcontext on <var46:ModelBuilder>*/;
1281 var48 = ((val* (*)(val*))(var47->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var47) /* opt_phmod_typing on <var47:ToolContext>*/;
1282 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_opts__Option__value]))(var48) /* value on <var48:OptionBool>*/;
1283 var50 = ((struct instance_kernel__Bool*)var49)->value; /* autounbox from nullable Object to Bool */;
1284 if (var50){
1285 var51 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1286 if (varonce52) {
1287 var53 = varonce52;
1288 } else {
1289 var54 = "#define HASH(mask, id) ((mask)%(id))";
1290 var55 = 36;
1291 var56 = string__NativeString__to_s_with_length(var54, var55);
1292 var53 = var56;
1293 varonce52 = var53;
1294 }
1295 ((void (*)(val*, val*))(var51->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var51, var53) /* add_decl on <var51:CodeWriter>*/;
1296 } else {
1297 var57 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
1298 var58 = ((val* (*)(val*))(var57->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var57) /* toolcontext on <var57:ModelBuilder>*/;
1299 var59 = ((val* (*)(val*))(var58->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var58) /* opt_phand_typing on <var58:ToolContext>*/;
1300 var60 = ((val* (*)(val*))(var59->class->vft[COLOR_opts__Option__value]))(var59) /* value on <var59:OptionBool>*/;
1301 var61 = ((struct instance_kernel__Bool*)var60)->value; /* autounbox from nullable Object to Bool */;
1302 if (var61){
1303 var62 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1304 if (varonce63) {
1305 var64 = varonce63;
1306 } else {
1307 var65 = "#define HASH(mask, id) ((mask)&(id))";
1308 var66 = 36;
1309 var67 = string__NativeString__to_s_with_length(var65, var66);
1310 var64 = var67;
1311 varonce63 = var64;
1312 }
1313 ((void (*)(val*, val*))(var62->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var62, var64) /* add_decl on <var62:CodeWriter>*/;
1314 } else {
1315 }
1316 }
1317 var68 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1318 if (varonce69) {
1319 var70 = varonce69;
1320 } else {
1321 var71 = "typedef struct instance val; /* general C type representing a Nit instance. */";
1322 var72 = 78;
1323 var73 = string__NativeString__to_s_with_length(var71, var72);
1324 var70 = var73;
1325 varonce69 = var70;
1326 }
1327 ((void (*)(val*, val*))(var68->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var68, var70) /* add_decl on <var68:CodeWriter>*/;
1328 RET_LABEL:;
1329 }
1330 /* method separate_compiler#SeparateCompiler#compile_header_structs for (self: Object) */
1331 void VIRTUAL_separate_compiler__SeparateCompiler__compile_header_structs(val* self) {
1332 separate_compiler__SeparateCompiler__compile_header_structs(self);
1333 RET_LABEL:;
1334 }
1335 /* method separate_compiler#SeparateCompiler#compile_header_attribute_structs for (self: SeparateCompiler) */
1336 void separate_compiler__SeparateCompiler__compile_header_attribute_structs(val* self) {
1337 val* var /* : ModelBuilder */;
1338 val* var1 /* : ToolContext */;
1339 val* var2 /* : OptionBool */;
1340 val* var3 /* : nullable Object */;
1341 short int var4 /* : Bool */;
1342 val* var5 /* : CodeWriter */;
1343 static val* varonce;
1344 val* var6 /* : String */;
1345 char* var7 /* : NativeString */;
1346 long var8 /* : Int */;
1347 val* var9 /* : String */;
1348 val* var10 /* : CodeWriter */;
1349 static val* varonce11;
1350 val* var12 /* : String */;
1351 char* var13 /* : NativeString */;
1352 long var14 /* : Int */;
1353 val* var15 /* : String */;
1354 val* var16 /* : CodeWriter */;
1355 static val* varonce17;
1356 val* var18 /* : String */;
1357 char* var19 /* : NativeString */;
1358 long var20 /* : Int */;
1359 val* var21 /* : String */;
1360 val* var22 /* : HashMap[MClass, Int] */;
1361 val* var23 /* : MapIterator[Object, nullable Object] */;
1362 short int var24 /* : Bool */;
1363 val* var25 /* : Object */;
1364 val* var_c /* var c: MClass */;
1365 val* var26 /* : nullable Object */;
1366 long var_v /* var v: Int */;
1367 long var27 /* : Int */;
1368 val* var28 /* : MClassType */;
1369 val* var_t /* var t: MClassType */;
1370 val* var29 /* : CodeWriter */;
1371 val* var30 /* : String */;
1372 static val* varonce31;
1373 val* var32 /* : String */;
1374 char* var33 /* : NativeString */;
1375 long var34 /* : Int */;
1376 val* var35 /* : String */;
1377 val* var36 /* : String */;
1378 static val* varonce37;
1379 val* var38 /* : String */;
1380 char* var39 /* : NativeString */;
1381 long var40 /* : Int */;
1382 val* var41 /* : String */;
1383 val* var42 /* : Array[Object] */;
1384 long var43 /* : Int */;
1385 val* var44 /* : NativeArray[Object] */;
1386 val* var45 /* : String */;
1387 val* var46 /* : CodeWriter */;
1388 static val* varonce47;
1389 val* var48 /* : String */;
1390 char* var49 /* : NativeString */;
1391 long var50 /* : Int */;
1392 val* var51 /* : String */;
1393 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
1394 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
1395 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_separate_compiler__ToolContext__opt_no_union_attribute]))(var1) /* opt_no_union_attribute on <var1:ToolContext>*/;
1396 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_opts__Option__value]))(var2) /* value on <var2:OptionBool>*/;
1397 var4 = ((struct instance_kernel__Bool*)var3)->value; /* autounbox from nullable Object to Bool */;
1398 if (var4){
1399 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1400 if (varonce) {
1401 var6 = varonce;
1402 } else {
1403 var7 = "typedef void* nitattribute_t; /* general C type representing a Nit attribute. */";
1404 var8 = 80;
1405 var9 = string__NativeString__to_s_with_length(var7, var8);
1406 var6 = var9;
1407 varonce = var6;
1408 }
1409 ((void (*)(val*, val*))(var5->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var5, var6) /* add_decl on <var5:CodeWriter>*/;
1410 } else {
1411 var10 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1412 if (varonce11) {
1413 var12 = varonce11;
1414 } else {
1415 var13 = "typedef union {";
1416 var14 = 15;
1417 var15 = string__NativeString__to_s_with_length(var13, var14);
1418 var12 = var15;
1419 varonce11 = var12;
1420 }
1421 ((void (*)(val*, val*))(var10->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var10, var12) /* add_decl on <var10:CodeWriter>*/;
1422 var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1423 if (varonce17) {
1424 var18 = varonce17;
1425 } else {
1426 var19 = "void* val;";
1427 var20 = 10;
1428 var21 = string__NativeString__to_s_with_length(var19, var20);
1429 var18 = var21;
1430 varonce17 = var18;
1431 }
1432 ((void (*)(val*, val*))(var16->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var16, var18) /* add_decl on <var16:CodeWriter>*/;
1433 var22 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
1434 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var22) /* iterator on <var22:HashMap[MClass, Int]>*/;
1435 for(;;) {
1436 var24 = ((short int (*)(val*))(var23->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var23) /* is_ok on <var23:MapIterator[Object, nullable Object]>*/;
1437 if(!var24) break;
1438 var25 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__MapIterator__key]))(var23) /* key on <var23:MapIterator[Object, nullable Object]>*/;
1439 var_c = var25;
1440 var26 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__MapIterator__item]))(var23) /* item on <var23:MapIterator[Object, nullable Object]>*/;
1441 var27 = ((struct instance_kernel__Int*)var26)->value; /* autounbox from nullable Object to Int */;
1442 var_v = var27;
1443 var28 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__mclass_type]))(var_c) /* mclass_type on <var_c:MClass>*/;
1444 var_t = var28;
1445 var29 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1446 var30 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_t) /* ctype on <var_t:MClassType>*/;
1447 if (varonce31) {
1448 var32 = varonce31;
1449 } else {
1450 var33 = " ";
1451 var34 = 1;
1452 var35 = string__NativeString__to_s_with_length(var33, var34);
1453 var32 = var35;
1454 varonce31 = var32;
1455 }
1456 var36 = ((val* (*)(val*))(var_t->class->vft[COLOR_abstract_compiler__MType__ctypename]))(var_t) /* ctypename on <var_t:MClassType>*/;
1457 if (varonce37) {
1458 var38 = varonce37;
1459 } else {
1460 var39 = ";";
1461 var40 = 1;
1462 var41 = string__NativeString__to_s_with_length(var39, var40);
1463 var38 = var41;
1464 varonce37 = var38;
1465 }
1466 var42 = NEW_array__Array(&type_array__Arraykernel__Object);
1467 { /* var42 = array_instance Array[Object] */
1468 var43 = 4;
1469 var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
1470 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var30;
1471 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var32;
1472 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var36;
1473 ((struct instance_array__NativeArray*)var44)->values[3] = (val*) var38;
1474 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
1475 }
1476 var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
1477 ((void (*)(val*, val*))(var29->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var29, var45) /* add_decl on <var29:CodeWriter>*/;
1478 CONTINUE_label: (void)0;
1479 ((void (*)(val*))(var23->class->vft[COLOR_abstract_collection__MapIterator__next]))(var23) /* next on <var23:MapIterator[Object, nullable Object]>*/;
1480 }
1481 BREAK_label: (void)0;
1482 var46 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
1483 if (varonce47) {
1484 var48 = varonce47;
1485 } else {
1486 var49 = "} nitattribute_t; /* general C type representing a Nit attribute. */";
1487 var50 = 68;
1488 var51 = string__NativeString__to_s_with_length(var49, var50);
1489 var48 = var51;
1490 varonce47 = var48;
1491 }
1492 ((void (*)(val*, val*))(var46->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var46, var48) /* add_decl on <var46:CodeWriter>*/;
1493 }
1494 RET_LABEL:;
1495 }
1496 /* method separate_compiler#SeparateCompiler#compile_header_attribute_structs for (self: Object) */
1497 void VIRTUAL_separate_compiler__SeparateCompiler__compile_header_attribute_structs(val* self) {
1498 separate_compiler__SeparateCompiler__compile_header_attribute_structs(self);
1499 RET_LABEL:;
1500 }
1501 /* method separate_compiler#SeparateCompiler#compile_box_kinds for (self: SeparateCompiler) */
1502 void separate_compiler__SeparateCompiler__compile_box_kinds(val* self) {
1503 val* var /* : Array[String] */;
1504 long var1 /* : Int */;
1505 val* var_ /* var : Array[String] */;
1506 static val* varonce;
1507 val* var2 /* : String */;
1508 char* var3 /* : NativeString */;
1509 long var4 /* : Int */;
1510 val* var5 /* : String */;
1511 static val* varonce6;
1512 val* var7 /* : String */;
1513 char* var8 /* : NativeString */;
1514 long var9 /* : Int */;
1515 val* var10 /* : String */;
1516 static val* varonce11;
1517 val* var12 /* : String */;
1518 char* var13 /* : NativeString */;
1519 long var14 /* : Int */;
1520 val* var15 /* : String */;
1521 static val* varonce16;
1522 val* var17 /* : String */;
1523 char* var18 /* : NativeString */;
1524 long var19 /* : Int */;
1525 val* var20 /* : String */;
1526 static val* varonce21;
1527 val* var22 /* : String */;
1528 char* var23 /* : NativeString */;
1529 long var24 /* : Int */;
1530 val* var25 /* : String */;
1531 static val* varonce26;
1532 val* var27 /* : String */;
1533 char* var28 /* : NativeString */;
1534 long var29 /* : Int */;
1535 val* var30 /* : String */;
1536 val* var31 /* : Iterator[nullable Object] */;
1537 short int var32 /* : Bool */;
1538 val* var33 /* : nullable Object */;
1539 val* var_classname /* var classname: String */;
1540 val* var34 /* : MModule */;
1541 val* var35 /* : Model */;
1542 val* var36 /* : nullable Array[MClass] */;
1543 val* var_classes /* var classes: nullable Array[MClass] */;
1544 val* var37 /* : null */;
1545 short int var38 /* : Bool */;
1546 long var39 /* : Int */;
1547 long var40 /* : Int */;
1548 short int var41 /* : Bool */;
1549 short int var43 /* : Bool */;
1550 static val* varonce44;
1551 val* var45 /* : String */;
1552 char* var46 /* : NativeString */;
1553 long var47 /* : Int */;
1554 val* var48 /* : String */;
1555 val* var49 /* : String */;
1556 val* var50 /* : HashMap[MClass, Int] */;
1557 val* var51 /* : nullable Object */;
1558 val* var52 /* : HashMap[MClass, Int] */;
1559 long var53 /* : Int */;
1560 long var54 /* : Int */;
1561 long var55 /* : Int */;
1562 long var57 /* : Int */;
1563 val* var58 /* : nullable Object */;
1564 var = NEW_array__Array(&type_array__Arraystring__String);
1565 var1 = 6;
1566 ((void (*)(val*, long))(var->class->vft[COLOR_array__Array__with_capacity]))(var, var1) /* with_capacity on <var:Array[String]>*/;
1567 var_ = var;
1568 if (varonce) {
1569 var2 = varonce;
1570 } else {
1571 var3 = "Int";
1572 var4 = 3;
1573 var5 = string__NativeString__to_s_with_length(var3, var4);
1574 var2 = var5;
1575 varonce = var2;
1576 }
1577 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var2) /* push on <var_:Array[String]>*/;
1578 if (varonce6) {
1579 var7 = varonce6;
1580 } else {
1581 var8 = "Bool";
1582 var9 = 4;
1583 var10 = string__NativeString__to_s_with_length(var8, var9);
1584 var7 = var10;
1585 varonce6 = var7;
1586 }
1587 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var7) /* push on <var_:Array[String]>*/;
1588 if (varonce11) {
1589 var12 = varonce11;
1590 } else {
1591 var13 = "Char";
1592 var14 = 4;
1593 var15 = string__NativeString__to_s_with_length(var13, var14);
1594 var12 = var15;
1595 varonce11 = var12;
1596 }
1597 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var12) /* push on <var_:Array[String]>*/;
1598 if (varonce16) {
1599 var17 = varonce16;
1600 } else {
1601 var18 = "Float";
1602 var19 = 5;
1603 var20 = string__NativeString__to_s_with_length(var18, var19);
1604 var17 = var20;
1605 varonce16 = var17;
1606 }
1607 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var17) /* push on <var_:Array[String]>*/;
1608 if (varonce21) {
1609 var22 = varonce21;
1610 } else {
1611 var23 = "NativeString";
1612 var24 = 12;
1613 var25 = string__NativeString__to_s_with_length(var23, var24);
1614 var22 = var25;
1615 varonce21 = var22;
1616 }
1617 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var22) /* push on <var_:Array[String]>*/;
1618 if (varonce26) {
1619 var27 = varonce26;
1620 } else {
1621 var28 = "Pointer";
1622 var29 = 7;
1623 var30 = string__NativeString__to_s_with_length(var28, var29);
1624 var27 = var30;
1625 varonce26 = var27;
1626 }
1627 ((void (*)(val*, val*))(var_->class->vft[COLOR_abstract_collection__Sequence__push]))(var_, var27) /* push on <var_:Array[String]>*/;
1628 var31 = ((val* (*)(val*))(var_->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_) /* iterator on <var_:Array[String]>*/;
1629 for(;;) {
1630 var32 = ((short int (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var31) /* is_ok on <var31:Iterator[nullable Object]>*/;
1631 if(!var32) break;
1632 var33 = ((val* (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__item]))(var31) /* item on <var31:Iterator[nullable Object]>*/;
1633 var_classname = var33;
1634 var34 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
1635 var35 = ((val* (*)(val*))(var34->class->vft[COLOR_mmodule__MModule__model]))(var34) /* model on <var34:MModule>*/;
1636 var36 = ((val* (*)(val*, val*))(var35->class->vft[COLOR_model__Model__get_mclasses_by_name]))(var35, var_classname) /* get_mclasses_by_name on <var35:Model>*/;
1637 var_classes = var36;
1638 var37 = NULL;
1639 if (var_classes == NULL) {
1640 var38 = 1; /* is null */
1641 } else {
1642 var38 = 0; /* arg is null but recv is not */
1643 }
1644 if (var38){
1645 goto CONTINUE_label;
1646 } else {
1647 }
1648 var39 = ((long (*)(val*))(var_classes->class->vft[COLOR_abstract_collection__Collection__length]))(var_classes) /* length on <var_classes:nullable Array[MClass](Array[MClass])>*/;
1649 var40 = 1;
1650 { /* Inline kernel#Int#== (var39,var40) */
1651 var43 = var39 == var40;
1652 var41 = var43;
1653 goto RET_LABEL42;
1654 RET_LABEL42:(void)0;
1655 }
1656 if (!var41) {
1657 if (varonce44) {
1658 var45 = varonce44;
1659 } else {
1660 var46 = ", ";
1661 var47 = 2;
1662 var48 = string__NativeString__to_s_with_length(var46, var47);
1663 var45 = var48;
1664 varonce44 = var45;
1665 }
1666 var49 = ((val* (*)(val*, val*))(var_classes->class->vft[COLOR_string__Collection__join]))(var_classes, var45) /* join on <var_classes:nullable Array[MClass](Array[MClass])>*/;
1667 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var49) /* print on <self:SeparateCompiler>*/;
1668 fprintf(stderr, "Runtime error: %s", "Assert failed");
1669 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 182);
1670 show_backtrace(1);
1671 }
1672 var50 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
1673 var51 = ((val* (*)(val*))(var_classes->class->vft[COLOR_abstract_collection__Collection__first]))(var_classes) /* first on <var_classes:nullable Array[MClass](Array[MClass])>*/;
1674 var52 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
1675 var53 = ((long (*)(val*))(var52->class->vft[COLOR_abstract_collection__MapRead__length]))(var52) /* length on <var52:HashMap[MClass, Int]>*/;
1676 var54 = 1;
1677 { /* Inline kernel#Int#+ (var53,var54) */
1678 var57 = var53 + var54;
1679 var55 = var57;
1680 goto RET_LABEL56;
1681 RET_LABEL56:(void)0;
1682 }
1683 var58 = BOX_kernel__Int(var55); /* autobox from Int to nullable Object */
1684 ((void (*)(val*, val*, val*))(var50->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var50, var51, var58) /* []= on <var50:HashMap[MClass, Int]>*/;
1685 CONTINUE_label: (void)0;
1686 ((void (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__next]))(var31) /* next on <var31:Iterator[nullable Object]>*/;
1687 }
1688 BREAK_label: (void)0;
1689 RET_LABEL:;
1690 }
1691 /* method separate_compiler#SeparateCompiler#compile_box_kinds for (self: Object) */
1692 void VIRTUAL_separate_compiler__SeparateCompiler__compile_box_kinds(val* self) {
1693 separate_compiler__SeparateCompiler__compile_box_kinds(self);
1694 RET_LABEL:;
1695 }
1696 /* method separate_compiler#SeparateCompiler#box_kinds for (self: SeparateCompiler): HashMap[MClass, Int] */
1697 val* separate_compiler__SeparateCompiler__box_kinds(val* self) {
1698 val* var /* : HashMap[MClass, Int] */;
1699 val* var1 /* : HashMap[MClass, Int] */;
1700 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dbox_kinds].val; /* @box_kinds on <self:SeparateCompiler> */
1701 if (var1 == NULL) {
1702 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @box_kinds");
1703 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 187);
1704 show_backtrace(1);
1705 }
1706 var = var1;
1707 RET_LABEL:;
1708 return var;
1709 }
1710 /* method separate_compiler#SeparateCompiler#box_kinds for (self: Object): HashMap[MClass, Int] */
1711 val* VIRTUAL_separate_compiler__SeparateCompiler__box_kinds(val* self) {
1712 val* var /* : HashMap[MClass, Int] */;
1713 val* var1 /* : HashMap[MClass, Int] */;
1714 var1 = separate_compiler__SeparateCompiler__box_kinds(self);
1715 var = var1;
1716 RET_LABEL:;
1717 return var;
1718 }
1719 /* method separate_compiler#SeparateCompiler#box_kinds= for (self: SeparateCompiler, HashMap[MClass, Int]) */
1720 void separate_compiler__SeparateCompiler__box_kinds_61d(val* self, val* p0) {
1721 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dbox_kinds].val = p0; /* @box_kinds on <self:SeparateCompiler> */
1722 RET_LABEL:;
1723 }
1724 /* method separate_compiler#SeparateCompiler#box_kinds= for (self: Object, HashMap[MClass, Int]) */
1725 void VIRTUAL_separate_compiler__SeparateCompiler__box_kinds_61d(val* self, val* p0) {
1726 separate_compiler__SeparateCompiler__box_kinds_61d(self, p0);
1727 RET_LABEL:;
1728 }
1729 /* method separate_compiler#SeparateCompiler#box_kind_of for (self: SeparateCompiler, MClass): Int */
1730 long separate_compiler__SeparateCompiler__box_kind_of(val* self, val* p0) {
1731 long var /* : Int */;
1732 val* var_mclass /* var mclass: MClass */;
1733 val* var1 /* : MClassType */;
1734 val* var2 /* : String */;
1735 static val* varonce;
1736 val* var3 /* : String */;
1737 char* var4 /* : NativeString */;
1738 long var5 /* : Int */;
1739 val* var6 /* : String */;
1740 short int var7 /* : Bool */;
1741 long var8 /* : Int */;
1742 val* var9 /* : MClassKind */;
1743 val* var10 /* : MClassKind */;
1744 short int var11 /* : Bool */;
1745 val* var12 /* : HashMap[MClass, Int] */;
1746 val* var13 /* : MModule */;
1747 static val* varonce14;
1748 val* var15 /* : String */;
1749 char* var16 /* : NativeString */;
1750 long var17 /* : Int */;
1751 val* var18 /* : String */;
1752 val* var19 /* : MClass */;
1753 val* var20 /* : nullable Object */;
1754 long var21 /* : Int */;
1755 val* var22 /* : HashMap[MClass, Int] */;
1756 val* var23 /* : nullable Object */;
1757 long var24 /* : Int */;
1758 var_mclass = p0;
1759 var1 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclass_type]))(var_mclass) /* mclass_type on <var_mclass:MClass>*/;
1760 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__MType__ctype]))(var1) /* ctype on <var1:MClassType>*/;
1761 if (varonce) {
1762 var3 = varonce;
1763 } else {
1764 var4 = "val*";
1765 var5 = 4;
1766 var6 = string__NativeString__to_s_with_length(var4, var5);
1767 var3 = var6;
1768 varonce = var3;
1769 }
1770 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___61d_61d]))(var2, var3) /* == on <var2:String>*/;
1771 if (var7){
1772 var8 = 0;
1773 var = var8;
1774 goto RET_LABEL;
1775 } else {
1776 var9 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__kind]))(var_mclass) /* kind on <var_mclass:MClass>*/;
1777 var10 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:SeparateCompiler>*/;
1778 var11 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_kernel__Object___61d_61d]))(var9, var10) /* == on <var9:MClassKind>*/;
1779 if (var11){
1780 var12 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
1781 var13 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
1782 if (varonce14) {
1783 var15 = varonce14;
1784 } else {
1785 var16 = "Pointer";
1786 var17 = 7;
1787 var18 = string__NativeString__to_s_with_length(var16, var17);
1788 var15 = var18;
1789 varonce14 = var15;
1790 }
1791 var19 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_model__MModule__get_primitive_class]))(var13, var15) /* get_primitive_class on <var13:MModule>*/;
1792 var20 = ((val* (*)(val*, val*))(var12->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var12, var19) /* [] on <var12:HashMap[MClass, Int]>*/;
1793 var21 = ((struct instance_kernel__Int*)var20)->value; /* autounbox from nullable Object to Int */;
1794 var = var21;
1795 goto RET_LABEL;
1796 } else {
1797 var22 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
1798 var23 = ((val* (*)(val*, val*))(var22->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var22, var_mclass) /* [] on <var22:HashMap[MClass, Int]>*/;
1799 var24 = ((struct instance_kernel__Int*)var23)->value; /* autounbox from nullable Object to Int */;
1800 var = var24;
1801 goto RET_LABEL;
1802 }
1803 }
1804 RET_LABEL:;
1805 return var;
1806 }
1807 /* method separate_compiler#SeparateCompiler#box_kind_of for (self: Object, MClass): Int */
1808 long VIRTUAL_separate_compiler__SeparateCompiler__box_kind_of(val* self, val* p0) {
1809 long var /* : Int */;
1810 long var1 /* : Int */;
1811 var1 = separate_compiler__SeparateCompiler__box_kind_of(self, p0);
1812 var = var1;
1813 RET_LABEL:;
1814 return var;
1815 }
1816 /* method separate_compiler#SeparateCompiler#compile_color_consts for (self: SeparateCompiler, Map[Object, Int]) */
1817 void separate_compiler__SeparateCompiler__compile_color_consts(val* self, val* p0) {
1818 val* var_colors /* var colors: Map[Object, Int] */;
1819 val* var /* : AbstractCompilerVisitor */;
1820 val* var_v /* var v: SeparateCompilerVisitor */;
1821 val* var1 /* : MapIterator[Object, nullable Object] */;
1822 short int var2 /* : Bool */;
1823 val* var3 /* : Object */;
1824 val* var_m /* var m: Object */;
1825 val* var4 /* : nullable Object */;
1826 long var_c /* var c: Int */;
1827 long var5 /* : Int */;
1828 var_colors = p0;
1829 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:SeparateCompiler>*/;
1830 var_v = var;
1831 var1 = ((val* (*)(val*))(var_colors->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_colors) /* iterator on <var_colors:Map[Object, Int]>*/;
1832 for(;;) {
1833 var2 = ((short int (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var1) /* is_ok on <var1:MapIterator[Object, nullable Object]>*/;
1834 if(!var2) break;
1835 var3 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapIterator__key]))(var1) /* key on <var1:MapIterator[Object, nullable Object]>*/;
1836 var_m = var3;
1837 var4 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapIterator__item]))(var1) /* item on <var1:MapIterator[Object, nullable Object]>*/;
1838 var5 = ((struct instance_kernel__Int*)var4)->value; /* autounbox from nullable Object to Int */;
1839 var_c = var5;
1840 ((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>*/;
1841 CONTINUE_label: (void)0;
1842 ((void (*)(val*))(var1->class->vft[COLOR_abstract_collection__MapIterator__next]))(var1) /* next on <var1:MapIterator[Object, nullable Object]>*/;
1843 }
1844 BREAK_label: (void)0;
1845 RET_LABEL:;
1846 }
1847 /* method separate_compiler#SeparateCompiler#compile_color_consts for (self: Object, Map[Object, Int]) */
1848 void VIRTUAL_separate_compiler__SeparateCompiler__compile_color_consts(val* self, val* p0) {
1849 separate_compiler__SeparateCompiler__compile_color_consts(self, p0);
1850 RET_LABEL:;
1851 }
1852 /* method separate_compiler#SeparateCompiler#compile_color_const for (self: SeparateCompiler, SeparateCompilerVisitor, Object, Int) */
1853 void separate_compiler__SeparateCompiler__compile_color_const(val* self, val* p0, val* p1, long p2) {
1854 val* var_v /* var v: SeparateCompilerVisitor */;
1855 val* var_m /* var m: Object */;
1856 long var_color /* var color: Int */;
1857 val* var /* : HashSet[Object] */;
1858 short int var1 /* : Bool */;
1859 short int var2 /* : Bool */;
1860 int cltype;
1861 int idtype;
1862 val* var3 /* : ModelBuilder */;
1863 val* var4 /* : ToolContext */;
1864 val* var5 /* : OptionBool */;
1865 val* var6 /* : nullable Object */;
1866 short int var7 /* : Bool */;
1867 val* var8 /* : String */;
1868 static val* varonce;
1869 val* var9 /* : String */;
1870 char* var10 /* : NativeString */;
1871 long var11 /* : Int */;
1872 val* var12 /* : String */;
1873 val* var13 /* : String */;
1874 static val* varonce14;
1875 val* var15 /* : String */;
1876 char* var16 /* : NativeString */;
1877 long var17 /* : Int */;
1878 val* var18 /* : String */;
1879 val* var19 /* : Array[Object] */;
1880 long var20 /* : Int */;
1881 val* var21 /* : NativeArray[Object] */;
1882 val* var22 /* : Object */;
1883 val* var23 /* : String */;
1884 val* var24 /* : String */;
1885 static val* varonce25;
1886 val* var26 /* : String */;
1887 char* var27 /* : NativeString */;
1888 long var28 /* : Int */;
1889 val* var29 /* : String */;
1890 val* var30 /* : String */;
1891 static val* varonce31;
1892 val* var32 /* : String */;
1893 char* var33 /* : NativeString */;
1894 long var34 /* : Int */;
1895 val* var35 /* : String */;
1896 val* var36 /* : Array[Object] */;
1897 long var37 /* : Int */;
1898 val* var38 /* : NativeArray[Object] */;
1899 val* var39 /* : String */;
1900 static val* varonce40;
1901 val* var41 /* : String */;
1902 char* var42 /* : NativeString */;
1903 long var43 /* : Int */;
1904 val* var44 /* : String */;
1905 val* var45 /* : String */;
1906 static val* varonce46;
1907 val* var47 /* : String */;
1908 char* var48 /* : NativeString */;
1909 long var49 /* : Int */;
1910 val* var50 /* : String */;
1911 static val* varonce51;
1912 val* var52 /* : String */;
1913 char* var53 /* : NativeString */;
1914 long var54 /* : Int */;
1915 val* var55 /* : String */;
1916 val* var56 /* : Array[Object] */;
1917 long var57 /* : Int */;
1918 val* var58 /* : NativeArray[Object] */;
1919 val* var59 /* : Object */;
1920 val* var60 /* : String */;
1921 short int var61 /* : Bool */;
1922 int cltype62;
1923 int idtype63;
1924 val* var64 /* : ModelBuilder */;
1925 val* var65 /* : ToolContext */;
1926 val* var66 /* : OptionBool */;
1927 val* var67 /* : nullable Object */;
1928 short int var68 /* : Bool */;
1929 val* var69 /* : String */;
1930 static val* varonce70;
1931 val* var71 /* : String */;
1932 char* var72 /* : NativeString */;
1933 long var73 /* : Int */;
1934 val* var74 /* : String */;
1935 val* var75 /* : String */;
1936 static val* varonce76;
1937 val* var77 /* : String */;
1938 char* var78 /* : NativeString */;
1939 long var79 /* : Int */;
1940 val* var80 /* : String */;
1941 val* var81 /* : Array[Object] */;
1942 long var82 /* : Int */;
1943 val* var83 /* : NativeArray[Object] */;
1944 val* var84 /* : Object */;
1945 val* var85 /* : String */;
1946 val* var86 /* : String */;
1947 static val* varonce87;
1948 val* var88 /* : String */;
1949 char* var89 /* : NativeString */;
1950 long var90 /* : Int */;
1951 val* var91 /* : String */;
1952 val* var92 /* : String */;
1953 static val* varonce93;
1954 val* var94 /* : String */;
1955 char* var95 /* : NativeString */;
1956 long var96 /* : Int */;
1957 val* var97 /* : String */;
1958 val* var98 /* : Array[Object] */;
1959 long var99 /* : Int */;
1960 val* var100 /* : NativeArray[Object] */;
1961 val* var101 /* : String */;
1962 static val* varonce102;
1963 val* var103 /* : String */;
1964 char* var104 /* : NativeString */;
1965 long var105 /* : Int */;
1966 val* var106 /* : String */;
1967 val* var107 /* : String */;
1968 static val* varonce108;
1969 val* var109 /* : String */;
1970 char* var110 /* : NativeString */;
1971 long var111 /* : Int */;
1972 val* var112 /* : String */;
1973 static val* varonce113;
1974 val* var114 /* : String */;
1975 char* var115 /* : NativeString */;
1976 long var116 /* : Int */;
1977 val* var117 /* : String */;
1978 val* var118 /* : Array[Object] */;
1979 long var119 /* : Int */;
1980 val* var120 /* : NativeArray[Object] */;
1981 val* var121 /* : Object */;
1982 val* var122 /* : String */;
1983 short int var123 /* : Bool */;
1984 int cltype124;
1985 int idtype125;
1986 val* var126 /* : ModelBuilder */;
1987 val* var127 /* : ToolContext */;
1988 val* var128 /* : OptionBool */;
1989 val* var129 /* : nullable Object */;
1990 short int var130 /* : Bool */;
1991 val* var131 /* : String */;
1992 static val* varonce132;
1993 val* var133 /* : String */;
1994 char* var134 /* : NativeString */;
1995 long var135 /* : Int */;
1996 val* var136 /* : String */;
1997 val* var137 /* : String */;
1998 static val* varonce138;
1999 val* var139 /* : String */;
2000 char* var140 /* : NativeString */;
2001 long var141 /* : Int */;
2002 val* var142 /* : String */;
2003 val* var143 /* : Array[Object] */;
2004 long var144 /* : Int */;
2005 val* var145 /* : NativeArray[Object] */;
2006 val* var146 /* : Object */;
2007 val* var147 /* : String */;
2008 val* var148 /* : String */;
2009 static val* varonce149;
2010 val* var150 /* : String */;
2011 char* var151 /* : NativeString */;
2012 long var152 /* : Int */;
2013 val* var153 /* : String */;
2014 val* var154 /* : String */;
2015 static val* varonce155;
2016 val* var156 /* : String */;
2017 char* var157 /* : NativeString */;
2018 long var158 /* : Int */;
2019 val* var159 /* : String */;
2020 val* var160 /* : Array[Object] */;
2021 long var161 /* : Int */;
2022 val* var162 /* : NativeArray[Object] */;
2023 val* var163 /* : String */;
2024 static val* varonce164;
2025 val* var165 /* : String */;
2026 char* var166 /* : NativeString */;
2027 long var167 /* : Int */;
2028 val* var168 /* : String */;
2029 val* var169 /* : String */;
2030 static val* varonce170;
2031 val* var171 /* : String */;
2032 char* var172 /* : NativeString */;
2033 long var173 /* : Int */;
2034 val* var174 /* : String */;
2035 static val* varonce175;
2036 val* var176 /* : String */;
2037 char* var177 /* : NativeString */;
2038 long var178 /* : Int */;
2039 val* var179 /* : String */;
2040 val* var180 /* : Array[Object] */;
2041 long var181 /* : Int */;
2042 val* var182 /* : NativeArray[Object] */;
2043 val* var183 /* : Object */;
2044 val* var184 /* : String */;
2045 val* var185 /* : HashSet[Object] */;
2046 var_v = p0;
2047 var_m = p1;
2048 var_color = p2;
2049 var = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__color_consts_done]))(self) /* color_consts_done on <self:SeparateCompiler>*/;
2050 var1 = ((short int (*)(val*, val*))(var->class->vft[COLOR_abstract_collection__Collection__has]))(var, var_m) /* has on <var:HashSet[Object]>*/;
2051 if (var1){
2052 goto RET_LABEL;
2053 } else {
2054 }
2055 /* <var_m:Object> isa MProperty */
2056 cltype = type_model__MProperty.color;
2057 idtype = type_model__MProperty.id;
2058 if(cltype >= var_m->type->table_size) {
2059 var2 = 0;
2060 } else {
2061 var2 = var_m->type->type_table[cltype] == idtype;
2062 }
2063 if (var2){
2064 var3 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
2065 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var3) /* toolcontext on <var3:ModelBuilder>*/;
2066 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_separate_compiler__ToolContext__opt_inline_coloring_numbers]))(var4) /* opt_inline_coloring_numbers on <var4:ToolContext>*/;
2067 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_opts__Option__value]))(var5) /* value on <var5:OptionBool>*/;
2068 var7 = ((struct instance_kernel__Bool*)var6)->value; /* autounbox from nullable Object to Bool */;
2069 if (var7){
2070 var8 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_m) /* const_color on <var_m:Object(MProperty)>*/;
2071 if (varonce) {
2072 var9 = varonce;
2073 } else {
2074 var10 = "#define ";
2075 var11 = 8;
2076 var12 = string__NativeString__to_s_with_length(var10, var11);
2077 var9 = var12;
2078 varonce = var9;
2079 }
2080 var13 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_m) /* const_color on <var_m:Object(MProperty)>*/;
2081 if (varonce14) {
2082 var15 = varonce14;
2083 } else {
2084 var16 = " ";
2085 var17 = 1;
2086 var18 = string__NativeString__to_s_with_length(var16, var17);
2087 var15 = var18;
2088 varonce14 = var15;
2089 }
2090 var19 = NEW_array__Array(&type_array__Arraykernel__Object);
2091 { /* var19 = array_instance Array[Object] */
2092 var20 = 4;
2093 var21 = NEW_array__NativeArray(var20, &type_array__NativeArraykernel__Object);
2094 ((struct instance_array__NativeArray*)var21)->values[0] = (val*) var9;
2095 ((struct instance_array__NativeArray*)var21)->values[1] = (val*) var13;
2096 ((struct instance_array__NativeArray*)var21)->values[2] = (val*) var15;
2097 var22 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2098 ((struct instance_array__NativeArray*)var21)->values[3] = (val*) var22;
2099 ((void (*)(val*, val*, long))(var19->class->vft[COLOR_array__Array__with_native]))(var19, var21, var20) /* with_native on <var19:Array[Object]>*/;
2100 }
2101 var23 = ((val* (*)(val*))(var19->class->vft[COLOR_string__Object__to_s]))(var19) /* to_s on <var19:Array[Object]>*/;
2102 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var8, var23) /* provide_declaration on <self:SeparateCompiler>*/;
2103 } else {
2104 var24 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_m) /* const_color on <var_m:Object(MProperty)>*/;
2105 if (varonce25) {
2106 var26 = varonce25;
2107 } else {
2108 var27 = "extern const int ";
2109 var28 = 17;
2110 var29 = string__NativeString__to_s_with_length(var27, var28);
2111 var26 = var29;
2112 varonce25 = var26;
2113 }
2114 var30 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_m) /* const_color on <var_m:Object(MProperty)>*/;
2115 if (varonce31) {
2116 var32 = varonce31;
2117 } else {
2118 var33 = ";";
2119 var34 = 1;
2120 var35 = string__NativeString__to_s_with_length(var33, var34);
2121 var32 = var35;
2122 varonce31 = var32;
2123 }
2124 var36 = NEW_array__Array(&type_array__Arraykernel__Object);
2125 { /* var36 = array_instance Array[Object] */
2126 var37 = 3;
2127 var38 = NEW_array__NativeArray(var37, &type_array__NativeArraykernel__Object);
2128 ((struct instance_array__NativeArray*)var38)->values[0] = (val*) var26;
2129 ((struct instance_array__NativeArray*)var38)->values[1] = (val*) var30;
2130 ((struct instance_array__NativeArray*)var38)->values[2] = (val*) var32;
2131 ((void (*)(val*, val*, long))(var36->class->vft[COLOR_array__Array__with_native]))(var36, var38, var37) /* with_native on <var36:Array[Object]>*/;
2132 }
2133 var39 = ((val* (*)(val*))(var36->class->vft[COLOR_string__Object__to_s]))(var36) /* to_s on <var36:Array[Object]>*/;
2134 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var24, var39) /* provide_declaration on <self:SeparateCompiler>*/;
2135 if (varonce40) {
2136 var41 = varonce40;
2137 } else {
2138 var42 = "const int ";
2139 var43 = 10;
2140 var44 = string__NativeString__to_s_with_length(var42, var43);
2141 var41 = var44;
2142 varonce40 = var41;
2143 }
2144 var45 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MProperty__const_color]))(var_m) /* const_color on <var_m:Object(MProperty)>*/;
2145 if (varonce46) {
2146 var47 = varonce46;
2147 } else {
2148 var48 = " = ";
2149 var49 = 3;
2150 var50 = string__NativeString__to_s_with_length(var48, var49);
2151 var47 = var50;
2152 varonce46 = var47;
2153 }
2154 if (varonce51) {
2155 var52 = varonce51;
2156 } else {
2157 var53 = ";";
2158 var54 = 1;
2159 var55 = string__NativeString__to_s_with_length(var53, var54);
2160 var52 = var55;
2161 varonce51 = var52;
2162 }
2163 var56 = NEW_array__Array(&type_array__Arraykernel__Object);
2164 { /* var56 = array_instance Array[Object] */
2165 var57 = 5;
2166 var58 = NEW_array__NativeArray(var57, &type_array__NativeArraykernel__Object);
2167 ((struct instance_array__NativeArray*)var58)->values[0] = (val*) var41;
2168 ((struct instance_array__NativeArray*)var58)->values[1] = (val*) var45;
2169 ((struct instance_array__NativeArray*)var58)->values[2] = (val*) var47;
2170 var59 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2171 ((struct instance_array__NativeArray*)var58)->values[3] = (val*) var59;
2172 ((struct instance_array__NativeArray*)var58)->values[4] = (val*) var52;
2173 ((void (*)(val*, val*, long))(var56->class->vft[COLOR_array__Array__with_native]))(var56, var58, var57) /* with_native on <var56:Array[Object]>*/;
2174 }
2175 var60 = ((val* (*)(val*))(var56->class->vft[COLOR_string__Object__to_s]))(var56) /* to_s on <var56:Array[Object]>*/;
2176 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var60) /* add on <var_v:SeparateCompilerVisitor>*/;
2177 }
2178 } else {
2179 /* <var_m:Object> isa MPropDef */
2180 cltype62 = type_model__MPropDef.color;
2181 idtype63 = type_model__MPropDef.id;
2182 if(cltype62 >= var_m->type->table_size) {
2183 var61 = 0;
2184 } else {
2185 var61 = var_m->type->type_table[cltype62] == idtype63;
2186 }
2187 if (var61){
2188 var64 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
2189 var65 = ((val* (*)(val*))(var64->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var64) /* toolcontext on <var64:ModelBuilder>*/;
2190 var66 = ((val* (*)(val*))(var65->class->vft[COLOR_separate_compiler__ToolContext__opt_inline_coloring_numbers]))(var65) /* opt_inline_coloring_numbers on <var65:ToolContext>*/;
2191 var67 = ((val* (*)(val*))(var66->class->vft[COLOR_opts__Option__value]))(var66) /* value on <var66:OptionBool>*/;
2192 var68 = ((struct instance_kernel__Bool*)var67)->value; /* autounbox from nullable Object to Bool */;
2193 if (var68){
2194 var69 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:Object(MPropDef)>*/;
2195 if (varonce70) {
2196 var71 = varonce70;
2197 } else {
2198 var72 = "#define ";
2199 var73 = 8;
2200 var74 = string__NativeString__to_s_with_length(var72, var73);
2201 var71 = var74;
2202 varonce70 = var71;
2203 }
2204 var75 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:Object(MPropDef)>*/;
2205 if (varonce76) {
2206 var77 = varonce76;
2207 } else {
2208 var78 = " ";
2209 var79 = 1;
2210 var80 = string__NativeString__to_s_with_length(var78, var79);
2211 var77 = var80;
2212 varonce76 = var77;
2213 }
2214 var81 = NEW_array__Array(&type_array__Arraykernel__Object);
2215 { /* var81 = array_instance Array[Object] */
2216 var82 = 4;
2217 var83 = NEW_array__NativeArray(var82, &type_array__NativeArraykernel__Object);
2218 ((struct instance_array__NativeArray*)var83)->values[0] = (val*) var71;
2219 ((struct instance_array__NativeArray*)var83)->values[1] = (val*) var75;
2220 ((struct instance_array__NativeArray*)var83)->values[2] = (val*) var77;
2221 var84 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2222 ((struct instance_array__NativeArray*)var83)->values[3] = (val*) var84;
2223 ((void (*)(val*, val*, long))(var81->class->vft[COLOR_array__Array__with_native]))(var81, var83, var82) /* with_native on <var81:Array[Object]>*/;
2224 }
2225 var85 = ((val* (*)(val*))(var81->class->vft[COLOR_string__Object__to_s]))(var81) /* to_s on <var81:Array[Object]>*/;
2226 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var69, var85) /* provide_declaration on <self:SeparateCompiler>*/;
2227 } else {
2228 var86 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:Object(MPropDef)>*/;
2229 if (varonce87) {
2230 var88 = varonce87;
2231 } else {
2232 var89 = "extern const int ";
2233 var90 = 17;
2234 var91 = string__NativeString__to_s_with_length(var89, var90);
2235 var88 = var91;
2236 varonce87 = var88;
2237 }
2238 var92 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:Object(MPropDef)>*/;
2239 if (varonce93) {
2240 var94 = varonce93;
2241 } else {
2242 var95 = ";";
2243 var96 = 1;
2244 var97 = string__NativeString__to_s_with_length(var95, var96);
2245 var94 = var97;
2246 varonce93 = var94;
2247 }
2248 var98 = NEW_array__Array(&type_array__Arraykernel__Object);
2249 { /* var98 = array_instance Array[Object] */
2250 var99 = 3;
2251 var100 = NEW_array__NativeArray(var99, &type_array__NativeArraykernel__Object);
2252 ((struct instance_array__NativeArray*)var100)->values[0] = (val*) var88;
2253 ((struct instance_array__NativeArray*)var100)->values[1] = (val*) var92;
2254 ((struct instance_array__NativeArray*)var100)->values[2] = (val*) var94;
2255 ((void (*)(val*, val*, long))(var98->class->vft[COLOR_array__Array__with_native]))(var98, var100, var99) /* with_native on <var98:Array[Object]>*/;
2256 }
2257 var101 = ((val* (*)(val*))(var98->class->vft[COLOR_string__Object__to_s]))(var98) /* to_s on <var98:Array[Object]>*/;
2258 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var86, var101) /* provide_declaration on <self:SeparateCompiler>*/;
2259 if (varonce102) {
2260 var103 = varonce102;
2261 } else {
2262 var104 = "const int ";
2263 var105 = 10;
2264 var106 = string__NativeString__to_s_with_length(var104, var105);
2265 var103 = var106;
2266 varonce102 = var103;
2267 }
2268 var107 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MPropDef__const_color]))(var_m) /* const_color on <var_m:Object(MPropDef)>*/;
2269 if (varonce108) {
2270 var109 = varonce108;
2271 } else {
2272 var110 = " = ";
2273 var111 = 3;
2274 var112 = string__NativeString__to_s_with_length(var110, var111);
2275 var109 = var112;
2276 varonce108 = var109;
2277 }
2278 if (varonce113) {
2279 var114 = varonce113;
2280 } else {
2281 var115 = ";";
2282 var116 = 1;
2283 var117 = string__NativeString__to_s_with_length(var115, var116);
2284 var114 = var117;
2285 varonce113 = var114;
2286 }
2287 var118 = NEW_array__Array(&type_array__Arraykernel__Object);
2288 { /* var118 = array_instance Array[Object] */
2289 var119 = 5;
2290 var120 = NEW_array__NativeArray(var119, &type_array__NativeArraykernel__Object);
2291 ((struct instance_array__NativeArray*)var120)->values[0] = (val*) var103;
2292 ((struct instance_array__NativeArray*)var120)->values[1] = (val*) var107;
2293 ((struct instance_array__NativeArray*)var120)->values[2] = (val*) var109;
2294 var121 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2295 ((struct instance_array__NativeArray*)var120)->values[3] = (val*) var121;
2296 ((struct instance_array__NativeArray*)var120)->values[4] = (val*) var114;
2297 ((void (*)(val*, val*, long))(var118->class->vft[COLOR_array__Array__with_native]))(var118, var120, var119) /* with_native on <var118:Array[Object]>*/;
2298 }
2299 var122 = ((val* (*)(val*))(var118->class->vft[COLOR_string__Object__to_s]))(var118) /* to_s on <var118:Array[Object]>*/;
2300 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var122) /* add on <var_v:SeparateCompilerVisitor>*/;
2301 }
2302 } else {
2303 /* <var_m:Object> isa MType */
2304 cltype124 = type_model__MType.color;
2305 idtype125 = type_model__MType.id;
2306 if(cltype124 >= var_m->type->table_size) {
2307 var123 = 0;
2308 } else {
2309 var123 = var_m->type->type_table[cltype124] == idtype125;
2310 }
2311 if (var123){
2312 var126 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
2313 var127 = ((val* (*)(val*))(var126->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var126) /* toolcontext on <var126:ModelBuilder>*/;
2314 var128 = ((val* (*)(val*))(var127->class->vft[COLOR_separate_compiler__ToolContext__opt_inline_coloring_numbers]))(var127) /* opt_inline_coloring_numbers on <var127:ToolContext>*/;
2315 var129 = ((val* (*)(val*))(var128->class->vft[COLOR_opts__Option__value]))(var128) /* value on <var128:OptionBool>*/;
2316 var130 = ((struct instance_kernel__Bool*)var129)->value; /* autounbox from nullable Object to Bool */;
2317 if (var130){
2318 var131 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MType__const_color]))(var_m) /* const_color on <var_m:Object(MType)>*/;
2319 if (varonce132) {
2320 var133 = varonce132;
2321 } else {
2322 var134 = "#define ";
2323 var135 = 8;
2324 var136 = string__NativeString__to_s_with_length(var134, var135);
2325 var133 = var136;
2326 varonce132 = var133;
2327 }
2328 var137 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MType__const_color]))(var_m) /* const_color on <var_m:Object(MType)>*/;
2329 if (varonce138) {
2330 var139 = varonce138;
2331 } else {
2332 var140 = " ";
2333 var141 = 1;
2334 var142 = string__NativeString__to_s_with_length(var140, var141);
2335 var139 = var142;
2336 varonce138 = var139;
2337 }
2338 var143 = NEW_array__Array(&type_array__Arraykernel__Object);
2339 { /* var143 = array_instance Array[Object] */
2340 var144 = 4;
2341 var145 = NEW_array__NativeArray(var144, &type_array__NativeArraykernel__Object);
2342 ((struct instance_array__NativeArray*)var145)->values[0] = (val*) var133;
2343 ((struct instance_array__NativeArray*)var145)->values[1] = (val*) var137;
2344 ((struct instance_array__NativeArray*)var145)->values[2] = (val*) var139;
2345 var146 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2346 ((struct instance_array__NativeArray*)var145)->values[3] = (val*) var146;
2347 ((void (*)(val*, val*, long))(var143->class->vft[COLOR_array__Array__with_native]))(var143, var145, var144) /* with_native on <var143:Array[Object]>*/;
2348 }
2349 var147 = ((val* (*)(val*))(var143->class->vft[COLOR_string__Object__to_s]))(var143) /* to_s on <var143:Array[Object]>*/;
2350 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var131, var147) /* provide_declaration on <self:SeparateCompiler>*/;
2351 } else {
2352 var148 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MType__const_color]))(var_m) /* const_color on <var_m:Object(MType)>*/;
2353 if (varonce149) {
2354 var150 = varonce149;
2355 } else {
2356 var151 = "extern const int ";
2357 var152 = 17;
2358 var153 = string__NativeString__to_s_with_length(var151, var152);
2359 var150 = var153;
2360 varonce149 = var150;
2361 }
2362 var154 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MType__const_color]))(var_m) /* const_color on <var_m:Object(MType)>*/;
2363 if (varonce155) {
2364 var156 = varonce155;
2365 } else {
2366 var157 = ";";
2367 var158 = 1;
2368 var159 = string__NativeString__to_s_with_length(var157, var158);
2369 var156 = var159;
2370 varonce155 = var156;
2371 }
2372 var160 = NEW_array__Array(&type_array__Arraykernel__Object);
2373 { /* var160 = array_instance Array[Object] */
2374 var161 = 3;
2375 var162 = NEW_array__NativeArray(var161, &type_array__NativeArraykernel__Object);
2376 ((struct instance_array__NativeArray*)var162)->values[0] = (val*) var150;
2377 ((struct instance_array__NativeArray*)var162)->values[1] = (val*) var154;
2378 ((struct instance_array__NativeArray*)var162)->values[2] = (val*) var156;
2379 ((void (*)(val*, val*, long))(var160->class->vft[COLOR_array__Array__with_native]))(var160, var162, var161) /* with_native on <var160:Array[Object]>*/;
2380 }
2381 var163 = ((val* (*)(val*))(var160->class->vft[COLOR_string__Object__to_s]))(var160) /* to_s on <var160:Array[Object]>*/;
2382 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var148, var163) /* provide_declaration on <self:SeparateCompiler>*/;
2383 if (varonce164) {
2384 var165 = varonce164;
2385 } else {
2386 var166 = "const int ";
2387 var167 = 10;
2388 var168 = string__NativeString__to_s_with_length(var166, var167);
2389 var165 = var168;
2390 varonce164 = var165;
2391 }
2392 var169 = ((val* (*)(val*))(var_m->class->vft[COLOR_separate_compiler__MType__const_color]))(var_m) /* const_color on <var_m:Object(MType)>*/;
2393 if (varonce170) {
2394 var171 = varonce170;
2395 } else {
2396 var172 = " = ";
2397 var173 = 3;
2398 var174 = string__NativeString__to_s_with_length(var172, var173);
2399 var171 = var174;
2400 varonce170 = var171;
2401 }
2402 if (varonce175) {
2403 var176 = varonce175;
2404 } else {
2405 var177 = ";";
2406 var178 = 1;
2407 var179 = string__NativeString__to_s_with_length(var177, var178);
2408 var176 = var179;
2409 varonce175 = var176;
2410 }
2411 var180 = NEW_array__Array(&type_array__Arraykernel__Object);
2412 { /* var180 = array_instance Array[Object] */
2413 var181 = 5;
2414 var182 = NEW_array__NativeArray(var181, &type_array__NativeArraykernel__Object);
2415 ((struct instance_array__NativeArray*)var182)->values[0] = (val*) var165;
2416 ((struct instance_array__NativeArray*)var182)->values[1] = (val*) var169;
2417 ((struct instance_array__NativeArray*)var182)->values[2] = (val*) var171;
2418 var183 = BOX_kernel__Int(var_color); /* autobox from Int to Object */
2419 ((struct instance_array__NativeArray*)var182)->values[3] = (val*) var183;
2420 ((struct instance_array__NativeArray*)var182)->values[4] = (val*) var176;
2421 ((void (*)(val*, val*, long))(var180->class->vft[COLOR_array__Array__with_native]))(var180, var182, var181) /* with_native on <var180:Array[Object]>*/;
2422 }
2423 var184 = ((val* (*)(val*))(var180->class->vft[COLOR_string__Object__to_s]))(var180) /* to_s on <var180:Array[Object]>*/;
2424 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var184) /* add on <var_v:SeparateCompilerVisitor>*/;
2425 }
2426 } else {
2427 }
2428 }
2429 }
2430 var185 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__color_consts_done]))(self) /* color_consts_done on <self:SeparateCompiler>*/;
2431 ((void (*)(val*, val*))(var185->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var185, var_m) /* add on <var185:HashSet[Object]>*/;
2432 RET_LABEL:;
2433 }
2434 /* method separate_compiler#SeparateCompiler#compile_color_const for (self: Object, SeparateCompilerVisitor, Object, Int) */
2435 void VIRTUAL_separate_compiler__SeparateCompiler__compile_color_const(val* self, val* p0, val* p1, long p2) {
2436 separate_compiler__SeparateCompiler__compile_color_const(self, p0, p1, p2);
2437 RET_LABEL:;
2438 }
2439 /* method separate_compiler#SeparateCompiler#color_consts_done for (self: SeparateCompiler): HashSet[Object] */
2440 val* separate_compiler__SeparateCompiler__color_consts_done(val* self) {
2441 val* var /* : HashSet[Object] */;
2442 val* var1 /* : HashSet[Object] */;
2443 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dcolor_consts_done].val; /* @color_consts_done on <self:SeparateCompiler> */
2444 if (var1 == NULL) {
2445 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @color_consts_done");
2446 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 235);
2447 show_backtrace(1);
2448 }
2449 var = var1;
2450 RET_LABEL:;
2451 return var;
2452 }
2453 /* method separate_compiler#SeparateCompiler#color_consts_done for (self: Object): HashSet[Object] */
2454 val* VIRTUAL_separate_compiler__SeparateCompiler__color_consts_done(val* self) {
2455 val* var /* : HashSet[Object] */;
2456 val* var1 /* : HashSet[Object] */;
2457 var1 = separate_compiler__SeparateCompiler__color_consts_done(self);
2458 var = var1;
2459 RET_LABEL:;
2460 return var;
2461 }
2462 /* method separate_compiler#SeparateCompiler#color_consts_done= for (self: SeparateCompiler, HashSet[Object]) */
2463 void separate_compiler__SeparateCompiler__color_consts_done_61d(val* self, val* p0) {
2464 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dcolor_consts_done].val = p0; /* @color_consts_done on <self:SeparateCompiler> */
2465 RET_LABEL:;
2466 }
2467 /* method separate_compiler#SeparateCompiler#color_consts_done= for (self: Object, HashSet[Object]) */
2468 void VIRTUAL_separate_compiler__SeparateCompiler__color_consts_done_61d(val* self, val* p0) {
2469 separate_compiler__SeparateCompiler__color_consts_done_61d(self, p0);
2470 RET_LABEL:;
2471 }
2472 /* method separate_compiler#SeparateCompiler#do_property_coloring for (self: SeparateCompiler) */
2473 void separate_compiler__SeparateCompiler__do_property_coloring(val* self) {
2474 val* var /* : HashSet[MClass] */;
2475 val* var1 /* : ModelBuilder */;
2476 val* var2 /* : Model */;
2477 val* var3 /* : Array[MClass] */;
2478 val* var_mclasses /* var mclasses: HashSet[MClass] */;
2479 val* var4 /* : MClassColorer */;
2480 val* var5 /* : MModule */;
2481 val* var_class_layout_builder /* var class_layout_builder: MClassColorer */;
2482 val* var6 /* : Layout[Object] */;
2483 val* var7 /* : MPropertyColorer[PropertyLayoutElement] */;
2484 val* var8 /* : MModule */;
2485 val* var_method_layout_builder /* var method_layout_builder: PropertyLayoutBuilder[PropertyLayoutElement] */;
2486 val* var9 /* : MPropertyColorer[MAttribute] */;
2487 val* var10 /* : MModule */;
2488 val* var_attribute_layout_builder /* var attribute_layout_builder: PropertyLayoutBuilder[MAttribute] */;
2489 val* var11 /* : HashMap[MClass, Set[PropertyLayoutElement]] */;
2490 val* var_mmethods /* var mmethods: HashMap[MClass, Set[PropertyLayoutElement]] */;
2491 val* var12 /* : HashMap[MClass, Set[MAttribute]] */;
2492 val* var_mattributes /* var mattributes: HashMap[MClass, Set[MAttribute]] */;
2493 val* var13 /* : Iterator[nullable Object] */;
2494 short int var14 /* : Bool */;
2495 val* var15 /* : nullable Object */;
2496 val* var_mclass /* var mclass: MClass */;
2497 val* var16 /* : HashSet[PropertyLayoutElement] */;
2498 val* var17 /* : HashSet[MAttribute] */;
2499 val* var18 /* : MModule */;
2500 val* var19 /* : Set[MProperty] */;
2501 val* var20 /* : Iterator[nullable Object] */;
2502 short int var21 /* : Bool */;
2503 val* var22 /* : nullable Object */;
2504 val* var_mprop /* var mprop: MProperty */;
2505 short int var23 /* : Bool */;
2506 int cltype;
2507 int idtype;
2508 val* var24 /* : nullable Object */;
2509 short int var25 /* : Bool */;
2510 int cltype26;
2511 int idtype27;
2512 val* var28 /* : nullable Object */;
2513 val* var30 /* : HashSet[MMethodDef] */;
2514 val* var_all_super_calls /* var all_super_calls: HashSet[MMethodDef] */;
2515 val* var31 /* : MModule */;
2516 val* var32 /* : POSetElement[MModule] */;
2517 val* var33 /* : Collection[Object] */;
2518 val* var34 /* : Iterator[nullable Object] */;
2519 short int var35 /* : Bool */;
2520 val* var36 /* : nullable Object */;
2521 val* var_mmodule /* var mmodule: MModule */;
2522 val* var37 /* : Array[MClassDef] */;
2523 val* var38 /* : Iterator[nullable Object] */;
2524 short int var39 /* : Bool */;
2525 val* var40 /* : nullable Object */;
2526 val* var_mclassdef /* var mclassdef: MClassDef */;
2527 val* var41 /* : Array[MPropDef] */;
2528 val* var42 /* : Iterator[nullable Object] */;
2529 short int var43 /* : Bool */;
2530 val* var44 /* : nullable Object */;
2531 val* var_mpropdef /* var mpropdef: MPropDef */;
2532 short int var45 /* : Bool */;
2533 int cltype46;
2534 int idtype47;
2535 short int var48 /* : Bool */;
2536 short int var50 /* : Bool */;
2537 val* var53 /* : nullable RapidTypeAnalysis */;
2538 val* var54 /* : null */;
2539 short int var55 /* : Bool */;
2540 val* var56 /* : nullable RapidTypeAnalysis */;
2541 val* var57 /* : HashSet[MMethodDef] */;
2542 val* var_super_calls /* var super_calls: nullable Object */;
2543 val* var58 /* : Iterator[nullable Object] */;
2544 short int var59 /* : Bool */;
2545 val* var60 /* : nullable Object */;
2546 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
2547 val* var61 /* : MClassDef */;
2548 val* var62 /* : MClass */;
2549 val* var_mclass63 /* var mclass: MClass */;
2550 val* var64 /* : nullable Object */;
2551 val* var65 /* : MModule */;
2552 val* var66 /* : POSetElement[MClass] */;
2553 val* var67 /* : Collection[Object] */;
2554 val* var68 /* : Iterator[nullable Object] */;
2555 short int var69 /* : Bool */;
2556 val* var70 /* : nullable Object */;
2557 val* var_descendant /* var descendant: MClass */;
2558 val* var71 /* : nullable Object */;
2559 val* var74 /* : Layout[PropertyLayoutElement] */;
2560 val* var75 /* : Map[MClass, Array[nullable MPropDef]] */;
2561 val* var76 /* : nullable Layout[PropertyLayoutElement] */;
2562 val* var77 /* : Map[Object, Int] */;
2563 val* var78 /* : Iterator[nullable Object] */;
2564 short int var79 /* : Bool */;
2565 val* var80 /* : nullable Object */;
2566 val* var_mpropdef81 /* var mpropdef: MMethodDef */;
2567 short int var82 /* : Bool */;
2568 val* var84 /* : AbstractCompilerVisitor */;
2569 long var85 /* : Int */;
2570 long var86 /* : Int */;
2571 long var88 /* : Int */;
2572 val* var89 /* : Layout[PropertyLayoutElement] */;
2573 val* var90 /* : Map[MClass, Array[nullable MPropDef]] */;
2574 val* var91 /* : nullable Layout[MAttribute] */;
2575 val* var92 /* : Map[Object, Int] */;
2576 var = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass);
2577 var1 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
2578 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_modelbuilder__ModelBuilder__model]))(var1) /* model on <var1:ModelBuilder>*/;
2579 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_model__Model__mclasses]))(var2) /* mclasses on <var2:Model>*/;
2580 ((void (*)(val*, val*))(var->class->vft[COLOR_hash_collection__HashSet__from]))(var, var3) /* from on <var:HashSet[MClass]>*/;
2581 var_mclasses = var;
2582 var4 = NEW_layout_builders__MClassColorer(&type_layout_builders__MClassColorer);
2583 var5 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2584 ((void (*)(val*, val*))(var4->class->vft[COLOR_layout_builders__MClassColorer__init]))(var4, var5) /* init on <var4:MClassColorer>*/;
2585 var_class_layout_builder = var4;
2586 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>*/;
2587 var6;
2588 var7 = NEW_layout_builders__MPropertyColorer(&type_layout_builders__MPropertyColorerlayout_builders__PropertyLayoutElement);
2589 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2590 ((void (*)(val*, val*, val*))(var7->class->vft[COLOR_layout_builders__MPropertyColorer__init]))(var7, var8, var_class_layout_builder) /* init on <var7:MPropertyColorer[PropertyLayoutElement]>*/;
2591 var_method_layout_builder = var7;
2592 var9 = NEW_layout_builders__MPropertyColorer(&type_layout_builders__MPropertyColorermodel__MAttribute);
2593 var10 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2594 ((void (*)(val*, val*, val*))(var9->class->vft[COLOR_layout_builders__MPropertyColorer__init]))(var9, var10, var_class_layout_builder) /* init on <var9:MPropertyColorer[MAttribute]>*/;
2595 var_attribute_layout_builder = var9;
2596 var11 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassabstract_collection__Setlayout_builders__PropertyLayoutElement);
2597 ((void (*)(val*))(var11->class->vft[COLOR_hash_collection__HashMap__init]))(var11) /* init on <var11:HashMap[MClass, Set[PropertyLayoutElement]]>*/;
2598 var_mmethods = var11;
2599 var12 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassabstract_collection__Setmodel__MAttribute);
2600 ((void (*)(val*))(var12->class->vft[COLOR_hash_collection__HashMap__init]))(var12) /* init on <var12:HashMap[MClass, Set[MAttribute]]>*/;
2601 var_mattributes = var12;
2602 var13 = ((val* (*)(val*))(var_mclasses->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasses) /* iterator on <var_mclasses:HashSet[MClass]>*/;
2603 for(;;) {
2604 var14 = ((short int (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var13) /* is_ok on <var13:Iterator[nullable Object]>*/;
2605 if(!var14) break;
2606 var15 = ((val* (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__item]))(var13) /* item on <var13:Iterator[nullable Object]>*/;
2607 var_mclass = var15;
2608 var16 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetlayout_builders__PropertyLayoutElement);
2609 ((void (*)(val*))(var16->class->vft[COLOR_hash_collection__HashSet__init]))(var16) /* init on <var16:HashSet[PropertyLayoutElement]>*/;
2610 ((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]]>*/;
2611 var17 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MAttribute);
2612 ((void (*)(val*))(var17->class->vft[COLOR_hash_collection__HashSet__init]))(var17) /* init on <var17:HashSet[MAttribute]>*/;
2613 ((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]]>*/;
2614 var18 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2615 var19 = ((val* (*)(val*, val*))(var18->class->vft[COLOR_abstract_compiler__MModule__properties]))(var18, var_mclass) /* properties on <var18:MModule>*/;
2616 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_abstract_collection__Collection__iterator]))(var19) /* iterator on <var19:Set[MProperty]>*/;
2617 for(;;) {
2618 var21 = ((short int (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var20) /* is_ok on <var20:Iterator[nullable Object]>*/;
2619 if(!var21) break;
2620 var22 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__item]))(var20) /* item on <var20:Iterator[nullable Object]>*/;
2621 var_mprop = var22;
2622 /* <var_mprop:MProperty> isa MMethod */
2623 cltype = type_model__MMethod.color;
2624 idtype = type_model__MMethod.id;
2625 if(cltype >= var_mprop->type->table_size) {
2626 var23 = 0;
2627 } else {
2628 var23 = var_mprop->type->type_table[cltype] == idtype;
2629 }
2630 if (var23){
2631 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]]>*/;
2632 ((void (*)(val*, val*))(var24->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var24, var_mprop) /* add on <var24:nullable Object(Set[PropertyLayoutElement])>*/;
2633 } else {
2634 /* <var_mprop:MProperty> isa MAttribute */
2635 cltype26 = type_model__MAttribute.color;
2636 idtype27 = type_model__MAttribute.id;
2637 if(cltype26 >= var_mprop->type->table_size) {
2638 var25 = 0;
2639 } else {
2640 var25 = var_mprop->type->type_table[cltype26] == idtype27;
2641 }
2642 if (var25){
2643 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]]>*/;
2644 ((void (*)(val*, val*))(var28->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var28, var_mprop) /* add on <var28:nullable Object(Set[MAttribute])>*/;
2645 } else {
2646 }
2647 }
2648 CONTINUE_label: (void)0;
2649 ((void (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__next]))(var20) /* next on <var20:Iterator[nullable Object]>*/;
2650 }
2651 BREAK_label: (void)0;
2652 CONTINUE_label29: (void)0;
2653 ((void (*)(val*))(var13->class->vft[COLOR_abstract_collection__Iterator__next]))(var13) /* next on <var13:Iterator[nullable Object]>*/;
2654 }
2655 BREAK_label29: (void)0;
2656 var30 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MMethodDef);
2657 ((void (*)(val*))(var30->class->vft[COLOR_hash_collection__HashSet__init]))(var30) /* init on <var30:HashSet[MMethodDef]>*/;
2658 var_all_super_calls = var30;
2659 var31 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2660 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_mmodule__MModule__in_importation]))(var31) /* in_importation on <var31:MModule>*/;
2661 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_poset__POSetElement__greaters]))(var32) /* greaters on <var32:POSetElement[MModule]>*/;
2662 var34 = ((val* (*)(val*))(var33->class->vft[COLOR_abstract_collection__Collection__iterator]))(var33) /* iterator on <var33:Collection[Object](Collection[MModule])>*/;
2663 for(;;) {
2664 var35 = ((short int (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var34) /* is_ok on <var34:Iterator[nullable Object]>*/;
2665 if(!var35) break;
2666 var36 = ((val* (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__item]))(var34) /* item on <var34:Iterator[nullable Object]>*/;
2667 var_mmodule = var36;
2668 var37 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model__MModule__mclassdefs]))(var_mmodule) /* mclassdefs on <var_mmodule:MModule>*/;
2669 var38 = ((val* (*)(val*))(var37->class->vft[COLOR_abstract_collection__Collection__iterator]))(var37) /* iterator on <var37:Array[MClassDef]>*/;
2670 for(;;) {
2671 var39 = ((short int (*)(val*))(var38->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var38) /* is_ok on <var38:Iterator[nullable Object]>*/;
2672 if(!var39) break;
2673 var40 = ((val* (*)(val*))(var38->class->vft[COLOR_abstract_collection__Iterator__item]))(var38) /* item on <var38:Iterator[nullable Object]>*/;
2674 var_mclassdef = var40;
2675 var41 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef) /* mpropdefs on <var_mclassdef:MClassDef>*/;
2676 var42 = ((val* (*)(val*))(var41->class->vft[COLOR_abstract_collection__Collection__iterator]))(var41) /* iterator on <var41:Array[MPropDef]>*/;
2677 for(;;) {
2678 var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
2679 if(!var43) break;
2680 var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
2681 var_mpropdef = var44;
2682 /* <var_mpropdef:MPropDef> isa MMethodDef */
2683 cltype46 = type_model__MMethodDef.color;
2684 idtype47 = type_model__MMethodDef.id;
2685 if(cltype46 >= var_mpropdef->type->table_size) {
2686 var45 = 0;
2687 } else {
2688 var45 = var_mpropdef->type->type_table[cltype46] == idtype47;
2689 }
2690 var48 = !var45;
2691 if (var48){
2692 goto CONTINUE_label49;
2693 } else {
2694 }
2695 var50 = ((short int (*)(val*))(var_mpropdef->class->vft[COLOR_modelize_property__MPropDef__has_supercall]))(var_mpropdef) /* has_supercall on <var_mpropdef:MPropDef(MMethodDef)>*/;
2696 if (var50){
2697 ((void (*)(val*, val*))(var_all_super_calls->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_all_super_calls, var_mpropdef) /* add on <var_all_super_calls:HashSet[MMethodDef]>*/;
2698 } else {
2699 }
2700 CONTINUE_label49: (void)0;
2701 ((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
2702 }
2703 BREAK_label49: (void)0;
2704 CONTINUE_label51: (void)0;
2705 ((void (*)(val*))(var38->class->vft[COLOR_abstract_collection__Iterator__next]))(var38) /* next on <var38:Iterator[nullable Object]>*/;
2706 }
2707 BREAK_label51: (void)0;
2708 CONTINUE_label52: (void)0;
2709 ((void (*)(val*))(var34->class->vft[COLOR_abstract_collection__Iterator__next]))(var34) /* next on <var34:Iterator[nullable Object]>*/;
2710 }
2711 BREAK_label52: (void)0;
2712 var53 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
2713 var54 = NULL;
2714 if (var53 == NULL) {
2715 var55 = 0; /* is null */
2716 } else {
2717 var55 = 1; /* arg is null and recv is not */
2718 }
2719 if (var55){
2720 var56 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
2721 if (var56 == NULL) {
2722 fprintf(stderr, "Runtime error: %s", "Receiver is null");
2723 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 293);
2724 show_backtrace(1);
2725 } else {
2726 var57 = ((val* (*)(val*))(var56->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_super_sends]))(var56) /* live_super_sends on <var56:nullable RapidTypeAnalysis>*/;
2727 }
2728 var_super_calls = var57;
2729 } else {
2730 var_super_calls = var_all_super_calls;
2731 }
2732 var58 = ((val* (*)(val*))(var_super_calls->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_super_calls) /* iterator on <var_super_calls:nullable Object(HashSet[MMethodDef])>*/;
2733 for(;;) {
2734 var59 = ((short int (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var58) /* is_ok on <var58:Iterator[nullable Object]>*/;
2735 if(!var59) break;
2736 var60 = ((val* (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__item]))(var58) /* item on <var58:Iterator[nullable Object]>*/;
2737 var_mmethoddef = var60;
2738 var61 = ((val* (*)(val*))(var_mmethoddef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mmethoddef) /* mclassdef on <var_mmethoddef:MMethodDef>*/;
2739 var62 = ((val* (*)(val*))(var61->class->vft[COLOR_model__MClassDef__mclass]))(var61) /* mclass on <var61:MClassDef>*/;
2740 var_mclass63 = var62;
2741 var64 = ((val* (*)(val*, val*))(var_mmethods->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_mmethods, var_mclass63) /* [] on <var_mmethods:HashMap[MClass, Set[PropertyLayoutElement]]>*/;
2742 ((void (*)(val*, val*))(var64->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var64, var_mmethoddef) /* add on <var64:nullable Object(Set[PropertyLayoutElement])>*/;
2743 var65 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
2744 var66 = ((val* (*)(val*, val*))(var_mclass63->class->vft[COLOR_model__MClass__in_hierarchy]))(var_mclass63, var65) /* in_hierarchy on <var_mclass63:MClass>*/;
2745 var67 = ((val* (*)(val*))(var66->class->vft[COLOR_poset__POSetElement__smallers]))(var66) /* smallers on <var66:POSetElement[MClass]>*/;
2746 var68 = ((val* (*)(val*))(var67->class->vft[COLOR_abstract_collection__Collection__iterator]))(var67) /* iterator on <var67:Collection[Object](Collection[MClass])>*/;
2747 for(;;) {
2748 var69 = ((short int (*)(val*))(var68->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var68) /* is_ok on <var68:Iterator[nullable Object]>*/;
2749 if(!var69) break;
2750 var70 = ((val* (*)(val*))(var68->class->vft[COLOR_abstract_collection__Iterator__item]))(var68) /* item on <var68:Iterator[nullable Object]>*/;
2751 var_descendant = var70;
2752 var71 = ((val* (*)(val*, val*))(var_mmethods->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_mmethods, var_descendant) /* [] on <var_mmethods:HashMap[MClass, Set[PropertyLayoutElement]]>*/;
2753 ((void (*)(val*, val*))(var71->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var71, var_mmethoddef) /* add on <var71:nullable Object(Set[PropertyLayoutElement])>*/;
2754 CONTINUE_label72: (void)0;
2755 ((void (*)(val*))(var68->class->vft[COLOR_abstract_collection__Iterator__next]))(var68) /* next on <var68:Iterator[nullable Object]>*/;
2756 }
2757 BREAK_label72: (void)0;
2758 CONTINUE_label73: (void)0;
2759 ((void (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__next]))(var58) /* next on <var58:Iterator[nullable Object]>*/;
2760 }
2761 BREAK_label73: (void)0;
2762 var74 = ((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])>*/;
2763 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_layout_61d]))(self, var74) /* method_layout= on <self:SeparateCompiler>*/;
2764 var75 = ((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>*/;
2765 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_tables_61d]))(self, var75) /* method_tables= on <self:SeparateCompiler>*/;
2766 var76 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_layout]))(self) /* method_layout on <self:SeparateCompiler>*/;
2767 if (var76 == NULL) {
2768 fprintf(stderr, "Runtime error: %s", "Receiver is null");
2769 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 309);
2770 show_backtrace(1);
2771 } else {
2772 var77 = ((val* (*)(val*))(var76->class->vft[COLOR_layout_builders__Layout__pos]))(var76) /* pos on <var76:nullable Layout[PropertyLayoutElement]>*/;
2773 }
2774 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_color_consts]))(self, var77) /* compile_color_consts on <self:SeparateCompiler>*/;
2775 var78 = ((val* (*)(val*))(var_all_super_calls->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_all_super_calls) /* iterator on <var_all_super_calls:HashSet[MMethodDef]>*/;
2776 for(;;) {
2777 var79 = ((short int (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var78) /* is_ok on <var78:Iterator[nullable Object]>*/;
2778 if(!var79) break;
2779 var80 = ((val* (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__item]))(var78) /* item on <var78:Iterator[nullable Object]>*/;
2780 var_mpropdef81 = var80;
2781 var82 = ((short int (*)(val*, val*))(var_super_calls->class->vft[COLOR_abstract_collection__Collection__has]))(var_super_calls, var_mpropdef81) /* has on <var_super_calls:nullable Object(HashSet[MMethodDef])>*/;
2782 if (var82){
2783 goto CONTINUE_label83;
2784 } else {
2785 }
2786 var84 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:SeparateCompiler>*/;
2787 var85 = 1;
2788 { /* Inline kernel#Int#unary - (var85) */
2789 var88 = -var85;
2790 var86 = var88;
2791 goto RET_LABEL87;
2792 RET_LABEL87:(void)0;
2793 }
2794 ((void (*)(val*, val*, val*, long))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_color_const]))(self, var84, var_mpropdef81, var86) /* compile_color_const on <self:SeparateCompiler>*/;
2795 CONTINUE_label83: (void)0;
2796 ((void (*)(val*))(var78->class->vft[COLOR_abstract_collection__Iterator__next]))(var78) /* next on <var78:Iterator[nullable Object]>*/;
2797 }
2798 BREAK_label83: (void)0;
2799 var89 = ((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])>*/;
2800 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_layout_61d]))(self, var89) /* attr_layout= on <self:SeparateCompiler>*/;
2801 var90 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__build_attr_tables]))(self, var_mclasses) /* build_attr_tables on <self:SeparateCompiler>*/;
2802 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_tables_61d]))(self, var90) /* attr_tables= on <self:SeparateCompiler>*/;
2803 var91 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_layout]))(self) /* attr_layout on <self:SeparateCompiler>*/;
2804 if (var91 == NULL) {
2805 fprintf(stderr, "Runtime error: %s", "Receiver is null");
2806 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 320);
2807 show_backtrace(1);
2808 } else {
2809 var92 = ((val* (*)(val*))(var91->class->vft[COLOR_layout_builders__Layout__pos]))(var91) /* pos on <var91:nullable Layout[MAttribute]>*/;
2810 }
2811 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_color_consts]))(self, var92) /* compile_color_consts on <self:SeparateCompiler>*/;
2812 RET_LABEL:;
2813 }
2814 /* method separate_compiler#SeparateCompiler#do_property_coloring for (self: Object) */
2815 void VIRTUAL_separate_compiler__SeparateCompiler__do_property_coloring(val* self) {
2816 separate_compiler__SeparateCompiler__do_property_coloring(self);
2817 RET_LABEL:;
2818 }
2819 /* method separate_compiler#SeparateCompiler#build_method_tables for (self: SeparateCompiler, Set[MClass], Set[MMethodDef]): Map[MClass, Array[nullable MPropDef]] */
2820 val* separate_compiler__SeparateCompiler__build_method_tables(val* self, val* p0, val* p1) {
2821 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
2822 val* var_mclasses /* var mclasses: Set[MClass] */;
2823 val* var_super_calls /* var super_calls: Set[MMethodDef] */;
2824 val* var1 /* : nullable Layout[PropertyLayoutElement] */;
2825 val* var_layout /* var layout: nullable Layout[PropertyLayoutElement] */;
2826 val* var2 /* : HashMap[MClass, Array[nullable MPropDef]] */;
2827 val* var_tables /* var tables: HashMap[MClass, Array[nullable MPropDef]] */;
2828 val* var3 /* : Iterator[nullable Object] */;
2829 short int var4 /* : Bool */;
2830 val* var5 /* : nullable Object */;
2831 val* var_mclass /* var mclass: MClass */;
2832 val* var6 /* : Array[nullable MPropDef] */;
2833 val* var_table /* var table: Array[nullable MPropDef] */;
2834 val* var7 /* : List[MMethodDef] */;
2835 val* var_supercalls /* var supercalls: List[MMethodDef] */;
2836 val* var8 /* : Array[MClass] */;
2837 val* var_parents /* var parents: Array[MClass] */;
2838 val* var9 /* : MModule */;
2839 val* var10 /* : POSet[MClass] */;
2840 short int var11 /* : Bool */;
2841 val* var12 /* : MModule */;
2842 val* var13 /* : POSetElement[MClass] */;
2843 val* var14 /* : Collection[Object] */;
2844 val* var15 /* : Array[nullable Object] */;
2845 val* var16 /* : MModule */;
2846 val* var17 /* : Iterator[nullable Object] */;
2847 short int var18 /* : Bool */;
2848 val* var19 /* : nullable Object */;
2849 val* var_parent /* var parent: MClass */;
2850 short int var20 /* : Bool */;
2851 val* var21 /* : MModule */;
2852 val* var22 /* : Set[MProperty] */;
2853 val* var23 /* : Iterator[nullable Object] */;
2854 short int var24 /* : Bool */;
2855 val* var25 /* : nullable Object */;
2856 val* var_mproperty /* var mproperty: MProperty */;
2857 short int var26 /* : Bool */;
2858 int cltype;
2859 int idtype;
2860 short int var27 /* : Bool */;
2861 val* var29 /* : Map[Object, Int] */;
2862 val* var30 /* : nullable Object */;
2863 long var31 /* : Int */;
2864 long var_color /* var color: Int */;
2865 long var32 /* : Int */;
2866 short int var33 /* : Bool */;
2867 short int var35 /* : Bool */;
2868 int cltype36;
2869 int idtype37;
2870 const char* var_class_name;
2871 short int var38 /* : Bool */;
2872 val* var39 /* : Range[Int] */;
2873 long var40 /* : Int */;
2874 val* var41 /* : Discrete */;
2875 val* var42 /* : Discrete */;
2876 val* var43 /* : Iterator[nullable Object] */;
2877 short int var44 /* : Bool */;
2878 val* var45 /* : nullable Object */;
2879 long var_i /* var i: Int */;
2880 long var46 /* : Int */;
2881 val* var47 /* : null */;
2882 val* var49 /* : Array[MPropDef] */;
2883 val* var50 /* : Iterator[nullable Object] */;
2884 short int var51 /* : Bool */;
2885 val* var52 /* : nullable Object */;
2886 val* var_mpropdef /* var mpropdef: MMethodDef */;
2887 val* var53 /* : MClassDef */;
2888 val* var54 /* : MClass */;
2889 short int var55 /* : Bool */;
2890 val* var57 /* : Iterator[nullable Object] */;
2891 short int var58 /* : Bool */;
2892 val* var59 /* : nullable Object */;
2893 val* var_mmethoddef /* var mmethoddef: MMethodDef */;
2894 val* var60 /* : Array[MClassDef] */;
2895 val* var61 /* : Iterator[nullable Object] */;
2896 short int var62 /* : Bool */;
2897 val* var63 /* : nullable Object */;
2898 val* var_mclassdef /* var mclassdef: MClassDef */;
2899 val* var64 /* : Array[MPropDef] */;
2900 short int var65 /* : Bool */;
2901 val* var68 /* : MModule */;
2902 val* var69 /* : Set[MProperty] */;
2903 val* var70 /* : Iterator[nullable Object] */;
2904 short int var71 /* : Bool */;
2905 val* var72 /* : nullable Object */;
2906 val* var_mproperty73 /* var mproperty: MProperty */;
2907 short int var74 /* : Bool */;
2908 int cltype75;
2909 int idtype76;
2910 short int var77 /* : Bool */;
2911 val* var79 /* : Map[Object, Int] */;
2912 val* var80 /* : nullable Object */;
2913 long var81 /* : Int */;
2914 long var_color82 /* var color: Int */;
2915 long var83 /* : Int */;
2916 short int var84 /* : Bool */;
2917 short int var86 /* : Bool */;
2918 int cltype87;
2919 int idtype88;
2920 const char* var_class_name89;
2921 short int var90 /* : Bool */;
2922 val* var91 /* : Range[Int] */;
2923 long var92 /* : Int */;
2924 val* var93 /* : Discrete */;
2925 val* var94 /* : Discrete */;
2926 val* var95 /* : Iterator[nullable Object] */;
2927 short int var96 /* : Bool */;
2928 val* var97 /* : nullable Object */;
2929 long var_i98 /* var i: Int */;
2930 long var99 /* : Int */;
2931 val* var100 /* : null */;
2932 val* var102 /* : Array[MPropDef] */;
2933 val* var103 /* : Iterator[nullable Object] */;
2934 short int var104 /* : Bool */;
2935 val* var105 /* : nullable Object */;
2936 val* var_mpropdef106 /* var mpropdef: MMethodDef */;
2937 val* var107 /* : MClassDef */;
2938 val* var108 /* : MClass */;
2939 short int var109 /* : Bool */;
2940 val* var111 /* : Iterator[nullable Object] */;
2941 short int var112 /* : Bool */;
2942 val* var113 /* : nullable Object */;
2943 val* var_mmethoddef114 /* var mmethoddef: MMethodDef */;
2944 val* var115 /* : Array[MClassDef] */;
2945 val* var116 /* : Iterator[nullable Object] */;
2946 short int var117 /* : Bool */;
2947 val* var118 /* : nullable Object */;
2948 val* var_mclassdef119 /* var mclassdef: MClassDef */;
2949 val* var120 /* : Array[MPropDef] */;
2950 short int var121 /* : Bool */;
2951 val* var124 /* : Iterator[nullable Object] */;
2952 short int var125 /* : Bool */;
2953 val* var126 /* : nullable Object */;
2954 val* var_supercall /* var supercall: MMethodDef */;
2955 val* var127 /* : Map[Object, Int] */;
2956 val* var128 /* : nullable Object */;
2957 long var129 /* : Int */;
2958 long var_color130 /* var color: Int */;
2959 long var131 /* : Int */;
2960 short int var132 /* : Bool */;
2961 short int var134 /* : Bool */;
2962 int cltype135;
2963 int idtype136;
2964 const char* var_class_name137;
2965 short int var138 /* : Bool */;
2966 val* var139 /* : Range[Int] */;
2967 long var140 /* : Int */;
2968 val* var141 /* : Discrete */;
2969 val* var142 /* : Discrete */;
2970 val* var143 /* : Iterator[nullable Object] */;
2971 short int var144 /* : Bool */;
2972 val* var145 /* : nullable Object */;
2973 long var_i146 /* var i: Int */;
2974 long var147 /* : Int */;
2975 val* var148 /* : null */;
2976 val* var150 /* : MModule */;
2977 val* var151 /* : MClassDef */;
2978 val* var152 /* : MClassType */;
2979 val* var153 /* : MPropDef */;
2980 val* var_mmethoddef154 /* var mmethoddef: MMethodDef */;
2981 var_mclasses = p0;
2982 var_super_calls = p1;
2983 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_layout]))(self) /* method_layout on <self:SeparateCompiler>*/;
2984 var_layout = var1;
2985 var2 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassarray__Arraynullable_model__MPropDef);
2986 ((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashMap__init]))(var2) /* init on <var2:HashMap[MClass, Array[nullable MPropDef]]>*/;
2987 var_tables = var2;
2988 var3 = ((val* (*)(val*))(var_mclasses->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasses) /* iterator on <var_mclasses:Set[MClass]>*/;
2989 for(;;) {
2990 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
2991 if(!var4) break;
2992 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
2993 var_mclass = var5;
2994 var6 = NEW_array__Array(&type_array__Arraynullable_model__MPropDef);
2995 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[nullable MPropDef]>*/;
2996 var_table = var6;
2997 var7 = NEW_list__List(&type_list__Listmodel__MMethodDef);
2998 ((void (*)(val*))(var7->class->vft[COLOR_list__List__init]))(var7) /* init on <var7:List[MMethodDef]>*/;
2999 var_supercalls = var7;
3000 var8 = NEW_array__Array(&type_array__Arraymodel__MClass);
3001 ((void (*)(val*))(var8->class->vft[COLOR_array__Array__init]))(var8) /* init on <var8:Array[MClass]>*/;
3002 var_parents = var8;
3003 var9 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3004 var10 = ((val* (*)(val*))(var9->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var9) /* flatten_mclass_hierarchy on <var9:MModule>*/;
3005 var11 = ((short int (*)(val*, val*))(var10->class->vft[COLOR_abstract_collection__Collection__has]))(var10, var_mclass) /* has on <var10:POSet[MClass]>*/;
3006 if (var11){
3007 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3008 var13 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__in_hierarchy]))(var_mclass, var12) /* in_hierarchy on <var_mclass:MClass>*/;
3009 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_poset__POSetElement__greaters]))(var13) /* greaters on <var13:POSetElement[MClass]>*/;
3010 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_array__Collection__to_a]))(var14) /* to_a on <var14:Collection[Object](Collection[MClass])>*/;
3011 var_parents = var15;
3012 var16 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3013 ((void (*)(val*, val*))(var16->class->vft[COLOR_model__MModule__linearize_mclasses]))(var16, var_parents) /* linearize_mclasses on <var16:MModule>*/;
3014 } else {
3015 }
3016 var17 = ((val* (*)(val*))(var_parents->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_parents) /* iterator on <var_parents:Array[MClass]>*/;
3017 for(;;) {
3018 var18 = ((short int (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var17) /* is_ok on <var17:Iterator[nullable Object]>*/;
3019 if(!var18) break;
3020 var19 = ((val* (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__item]))(var17) /* item on <var17:Iterator[nullable Object]>*/;
3021 var_parent = var19;
3022 var20 = ((short int (*)(val*, val*))(var_parent->class->vft[COLOR_kernel__Object___61d_61d]))(var_parent, var_mclass) /* == on <var_parent:MClass>*/;
3023 if (var20){
3024 goto CONTINUE_label;
3025 } else {
3026 }
3027 var21 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3028 var22 = ((val* (*)(val*, val*))(var21->class->vft[COLOR_abstract_compiler__MModule__properties]))(var21, var_parent) /* properties on <var21:MModule>*/;
3029 var23 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__iterator]))(var22) /* iterator on <var22:Set[MProperty]>*/;
3030 for(;;) {
3031 var24 = ((short int (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var23) /* is_ok on <var23:Iterator[nullable Object]>*/;
3032 if(!var24) break;
3033 var25 = ((val* (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__item]))(var23) /* item on <var23:Iterator[nullable Object]>*/;
3034 var_mproperty = var25;
3035 /* <var_mproperty:MProperty> isa MMethod */
3036 cltype = type_model__MMethod.color;
3037 idtype = type_model__MMethod.id;
3038 if(cltype >= var_mproperty->type->table_size) {
3039 var26 = 0;
3040 } else {
3041 var26 = var_mproperty->type->type_table[cltype] == idtype;
3042 }
3043 var27 = !var26;
3044 if (var27){
3045 goto CONTINUE_label28;
3046 } else {
3047 }
3048 if (var_layout == NULL) {
3049 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3050 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 341);
3051 show_backtrace(1);
3052 } else {
3053 var29 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[PropertyLayoutElement]>*/;
3054 }
3055 var30 = ((val* (*)(val*, val*))(var29->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var29, var_mproperty) /* [] on <var29:Map[Object, Int](Map[PropertyLayoutElement, Int])>*/;
3056 var31 = ((struct instance_kernel__Int*)var30)->value; /* autounbox from nullable Object to Int */;
3057 var_color = var31;
3058 var32 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3059 { /* Inline kernel#Int#<= (var32,var_color) */
3060 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
3061 /* <var_color:Int> isa OTHER */
3062 var35 = 1; /* easy <var_color:Int> isa OTHER*/
3063 if (!var35) {
3064 var_class_name = type_kernel__Int.name;
3065 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3066 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
3067 show_backtrace(1);
3068 }
3069 var38 = var32 <= var_color;
3070 var33 = var38;
3071 goto RET_LABEL34;
3072 RET_LABEL34:(void)0;
3073 }
3074 if (var33){
3075 var39 = NEW_range__Range(&type_range__Rangekernel__Int);
3076 var40 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3077 var41 = BOX_kernel__Int(var40); /* autobox from Int to Discrete */
3078 var42 = BOX_kernel__Int(var_color); /* autobox from Int to Discrete */
3079 ((void (*)(val*, val*, val*))(var39->class->vft[COLOR_range__Range__without_last]))(var39, var41, var42) /* without_last on <var39:Range[Int]>*/;
3080 var43 = ((val* (*)(val*))(var39->class->vft[COLOR_abstract_collection__Collection__iterator]))(var39) /* iterator on <var39:Range[Int]>*/;
3081 for(;;) {
3082 var44 = ((short int (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var43) /* is_ok on <var43:Iterator[nullable Object]>*/;
3083 if(!var44) break;
3084 var45 = ((val* (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__item]))(var43) /* item on <var43:Iterator[nullable Object]>*/;
3085 var46 = ((struct instance_kernel__Int*)var45)->value; /* autounbox from nullable Object to Int */;
3086 var_i = var46;
3087 var47 = NULL;
3088 ((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]>*/;
3089 CONTINUE_label48: (void)0;
3090 ((void (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__next]))(var43) /* next on <var43:Iterator[nullable Object]>*/;
3091 }
3092 BREAK_label48: (void)0;
3093 } else {
3094 }
3095 var49 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on <var_mproperty:MProperty(MMethod)>*/;
3096 var50 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_collection__Collection__iterator]))(var49) /* iterator on <var49:Array[MPropDef](Array[MMethodDef])>*/;
3097 for(;;) {
3098 var51 = ((short int (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var50) /* is_ok on <var50:Iterator[nullable Object]>*/;
3099 if(!var51) break;
3100 var52 = ((val* (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__item]))(var50) /* item on <var50:Iterator[nullable Object]>*/;
3101 var_mpropdef = var52;
3102 var53 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MMethodDef>*/;
3103 var54 = ((val* (*)(val*))(var53->class->vft[COLOR_model__MClassDef__mclass]))(var53) /* mclass on <var53:MClassDef>*/;
3104 var55 = ((short int (*)(val*, val*))(var54->class->vft[COLOR_kernel__Object___61d_61d]))(var54, var_parent) /* == on <var54:MClass>*/;
3105 if (var55){
3106 ((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]>*/;
3107 } else {
3108 }
3109 CONTINUE_label56: (void)0;
3110 ((void (*)(val*))(var50->class->vft[COLOR_abstract_collection__Iterator__next]))(var50) /* next on <var50:Iterator[nullable Object]>*/;
3111 }
3112 BREAK_label56: (void)0;
3113 CONTINUE_label28: (void)0;
3114 ((void (*)(val*))(var23->class->vft[COLOR_abstract_collection__Iterator__next]))(var23) /* next on <var23:Iterator[nullable Object]>*/;
3115 }
3116 BREAK_label28: (void)0;
3117 var57 = ((val* (*)(val*))(var_super_calls->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_super_calls) /* iterator on <var_super_calls:Set[MMethodDef]>*/;
3118 for(;;) {
3119 var58 = ((short int (*)(val*))(var57->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var57) /* is_ok on <var57:Iterator[nullable Object]>*/;
3120 if(!var58) break;
3121 var59 = ((val* (*)(val*))(var57->class->vft[COLOR_abstract_collection__Iterator__item]))(var57) /* item on <var57:Iterator[nullable Object]>*/;
3122 var_mmethoddef = var59;
3123 var60 = ((val* (*)(val*))(var_parent->class->vft[COLOR_model__MClass__mclassdefs]))(var_parent) /* mclassdefs on <var_parent:MClass>*/;
3124 var61 = ((val* (*)(val*))(var60->class->vft[COLOR_abstract_collection__Collection__iterator]))(var60) /* iterator on <var60:Array[MClassDef]>*/;
3125 for(;;) {
3126 var62 = ((short int (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var61) /* is_ok on <var61:Iterator[nullable Object]>*/;
3127 if(!var62) break;
3128 var63 = ((val* (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__item]))(var61) /* item on <var61:Iterator[nullable Object]>*/;
3129 var_mclassdef = var63;
3130 var64 = ((val* (*)(val*))(var_mclassdef->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef) /* mpropdefs on <var_mclassdef:MClassDef>*/;
3131 var65 = ((short int (*)(val*, val*))(var64->class->vft[COLOR_abstract_collection__Collection__has]))(var64, var_mmethoddef) /* has on <var64:Array[MPropDef]>*/;
3132 if (var65){
3133 ((void (*)(val*, val*))(var_supercalls->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_supercalls, var_mmethoddef) /* add on <var_supercalls:List[MMethodDef]>*/;
3134 } else {
3135 }
3136 CONTINUE_label66: (void)0;
3137 ((void (*)(val*))(var61->class->vft[COLOR_abstract_collection__Iterator__next]))(var61) /* next on <var61:Iterator[nullable Object]>*/;
3138 }
3139 BREAK_label66: (void)0;
3140 CONTINUE_label67: (void)0;
3141 ((void (*)(val*))(var57->class->vft[COLOR_abstract_collection__Iterator__next]))(var57) /* next on <var57:Iterator[nullable Object]>*/;
3142 }
3143 BREAK_label67: (void)0;
3144 CONTINUE_label: (void)0;
3145 ((void (*)(val*))(var17->class->vft[COLOR_abstract_collection__Iterator__next]))(var17) /* next on <var17:Iterator[nullable Object]>*/;
3146 }
3147 BREAK_label: (void)0;
3148 var68 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3149 var69 = ((val* (*)(val*, val*))(var68->class->vft[COLOR_abstract_compiler__MModule__properties]))(var68, var_mclass) /* properties on <var68:MModule>*/;
3150 var70 = ((val* (*)(val*))(var69->class->vft[COLOR_abstract_collection__Collection__iterator]))(var69) /* iterator on <var69:Set[MProperty]>*/;
3151 for(;;) {
3152 var71 = ((short int (*)(val*))(var70->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var70) /* is_ok on <var70:Iterator[nullable Object]>*/;
3153 if(!var71) break;
3154 var72 = ((val* (*)(val*))(var70->class->vft[COLOR_abstract_collection__Iterator__item]))(var70) /* item on <var70:Iterator[nullable Object]>*/;
3155 var_mproperty73 = var72;
3156 /* <var_mproperty73:MProperty> isa MMethod */
3157 cltype75 = type_model__MMethod.color;
3158 idtype76 = type_model__MMethod.id;
3159 if(cltype75 >= var_mproperty73->type->table_size) {
3160 var74 = 0;
3161 } else {
3162 var74 = var_mproperty73->type->type_table[cltype75] == idtype76;
3163 }
3164 var77 = !var74;
3165 if (var77){
3166 goto CONTINUE_label78;
3167 } else {
3168 }
3169 if (var_layout == NULL) {
3170 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3171 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 367);
3172 show_backtrace(1);
3173 } else {
3174 var79 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[PropertyLayoutElement]>*/;
3175 }
3176 var80 = ((val* (*)(val*, val*))(var79->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var79, var_mproperty73) /* [] on <var79:Map[Object, Int](Map[PropertyLayoutElement, Int])>*/;
3177 var81 = ((struct instance_kernel__Int*)var80)->value; /* autounbox from nullable Object to Int */;
3178 var_color82 = var81;
3179 var83 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3180 { /* Inline kernel#Int#<= (var83,var_color82) */
3181 /* Covariant cast for argument 0 (i) <var_color82:Int> isa OTHER */
3182 /* <var_color82:Int> isa OTHER */
3183 var86 = 1; /* easy <var_color82:Int> isa OTHER*/
3184 if (!var86) {
3185 var_class_name89 = type_kernel__Int.name;
3186 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name89);
3187 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
3188 show_backtrace(1);
3189 }
3190 var90 = var83 <= var_color82;
3191 var84 = var90;
3192 goto RET_LABEL85;
3193 RET_LABEL85:(void)0;
3194 }
3195 if (var84){
3196 var91 = NEW_range__Range(&type_range__Rangekernel__Int);
3197 var92 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3198 var93 = BOX_kernel__Int(var92); /* autobox from Int to Discrete */
3199 var94 = BOX_kernel__Int(var_color82); /* autobox from Int to Discrete */
3200 ((void (*)(val*, val*, val*))(var91->class->vft[COLOR_range__Range__without_last]))(var91, var93, var94) /* without_last on <var91:Range[Int]>*/;
3201 var95 = ((val* (*)(val*))(var91->class->vft[COLOR_abstract_collection__Collection__iterator]))(var91) /* iterator on <var91:Range[Int]>*/;
3202 for(;;) {
3203 var96 = ((short int (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var95) /* is_ok on <var95:Iterator[nullable Object]>*/;
3204 if(!var96) break;
3205 var97 = ((val* (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__item]))(var95) /* item on <var95:Iterator[nullable Object]>*/;
3206 var99 = ((struct instance_kernel__Int*)var97)->value; /* autounbox from nullable Object to Int */;
3207 var_i98 = var99;
3208 var100 = NULL;
3209 ((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]>*/;
3210 CONTINUE_label101: (void)0;
3211 ((void (*)(val*))(var95->class->vft[COLOR_abstract_collection__Iterator__next]))(var95) /* next on <var95:Iterator[nullable Object]>*/;
3212 }
3213 BREAK_label101: (void)0;
3214 } else {
3215 }
3216 var102 = ((val* (*)(val*))(var_mproperty73->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty73) /* mpropdefs on <var_mproperty73:MProperty(MMethod)>*/;
3217 var103 = ((val* (*)(val*))(var102->class->vft[COLOR_abstract_collection__Collection__iterator]))(var102) /* iterator on <var102:Array[MPropDef](Array[MMethodDef])>*/;
3218 for(;;) {
3219 var104 = ((short int (*)(val*))(var103->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var103) /* is_ok on <var103:Iterator[nullable Object]>*/;
3220 if(!var104) break;
3221 var105 = ((val* (*)(val*))(var103->class->vft[COLOR_abstract_collection__Iterator__item]))(var103) /* item on <var103:Iterator[nullable Object]>*/;
3222 var_mpropdef106 = var105;
3223 var107 = ((val* (*)(val*))(var_mpropdef106->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef106) /* mclassdef on <var_mpropdef106:MMethodDef>*/;
3224 var108 = ((val* (*)(val*))(var107->class->vft[COLOR_model__MClassDef__mclass]))(var107) /* mclass on <var107:MClassDef>*/;
3225 var109 = ((short int (*)(val*, val*))(var108->class->vft[COLOR_kernel__Object___61d_61d]))(var108, var_mclass) /* == on <var108:MClass>*/;
3226 if (var109){
3227 ((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]>*/;
3228 } else {
3229 }
3230 CONTINUE_label110: (void)0;
3231 ((void (*)(val*))(var103->class->vft[COLOR_abstract_collection__Iterator__next]))(var103) /* next on <var103:Iterator[nullable Object]>*/;
3232 }
3233 BREAK_label110: (void)0;
3234 CONTINUE_label78: (void)0;
3235 ((void (*)(val*))(var70->class->vft[COLOR_abstract_collection__Iterator__next]))(var70) /* next on <var70:Iterator[nullable Object]>*/;
3236 }
3237 BREAK_label78: (void)0;
3238 var111 = ((val* (*)(val*))(var_super_calls->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_super_calls) /* iterator on <var_super_calls:Set[MMethodDef]>*/;
3239 for(;;) {
3240 var112 = ((short int (*)(val*))(var111->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var111) /* is_ok on <var111:Iterator[nullable Object]>*/;
3241 if(!var112) break;
3242 var113 = ((val* (*)(val*))(var111->class->vft[COLOR_abstract_collection__Iterator__item]))(var111) /* item on <var111:Iterator[nullable Object]>*/;
3243 var_mmethoddef114 = var113;
3244 var115 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__mclassdefs]))(var_mclass) /* mclassdefs on <var_mclass:MClass>*/;
3245 var116 = ((val* (*)(val*))(var115->class->vft[COLOR_abstract_collection__Collection__iterator]))(var115) /* iterator on <var115:Array[MClassDef]>*/;
3246 for(;;) {
3247 var117 = ((short int (*)(val*))(var116->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var116) /* is_ok on <var116:Iterator[nullable Object]>*/;
3248 if(!var117) break;
3249 var118 = ((val* (*)(val*))(var116->class->vft[COLOR_abstract_collection__Iterator__item]))(var116) /* item on <var116:Iterator[nullable Object]>*/;
3250 var_mclassdef119 = var118;
3251 var120 = ((val* (*)(val*))(var_mclassdef119->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_mclassdef119) /* mpropdefs on <var_mclassdef119:MClassDef>*/;
3252 var121 = ((short int (*)(val*, val*))(var120->class->vft[COLOR_abstract_collection__Collection__has]))(var120, var_mmethoddef114) /* has on <var120:Array[MPropDef]>*/;
3253 if (var121){
3254 ((void (*)(val*, val*))(var_supercalls->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_supercalls, var_mmethoddef114) /* add on <var_supercalls:List[MMethodDef]>*/;
3255 } else {
3256 }
3257 CONTINUE_label122: (void)0;
3258 ((void (*)(val*))(var116->class->vft[COLOR_abstract_collection__Iterator__next]))(var116) /* next on <var116:Iterator[nullable Object]>*/;
3259 }
3260 BREAK_label122: (void)0;
3261 CONTINUE_label123: (void)0;
3262 ((void (*)(val*))(var111->class->vft[COLOR_abstract_collection__Iterator__next]))(var111) /* next on <var111:Iterator[nullable Object]>*/;
3263 }
3264 BREAK_label123: (void)0;
3265 var124 = ((val* (*)(val*))(var_supercalls->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_supercalls) /* iterator on <var_supercalls:List[MMethodDef]>*/;
3266 for(;;) {
3267 var125 = ((short int (*)(val*))(var124->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var124) /* is_ok on <var124:Iterator[nullable Object]>*/;
3268 if(!var125) break;
3269 var126 = ((val* (*)(val*))(var124->class->vft[COLOR_abstract_collection__Iterator__item]))(var124) /* item on <var124:Iterator[nullable Object]>*/;
3270 var_supercall = var126;
3271 if (var_layout == NULL) {
3272 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3273 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 390);
3274 show_backtrace(1);
3275 } else {
3276 var127 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[PropertyLayoutElement]>*/;
3277 }
3278 var128 = ((val* (*)(val*, val*))(var127->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var127, var_supercall) /* [] on <var127:Map[Object, Int](Map[PropertyLayoutElement, Int])>*/;
3279 var129 = ((struct instance_kernel__Int*)var128)->value; /* autounbox from nullable Object to Int */;
3280 var_color130 = var129;
3281 var131 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3282 { /* Inline kernel#Int#<= (var131,var_color130) */
3283 /* Covariant cast for argument 0 (i) <var_color130:Int> isa OTHER */
3284 /* <var_color130:Int> isa OTHER */
3285 var134 = 1; /* easy <var_color130:Int> isa OTHER*/
3286 if (!var134) {
3287 var_class_name137 = type_kernel__Int.name;
3288 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name137);
3289 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
3290 show_backtrace(1);
3291 }
3292 var138 = var131 <= var_color130;
3293 var132 = var138;
3294 goto RET_LABEL133;
3295 RET_LABEL133:(void)0;
3296 }
3297 if (var132){
3298 var139 = NEW_range__Range(&type_range__Rangekernel__Int);
3299 var140 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3300 var141 = BOX_kernel__Int(var140); /* autobox from Int to Discrete */
3301 var142 = BOX_kernel__Int(var_color130); /* autobox from Int to Discrete */
3302 ((void (*)(val*, val*, val*))(var139->class->vft[COLOR_range__Range__without_last]))(var139, var141, var142) /* without_last on <var139:Range[Int]>*/;
3303 var143 = ((val* (*)(val*))(var139->class->vft[COLOR_abstract_collection__Collection__iterator]))(var139) /* iterator on <var139:Range[Int]>*/;
3304 for(;;) {
3305 var144 = ((short int (*)(val*))(var143->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var143) /* is_ok on <var143:Iterator[nullable Object]>*/;
3306 if(!var144) break;
3307 var145 = ((val* (*)(val*))(var143->class->vft[COLOR_abstract_collection__Iterator__item]))(var143) /* item on <var143:Iterator[nullable Object]>*/;
3308 var147 = ((struct instance_kernel__Int*)var145)->value; /* autounbox from nullable Object to Int */;
3309 var_i146 = var147;
3310 var148 = NULL;
3311 ((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]>*/;
3312 CONTINUE_label149: (void)0;
3313 ((void (*)(val*))(var143->class->vft[COLOR_abstract_collection__Iterator__next]))(var143) /* next on <var143:Iterator[nullable Object]>*/;
3314 }
3315 BREAK_label149: (void)0;
3316 } else {
3317 }
3318 var150 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3319 var151 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro]))(var_mclass) /* intro on <var_mclass:MClass>*/;
3320 var152 = ((val* (*)(val*))(var151->class->vft[COLOR_model__MClassDef__bound_mtype]))(var151) /* bound_mtype on <var151:MClassDef>*/;
3321 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>*/;
3322 var_mmethoddef154 = var153;
3323 ((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]>*/;
3324 CONTINUE_label155: (void)0;
3325 ((void (*)(val*))(var124->class->vft[COLOR_abstract_collection__Iterator__next]))(var124) /* next on <var124:Iterator[nullable Object]>*/;
3326 }
3327 BREAK_label155: (void)0;
3328 ((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]]>*/;
3329 CONTINUE_label156: (void)0;
3330 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
3331 }
3332 BREAK_label156: (void)0;
3333 var = var_tables;
3334 goto RET_LABEL;
3335 RET_LABEL:;
3336 return var;
3337 }
3338 /* method separate_compiler#SeparateCompiler#build_method_tables for (self: Object, Set[MClass], Set[MMethodDef]): Map[MClass, Array[nullable MPropDef]] */
3339 val* VIRTUAL_separate_compiler__SeparateCompiler__build_method_tables(val* self, val* p0, val* p1) {
3340 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
3341 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
3342 var1 = separate_compiler__SeparateCompiler__build_method_tables(self, p0, p1);
3343 var = var1;
3344 RET_LABEL:;
3345 return var;
3346 }
3347 /* method separate_compiler#SeparateCompiler#build_attr_tables for (self: SeparateCompiler, Set[MClass]): Map[MClass, Array[nullable MPropDef]] */
3348 val* separate_compiler__SeparateCompiler__build_attr_tables(val* self, val* p0) {
3349 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
3350 val* var_mclasses /* var mclasses: Set[MClass] */;
3351 val* var1 /* : nullable Layout[MAttribute] */;
3352 val* var_layout /* var layout: nullable Layout[MAttribute] */;
3353 val* var2 /* : HashMap[MClass, Array[nullable MPropDef]] */;
3354 val* var_tables /* var tables: HashMap[MClass, Array[nullable MPropDef]] */;
3355 val* var3 /* : Iterator[nullable Object] */;
3356 short int var4 /* : Bool */;
3357 val* var5 /* : nullable Object */;
3358 val* var_mclass /* var mclass: MClass */;
3359 val* var6 /* : Array[nullable MPropDef] */;
3360 val* var_table /* var table: Array[nullable MPropDef] */;
3361 val* var7 /* : Array[MClass] */;
3362 val* var_parents /* var parents: Array[MClass] */;
3363 val* var8 /* : MModule */;
3364 val* var9 /* : POSet[MClass] */;
3365 short int var10 /* : Bool */;
3366 val* var11 /* : MModule */;
3367 val* var12 /* : POSetElement[MClass] */;
3368 val* var13 /* : Collection[Object] */;
3369 val* var14 /* : Array[nullable Object] */;
3370 val* var15 /* : MModule */;
3371 val* var16 /* : Iterator[nullable Object] */;
3372 short int var17 /* : Bool */;
3373 val* var18 /* : nullable Object */;
3374 val* var_parent /* var parent: MClass */;
3375 short int var19 /* : Bool */;
3376 val* var20 /* : MModule */;
3377 val* var21 /* : Set[MProperty] */;
3378 val* var22 /* : Iterator[nullable Object] */;
3379 short int var23 /* : Bool */;
3380 val* var24 /* : nullable Object */;
3381 val* var_mproperty /* var mproperty: MProperty */;
3382 short int var25 /* : Bool */;
3383 int cltype;
3384 int idtype;
3385 short int var26 /* : Bool */;
3386 val* var28 /* : Map[Object, Int] */;
3387 val* var29 /* : nullable Object */;
3388 long var30 /* : Int */;
3389 long var_color /* var color: Int */;
3390 long var31 /* : Int */;
3391 short int var32 /* : Bool */;
3392 short int var34 /* : Bool */;
3393 int cltype35;
3394 int idtype36;
3395 const char* var_class_name;
3396 short int var37 /* : Bool */;
3397 val* var38 /* : Range[Int] */;
3398 long var39 /* : Int */;
3399 val* var40 /* : Discrete */;
3400 val* var41 /* : Discrete */;
3401 val* var42 /* : Iterator[nullable Object] */;
3402 short int var43 /* : Bool */;
3403 val* var44 /* : nullable Object */;
3404 long var_i /* var i: Int */;
3405 long var45 /* : Int */;
3406 val* var46 /* : null */;
3407 val* var48 /* : Array[MPropDef] */;
3408 val* var49 /* : Iterator[nullable Object] */;
3409 short int var50 /* : Bool */;
3410 val* var51 /* : nullable Object */;
3411 val* var_mpropdef /* var mpropdef: MAttributeDef */;
3412 val* var52 /* : MClassDef */;
3413 val* var53 /* : MClass */;
3414 short int var54 /* : Bool */;
3415 val* var56 /* : MModule */;
3416 val* var57 /* : Set[MProperty] */;
3417 val* var58 /* : Iterator[nullable Object] */;
3418 short int var59 /* : Bool */;
3419 val* var60 /* : nullable Object */;
3420 val* var_mproperty61 /* var mproperty: MProperty */;
3421 short int var62 /* : Bool */;
3422 int cltype63;
3423 int idtype64;
3424 short int var65 /* : Bool */;
3425 val* var67 /* : Map[Object, Int] */;
3426 val* var68 /* : nullable Object */;
3427 long var69 /* : Int */;
3428 long var_color70 /* var color: Int */;
3429 long var71 /* : Int */;
3430 short int var72 /* : Bool */;
3431 short int var74 /* : Bool */;
3432 int cltype75;
3433 int idtype76;
3434 const char* var_class_name77;
3435 short int var78 /* : Bool */;
3436 val* var79 /* : Range[Int] */;
3437 long var80 /* : Int */;
3438 val* var81 /* : Discrete */;
3439 val* var82 /* : Discrete */;
3440 val* var83 /* : Iterator[nullable Object] */;
3441 short int var84 /* : Bool */;
3442 val* var85 /* : nullable Object */;
3443 long var_i86 /* var i: Int */;
3444 long var87 /* : Int */;
3445 val* var88 /* : null */;
3446 val* var90 /* : Array[MPropDef] */;
3447 val* var91 /* : Iterator[nullable Object] */;
3448 short int var92 /* : Bool */;
3449 val* var93 /* : nullable Object */;
3450 val* var_mpropdef94 /* var mpropdef: MAttributeDef */;
3451 val* var95 /* : MClassDef */;
3452 val* var96 /* : MClass */;
3453 short int var97 /* : Bool */;
3454 var_mclasses = p0;
3455 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_layout]))(self) /* attr_layout on <self:SeparateCompiler>*/;
3456 var_layout = var1;
3457 var2 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassarray__Arraynullable_model__MPropDef);
3458 ((void (*)(val*))(var2->class->vft[COLOR_hash_collection__HashMap__init]))(var2) /* init on <var2:HashMap[MClass, Array[nullable MPropDef]]>*/;
3459 var_tables = var2;
3460 var3 = ((val* (*)(val*))(var_mclasses->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mclasses) /* iterator on <var_mclasses:Set[MClass]>*/;
3461 for(;;) {
3462 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
3463 if(!var4) break;
3464 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
3465 var_mclass = var5;
3466 var6 = NEW_array__Array(&type_array__Arraynullable_model__MPropDef);
3467 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[nullable MPropDef]>*/;
3468 var_table = var6;
3469 var7 = NEW_array__Array(&type_array__Arraymodel__MClass);
3470 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[MClass]>*/;
3471 var_parents = var7;
3472 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3473 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_model__MModule__flatten_mclass_hierarchy]))(var8) /* flatten_mclass_hierarchy on <var8:MModule>*/;
3474 var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__Collection__has]))(var9, var_mclass) /* has on <var9:POSet[MClass]>*/;
3475 if (var10){
3476 var11 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3477 var12 = ((val* (*)(val*, val*))(var_mclass->class->vft[COLOR_model__MClass__in_hierarchy]))(var_mclass, var11) /* in_hierarchy on <var_mclass:MClass>*/;
3478 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_poset__POSetElement__greaters]))(var12) /* greaters on <var12:POSetElement[MClass]>*/;
3479 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_array__Collection__to_a]))(var13) /* to_a on <var13:Collection[Object](Collection[MClass])>*/;
3480 var_parents = var14;
3481 var15 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3482 ((void (*)(val*, val*))(var15->class->vft[COLOR_model__MModule__linearize_mclasses]))(var15, var_parents) /* linearize_mclasses on <var15:MModule>*/;
3483 } else {
3484 }
3485 var16 = ((val* (*)(val*))(var_parents->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_parents) /* iterator on <var_parents:Array[MClass]>*/;
3486 for(;;) {
3487 var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on <var16:Iterator[nullable Object]>*/;
3488 if(!var17) break;
3489 var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on <var16:Iterator[nullable Object]>*/;
3490 var_parent = var18;
3491 var19 = ((short int (*)(val*, val*))(var_parent->class->vft[COLOR_kernel__Object___61d_61d]))(var_parent, var_mclass) /* == on <var_parent:MClass>*/;
3492 if (var19){
3493 goto CONTINUE_label;
3494 } else {
3495 }
3496 var20 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3497 var21 = ((val* (*)(val*, val*))(var20->class->vft[COLOR_abstract_compiler__MModule__properties]))(var20, var_parent) /* properties on <var20:MModule>*/;
3498 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_abstract_collection__Collection__iterator]))(var21) /* iterator on <var21:Set[MProperty]>*/;
3499 for(;;) {
3500 var23 = ((short int (*)(val*))(var22->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var22) /* is_ok on <var22:Iterator[nullable Object]>*/;
3501 if(!var23) break;
3502 var24 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Iterator__item]))(var22) /* item on <var22:Iterator[nullable Object]>*/;
3503 var_mproperty = var24;
3504 /* <var_mproperty:MProperty> isa MAttribute */
3505 cltype = type_model__MAttribute.color;
3506 idtype = type_model__MAttribute.id;
3507 if(cltype >= var_mproperty->type->table_size) {
3508 var25 = 0;
3509 } else {
3510 var25 = var_mproperty->type->type_table[cltype] == idtype;
3511 }
3512 var26 = !var25;
3513 if (var26){
3514 goto CONTINUE_label27;
3515 } else {
3516 }
3517 if (var_layout == NULL) {
3518 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3519 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 419);
3520 show_backtrace(1);
3521 } else {
3522 var28 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[MAttribute]>*/;
3523 }
3524 var29 = ((val* (*)(val*, val*))(var28->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var28, var_mproperty) /* [] on <var28:Map[Object, Int](Map[MAttribute, Int])>*/;
3525 var30 = ((struct instance_kernel__Int*)var29)->value; /* autounbox from nullable Object to Int */;
3526 var_color = var30;
3527 var31 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3528 { /* Inline kernel#Int#<= (var31,var_color) */
3529 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
3530 /* <var_color:Int> isa OTHER */
3531 var34 = 1; /* easy <var_color:Int> isa OTHER*/
3532 if (!var34) {
3533 var_class_name = type_kernel__Int.name;
3534 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3535 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
3536 show_backtrace(1);
3537 }
3538 var37 = var31 <= var_color;
3539 var32 = var37;
3540 goto RET_LABEL33;
3541 RET_LABEL33:(void)0;
3542 }
3543 if (var32){
3544 var38 = NEW_range__Range(&type_range__Rangekernel__Int);
3545 var39 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3546 var40 = BOX_kernel__Int(var39); /* autobox from Int to Discrete */
3547 var41 = BOX_kernel__Int(var_color); /* autobox from Int to Discrete */
3548 ((void (*)(val*, val*, val*))(var38->class->vft[COLOR_range__Range__without_last]))(var38, var40, var41) /* without_last on <var38:Range[Int]>*/;
3549 var42 = ((val* (*)(val*))(var38->class->vft[COLOR_abstract_collection__Collection__iterator]))(var38) /* iterator on <var38:Range[Int]>*/;
3550 for(;;) {
3551 var43 = ((short int (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var42) /* is_ok on <var42:Iterator[nullable Object]>*/;
3552 if(!var43) break;
3553 var44 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__item]))(var42) /* item on <var42:Iterator[nullable Object]>*/;
3554 var45 = ((struct instance_kernel__Int*)var44)->value; /* autounbox from nullable Object to Int */;
3555 var_i = var45;
3556 var46 = NULL;
3557 ((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]>*/;
3558 CONTINUE_label47: (void)0;
3559 ((void (*)(val*))(var42->class->vft[COLOR_abstract_collection__Iterator__next]))(var42) /* next on <var42:Iterator[nullable Object]>*/;
3560 }
3561 BREAK_label47: (void)0;
3562 } else {
3563 }
3564 var48 = ((val* (*)(val*))(var_mproperty->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty) /* mpropdefs on <var_mproperty:MProperty(MAttribute)>*/;
3565 var49 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_collection__Collection__iterator]))(var48) /* iterator on <var48:Array[MPropDef](Array[MAttributeDef])>*/;
3566 for(;;) {
3567 var50 = ((short int (*)(val*))(var49->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var49) /* is_ok on <var49:Iterator[nullable Object]>*/;
3568 if(!var50) break;
3569 var51 = ((val* (*)(val*))(var49->class->vft[COLOR_abstract_collection__Iterator__item]))(var49) /* item on <var49:Iterator[nullable Object]>*/;
3570 var_mpropdef = var51;
3571 var52 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef) /* mclassdef on <var_mpropdef:MAttributeDef>*/;
3572 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_model__MClassDef__mclass]))(var52) /* mclass on <var52:MClassDef>*/;
3573 var54 = ((short int (*)(val*, val*))(var53->class->vft[COLOR_kernel__Object___61d_61d]))(var53, var_parent) /* == on <var53:MClass>*/;
3574 if (var54){
3575 ((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]>*/;
3576 } else {
3577 }
3578 CONTINUE_label55: (void)0;
3579 ((void (*)(val*))(var49->class->vft[COLOR_abstract_collection__Iterator__next]))(var49) /* next on <var49:Iterator[nullable Object]>*/;
3580 }
3581 BREAK_label55: (void)0;
3582 CONTINUE_label27: (void)0;
3583 ((void (*)(val*))(var22->class->vft[COLOR_abstract_collection__Iterator__next]))(var22) /* next on <var22:Iterator[nullable Object]>*/;
3584 }
3585 BREAK_label27: (void)0;
3586 CONTINUE_label: (void)0;
3587 ((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
3588 }
3589 BREAK_label: (void)0;
3590 var56 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3591 var57 = ((val* (*)(val*, val*))(var56->class->vft[COLOR_abstract_compiler__MModule__properties]))(var56, var_mclass) /* properties on <var56:MModule>*/;
3592 var58 = ((val* (*)(val*))(var57->class->vft[COLOR_abstract_collection__Collection__iterator]))(var57) /* iterator on <var57:Set[MProperty]>*/;
3593 for(;;) {
3594 var59 = ((short int (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var58) /* is_ok on <var58:Iterator[nullable Object]>*/;
3595 if(!var59) break;
3596 var60 = ((val* (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__item]))(var58) /* item on <var58:Iterator[nullable Object]>*/;
3597 var_mproperty61 = var60;
3598 /* <var_mproperty61:MProperty> isa MAttribute */
3599 cltype63 = type_model__MAttribute.color;
3600 idtype64 = type_model__MAttribute.id;
3601 if(cltype63 >= var_mproperty61->type->table_size) {
3602 var62 = 0;
3603 } else {
3604 var62 = var_mproperty61->type->type_table[cltype63] == idtype64;
3605 }
3606 var65 = !var62;
3607 if (var65){
3608 goto CONTINUE_label66;
3609 } else {
3610 }
3611 if (var_layout == NULL) {
3612 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3613 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 436);
3614 show_backtrace(1);
3615 } else {
3616 var67 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[MAttribute]>*/;
3617 }
3618 var68 = ((val* (*)(val*, val*))(var67->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var67, var_mproperty61) /* [] on <var67:Map[Object, Int](Map[MAttribute, Int])>*/;
3619 var69 = ((struct instance_kernel__Int*)var68)->value; /* autounbox from nullable Object to Int */;
3620 var_color70 = var69;
3621 var71 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3622 { /* Inline kernel#Int#<= (var71,var_color70) */
3623 /* Covariant cast for argument 0 (i) <var_color70:Int> isa OTHER */
3624 /* <var_color70:Int> isa OTHER */
3625 var74 = 1; /* easy <var_color70:Int> isa OTHER*/
3626 if (!var74) {
3627 var_class_name77 = type_kernel__Int.name;
3628 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name77);
3629 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
3630 show_backtrace(1);
3631 }
3632 var78 = var71 <= var_color70;
3633 var72 = var78;
3634 goto RET_LABEL73;
3635 RET_LABEL73:(void)0;
3636 }
3637 if (var72){
3638 var79 = NEW_range__Range(&type_range__Rangekernel__Int);
3639 var80 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MPropDef]>*/;
3640 var81 = BOX_kernel__Int(var80); /* autobox from Int to Discrete */
3641 var82 = BOX_kernel__Int(var_color70); /* autobox from Int to Discrete */
3642 ((void (*)(val*, val*, val*))(var79->class->vft[COLOR_range__Range__without_last]))(var79, var81, var82) /* without_last on <var79:Range[Int]>*/;
3643 var83 = ((val* (*)(val*))(var79->class->vft[COLOR_abstract_collection__Collection__iterator]))(var79) /* iterator on <var79:Range[Int]>*/;
3644 for(;;) {
3645 var84 = ((short int (*)(val*))(var83->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var83) /* is_ok on <var83:Iterator[nullable Object]>*/;
3646 if(!var84) break;
3647 var85 = ((val* (*)(val*))(var83->class->vft[COLOR_abstract_collection__Iterator__item]))(var83) /* item on <var83:Iterator[nullable Object]>*/;
3648 var87 = ((struct instance_kernel__Int*)var85)->value; /* autounbox from nullable Object to Int */;
3649 var_i86 = var87;
3650 var88 = NULL;
3651 ((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]>*/;
3652 CONTINUE_label89: (void)0;
3653 ((void (*)(val*))(var83->class->vft[COLOR_abstract_collection__Iterator__next]))(var83) /* next on <var83:Iterator[nullable Object]>*/;
3654 }
3655 BREAK_label89: (void)0;
3656 } else {
3657 }
3658 var90 = ((val* (*)(val*))(var_mproperty61->class->vft[COLOR_model__MProperty__mpropdefs]))(var_mproperty61) /* mpropdefs on <var_mproperty61:MProperty(MAttribute)>*/;
3659 var91 = ((val* (*)(val*))(var90->class->vft[COLOR_abstract_collection__Collection__iterator]))(var90) /* iterator on <var90:Array[MPropDef](Array[MAttributeDef])>*/;
3660 for(;;) {
3661 var92 = ((short int (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var91) /* is_ok on <var91:Iterator[nullable Object]>*/;
3662 if(!var92) break;
3663 var93 = ((val* (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__item]))(var91) /* item on <var91:Iterator[nullable Object]>*/;
3664 var_mpropdef94 = var93;
3665 var95 = ((val* (*)(val*))(var_mpropdef94->class->vft[COLOR_model__MPropDef__mclassdef]))(var_mpropdef94) /* mclassdef on <var_mpropdef94:MAttributeDef>*/;
3666 var96 = ((val* (*)(val*))(var95->class->vft[COLOR_model__MClassDef__mclass]))(var95) /* mclass on <var95:MClassDef>*/;
3667 var97 = ((short int (*)(val*, val*))(var96->class->vft[COLOR_kernel__Object___61d_61d]))(var96, var_mclass) /* == on <var96:MClass>*/;
3668 if (var97){
3669 ((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]>*/;
3670 } else {
3671 }
3672 CONTINUE_label98: (void)0;
3673 ((void (*)(val*))(var91->class->vft[COLOR_abstract_collection__Iterator__next]))(var91) /* next on <var91:Iterator[nullable Object]>*/;
3674 }
3675 BREAK_label98: (void)0;
3676 CONTINUE_label66: (void)0;
3677 ((void (*)(val*))(var58->class->vft[COLOR_abstract_collection__Iterator__next]))(var58) /* next on <var58:Iterator[nullable Object]>*/;
3678 }
3679 BREAK_label66: (void)0;
3680 ((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]]>*/;
3681 CONTINUE_label99: (void)0;
3682 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
3683 }
3684 BREAK_label99: (void)0;
3685 var = var_tables;
3686 goto RET_LABEL;
3687 RET_LABEL:;
3688 return var;
3689 }
3690 /* method separate_compiler#SeparateCompiler#build_attr_tables for (self: Object, Set[MClass]): Map[MClass, Array[nullable MPropDef]] */
3691 val* VIRTUAL_separate_compiler__SeparateCompiler__build_attr_tables(val* self, val* p0) {
3692 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
3693 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
3694 var1 = separate_compiler__SeparateCompiler__build_attr_tables(self, p0);
3695 var = var1;
3696 RET_LABEL:;
3697 return var;
3698 }
3699 /* method separate_compiler#SeparateCompiler#do_type_coloring for (self: SeparateCompiler): POSet[MType] */
3700 val* separate_compiler__SeparateCompiler__do_type_coloring(val* self) {
3701 val* var /* : POSet[MType] */;
3702 val* var1 /* : HashSet[MType] */;
3703 val* var_mtypes /* var mtypes: HashSet[MType] */;
3704 val* var2 /* : nullable RapidTypeAnalysis */;
3705 val* var3 /* : HashSet[MClassType] */;
3706 val* var4 /* : nullable RapidTypeAnalysis */;
3707 val* var5 /* : HashSet[MType] */;
3708 val* var6 /* : HashMap[MClass, Int] */;
3709 val* var7 /* : Collection[Object] */;
3710 val* var8 /* : Iterator[nullable Object] */;
3711 short int var9 /* : Bool */;
3712 val* var10 /* : nullable Object */;
3713 val* var_c /* var c: MClass */;
3714 val* var11 /* : MClassType */;
3715 val* var12 /* : ModelBuilder */;
3716 val* var13 /* : ToolContext */;
3717 val* var14 /* : OptionBool */;
3718 val* var15 /* : nullable Object */;
3719 short int var16 /* : Bool */;
3720 val* var17 /* : MTypeBMizer */;
3721 val* var18 /* : MModule */;
3722 val* var_layout_builder /* var layout_builder: TypingLayoutBuilder[MType] */;
3723 val* var19 /* : ModelBuilder */;
3724 val* var20 /* : ToolContext */;
3725 val* var21 /* : OptionBool */;
3726 val* var22 /* : nullable Object */;
3727 short int var23 /* : Bool */;
3728 val* var24 /* : MTypeHasher */;
3729 val* var25 /* : PHModOperator */;
3730 val* var26 /* : MModule */;
3731 val* var27 /* : ModelBuilder */;
3732 val* var28 /* : ToolContext */;
3733 val* var29 /* : OptionBool */;
3734 val* var30 /* : nullable Object */;
3735 short int var31 /* : Bool */;
3736 val* var32 /* : MTypeHasher */;
3737 val* var33 /* : PHAndOperator */;
3738 val* var34 /* : MModule */;
3739 val* var35 /* : MTypeColorer */;
3740 val* var36 /* : MModule */;
3741 val* var37 /* : Layout[Object] */;
3742 val* var38 /* : nullable POSet[Object] */;
3743 val* var_poset /* var poset: POSet[MType] */;
3744 val* var39 /* : Map[MType, Array[nullable MType]] */;
3745 var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
3746 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MType]>*/;
3747 var_mtypes = var1;
3748 var2 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
3749 if (var2 == NULL) {
3750 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3751 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 456);
3752 show_backtrace(1);
3753 } else {
3754 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var2) /* live_types on <var2:nullable RapidTypeAnalysis>*/;
3755 }
3756 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_mtypes, var3) /* add_all on <var_mtypes:HashSet[MType]>*/;
3757 var4 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
3758 if (var4 == NULL) {
3759 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3760 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 457);
3761 show_backtrace(1);
3762 } else {
3763 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_cast_types]))(var4) /* live_cast_types on <var4:nullable RapidTypeAnalysis>*/;
3764 }
3765 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_mtypes, var5) /* add_all on <var_mtypes:HashSet[MType]>*/;
3766 var6 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kinds]))(self) /* box_kinds on <self:SeparateCompiler>*/;
3767 var7 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__MapRead__keys]))(var6) /* keys on <var6:HashMap[MClass, Int]>*/;
3768 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_abstract_collection__Collection__iterator]))(var7) /* iterator on <var7:Collection[Object](HashMapKeys[MClass, Int])>*/;
3769 for(;;) {
3770 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
3771 if(!var9) break;
3772 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
3773 var_c = var10;
3774 var11 = ((val* (*)(val*))(var_c->class->vft[COLOR_model__MClass__mclass_type]))(var_c) /* mclass_type on <var_c:MClass>*/;
3775 ((void (*)(val*, val*))(var_mtypes->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_mtypes, var11) /* add on <var_mtypes:HashSet[MType]>*/;
3776 CONTINUE_label: (void)0;
3777 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
3778 }
3779 BREAK_label: (void)0;
3780 var12 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
3781 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var12) /* toolcontext on <var12:ModelBuilder>*/;
3782 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_separate_compiler__ToolContext__opt_bm_typing]))(var13) /* opt_bm_typing on <var13:ToolContext>*/;
3783 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_opts__Option__value]))(var14) /* value on <var14:OptionBool>*/;
3784 var16 = ((struct instance_kernel__Bool*)var15)->value; /* autounbox from nullable Object to Bool */;
3785 if (var16){
3786 var17 = NEW_layout_builders__MTypeBMizer(&type_layout_builders__MTypeBMizer);
3787 var18 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3788 ((void (*)(val*, val*))(var17->class->vft[COLOR_layout_builders__MTypeBMizer__init]))(var17, var18) /* init on <var17:MTypeBMizer>*/;
3789 var_layout_builder = var17;
3790 } else {
3791 var19 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
3792 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var19) /* toolcontext on <var19:ModelBuilder>*/;
3793 var21 = ((val* (*)(val*))(var20->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var20) /* opt_phmod_typing on <var20:ToolContext>*/;
3794 var22 = ((val* (*)(val*))(var21->class->vft[COLOR_opts__Option__value]))(var21) /* value on <var21:OptionBool>*/;
3795 var23 = ((struct instance_kernel__Bool*)var22)->value; /* autounbox from nullable Object to Bool */;
3796 if (var23){
3797 var24 = NEW_layout_builders__MTypeHasher(&type_layout_builders__MTypeHasher);
3798 var25 = NEW_layout_builders__PHModOperator(&type_layout_builders__PHModOperator);
3799 ((void (*)(val*))(var25->class->vft[COLOR_layout_builders__PHModOperator__init]))(var25) /* init on <var25:PHModOperator>*/;
3800 var26 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3801 ((void (*)(val*, val*, val*))(var24->class->vft[COLOR_layout_builders__MTypeHasher__init]))(var24, var25, var26) /* init on <var24:MTypeHasher>*/;
3802 var_layout_builder = var24;
3803 } else {
3804 var27 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
3805 var28 = ((val* (*)(val*))(var27->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var27) /* toolcontext on <var27:ModelBuilder>*/;
3806 var29 = ((val* (*)(val*))(var28->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var28) /* opt_phand_typing on <var28:ToolContext>*/;
3807 var30 = ((val* (*)(val*))(var29->class->vft[COLOR_opts__Option__value]))(var29) /* value on <var29:OptionBool>*/;
3808 var31 = ((struct instance_kernel__Bool*)var30)->value; /* autounbox from nullable Object to Bool */;
3809 if (var31){
3810 var32 = NEW_layout_builders__MTypeHasher(&type_layout_builders__MTypeHasher);
3811 var33 = NEW_layout_builders__PHAndOperator(&type_layout_builders__PHAndOperator);
3812 ((void (*)(val*))(var33->class->vft[COLOR_layout_builders__PHAndOperator__init]))(var33) /* init on <var33:PHAndOperator>*/;
3813 var34 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3814 ((void (*)(val*, val*, val*))(var32->class->vft[COLOR_layout_builders__MTypeHasher__init]))(var32, var33, var34) /* init on <var32:MTypeHasher>*/;
3815 var_layout_builder = var32;
3816 } else {
3817 var35 = NEW_layout_builders__MTypeColorer(&type_layout_builders__MTypeColorer);
3818 var36 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
3819 ((void (*)(val*, val*))(var35->class->vft[COLOR_layout_builders__MTypeColorer__init]))(var35, var36) /* init on <var35:MTypeColorer>*/;
3820 var_layout_builder = var35;
3821 }
3822 }
3823 }
3824 var37 = ((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]>*/;
3825 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_layout_61d]))(self, var37) /* type_layout= on <self:SeparateCompiler>*/;
3826 var38 = ((val* (*)(val*))(var_layout_builder->class->vft[COLOR_layout_builders__TypingLayoutBuilder__poset]))(var_layout_builder) /* poset on <var_layout_builder:TypingLayoutBuilder[MType]>*/;
3827 if (var38 == NULL) {
3828 fprintf(stderr, "Runtime error: %s", "Cast failed");
3829 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 476);
3830 show_backtrace(1);
3831 }
3832 var_poset = var38;
3833 var39 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__build_type_tables]))(self, var_poset) /* build_type_tables on <self:SeparateCompiler>*/;
3834 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_tables_61d]))(self, var39) /* type_tables= on <self:SeparateCompiler>*/;
3835 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_resolution_tables]))(self, var_mtypes) /* compile_resolution_tables on <self:SeparateCompiler>*/;
3836 var = var_poset;
3837 goto RET_LABEL;
3838 RET_LABEL:;
3839 return var;
3840 }
3841 /* method separate_compiler#SeparateCompiler#do_type_coloring for (self: Object): POSet[MType] */
3842 val* VIRTUAL_separate_compiler__SeparateCompiler__do_type_coloring(val* self) {
3843 val* var /* : POSet[MType] */;
3844 val* var1 /* : POSet[MType] */;
3845 var1 = separate_compiler__SeparateCompiler__do_type_coloring(self);
3846 var = var1;
3847 RET_LABEL:;
3848 return var;
3849 }
3850 /* method separate_compiler#SeparateCompiler#build_type_tables for (self: SeparateCompiler, POSet[MType]): Map[MType, Array[nullable MType]] */
3851 val* separate_compiler__SeparateCompiler__build_type_tables(val* self, val* p0) {
3852 val* var /* : Map[MType, Array[nullable MType]] */;
3853 val* var_mtypes /* var mtypes: POSet[MType] */;
3854 val* var1 /* : HashMap[MType, Array[nullable MType]] */;
3855 val* var_tables /* var tables: HashMap[MType, Array[nullable MType]] */;
3856 val* var2 /* : nullable Layout[MType] */;
3857 val* var_layout /* var layout: nullable Layout[MType] */;
3858 val* var3 /* : Iterator[nullable Object] */;
3859 short int var4 /* : Bool */;
3860 val* var5 /* : nullable Object */;
3861 val* var_mtype /* var mtype: MType */;
3862 val* var6 /* : Array[nullable MType] */;
3863 val* var_table /* var table: Array[nullable MType] */;
3864 val* var7 /* : POSetElement[Object] */;
3865 val* var8 /* : Collection[Object] */;
3866 val* var9 /* : Iterator[nullable Object] */;
3867 short int var10 /* : Bool */;
3868 val* var11 /* : nullable Object */;
3869 val* var_sup /* var sup: MType */;
3870 short int var12 /* : Bool */;
3871 int cltype;
3872 int idtype;
3873 val* var13 /* : Map[Object, Map[Object, Int]] */;
3874 val* var14 /* : nullable Object */;
3875 val* var15 /* : nullable Object */;
3876 long var16 /* : Int */;
3877 long var_color /* var color: Int */;
3878 val* var17 /* : Map[Object, Int] */;
3879 val* var18 /* : nullable Object */;
3880 long var19 /* : Int */;
3881 long var20 /* : Int */;
3882 short int var21 /* : Bool */;
3883 short int var23 /* : Bool */;
3884 int cltype24;
3885 int idtype25;
3886 const char* var_class_name;
3887 short int var26 /* : Bool */;
3888 val* var27 /* : Range[Int] */;
3889 long var28 /* : Int */;
3890 val* var29 /* : Discrete */;
3891 val* var30 /* : Discrete */;
3892 val* var31 /* : Iterator[nullable Object] */;
3893 short int var32 /* : Bool */;
3894 val* var33 /* : nullable Object */;
3895 long var_i /* var i: Int */;
3896 long var34 /* : Int */;
3897 val* var35 /* : null */;
3898 var_mtypes = p0;
3899 var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypearray__Arraynullable_model__MType);
3900 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on <var1:HashMap[MType, Array[nullable MType]]>*/;
3901 var_tables = var1;
3902 var2 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_layout]))(self) /* type_layout on <self:SeparateCompiler>*/;
3903 var_layout = var2;
3904 var3 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:POSet[MType]>*/;
3905 for(;;) {
3906 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
3907 if(!var4) break;
3908 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
3909 var_mtype = var5;
3910 var6 = NEW_array__Array(&type_array__Arraynullable_model__MType);
3911 ((void (*)(val*))(var6->class->vft[COLOR_array__Array__init]))(var6) /* init on <var6:Array[nullable MType]>*/;
3912 var_table = var6;
3913 var7 = ((val* (*)(val*, val*))(var_mtypes->class->vft[COLOR_poset__POSet___91d_93d]))(var_mtypes, var_mtype) /* [] on <var_mtypes:POSet[MType]>*/;
3914 var8 = ((val* (*)(val*))(var7->class->vft[COLOR_poset__POSetElement__greaters]))(var7) /* greaters on <var7:POSetElement[Object](POSetElement[MType])>*/;
3915 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Collection[Object](Collection[MType])>*/;
3916 for(;;) {
3917 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
3918 if(!var10) break;
3919 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
3920 var_sup = var11;
3921 /* <var_layout:nullable Layout[MType]> isa PHLayout[MType, MType] */
3922 cltype = type_layout_builders__PHLayoutmodel__MTypemodel__MType.color;
3923 idtype = type_layout_builders__PHLayoutmodel__MTypemodel__MType.id;
3924 if(var_layout == NULL) {
3925 var12 = 0;
3926 } else {
3927 if(cltype >= var_layout->type->table_size) {
3928 var12 = 0;
3929 } else {
3930 var12 = var_layout->type->type_table[cltype] == idtype;
3931 }
3932 }
3933 if (var12){
3934 var13 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__PHLayout__hashes]))(var_layout) /* hashes on <var_layout:nullable Layout[MType](PHLayout[MType, MType])>*/;
3935 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]])>*/;
3936 var15 = ((val* (*)(val*, val*))(var14->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var14, var_sup) /* [] on <var14:nullable Object(Map[MType, Int])>*/;
3937 var16 = ((struct instance_kernel__Int*)var15)->value; /* autounbox from nullable Object to Int */;
3938 var_color = var16;
3939 } else {
3940 if (var_layout == NULL) {
3941 fprintf(stderr, "Runtime error: %s", "Receiver is null");
3942 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 496);
3943 show_backtrace(1);
3944 } else {
3945 var17 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[MType]>*/;
3946 }
3947 var18 = ((val* (*)(val*, val*))(var17->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var17, var_sup) /* [] on <var17:Map[Object, Int](Map[MType, Int])>*/;
3948 var19 = ((struct instance_kernel__Int*)var18)->value; /* autounbox from nullable Object to Int */;
3949 var_color = var19;
3950 }
3951 var20 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MType]>*/;
3952 { /* Inline kernel#Int#<= (var20,var_color) */
3953 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
3954 /* <var_color:Int> isa OTHER */
3955 var23 = 1; /* easy <var_color:Int> isa OTHER*/
3956 if (!var23) {
3957 var_class_name = type_kernel__Int.name;
3958 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
3959 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
3960 show_backtrace(1);
3961 }
3962 var26 = var20 <= var_color;
3963 var21 = var26;
3964 goto RET_LABEL22;
3965 RET_LABEL22:(void)0;
3966 }
3967 if (var21){
3968 var27 = NEW_range__Range(&type_range__Rangekernel__Int);
3969 var28 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MType]>*/;
3970 var29 = BOX_kernel__Int(var28); /* autobox from Int to Discrete */
3971 var30 = BOX_kernel__Int(var_color); /* autobox from Int to Discrete */
3972 ((void (*)(val*, val*, val*))(var27->class->vft[COLOR_range__Range__without_last]))(var27, var29, var30) /* without_last on <var27:Range[Int]>*/;
3973 var31 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Collection__iterator]))(var27) /* iterator on <var27:Range[Int]>*/;
3974 for(;;) {
3975 var32 = ((short int (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var31) /* is_ok on <var31:Iterator[nullable Object]>*/;
3976 if(!var32) break;
3977 var33 = ((val* (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__item]))(var31) /* item on <var31:Iterator[nullable Object]>*/;
3978 var34 = ((struct instance_kernel__Int*)var33)->value; /* autounbox from nullable Object to Int */;
3979 var_i = var34;
3980 var35 = NULL;
3981 ((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]>*/;
3982 CONTINUE_label: (void)0;
3983 ((void (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__next]))(var31) /* next on <var31:Iterator[nullable Object]>*/;
3984 }
3985 BREAK_label: (void)0;
3986 } else {
3987 }
3988 ((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]>*/;
3989 CONTINUE_label36: (void)0;
3990 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
3991 }
3992 BREAK_label36: (void)0;
3993 ((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]]>*/;
3994 CONTINUE_label37: (void)0;
3995 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
3996 }
3997 BREAK_label37: (void)0;
3998 var = var_tables;
3999 goto RET_LABEL;
4000 RET_LABEL:;
4001 return var;
4002 }
4003 /* method separate_compiler#SeparateCompiler#build_type_tables for (self: Object, POSet[MType]): Map[MType, Array[nullable MType]] */
4004 val* VIRTUAL_separate_compiler__SeparateCompiler__build_type_tables(val* self, val* p0) {
4005 val* var /* : Map[MType, Array[nullable MType]] */;
4006 val* var1 /* : Map[MType, Array[nullable MType]] */;
4007 var1 = separate_compiler__SeparateCompiler__build_type_tables(self, p0);
4008 var = var1;
4009 RET_LABEL:;
4010 return var;
4011 }
4012 /* method separate_compiler#SeparateCompiler#compile_resolution_tables for (self: SeparateCompiler, Set[MType]) */
4013 void separate_compiler__SeparateCompiler__compile_resolution_tables(val* self, val* p0) {
4014 val* var_mtypes /* var mtypes: Set[MType] */;
4015 val* var /* : HashMap[MClassType, Set[MType]] */;
4016 val* var_mtype2unresolved /* var mtype2unresolved: HashMap[MClassType, Set[MType]] */;
4017 val* var1 /* : nullable RapidTypeAnalysis */;
4018 val* var2 /* : HashSet[MClassType] */;
4019 val* var3 /* : Iterator[nullable Object] */;
4020 short int var4 /* : Bool */;
4021 val* var5 /* : nullable Object */;
4022 val* var_mtype /* var mtype: MClassType */;
4023 val* var6 /* : HashSet[MType] */;
4024 val* var_set /* var set: HashSet[MType] */;
4025 val* var7 /* : MModule */;
4026 val* var8 /* : Set[MClassDef] */;
4027 val* var9 /* : Iterator[nullable Object] */;
4028 short int var10 /* : Bool */;
4029 val* var11 /* : nullable Object */;
4030 val* var_cd /* var cd: MClassDef */;
4031 val* var12 /* : Map[MClassDef, Set[MType]] */;
4032 short int var13 /* : Bool */;
4033 val* var14 /* : Map[MClassDef, Set[MType]] */;
4034 val* var15 /* : nullable Object */;
4035 val* var17 /* : ModelBuilder */;
4036 val* var18 /* : ToolContext */;
4037 val* var19 /* : OptionBool */;
4038 val* var20 /* : nullable Object */;
4039 short int var21 /* : Bool */;
4040 val* var22 /* : ResolutionBMizer */;
4041 val* var_resolution_builder /* var resolution_builder: ResolutionLayoutBuilder */;
4042 val* var23 /* : ModelBuilder */;
4043 val* var24 /* : ToolContext */;
4044 val* var25 /* : OptionBool */;
4045 val* var26 /* : nullable Object */;
4046 short int var27 /* : Bool */;
4047 val* var28 /* : ResolutionHasher */;
4048 val* var29 /* : PHModOperator */;
4049 val* var30 /* : ModelBuilder */;
4050 val* var31 /* : ToolContext */;
4051 val* var32 /* : OptionBool */;
4052 val* var33 /* : nullable Object */;
4053 short int var34 /* : Bool */;
4054 val* var35 /* : ResolutionHasher */;
4055 val* var36 /* : PHAndOperator */;
4056 val* var37 /* : ResolutionColorer */;
4057 val* var38 /* : Layout[MType] */;
4058 val* var39 /* : Map[MClassType, Array[nullable MType]] */;
4059 val* var40 /* : HashSet[MType] */;
4060 val* var_all_unresolved /* var all_unresolved: HashSet[MType] */;
4061 val* var41 /* : Map[MClassDef, Set[MType]] */;
4062 val* var42 /* : Collection[nullable Object] */;
4063 val* var43 /* : Iterator[nullable Object] */;
4064 short int var44 /* : Bool */;
4065 val* var45 /* : nullable Object */;
4066 val* var_t /* var t: Set[MType] */;
4067 val* var47 /* : HashMap[MType, Int] */;
4068 val* var_all_unresolved_types_colors /* var all_unresolved_types_colors: HashMap[MType, Int] */;
4069 val* var48 /* : Iterator[nullable Object] */;
4070 short int var49 /* : Bool */;
4071 val* var50 /* : nullable Object */;
4072 val* var_t51 /* var t: MType */;
4073 val* var52 /* : nullable Layout[MType] */;
4074 val* var53 /* : Map[Object, Int] */;
4075 short int var54 /* : Bool */;
4076 val* var55 /* : nullable Layout[MType] */;
4077 val* var56 /* : Map[Object, Int] */;
4078 val* var57 /* : nullable Object */;
4079 long var58 /* : Int */;
4080 long var59 /* : Int */;
4081 long var61 /* : Int */;
4082 val* var62 /* : nullable Object */;
4083 var_mtypes = p0;
4084 var = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassTypeabstract_collection__Setmodel__MType);
4085 ((void (*)(val*))(var->class->vft[COLOR_hash_collection__HashMap__init]))(var) /* init on <var:HashMap[MClassType, Set[MType]]>*/;
4086 var_mtype2unresolved = var;
4087 var1 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
4088 if (var1 == NULL) {
4089 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4090 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 519);
4091 show_backtrace(1);
4092 } else {
4093 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var1) /* live_types on <var1:nullable RapidTypeAnalysis>*/;
4094 }
4095 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:HashSet[MClassType]>*/;
4096 for(;;) {
4097 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
4098 if(!var4) break;
4099 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
4100 var_mtype = var5;
4101 var6 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
4102 ((void (*)(val*))(var6->class->vft[COLOR_hash_collection__HashSet__init]))(var6) /* init on <var6:HashSet[MType]>*/;
4103 var_set = var6;
4104 var7 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
4105 var8 = ((val* (*)(val*, val*))(var_mtype->class->vft[COLOR_model__MType__collect_mclassdefs]))(var_mtype, var7) /* collect_mclassdefs on <var_mtype:MClassType>*/;
4106 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Set[MClassDef]>*/;
4107 for(;;) {
4108 var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
4109 if(!var10) break;
4110 var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
4111 var_cd = var11;
4112 var12 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(self) /* live_unresolved_types on <self:SeparateCompiler>*/;
4113 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]]>*/;
4114 if (var13){
4115 var14 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(self) /* live_unresolved_types on <self:SeparateCompiler>*/;
4116 var15 = ((val* (*)(val*, val*))(var14->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var14, var_cd) /* [] on <var14:Map[MClassDef, Set[MType]]>*/;
4117 ((void (*)(val*, val*))(var_set->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_set, var15) /* add_all on <var_set:HashSet[MType]>*/;
4118 } else {
4119 }
4120 CONTINUE_label: (void)0;
4121 ((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
4122 }
4123 BREAK_label: (void)0;
4124 ((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]]>*/;
4125 CONTINUE_label16: (void)0;
4126 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
4127 }
4128 BREAK_label16: (void)0;
4129 var17 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
4130 var18 = ((val* (*)(val*))(var17->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var17) /* toolcontext on <var17:ModelBuilder>*/;
4131 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_separate_compiler__ToolContext__opt_bm_typing]))(var18) /* opt_bm_typing on <var18:ToolContext>*/;
4132 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_opts__Option__value]))(var19) /* value on <var19:OptionBool>*/;
4133 var21 = ((struct instance_kernel__Bool*)var20)->value; /* autounbox from nullable Object to Bool */;
4134 if (var21){
4135 var22 = NEW_layout_builders__ResolutionBMizer(&type_layout_builders__ResolutionBMizer);
4136 ((void (*)(val*))(var22->class->vft[COLOR_layout_builders__ResolutionBMizer__init]))(var22) /* init on <var22:ResolutionBMizer>*/;
4137 var_resolution_builder = var22;
4138 } else {
4139 var23 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
4140 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var23) /* toolcontext on <var23:ModelBuilder>*/;
4141 var25 = ((val* (*)(val*))(var24->class->vft[COLOR_separate_compiler__ToolContext__opt_phmod_typing]))(var24) /* opt_phmod_typing on <var24:ToolContext>*/;
4142 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_opts__Option__value]))(var25) /* value on <var25:OptionBool>*/;
4143 var27 = ((struct instance_kernel__Bool*)var26)->value; /* autounbox from nullable Object to Bool */;
4144 if (var27){
4145 var28 = NEW_layout_builders__ResolutionHasher(&type_layout_builders__ResolutionHasher);
4146 var29 = NEW_layout_builders__PHModOperator(&type_layout_builders__PHModOperator);
4147 ((void (*)(val*))(var29->class->vft[COLOR_layout_builders__PHModOperator__init]))(var29) /* init on <var29:PHModOperator>*/;
4148 ((void (*)(val*, val*))(var28->class->vft[COLOR_layout_builders__ResolutionHasher__init]))(var28, var29) /* init on <var28:ResolutionHasher>*/;
4149 var_resolution_builder = var28;
4150 } else {
4151 var30 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
4152 var31 = ((val* (*)(val*))(var30->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var30) /* toolcontext on <var30:ModelBuilder>*/;
4153 var32 = ((val* (*)(val*))(var31->class->vft[COLOR_separate_compiler__ToolContext__opt_phand_typing]))(var31) /* opt_phand_typing on <var31:ToolContext>*/;
4154 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_opts__Option__value]))(var32) /* value on <var32:OptionBool>*/;
4155 var34 = ((struct instance_kernel__Bool*)var33)->value; /* autounbox from nullable Object to Bool */;
4156 if (var34){
4157 var35 = NEW_layout_builders__ResolutionHasher(&type_layout_builders__ResolutionHasher);
4158 var36 = NEW_layout_builders__PHAndOperator(&type_layout_builders__PHAndOperator);
4159 ((void (*)(val*))(var36->class->vft[COLOR_layout_builders__PHAndOperator__init]))(var36) /* init on <var36:PHAndOperator>*/;
4160 ((void (*)(val*, val*))(var35->class->vft[COLOR_layout_builders__ResolutionHasher__init]))(var35, var36) /* init on <var35:ResolutionHasher>*/;
4161 var_resolution_builder = var35;
4162 } else {
4163 var37 = NEW_layout_builders__ResolutionColorer(&type_layout_builders__ResolutionColorer);
4164 ((void (*)(val*))(var37->class->vft[COLOR_layout_builders__ResolutionColorer__init]))(var37) /* init on <var37:ResolutionColorer>*/;
4165 var_resolution_builder = var37;
4166 }
4167 }
4168 }
4169 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>*/;
4170 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_layout_61d]))(self, var38) /* resolution_layout= on <self:SeparateCompiler>*/;
4171 var39 = ((val* (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__build_resolution_tables]))(self, var_mtype2unresolved) /* build_resolution_tables on <self:SeparateCompiler>*/;
4172 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_tables_61d]))(self, var39) /* resolution_tables= on <self:SeparateCompiler>*/;
4173 var40 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
4174 ((void (*)(val*))(var40->class->vft[COLOR_hash_collection__HashSet__init]))(var40) /* init on <var40:HashSet[MType]>*/;
4175 var_all_unresolved = var40;
4176 var41 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__live_unresolved_types]))(self) /* live_unresolved_types on <self:SeparateCompiler>*/;
4177 var42 = ((val* (*)(val*))(var41->class->vft[COLOR_abstract_collection__MapRead__values]))(var41) /* values on <var41:Map[MClassDef, Set[MType]]>*/;
4178 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_collection__Collection__iterator]))(var42) /* iterator on <var42:Collection[nullable Object](RemovableCollection[Set[MType]])>*/;
4179 for(;;) {
4180 var44 = ((short int (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var43) /* is_ok on <var43:Iterator[nullable Object]>*/;
4181 if(!var44) break;
4182 var45 = ((val* (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__item]))(var43) /* item on <var43:Iterator[nullable Object]>*/;
4183 var_t = var45;
4184 ((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]>*/;
4185 CONTINUE_label46: (void)0;
4186 ((void (*)(val*))(var43->class->vft[COLOR_abstract_collection__Iterator__next]))(var43) /* next on <var43:Iterator[nullable Object]>*/;
4187 }
4188 BREAK_label46: (void)0;
4189 var47 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MTypekernel__Int);
4190 ((void (*)(val*))(var47->class->vft[COLOR_hash_collection__HashMap__init]))(var47) /* init on <var47:HashMap[MType, Int]>*/;
4191 var_all_unresolved_types_colors = var47;
4192 var48 = ((val* (*)(val*))(var_all_unresolved->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_all_unresolved) /* iterator on <var_all_unresolved:HashSet[MType]>*/;
4193 for(;;) {
4194 var49 = ((short int (*)(val*))(var48->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var48) /* is_ok on <var48:Iterator[nullable Object]>*/;
4195 if(!var49) break;
4196 var50 = ((val* (*)(val*))(var48->class->vft[COLOR_abstract_collection__Iterator__item]))(var48) /* item on <var48:Iterator[nullable Object]>*/;
4197 var_t51 = var50;
4198 var52 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_layout]))(self) /* resolution_layout on <self:SeparateCompiler>*/;
4199 if (var52 == NULL) {
4200 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4201 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 551);
4202 show_backtrace(1);
4203 } else {
4204 var53 = ((val* (*)(val*))(var52->class->vft[COLOR_layout_builders__Layout__pos]))(var52) /* pos on <var52:nullable Layout[MType]>*/;
4205 }
4206 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])>*/;
4207 if (var54){
4208 var55 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_layout]))(self) /* resolution_layout on <self:SeparateCompiler>*/;
4209 if (var55 == NULL) {
4210 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4211 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 552);
4212 show_backtrace(1);
4213 } else {
4214 var56 = ((val* (*)(val*))(var55->class->vft[COLOR_layout_builders__Layout__pos]))(var55) /* pos on <var55:nullable Layout[MType]>*/;
4215 }
4216 var57 = ((val* (*)(val*, val*))(var56->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var56, var_t51) /* [] on <var56:Map[Object, Int](Map[MType, Int])>*/;
4217 ((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]>*/;
4218 } else {
4219 var58 = 1;
4220 { /* Inline kernel#Int#unary - (var58) */
4221 var61 = -var58;
4222 var59 = var61;
4223 goto RET_LABEL60;
4224 RET_LABEL60:(void)0;
4225 }
4226 var62 = BOX_kernel__Int(var59); /* autobox from Int to nullable Object */
4227 ((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]>*/;
4228 }
4229 CONTINUE_label63: (void)0;
4230 ((void (*)(val*))(var48->class->vft[COLOR_abstract_collection__Iterator__next]))(var48) /* next on <var48:Iterator[nullable Object]>*/;
4231 }
4232 BREAK_label63: (void)0;
4233 ((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>*/;
4234 RET_LABEL:;
4235 }
4236 /* method separate_compiler#SeparateCompiler#compile_resolution_tables for (self: Object, Set[MType]) */
4237 void VIRTUAL_separate_compiler__SeparateCompiler__compile_resolution_tables(val* self, val* p0) {
4238 separate_compiler__SeparateCompiler__compile_resolution_tables(self, p0);
4239 RET_LABEL:;
4240 }
4241 /* method separate_compiler#SeparateCompiler#build_resolution_tables for (self: SeparateCompiler, Map[MClassType, Set[MType]]): Map[MClassType, Array[nullable MType]] */
4242 val* separate_compiler__SeparateCompiler__build_resolution_tables(val* self, val* p0) {
4243 val* var /* : Map[MClassType, Array[nullable MType]] */;
4244 val* var_elements /* var elements: Map[MClassType, Set[MType]] */;
4245 val* var1 /* : HashMap[MClassType, Array[nullable MType]] */;
4246 val* var_tables /* var tables: HashMap[MClassType, Array[nullable MType]] */;
4247 val* var2 /* : nullable Layout[MType] */;
4248 val* var_layout /* var layout: nullable Layout[MType] */;
4249 val* var3 /* : MapIterator[Object, nullable Object] */;
4250 short int var4 /* : Bool */;
4251 val* var5 /* : Object */;
4252 val* var_mclasstype /* var mclasstype: MClassType */;
4253 val* var6 /* : nullable Object */;
4254 val* var_mtypes /* var mtypes: Set[MType] */;
4255 val* var7 /* : Array[nullable MType] */;
4256 val* var_table /* var table: Array[nullable MType] */;
4257 val* var8 /* : Iterator[nullable Object] */;
4258 short int var9 /* : Bool */;
4259 val* var10 /* : nullable Object */;
4260 val* var_mtype /* var mtype: MType */;
4261 short int var11 /* : Bool */;
4262 int cltype;
4263 int idtype;
4264 val* var12 /* : Map[Object, Map[Object, Int]] */;
4265 val* var13 /* : nullable Object */;
4266 val* var14 /* : nullable Object */;
4267 long var15 /* : Int */;
4268 long var_color /* var color: Int */;
4269 val* var16 /* : Map[Object, Int] */;
4270 val* var17 /* : nullable Object */;
4271 long var18 /* : Int */;
4272 long var19 /* : Int */;
4273 short int var20 /* : Bool */;
4274 short int var22 /* : Bool */;
4275 int cltype23;
4276 int idtype24;
4277 const char* var_class_name;
4278 short int var25 /* : Bool */;
4279 val* var26 /* : Range[Int] */;
4280 long var27 /* : Int */;
4281 val* var28 /* : Discrete */;
4282 val* var29 /* : Discrete */;
4283 val* var30 /* : Iterator[nullable Object] */;
4284 short int var31 /* : Bool */;
4285 val* var32 /* : nullable Object */;
4286 long var_i /* var i: Int */;
4287 long var33 /* : Int */;
4288 val* var34 /* : null */;
4289 var_elements = p0;
4290 var1 = NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassTypearray__Arraynullable_model__MType);
4291 ((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashMap__init]))(var1) /* init on <var1:HashMap[MClassType, Array[nullable MType]]>*/;
4292 var_tables = var1;
4293 var2 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_layout]))(self) /* resolution_layout on <self:SeparateCompiler>*/;
4294 var_layout = var2;
4295 var3 = ((val* (*)(val*))(var_elements->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var_elements) /* iterator on <var_elements:Map[MClassType, Set[MType]]>*/;
4296 for(;;) {
4297 var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var3) /* is_ok on <var3:MapIterator[Object, nullable Object]>*/;
4298 if(!var4) break;
4299 var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__key]))(var3) /* key on <var3:MapIterator[Object, nullable Object]>*/;
4300 var_mclasstype = var5;
4301 var6 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__item]))(var3) /* item on <var3:MapIterator[Object, nullable Object]>*/;
4302 var_mtypes = var6;
4303 var7 = NEW_array__Array(&type_array__Arraynullable_model__MType);
4304 ((void (*)(val*))(var7->class->vft[COLOR_array__Array__init]))(var7) /* init on <var7:Array[nullable MType]>*/;
4305 var_table = var7;
4306 var8 = ((val* (*)(val*))(var_mtypes->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_mtypes) /* iterator on <var_mtypes:Set[MType]>*/;
4307 for(;;) {
4308 var9 = ((short int (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var8) /* is_ok on <var8:Iterator[nullable Object]>*/;
4309 if(!var9) break;
4310 var10 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__item]))(var8) /* item on <var8:Iterator[nullable Object]>*/;
4311 var_mtype = var10;
4312 /* <var_layout:nullable Layout[MType]> isa PHLayout[MClassType, MType] */
4313 cltype = type_layout_builders__PHLayoutmodel__MClassTypemodel__MType.color;
4314 idtype = type_layout_builders__PHLayoutmodel__MClassTypemodel__MType.id;
4315 if(var_layout == NULL) {
4316 var11 = 0;
4317 } else {
4318 if(cltype >= var_layout->type->table_size) {
4319 var11 = 0;
4320 } else {
4321 var11 = var_layout->type->type_table[cltype] == idtype;
4322 }
4323 }
4324 if (var11){
4325 var12 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__PHLayout__hashes]))(var_layout) /* hashes on <var_layout:nullable Layout[MType](PHLayout[MClassType, MType])>*/;
4326 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]])>*/;
4327 var14 = ((val* (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var13, var_mtype) /* [] on <var13:nullable Object(Map[MType, Int])>*/;
4328 var15 = ((struct instance_kernel__Int*)var14)->value; /* autounbox from nullable Object to Int */;
4329 var_color = var15;
4330 } else {
4331 if (var_layout == NULL) {
4332 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4333 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 576);
4334 show_backtrace(1);
4335 } else {
4336 var16 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[MType]>*/;
4337 }
4338 var17 = ((val* (*)(val*, val*))(var16->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var16, var_mtype) /* [] on <var16:Map[Object, Int](Map[MType, Int])>*/;
4339 var18 = ((struct instance_kernel__Int*)var17)->value; /* autounbox from nullable Object to Int */;
4340 var_color = var18;
4341 }
4342 var19 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MType]>*/;
4343 { /* Inline kernel#Int#<= (var19,var_color) */
4344 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
4345 /* <var_color:Int> isa OTHER */
4346 var22 = 1; /* easy <var_color:Int> isa OTHER*/
4347 if (!var22) {
4348 var_class_name = type_kernel__Int.name;
4349 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
4350 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
4351 show_backtrace(1);
4352 }
4353 var25 = var19 <= var_color;
4354 var20 = var25;
4355 goto RET_LABEL21;
4356 RET_LABEL21:(void)0;
4357 }
4358 if (var20){
4359 var26 = NEW_range__Range(&type_range__Rangekernel__Int);
4360 var27 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MType]>*/;
4361 var28 = BOX_kernel__Int(var27); /* autobox from Int to Discrete */
4362 var29 = BOX_kernel__Int(var_color); /* autobox from Int to Discrete */
4363 ((void (*)(val*, val*, val*))(var26->class->vft[COLOR_range__Range__without_last]))(var26, var28, var29) /* without_last on <var26:Range[Int]>*/;
4364 var30 = ((val* (*)(val*))(var26->class->vft[COLOR_abstract_collection__Collection__iterator]))(var26) /* iterator on <var26:Range[Int]>*/;
4365 for(;;) {
4366 var31 = ((short int (*)(val*))(var30->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var30) /* is_ok on <var30:Iterator[nullable Object]>*/;
4367 if(!var31) break;
4368 var32 = ((val* (*)(val*))(var30->class->vft[COLOR_abstract_collection__Iterator__item]))(var30) /* item on <var30:Iterator[nullable Object]>*/;
4369 var33 = ((struct instance_kernel__Int*)var32)->value; /* autounbox from nullable Object to Int */;
4370 var_i = var33;
4371 var34 = NULL;
4372 ((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]>*/;
4373 CONTINUE_label: (void)0;
4374 ((void (*)(val*))(var30->class->vft[COLOR_abstract_collection__Iterator__next]))(var30) /* next on <var30:Iterator[nullable Object]>*/;
4375 }
4376 BREAK_label: (void)0;
4377 } else {
4378 }
4379 ((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]>*/;
4380 CONTINUE_label35: (void)0;
4381 ((void (*)(val*))(var8->class->vft[COLOR_abstract_collection__Iterator__next]))(var8) /* next on <var8:Iterator[nullable Object]>*/;
4382 }
4383 BREAK_label35: (void)0;
4384 ((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]]>*/;
4385 CONTINUE_label36: (void)0;
4386 ((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__MapIterator__next]))(var3) /* next on <var3:MapIterator[Object, nullable Object]>*/;
4387 }
4388 BREAK_label36: (void)0;
4389 var = var_tables;
4390 goto RET_LABEL;
4391 RET_LABEL:;
4392 return var;
4393 }
4394 /* method separate_compiler#SeparateCompiler#build_resolution_tables for (self: Object, Map[MClassType, Set[MType]]): Map[MClassType, Array[nullable MType]] */
4395 val* VIRTUAL_separate_compiler__SeparateCompiler__build_resolution_tables(val* self, val* p0) {
4396 val* var /* : Map[MClassType, Array[nullable MType]] */;
4397 val* var1 /* : Map[MClassType, Array[nullable MType]] */;
4398 var1 = separate_compiler__SeparateCompiler__build_resolution_tables(self, p0);
4399 var = var1;
4400 RET_LABEL:;
4401 return var;
4402 }
4403 /* method separate_compiler#SeparateCompiler#compile_module_to_c for (self: SeparateCompiler, MModule) */
4404 void separate_compiler__SeparateCompiler__compile_module_to_c(val* self, val* p0) {
4405 val* var_mmodule /* var mmodule: MModule */;
4406 val* var /* : MModule */;
4407 val* var_old_module /* var old_module: MModule */;
4408 val* var1 /* : Array[MClassDef] */;
4409 val* var2 /* : Iterator[nullable Object] */;
4410 short int var3 /* : Bool */;
4411 val* var4 /* : nullable Object */;
4412 val* var_cd /* var cd: MClassDef */;
4413 val* var5 /* : Array[MPropDef] */;
4414 val* var6 /* : Iterator[nullable Object] */;
4415 short int var7 /* : Bool */;
4416 val* var8 /* : nullable Object */;
4417 val* var_pd /* var pd: MPropDef */;
4418 short int var9 /* : Bool */;
4419 int cltype;
4420 int idtype;
4421 short int var10 /* : Bool */;
4422 val* var11 /* : AbstractRuntimeFunction */;
4423 val* var_r /* var r: AbstractRuntimeFunction */;
4424 val* var12 /* : AbstractRuntimeFunction */;
4425 val* var_r2 /* var r2: AbstractRuntimeFunction */;
4426 var_mmodule = p0;
4427 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
4428 var_old_module = var;
4429 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(self, var_mmodule) /* mainmodule= on <self:SeparateCompiler>*/;
4430 var1 = ((val* (*)(val*))(var_mmodule->class->vft[COLOR_model__MModule__mclassdefs]))(var_mmodule) /* mclassdefs on <var_mmodule:MModule>*/;
4431 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_collection__Collection__iterator]))(var1) /* iterator on <var1:Array[MClassDef]>*/;
4432 for(;;) {
4433 var3 = ((short int (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var2) /* is_ok on <var2:Iterator[nullable Object]>*/;
4434 if(!var3) break;
4435 var4 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__item]))(var2) /* item on <var2:Iterator[nullable Object]>*/;
4436 var_cd = var4;
4437 var5 = ((val* (*)(val*))(var_cd->class->vft[COLOR_model__MClassDef__mpropdefs]))(var_cd) /* mpropdefs on <var_cd:MClassDef>*/;
4438 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_abstract_collection__Collection__iterator]))(var5) /* iterator on <var5:Array[MPropDef]>*/;
4439 for(;;) {
4440 var7 = ((short int (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var6) /* is_ok on <var6:Iterator[nullable Object]>*/;
4441 if(!var7) break;
4442 var8 = ((val* (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__item]))(var6) /* item on <var6:Iterator[nullable Object]>*/;
4443 var_pd = var8;
4444 /* <var_pd:MPropDef> isa MMethodDef */
4445 cltype = type_model__MMethodDef.color;
4446 idtype = type_model__MMethodDef.id;
4447 if(cltype >= var_pd->type->table_size) {
4448 var9 = 0;
4449 } else {
4450 var9 = var_pd->type->type_table[cltype] == idtype;
4451 }
4452 var10 = !var9;
4453 if (var10){
4454 goto CONTINUE_label;
4455 } else {
4456 }
4457 var11 = ((val* (*)(val*))(var_pd->class->vft[COLOR_separate_compiler__MMethodDef__separate_runtime_function]))(var_pd) /* separate_runtime_function on <var_pd:MPropDef(MMethodDef)>*/;
4458 var_r = var11;
4459 ((void (*)(val*, val*))(var_r->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__compile_to_c]))(var_r, self) /* compile_to_c on <var_r:AbstractRuntimeFunction>*/;
4460 var12 = ((val* (*)(val*))(var_pd->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function]))(var_pd) /* virtual_runtime_function on <var_pd:MPropDef(MMethodDef)>*/;
4461 var_r2 = var12;
4462 ((void (*)(val*, val*))(var_r2->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__compile_to_c]))(var_r2, self) /* compile_to_c on <var_r2:AbstractRuntimeFunction>*/;
4463 CONTINUE_label: (void)0;
4464 ((void (*)(val*))(var6->class->vft[COLOR_abstract_collection__Iterator__next]))(var6) /* next on <var6:Iterator[nullable Object]>*/;
4465 }
4466 BREAK_label: (void)0;
4467 CONTINUE_label13: (void)0;
4468 ((void (*)(val*))(var2->class->vft[COLOR_abstract_collection__Iterator__next]))(var2) /* next on <var2:Iterator[nullable Object]>*/;
4469 }
4470 BREAK_label13: (void)0;
4471 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(self, var_old_module) /* mainmodule= on <self:SeparateCompiler>*/;
4472 RET_LABEL:;
4473 }
4474 /* method separate_compiler#SeparateCompiler#compile_module_to_c for (self: Object, MModule) */
4475 void VIRTUAL_separate_compiler__SeparateCompiler__compile_module_to_c(val* self, val* p0) {
4476 separate_compiler__SeparateCompiler__compile_module_to_c(self, p0);
4477 RET_LABEL:;
4478 }
4479 /* method separate_compiler#SeparateCompiler#compile_type_to_c for (self: SeparateCompiler, MType) */
4480 void separate_compiler__SeparateCompiler__compile_type_to_c(val* self, val* p0) {
4481 val* var_mtype /* var mtype: MType */;
4482 short int var /* : Bool */;
4483 short int var1 /* : Bool */;
4484 val* var2 /* : nullable Layout[MType] */;
4485 val* var_layout /* var layout: nullable Layout[MType] */;
4486 short int var3 /* : Bool */;
4487 short int var4 /* : Bool */;
4488 int cltype;
4489 int idtype;
4490 short int var_ /* var : Bool */;
4491 val* var5 /* : nullable RapidTypeAnalysis */;
4492 val* var6 /* : HashSet[MClassType] */;
4493 short int var7 /* : Bool */;
4494 short int var_is_live /* var is_live: Bool */;
4495 val* var8 /* : nullable RapidTypeAnalysis */;
4496 val* var9 /* : HashSet[MType] */;
4497 short int var10 /* : Bool */;
4498 short int var_is_cast_live /* var is_cast_live: Bool */;
4499 val* var11 /* : String */;
4500 val* var_c_name /* var c_name: String */;
4501 val* var12 /* : SeparateCompilerVisitor */;
4502 val* var_v /* var v: SeparateCompilerVisitor */;
4503 static val* varonce;
4504 val* var13 /* : String */;
4505 char* var14 /* : NativeString */;
4506 long var15 /* : Int */;
4507 val* var16 /* : String */;
4508 static val* varonce17;
4509 val* var18 /* : String */;
4510 char* var19 /* : NativeString */;
4511 long var20 /* : Int */;
4512 val* var21 /* : String */;
4513 val* var22 /* : Array[Object] */;
4514 long var23 /* : Int */;
4515 val* var24 /* : NativeArray[Object] */;
4516 val* var25 /* : String */;
4517 static val* varonce26;
4518 val* var27 /* : String */;
4519 char* var28 /* : NativeString */;
4520 long var29 /* : Int */;
4521 val* var30 /* : String */;
4522 val* var31 /* : Array[Object] */;
4523 long var32 /* : Int */;
4524 val* var33 /* : NativeArray[Object] */;
4525 val* var34 /* : String */;
4526 static val* varonce35;
4527 val* var36 /* : String */;
4528 char* var37 /* : NativeString */;
4529 long var38 /* : Int */;
4530 val* var39 /* : String */;
4531 static val* varonce40;
4532 val* var41 /* : String */;
4533 char* var42 /* : NativeString */;
4534 long var43 /* : Int */;
4535 val* var44 /* : String */;
4536 val* var45 /* : Array[Object] */;
4537 long var46 /* : Int */;
4538 val* var47 /* : NativeArray[Object] */;
4539 val* var48 /* : String */;
4540 static val* varonce49;
4541 val* var50 /* : String */;
4542 char* var51 /* : NativeString */;
4543 long var52 /* : Int */;
4544 val* var53 /* : String */;
4545 static val* varonce54;
4546 val* var55 /* : String */;
4547 char* var56 /* : NativeString */;
4548 long var57 /* : Int */;
4549 val* var58 /* : String */;
4550 val* var59 /* : Array[Object] */;
4551 long var60 /* : Int */;
4552 val* var61 /* : NativeArray[Object] */;
4553 val* var62 /* : String */;
4554 val* var63 /* : Map[Object, Int] */;
4555 val* var64 /* : nullable Object */;
4556 static val* varonce65;
4557 val* var66 /* : String */;
4558 char* var67 /* : NativeString */;
4559 long var68 /* : Int */;
4560 val* var69 /* : String */;
4561 val* var70 /* : Array[Object] */;
4562 long var71 /* : Int */;
4563 val* var72 /* : NativeArray[Object] */;
4564 val* var73 /* : String */;
4565 static val* varonce74;
4566 val* var75 /* : String */;
4567 char* var76 /* : NativeString */;
4568 long var77 /* : Int */;
4569 val* var78 /* : String */;
4570 static val* varonce79;
4571 val* var80 /* : String */;
4572 char* var81 /* : NativeString */;
4573 long var82 /* : Int */;
4574 val* var83 /* : String */;
4575 static val* varonce84;
4576 val* var85 /* : String */;
4577 char* var86 /* : NativeString */;
4578 long var87 /* : Int */;
4579 val* var88 /* : String */;
4580 val* var89 /* : Array[Object] */;
4581 long var90 /* : Int */;
4582 val* var91 /* : NativeArray[Object] */;
4583 val* var92 /* : String */;
4584 short int var93 /* : Bool */;
4585 int cltype94;
4586 int idtype95;
4587 val* var96 /* : Map[Object, Int] */;
4588 val* var97 /* : nullable Object */;
4589 static val* varonce98;
4590 val* var99 /* : String */;
4591 char* var100 /* : NativeString */;
4592 long var101 /* : Int */;
4593 val* var102 /* : String */;
4594 val* var103 /* : Array[Object] */;
4595 long var104 /* : Int */;
4596 val* var105 /* : NativeArray[Object] */;
4597 val* var106 /* : String */;
4598 val* var107 /* : Map[Object, Int] */;
4599 val* var108 /* : nullable Object */;
4600 static val* varonce109;
4601 val* var110 /* : String */;
4602 char* var111 /* : NativeString */;
4603 long var112 /* : Int */;
4604 val* var113 /* : String */;
4605 val* var114 /* : Array[Object] */;
4606 long var115 /* : Int */;
4607 val* var116 /* : NativeArray[Object] */;
4608 val* var117 /* : String */;
4609 static val* varonce118;
4610 val* var119 /* : String */;
4611 char* var120 /* : NativeString */;
4612 long var121 /* : Int */;
4613 val* var122 /* : String */;
4614 short int var123 /* : Bool */;
4615 int cltype124;
4616 int idtype125;
4617 static val* varonce126;
4618 val* var127 /* : String */;
4619 char* var128 /* : NativeString */;
4620 long var129 /* : Int */;
4621 val* var130 /* : String */;
4622 static val* varonce131;
4623 val* var132 /* : String */;
4624 char* var133 /* : NativeString */;
4625 long var134 /* : Int */;
4626 val* var135 /* : String */;
4627 val* var_mclass_type /* var mclass_type: MType */;
4628 short int var136 /* : Bool */;
4629 int cltype137;
4630 int idtype138;
4631 val* var139 /* : MType */;
4632 short int var140 /* : Bool */;
4633 int cltype141;
4634 int idtype142;
4635 val* var143 /* : Map[MClassType, Array[nullable MType]] */;
4636 val* var144 /* : nullable Object */;
4637 short int var145 /* : Bool */;
4638 static val* varonce146;
4639 val* var147 /* : String */;
4640 char* var148 /* : NativeString */;
4641 long var149 /* : Int */;
4642 val* var150 /* : String */;
4643 static val* varonce151;
4644 val* var152 /* : String */;
4645 char* var153 /* : NativeString */;
4646 long var154 /* : Int */;
4647 val* var155 /* : String */;
4648 val* var156 /* : Array[Object] */;
4649 long var157 /* : Int */;
4650 val* var158 /* : NativeArray[Object] */;
4651 val* var159 /* : String */;
4652 static val* varonce160;
4653 val* var161 /* : String */;
4654 char* var162 /* : NativeString */;
4655 long var163 /* : Int */;
4656 val* var164 /* : String */;
4657 static val* varonce165;
4658 val* var166 /* : String */;
4659 char* var167 /* : NativeString */;
4660 long var168 /* : Int */;
4661 val* var169 /* : String */;
4662 val* var170 /* : Array[Object] */;
4663 long var171 /* : Int */;
4664 val* var172 /* : NativeArray[Object] */;
4665 val* var173 /* : String */;
4666 static val* varonce174;
4667 val* var175 /* : String */;
4668 char* var176 /* : NativeString */;
4669 long var177 /* : Int */;
4670 val* var178 /* : String */;
4671 val* var179 /* : Map[MType, Array[nullable MType]] */;
4672 val* var180 /* : nullable Object */;
4673 long var181 /* : Int */;
4674 static val* varonce182;
4675 val* var183 /* : String */;
4676 char* var184 /* : NativeString */;
4677 long var185 /* : Int */;
4678 val* var186 /* : String */;
4679 val* var187 /* : Array[Object] */;
4680 long var188 /* : Int */;
4681 val* var189 /* : NativeArray[Object] */;
4682 val* var190 /* : Object */;
4683 val* var191 /* : String */;
4684 static val* varonce192;
4685 val* var193 /* : String */;
4686 char* var194 /* : NativeString */;
4687 long var195 /* : Int */;
4688 val* var196 /* : String */;
4689 val* var197 /* : Map[MType, Array[nullable MType]] */;
4690 val* var198 /* : nullable Object */;
4691 val* var199 /* : Iterator[nullable Object] */;
4692 short int var200 /* : Bool */;
4693 val* var201 /* : nullable Object */;
4694 val* var_stype /* var stype: nullable MType */;
4695 val* var202 /* : null */;
4696 short int var203 /* : Bool */;
4697 static val* varonce204;
4698 val* var205 /* : String */;
4699 char* var206 /* : NativeString */;
4700 long var207 /* : Int */;
4701 val* var208 /* : String */;
4702 val* var209 /* : Map[Object, Int] */;
4703 val* var210 /* : nullable Object */;
4704 static val* varonce211;
4705 val* var212 /* : String */;
4706 char* var213 /* : NativeString */;
4707 long var214 /* : Int */;
4708 val* var215 /* : String */;
4709 static val* varonce216;
4710 val* var217 /* : String */;
4711 char* var218 /* : NativeString */;
4712 long var219 /* : Int */;
4713 val* var220 /* : String */;
4714 val* var221 /* : Array[Object] */;
4715 long var222 /* : Int */;
4716 val* var223 /* : NativeArray[Object] */;
4717 val* var224 /* : String */;
4718 static val* varonce225;
4719 val* var226 /* : String */;
4720 char* var227 /* : NativeString */;
4721 long var228 /* : Int */;
4722 val* var229 /* : String */;
4723 static val* varonce230;
4724 val* var231 /* : String */;
4725 char* var232 /* : NativeString */;
4726 long var233 /* : Int */;
4727 val* var234 /* : String */;
4728 static val* varonce235;
4729 val* var236 /* : String */;
4730 char* var237 /* : NativeString */;
4731 long var238 /* : Int */;
4732 val* var239 /* : String */;
4733 var_mtype = p0;
4734 var = ((short int (*)(val*))(var_mtype->class->vft[COLOR_model__MType__need_anchor]))(var_mtype) /* need_anchor on <var_mtype:MType>*/;
4735 var1 = !var;
4736 if (!var1) {
4737 fprintf(stderr, "Runtime error: %s", "Assert failed");
4738 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 611);
4739 show_backtrace(1);
4740 }
4741 var2 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_layout]))(self) /* type_layout on <self:SeparateCompiler>*/;
4742 var_layout = var2;
4743 /* <var_mtype:MType> isa MClassType */
4744 cltype = type_model__MClassType.color;
4745 idtype = type_model__MClassType.id;
4746 if(cltype >= var_mtype->type->table_size) {
4747 var4 = 0;
4748 } else {
4749 var4 = var_mtype->type->type_table[cltype] == idtype;
4750 }
4751 var_ = var4;
4752 if (var4){
4753 var5 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
4754 if (var5 == NULL) {
4755 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4756 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 613);
4757 show_backtrace(1);
4758 } else {
4759 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var5) /* live_types on <var5:nullable RapidTypeAnalysis>*/;
4760 }
4761 var7 = ((short int (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__Collection__has]))(var6, var_mtype) /* has on <var6:HashSet[MClassType]>*/;
4762 var3 = var7;
4763 } else {
4764 var3 = var_;
4765 }
4766 var_is_live = var3;
4767 var8 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
4768 if (var8 == NULL) {
4769 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4770 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 614);
4771 show_backtrace(1);
4772 } else {
4773 var9 = ((val* (*)(val*))(var8->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_cast_types]))(var8) /* live_cast_types on <var8:nullable RapidTypeAnalysis>*/;
4774 }
4775 var10 = ((short int (*)(val*, val*))(var9->class->vft[COLOR_abstract_collection__Collection__has]))(var9, var_mtype) /* has on <var9:HashSet[MType]>*/;
4776 var_is_cast_live = var10;
4777 var11 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
4778 var_c_name = var11;
4779 var12 = NEW_separate_compiler__SeparateCompilerVisitor(&type_separate_compiler__SeparateCompilerVisitor);
4780 ((void (*)(val*, val*))(var12->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init]))(var12, self) /* init on <var12:SeparateCompilerVisitor>*/;
4781 var_v = var12;
4782 if (varonce) {
4783 var13 = varonce;
4784 } else {
4785 var14 = "/* runtime type ";
4786 var15 = 16;
4787 var16 = string__NativeString__to_s_with_length(var14, var15);
4788 var13 = var16;
4789 varonce = var13;
4790 }
4791 if (varonce17) {
4792 var18 = varonce17;
4793 } else {
4794 var19 = " */";
4795 var20 = 3;
4796 var21 = string__NativeString__to_s_with_length(var19, var20);
4797 var18 = var21;
4798 varonce17 = var18;
4799 }
4800 var22 = NEW_array__Array(&type_array__Arraykernel__Object);
4801 { /* var22 = array_instance Array[Object] */
4802 var23 = 3;
4803 var24 = NEW_array__NativeArray(var23, &type_array__NativeArraykernel__Object);
4804 ((struct instance_array__NativeArray*)var24)->values[0] = (val*) var13;
4805 ((struct instance_array__NativeArray*)var24)->values[1] = (val*) var_mtype;
4806 ((struct instance_array__NativeArray*)var24)->values[2] = (val*) var18;
4807 ((void (*)(val*, val*, long))(var22->class->vft[COLOR_array__Array__with_native]))(var22, var24, var23) /* with_native on <var22:Array[Object]>*/;
4808 }
4809 var25 = ((val* (*)(val*))(var22->class->vft[COLOR_string__Object__to_s]))(var22) /* to_s on <var22:Array[Object]>*/;
4810 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var25) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4811 if (varonce26) {
4812 var27 = varonce26;
4813 } else {
4814 var28 = "type_";
4815 var29 = 5;
4816 var30 = string__NativeString__to_s_with_length(var28, var29);
4817 var27 = var30;
4818 varonce26 = var27;
4819 }
4820 var31 = NEW_array__Array(&type_array__Arraykernel__Object);
4821 { /* var31 = array_instance Array[Object] */
4822 var32 = 2;
4823 var33 = NEW_array__NativeArray(var32, &type_array__NativeArraykernel__Object);
4824 ((struct instance_array__NativeArray*)var33)->values[0] = (val*) var27;
4825 ((struct instance_array__NativeArray*)var33)->values[1] = (val*) var_c_name;
4826 ((void (*)(val*, val*, long))(var31->class->vft[COLOR_array__Array__with_native]))(var31, var33, var32) /* with_native on <var31:Array[Object]>*/;
4827 }
4828 var34 = ((val* (*)(val*))(var31->class->vft[COLOR_string__Object__to_s]))(var31) /* to_s on <var31:Array[Object]>*/;
4829 if (varonce35) {
4830 var36 = varonce35;
4831 } else {
4832 var37 = "extern const struct type type_";
4833 var38 = 30;
4834 var39 = string__NativeString__to_s_with_length(var37, var38);
4835 var36 = var39;
4836 varonce35 = var36;
4837 }
4838 if (varonce40) {
4839 var41 = varonce40;
4840 } else {
4841 var42 = ";";
4842 var43 = 1;
4843 var44 = string__NativeString__to_s_with_length(var42, var43);
4844 var41 = var44;
4845 varonce40 = var41;
4846 }
4847 var45 = NEW_array__Array(&type_array__Arraykernel__Object);
4848 { /* var45 = array_instance Array[Object] */
4849 var46 = 3;
4850 var47 = NEW_array__NativeArray(var46, &type_array__NativeArraykernel__Object);
4851 ((struct instance_array__NativeArray*)var47)->values[0] = (val*) var36;
4852 ((struct instance_array__NativeArray*)var47)->values[1] = (val*) var_c_name;
4853 ((struct instance_array__NativeArray*)var47)->values[2] = (val*) var41;
4854 ((void (*)(val*, val*, long))(var45->class->vft[COLOR_array__Array__with_native]))(var45, var47, var46) /* with_native on <var45:Array[Object]>*/;
4855 }
4856 var48 = ((val* (*)(val*))(var45->class->vft[COLOR_string__Object__to_s]))(var45) /* to_s on <var45:Array[Object]>*/;
4857 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var34, var48) /* provide_declaration on <self:SeparateCompiler>*/;
4858 if (varonce49) {
4859 var50 = varonce49;
4860 } else {
4861 var51 = "const struct type type_";
4862 var52 = 23;
4863 var53 = string__NativeString__to_s_with_length(var51, var52);
4864 var50 = var53;
4865 varonce49 = var50;
4866 }
4867 if (varonce54) {
4868 var55 = varonce54;
4869 } else {
4870 var56 = " = {";
4871 var57 = 4;
4872 var58 = string__NativeString__to_s_with_length(var56, var57);
4873 var55 = var58;
4874 varonce54 = var55;
4875 }
4876 var59 = NEW_array__Array(&type_array__Arraykernel__Object);
4877 { /* var59 = array_instance Array[Object] */
4878 var60 = 3;
4879 var61 = NEW_array__NativeArray(var60, &type_array__NativeArraykernel__Object);
4880 ((struct instance_array__NativeArray*)var61)->values[0] = (val*) var50;
4881 ((struct instance_array__NativeArray*)var61)->values[1] = (val*) var_c_name;
4882 ((struct instance_array__NativeArray*)var61)->values[2] = (val*) var55;
4883 ((void (*)(val*, val*, long))(var59->class->vft[COLOR_array__Array__with_native]))(var59, var61, var60) /* with_native on <var59:Array[Object]>*/;
4884 }
4885 var62 = ((val* (*)(val*))(var59->class->vft[COLOR_string__Object__to_s]))(var59) /* to_s on <var59:Array[Object]>*/;
4886 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var62) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4887 if (var_is_cast_live){
4888 if (var_layout == NULL) {
4889 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4890 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 627);
4891 show_backtrace(1);
4892 } else {
4893 var63 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__ids]))(var_layout) /* ids on <var_layout:nullable Layout[MType]>*/;
4894 }
4895 var64 = ((val* (*)(val*, val*))(var63->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var63, var_mtype) /* [] on <var63:Map[Object, Int](Map[MType, Int])>*/;
4896 if (varonce65) {
4897 var66 = varonce65;
4898 } else {
4899 var67 = ",";
4900 var68 = 1;
4901 var69 = string__NativeString__to_s_with_length(var67, var68);
4902 var66 = var69;
4903 varonce65 = var66;
4904 }
4905 var70 = NEW_array__Array(&type_array__Arraykernel__Object);
4906 { /* var70 = array_instance Array[Object] */
4907 var71 = 2;
4908 var72 = NEW_array__NativeArray(var71, &type_array__NativeArraykernel__Object);
4909 ((struct instance_array__NativeArray*)var72)->values[0] = (val*) var64;
4910 ((struct instance_array__NativeArray*)var72)->values[1] = (val*) var66;
4911 ((void (*)(val*, val*, long))(var70->class->vft[COLOR_array__Array__with_native]))(var70, var72, var71) /* with_native on <var70:Array[Object]>*/;
4912 }
4913 var73 = ((val* (*)(val*))(var70->class->vft[COLOR_string__Object__to_s]))(var70) /* to_s on <var70:Array[Object]>*/;
4914 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var73) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4915 } else {
4916 if (varonce74) {
4917 var75 = varonce74;
4918 } else {
4919 var76 = "-1, /*CAST DEAD*/";
4920 var77 = 17;
4921 var78 = string__NativeString__to_s_with_length(var76, var77);
4922 var75 = var78;
4923 varonce74 = var75;
4924 }
4925 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var75) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4926 }
4927 if (varonce79) {
4928 var80 = varonce79;
4929 } else {
4930 var81 = "\"";
4931 var82 = 1;
4932 var83 = string__NativeString__to_s_with_length(var81, var82);
4933 var80 = var83;
4934 varonce79 = var80;
4935 }
4936 if (varonce84) {
4937 var85 = varonce84;
4938 } else {
4939 var86 = "\", /* class_name_string */";
4940 var87 = 26;
4941 var88 = string__NativeString__to_s_with_length(var86, var87);
4942 var85 = var88;
4943 varonce84 = var85;
4944 }
4945 var89 = NEW_array__Array(&type_array__Arraykernel__Object);
4946 { /* var89 = array_instance Array[Object] */
4947 var90 = 3;
4948 var91 = NEW_array__NativeArray(var90, &type_array__NativeArraykernel__Object);
4949 ((struct instance_array__NativeArray*)var91)->values[0] = (val*) var80;
4950 ((struct instance_array__NativeArray*)var91)->values[1] = (val*) var_mtype;
4951 ((struct instance_array__NativeArray*)var91)->values[2] = (val*) var85;
4952 ((void (*)(val*, val*, long))(var89->class->vft[COLOR_array__Array__with_native]))(var89, var91, var90) /* with_native on <var89:Array[Object]>*/;
4953 }
4954 var92 = ((val* (*)(val*))(var89->class->vft[COLOR_string__Object__to_s]))(var89) /* to_s on <var89:Array[Object]>*/;
4955 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var92) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4956 if (var_is_cast_live){
4957 /* <var_layout:nullable Layout[MType]> isa PHLayout[MType, MType] */
4958 cltype94 = type_layout_builders__PHLayoutmodel__MTypemodel__MType.color;
4959 idtype95 = type_layout_builders__PHLayoutmodel__MTypemodel__MType.id;
4960 if(var_layout == NULL) {
4961 var93 = 0;
4962 } else {
4963 if(cltype94 >= var_layout->type->table_size) {
4964 var93 = 0;
4965 } else {
4966 var93 = var_layout->type->type_table[cltype94] == idtype95;
4967 }
4968 }
4969 if (var93){
4970 var96 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__PHLayout__masks]))(var_layout) /* masks on <var_layout:nullable Layout[MType](PHLayout[MType, MType])>*/;
4971 var97 = ((val* (*)(val*, val*))(var96->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var96, var_mtype) /* [] on <var96:Map[Object, Int](Map[MType, Int])>*/;
4972 if (varonce98) {
4973 var99 = varonce98;
4974 } else {
4975 var100 = ",";
4976 var101 = 1;
4977 var102 = string__NativeString__to_s_with_length(var100, var101);
4978 var99 = var102;
4979 varonce98 = var99;
4980 }
4981 var103 = NEW_array__Array(&type_array__Arraykernel__Object);
4982 { /* var103 = array_instance Array[Object] */
4983 var104 = 2;
4984 var105 = NEW_array__NativeArray(var104, &type_array__NativeArraykernel__Object);
4985 ((struct instance_array__NativeArray*)var105)->values[0] = (val*) var97;
4986 ((struct instance_array__NativeArray*)var105)->values[1] = (val*) var99;
4987 ((void (*)(val*, val*, long))(var103->class->vft[COLOR_array__Array__with_native]))(var103, var105, var104) /* with_native on <var103:Array[Object]>*/;
4988 }
4989 var106 = ((val* (*)(val*))(var103->class->vft[COLOR_string__Object__to_s]))(var103) /* to_s on <var103:Array[Object]>*/;
4990 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var106) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4991 } else {
4992 if (var_layout == NULL) {
4993 fprintf(stderr, "Runtime error: %s", "Receiver is null");
4994 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 640);
4995 show_backtrace(1);
4996 } else {
4997 var107 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__pos]))(var_layout) /* pos on <var_layout:nullable Layout[MType]>*/;
4998 }
4999 var108 = ((val* (*)(val*, val*))(var107->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var107, var_mtype) /* [] on <var107:Map[Object, Int](Map[MType, Int])>*/;
5000 if (varonce109) {
5001 var110 = varonce109;
5002 } else {
5003 var111 = ",";
5004 var112 = 1;
5005 var113 = string__NativeString__to_s_with_length(var111, var112);
5006 var110 = var113;
5007 varonce109 = var110;
5008 }
5009 var114 = NEW_array__Array(&type_array__Arraykernel__Object);
5010 { /* var114 = array_instance Array[Object] */
5011 var115 = 2;
5012 var116 = NEW_array__NativeArray(var115, &type_array__NativeArraykernel__Object);
5013 ((struct instance_array__NativeArray*)var116)->values[0] = (val*) var108;
5014 ((struct instance_array__NativeArray*)var116)->values[1] = (val*) var110;
5015 ((void (*)(val*, val*, long))(var114->class->vft[COLOR_array__Array__with_native]))(var114, var116, var115) /* with_native on <var114:Array[Object]>*/;
5016 }
5017 var117 = ((val* (*)(val*))(var114->class->vft[COLOR_string__Object__to_s]))(var114) /* to_s on <var114:Array[Object]>*/;
5018 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var117) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5019 }
5020 } else {
5021 if (varonce118) {
5022 var119 = varonce118;
5023 } else {
5024 var120 = "-1, /*CAST DEAD*/";
5025 var121 = 17;
5026 var122 = string__NativeString__to_s_with_length(var120, var121);
5027 var119 = var122;
5028 varonce118 = var119;
5029 }
5030 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var119) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5031 }
5032 /* <var_mtype:MType> isa MNullableType */
5033 cltype124 = type_model__MNullableType.color;
5034 idtype125 = type_model__MNullableType.id;
5035 if(cltype124 >= var_mtype->type->table_size) {
5036 var123 = 0;
5037 } else {
5038 var123 = var_mtype->type->type_table[cltype124] == idtype125;
5039 }
5040 if (var123){
5041 if (varonce126) {
5042 var127 = varonce126;
5043 } else {
5044 var128 = "1,";
5045 var129 = 2;
5046 var130 = string__NativeString__to_s_with_length(var128, var129);
5047 var127 = var130;
5048 varonce126 = var127;
5049 }
5050 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var127) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5051 } else {
5052 if (varonce131) {
5053 var132 = varonce131;
5054 } else {
5055 var133 = "0,";
5056 var134 = 2;
5057 var135 = string__NativeString__to_s_with_length(var133, var134);
5058 var132 = var135;
5059 varonce131 = var132;
5060 }
5061 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var132) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5062 }
5063 if (var_is_live){
5064 var_mclass_type = var_mtype;
5065 /* <var_mclass_type:MType> isa MNullableType */
5066 cltype137 = type_model__MNullableType.color;
5067 idtype138 = type_model__MNullableType.id;
5068 if(cltype137 >= var_mclass_type->type->table_size) {
5069 var136 = 0;
5070 } else {
5071 var136 = var_mclass_type->type->type_table[cltype137] == idtype138;
5072 }
5073 if (var136){
5074 var139 = ((val* (*)(val*))(var_mclass_type->class->vft[COLOR_model__MNullableType__mtype]))(var_mclass_type) /* mtype on <var_mclass_type:MType(MNullableType)>*/;
5075 var_mclass_type = var139;
5076 } else {
5077 }
5078 /* <var_mclass_type:MType> isa MClassType */
5079 cltype141 = type_model__MClassType.color;
5080 idtype142 = type_model__MClassType.id;
5081 if(cltype141 >= var_mclass_type->type->table_size) {
5082 var140 = 0;
5083 } else {
5084 var140 = var_mclass_type->type->type_table[cltype141] == idtype142;
5085 }
5086 if (!var140) {
5087 fprintf(stderr, "Runtime error: %s", "Assert failed");
5088 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 657);
5089 show_backtrace(1);
5090 }
5091 var143 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_tables]))(self) /* resolution_tables on <self:SeparateCompiler>*/;
5092 var144 = ((val* (*)(val*, val*))(var143->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var143, var_mclass_type) /* [] on <var143:Map[MClassType, Array[nullable MType]]>*/;
5093 var145 = ((short int (*)(val*))(var144->class->vft[COLOR_abstract_collection__Collection__is_empty]))(var144) /* is_empty on <var144:nullable Object(Array[nullable MType])>*/;
5094 if (var145){
5095 if (varonce146) {
5096 var147 = varonce146;
5097 } else {
5098 var148 = "NULL, /*NO RESOLUTIONS*/";
5099 var149 = 24;
5100 var150 = string__NativeString__to_s_with_length(var148, var149);
5101 var147 = var150;
5102 varonce146 = var147;
5103 }
5104 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var147) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5105 } else {
5106 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__compile_type_resolution_table]))(self, var_mtype) /* compile_type_resolution_table on <self:SeparateCompiler>*/;
5107 if (varonce151) {
5108 var152 = varonce151;
5109 } else {
5110 var153 = "resolution_table_";
5111 var154 = 17;
5112 var155 = string__NativeString__to_s_with_length(var153, var154);
5113 var152 = var155;
5114 varonce151 = var152;
5115 }
5116 var156 = NEW_array__Array(&type_array__Arraykernel__Object);
5117 { /* var156 = array_instance Array[Object] */
5118 var157 = 2;
5119 var158 = NEW_array__NativeArray(var157, &type_array__NativeArraykernel__Object);
5120 ((struct instance_array__NativeArray*)var158)->values[0] = (val*) var152;
5121 ((struct instance_array__NativeArray*)var158)->values[1] = (val*) var_c_name;
5122 ((void (*)(val*, val*, long))(var156->class->vft[COLOR_array__Array__with_native]))(var156, var158, var157) /* with_native on <var156:Array[Object]>*/;
5123 }
5124 var159 = ((val* (*)(val*))(var156->class->vft[COLOR_string__Object__to_s]))(var156) /* to_s on <var156:Array[Object]>*/;
5125 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var159) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
5126 if (varonce160) {
5127 var161 = varonce160;
5128 } else {
5129 var162 = "&resolution_table_";
5130 var163 = 18;
5131 var164 = string__NativeString__to_s_with_length(var162, var163);
5132 var161 = var164;
5133 varonce160 = var161;
5134 }
5135 if (varonce165) {
5136 var166 = varonce165;
5137 } else {
5138 var167 = ",";
5139 var168 = 1;
5140 var169 = string__NativeString__to_s_with_length(var167, var168);
5141 var166 = var169;
5142 varonce165 = var166;
5143 }
5144 var170 = NEW_array__Array(&type_array__Arraykernel__Object);
5145 { /* var170 = array_instance Array[Object] */
5146 var171 = 3;
5147 var172 = NEW_array__NativeArray(var171, &type_array__NativeArraykernel__Object);
5148 ((struct instance_array__NativeArray*)var172)->values[0] = (val*) var161;
5149 ((struct instance_array__NativeArray*)var172)->values[1] = (val*) var_c_name;
5150 ((struct instance_array__NativeArray*)var172)->values[2] = (val*) var166;
5151 ((void (*)(val*, val*, long))(var170->class->vft[COLOR_array__Array__with_native]))(var170, var172, var171) /* with_native on <var170:Array[Object]>*/;
5152 }
5153 var173 = ((val* (*)(val*))(var170->class->vft[COLOR_string__Object__to_s]))(var170) /* to_s on <var170:Array[Object]>*/;
5154 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var173) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5155 }
5156 } else {
5157 if (varonce174) {
5158 var175 = varonce174;
5159 } else {
5160 var176 = "NULL, /*DEAD*/";
5161 var177 = 14;
5162 var178 = string__NativeString__to_s_with_length(var176, var177);
5163 var175 = var178;
5164 varonce174 = var175;
5165 }
5166 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var175) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5167 }
5168 if (var_is_live){
5169 var179 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_tables]))(self) /* type_tables on <self:SeparateCompiler>*/;
5170 var180 = ((val* (*)(val*, val*))(var179->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var179, var_mtype) /* [] on <var179:Map[MType, Array[nullable MType]]>*/;
5171 var181 = ((long (*)(val*))(var180->class->vft[COLOR_abstract_collection__Collection__length]))(var180) /* length on <var180:nullable Object(Array[nullable MType])>*/;
5172 if (varonce182) {
5173 var183 = varonce182;
5174 } else {
5175 var184 = ",";
5176 var185 = 1;
5177 var186 = string__NativeString__to_s_with_length(var184, var185);
5178 var183 = var186;
5179 varonce182 = var183;
5180 }
5181 var187 = NEW_array__Array(&type_array__Arraykernel__Object);
5182 { /* var187 = array_instance Array[Object] */
5183 var188 = 2;
5184 var189 = NEW_array__NativeArray(var188, &type_array__NativeArraykernel__Object);
5185 var190 = BOX_kernel__Int(var181); /* autobox from Int to Object */
5186 ((struct instance_array__NativeArray*)var189)->values[0] = (val*) var190;
5187 ((struct instance_array__NativeArray*)var189)->values[1] = (val*) var183;
5188 ((void (*)(val*, val*, long))(var187->class->vft[COLOR_array__Array__with_native]))(var187, var189, var188) /* with_native on <var187:Array[Object]>*/;
5189 }
5190 var191 = ((val* (*)(val*))(var187->class->vft[COLOR_string__Object__to_s]))(var187) /* to_s on <var187:Array[Object]>*/;
5191 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var191) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5192 if (varonce192) {
5193 var193 = varonce192;
5194 } else {
5195 var194 = "{";
5196 var195 = 1;
5197 var196 = string__NativeString__to_s_with_length(var194, var195);
5198 var193 = var196;
5199 varonce192 = var193;
5200 }
5201 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var193) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5202 var197 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_tables]))(self) /* type_tables on <self:SeparateCompiler>*/;
5203 var198 = ((val* (*)(val*, val*))(var197->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var197, var_mtype) /* [] on <var197:Map[MType, Array[nullable MType]]>*/;
5204 var199 = ((val* (*)(val*))(var198->class->vft[COLOR_abstract_collection__Collection__iterator]))(var198) /* iterator on <var198:nullable Object(Array[nullable MType])>*/;
5205 for(;;) {
5206 var200 = ((short int (*)(val*))(var199->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var199) /* is_ok on <var199:Iterator[nullable Object]>*/;
5207 if(!var200) break;
5208 var201 = ((val* (*)(val*))(var199->class->vft[COLOR_abstract_collection__Iterator__item]))(var199) /* item on <var199:Iterator[nullable Object]>*/;
5209 var_stype = var201;
5210 var202 = NULL;
5211 if (var_stype == NULL) {
5212 var203 = 1; /* is null */
5213 } else {
5214 var203 = 0; /* arg is null but recv is not */
5215 }
5216 if (var203){
5217 if (varonce204) {
5218 var205 = varonce204;
5219 } else {
5220 var206 = "-1, /* empty */";
5221 var207 = 15;
5222 var208 = string__NativeString__to_s_with_length(var206, var207);
5223 var205 = var208;
5224 varonce204 = var205;
5225 }
5226 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var205) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5227 } else {
5228 if (var_layout == NULL) {
5229 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5230 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 677);
5231 show_backtrace(1);
5232 } else {
5233 var209 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__Layout__ids]))(var_layout) /* ids on <var_layout:nullable Layout[MType]>*/;
5234 }
5235 var210 = ((val* (*)(val*, val*))(var209->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var209, var_stype) /* [] on <var209:Map[Object, Int](Map[MType, Int])>*/;
5236 if (varonce211) {
5237 var212 = varonce211;
5238 } else {
5239 var213 = ", /* ";
5240 var214 = 5;
5241 var215 = string__NativeString__to_s_with_length(var213, var214);
5242 var212 = var215;
5243 varonce211 = var212;
5244 }
5245 if (varonce216) {
5246 var217 = varonce216;
5247 } else {
5248 var218 = " */";
5249 var219 = 3;
5250 var220 = string__NativeString__to_s_with_length(var218, var219);
5251 var217 = var220;
5252 varonce216 = var217;
5253 }
5254 var221 = NEW_array__Array(&type_array__Arraykernel__Object);
5255 { /* var221 = array_instance Array[Object] */
5256 var222 = 4;
5257 var223 = NEW_array__NativeArray(var222, &type_array__NativeArraykernel__Object);
5258 ((struct instance_array__NativeArray*)var223)->values[0] = (val*) var210;
5259 ((struct instance_array__NativeArray*)var223)->values[1] = (val*) var212;
5260 ((struct instance_array__NativeArray*)var223)->values[2] = (val*) var_stype;
5261 ((struct instance_array__NativeArray*)var223)->values[3] = (val*) var217;
5262 ((void (*)(val*, val*, long))(var221->class->vft[COLOR_array__Array__with_native]))(var221, var223, var222) /* with_native on <var221:Array[Object]>*/;
5263 }
5264 var224 = ((val* (*)(val*))(var221->class->vft[COLOR_string__Object__to_s]))(var221) /* to_s on <var221:Array[Object]>*/;
5265 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var224) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5266 }
5267 CONTINUE_label: (void)0;
5268 ((void (*)(val*))(var199->class->vft[COLOR_abstract_collection__Iterator__next]))(var199) /* next on <var199:Iterator[nullable Object]>*/;
5269 }
5270 BREAK_label: (void)0;
5271 if (varonce225) {
5272 var226 = varonce225;
5273 } else {
5274 var227 = "},";
5275 var228 = 2;
5276 var229 = string__NativeString__to_s_with_length(var227, var228);
5277 var226 = var229;
5278 varonce225 = var226;
5279 }
5280 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var226) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5281 } else {
5282 if (varonce230) {
5283 var231 = varonce230;
5284 } else {
5285 var232 = "0, {}, /*DEAD TYPE*/";
5286 var233 = 20;
5287 var234 = string__NativeString__to_s_with_length(var232, var233);
5288 var231 = var234;
5289 varonce230 = var231;
5290 }
5291 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var231) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5292 }
5293 if (varonce235) {
5294 var236 = varonce235;
5295 } else {
5296 var237 = "};";
5297 var238 = 2;
5298 var239 = string__NativeString__to_s_with_length(var237, var238);
5299 var236 = var239;
5300 varonce235 = var236;
5301 }
5302 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var236) /* 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) */
5311 void separate_compiler__SeparateCompiler__compile_type_resolution_table(val* self, val* p0) {
5312 val* var_mtype /* var mtype: MType */;
5313 short int var /* : Bool */;
5314 int cltype;
5315 int idtype;
5316 val* var1 /* : MType */;
5317 short int var2 /* : Bool */;
5318 int cltype3;
5319 int idtype4;
5320 const char* var_class_name;
5321 val* var_mclass_type /* var mclass_type: MClassType */;
5322 short int var5 /* : Bool */;
5323 int cltype6;
5324 int idtype7;
5325 const char* var_class_name8;
5326 val* var9 /* : nullable Layout[MType] */;
5327 val* var_layout /* var layout: nullable Layout[MType] */;
5328 static val* varonce;
5329 val* var10 /* : String */;
5330 char* var11 /* : NativeString */;
5331 long var12 /* : Int */;
5332 val* var13 /* : String */;
5333 val* var14 /* : String */;
5334 val* var15 /* : Array[Object] */;
5335 long var16 /* : Int */;
5336 val* var17 /* : NativeArray[Object] */;
5337 val* var18 /* : String */;
5338 static val* varonce19;
5339 val* var20 /* : String */;
5340 char* var21 /* : NativeString */;
5341 long var22 /* : Int */;
5342 val* var23 /* : String */;
5343 val* var24 /* : String */;
5344 static val* varonce25;
5345 val* var26 /* : String */;
5346 char* var27 /* : NativeString */;
5347 long var28 /* : Int */;
5348 val* var29 /* : String */;
5349 val* var30 /* : Array[Object] */;
5350 long var31 /* : Int */;
5351 val* var32 /* : NativeArray[Object] */;
5352 val* var33 /* : String */;
5353 val* var34 /* : AbstractCompilerVisitor */;
5354 val* var_v /* var v: SeparateCompilerVisitor */;
5355 static val* varonce35;
5356 val* var36 /* : String */;
5357 char* var37 /* : NativeString */;
5358 long var38 /* : Int */;
5359 val* var39 /* : String */;
5360 val* var40 /* : String */;
5361 static val* varonce41;
5362 val* var42 /* : String */;
5363 char* var43 /* : NativeString */;
5364 long var44 /* : Int */;
5365 val* var45 /* : String */;
5366 val* var46 /* : Array[Object] */;
5367 long var47 /* : Int */;
5368 val* var48 /* : NativeArray[Object] */;
5369 val* var49 /* : String */;
5370 short int var50 /* : Bool */;
5371 int cltype51;
5372 int idtype52;
5373 val* var53 /* : Map[Object, Int] */;
5374 val* var54 /* : nullable Object */;
5375 static val* varonce55;
5376 val* var56 /* : String */;
5377 char* var57 /* : NativeString */;
5378 long var58 /* : Int */;
5379 val* var59 /* : String */;
5380 val* var60 /* : Array[Object] */;
5381 long var61 /* : Int */;
5382 val* var62 /* : NativeArray[Object] */;
5383 val* var63 /* : String */;
5384 static val* varonce64;
5385 val* var65 /* : String */;
5386 char* var66 /* : NativeString */;
5387 long var67 /* : Int */;
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 val* var74 /* : Map[MClassType, Array[nullable MType]] */;
5395 val* var75 /* : nullable Object */;
5396 val* var76 /* : Iterator[nullable Object] */;
5397 short int var77 /* : Bool */;
5398 val* var78 /* : nullable Object */;
5399 val* var_t /* var t: nullable MType */;
5400 val* var79 /* : null */;
5401 short int var80 /* : Bool */;
5402 static val* varonce81;
5403 val* var82 /* : String */;
5404 char* var83 /* : NativeString */;
5405 long var84 /* : Int */;
5406 val* var85 /* : String */;
5407 val* var86 /* : MModule */;
5408 short int var87 /* : Bool */;
5409 val* var88 /* : MType */;
5410 val* var_tv /* var tv: MType */;
5411 val* var89 /* : nullable Layout[MType] */;
5412 val* var90 /* : Map[Object, Int] */;
5413 short int var91 /* : Bool */;
5414 static val* varonce92;
5415 val* var93 /* : String */;
5416 char* var94 /* : NativeString */;
5417 long var95 /* : Int */;
5418 val* var96 /* : String */;
5419 val* var97 /* : String */;
5420 val* var98 /* : Array[Object] */;
5421 long var99 /* : Int */;
5422 val* var100 /* : NativeArray[Object] */;
5423 val* var101 /* : String */;
5424 static val* varonce102;
5425 val* var103 /* : String */;
5426 char* var104 /* : NativeString */;
5427 long var105 /* : Int */;
5428 val* var106 /* : String */;
5429 val* var107 /* : String */;
5430 static val* varonce108;
5431 val* var109 /* : String */;
5432 char* var110 /* : NativeString */;
5433 long var111 /* : Int */;
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 val* var123 /* : Array[Object] */;
5446 long var124 /* : Int */;
5447 val* var125 /* : NativeArray[Object] */;
5448 val* var126 /* : String */;
5449 static val* varonce127;
5450 val* var128 /* : String */;
5451 char* var129 /* : NativeString */;
5452 long var130 /* : Int */;
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 val* var142 /* : Array[Object] */;
5465 long var143 /* : Int */;
5466 val* var144 /* : NativeArray[Object] */;
5467 val* var145 /* : String */;
5468 static val* varonce146;
5469 val* var147 /* : String */;
5470 char* var148 /* : NativeString */;
5471 long var149 /* : Int */;
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 var_mtype = p0;
5479 /* <var_mtype:MType> isa MNullableType */
5480 cltype = type_model__MNullableType.color;
5481 idtype = type_model__MNullableType.id;
5482 if(cltype >= var_mtype->type->table_size) {
5483 var = 0;
5484 } else {
5485 var = var_mtype->type->type_table[cltype] == idtype;
5486 }
5487 if (var){
5488 var1 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MNullableType__mtype]))(var_mtype) /* mtype on <var_mtype:MType(MNullableType)>*/;
5489 /* <var1:MType> isa MClassType */
5490 cltype3 = type_model__MClassType.color;
5491 idtype4 = type_model__MClassType.id;
5492 if(cltype3 >= var1->type->table_size) {
5493 var2 = 0;
5494 } else {
5495 var2 = var1->type->type_table[cltype3] == idtype4;
5496 }
5497 if (!var2) {
5498 var_class_name = var1 == NULL ? "null" : var1->type->name;
5499 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
5500 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 691);
5501 show_backtrace(1);
5502 }
5503 var_mclass_type = var1;
5504 } else {
5505 /* <var_mtype:MType> isa MClassType */
5506 cltype6 = type_model__MClassType.color;
5507 idtype7 = type_model__MClassType.id;
5508 if(cltype6 >= var_mtype->type->table_size) {
5509 var5 = 0;
5510 } else {
5511 var5 = var_mtype->type->type_table[cltype6] == idtype7;
5512 }
5513 if (!var5) {
5514 var_class_name8 = var_mtype == NULL ? "null" : var_mtype->type->name;
5515 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name8);
5516 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 693);
5517 show_backtrace(1);
5518 }
5519 var_mclass_type = var_mtype;
5520 }
5521 var9 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_layout]))(self) /* resolution_layout on <self:SeparateCompiler>*/;
5522 var_layout = var9;
5523 if (varonce) {
5524 var10 = varonce;
5525 } else {
5526 var11 = "resolution_table_";
5527 var12 = 17;
5528 var13 = string__NativeString__to_s_with_length(var11, var12);
5529 var10 = var13;
5530 varonce = var10;
5531 }
5532 var14 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
5533 var15 = NEW_array__Array(&type_array__Arraykernel__Object);
5534 { /* var15 = array_instance Array[Object] */
5535 var16 = 2;
5536 var17 = NEW_array__NativeArray(var16, &type_array__NativeArraykernel__Object);
5537 ((struct instance_array__NativeArray*)var17)->values[0] = (val*) var10;
5538 ((struct instance_array__NativeArray*)var17)->values[1] = (val*) var14;
5539 ((void (*)(val*, val*, long))(var15->class->vft[COLOR_array__Array__with_native]))(var15, var17, var16) /* with_native on <var15:Array[Object]>*/;
5540 }
5541 var18 = ((val* (*)(val*))(var15->class->vft[COLOR_string__Object__to_s]))(var15) /* to_s on <var15:Array[Object]>*/;
5542 if (varonce19) {
5543 var20 = varonce19;
5544 } else {
5545 var21 = "extern const struct types resolution_table_";
5546 var22 = 43;
5547 var23 = string__NativeString__to_s_with_length(var21, var22);
5548 var20 = var23;
5549 varonce19 = var20;
5550 }
5551 var24 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
5552 if (varonce25) {
5553 var26 = varonce25;
5554 } else {
5555 var27 = ";";
5556 var28 = 1;
5557 var29 = string__NativeString__to_s_with_length(var27, var28);
5558 var26 = var29;
5559 varonce25 = var26;
5560 }
5561 var30 = NEW_array__Array(&type_array__Arraykernel__Object);
5562 { /* var30 = array_instance Array[Object] */
5563 var31 = 3;
5564 var32 = NEW_array__NativeArray(var31, &type_array__NativeArraykernel__Object);
5565 ((struct instance_array__NativeArray*)var32)->values[0] = (val*) var20;
5566 ((struct instance_array__NativeArray*)var32)->values[1] = (val*) var24;
5567 ((struct instance_array__NativeArray*)var32)->values[2] = (val*) var26;
5568 ((void (*)(val*, val*, long))(var30->class->vft[COLOR_array__Array__with_native]))(var30, var32, var31) /* with_native on <var30:Array[Object]>*/;
5569 }
5570 var33 = ((val* (*)(val*))(var30->class->vft[COLOR_string__Object__to_s]))(var30) /* to_s on <var30:Array[Object]>*/;
5571 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var18, var33) /* provide_declaration on <self:SeparateCompiler>*/;
5572 var34 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:SeparateCompiler>*/;
5573 var_v = var34;
5574 if (varonce35) {
5575 var36 = varonce35;
5576 } else {
5577 var37 = "const struct types resolution_table_";
5578 var38 = 36;
5579 var39 = string__NativeString__to_s_with_length(var37, var38);
5580 var36 = var39;
5581 varonce35 = var36;
5582 }
5583 var40 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MType>*/;
5584 if (varonce41) {
5585 var42 = varonce41;
5586 } else {
5587 var43 = " = {";
5588 var44 = 4;
5589 var45 = string__NativeString__to_s_with_length(var43, var44);
5590 var42 = var45;
5591 varonce41 = var42;
5592 }
5593 var46 = NEW_array__Array(&type_array__Arraykernel__Object);
5594 { /* var46 = array_instance Array[Object] */
5595 var47 = 3;
5596 var48 = NEW_array__NativeArray(var47, &type_array__NativeArraykernel__Object);
5597 ((struct instance_array__NativeArray*)var48)->values[0] = (val*) var36;
5598 ((struct instance_array__NativeArray*)var48)->values[1] = (val*) var40;
5599 ((struct instance_array__NativeArray*)var48)->values[2] = (val*) var42;
5600 ((void (*)(val*, val*, long))(var46->class->vft[COLOR_array__Array__with_native]))(var46, var48, var47) /* with_native on <var46:Array[Object]>*/;
5601 }
5602 var49 = ((val* (*)(val*))(var46->class->vft[COLOR_string__Object__to_s]))(var46) /* to_s on <var46:Array[Object]>*/;
5603 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var49) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5604 /* <var_layout:nullable Layout[MType]> isa PHLayout[MClassType, MType] */
5605 cltype51 = type_layout_builders__PHLayoutmodel__MClassTypemodel__MType.color;
5606 idtype52 = type_layout_builders__PHLayoutmodel__MClassTypemodel__MType.id;
5607 if(var_layout == NULL) {
5608 var50 = 0;
5609 } else {
5610 if(cltype51 >= var_layout->type->table_size) {
5611 var50 = 0;
5612 } else {
5613 var50 = var_layout->type->type_table[cltype51] == idtype52;
5614 }
5615 }
5616 if (var50){
5617 var53 = ((val* (*)(val*))(var_layout->class->vft[COLOR_layout_builders__PHLayout__masks]))(var_layout) /* masks on <var_layout:nullable Layout[MType](PHLayout[MClassType, MType])>*/;
5618 var54 = ((val* (*)(val*, val*))(var53->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var53, var_mclass_type) /* [] on <var53:Map[Object, Int](Map[MClassType, Int])>*/;
5619 if (varonce55) {
5620 var56 = varonce55;
5621 } else {
5622 var57 = ",";
5623 var58 = 1;
5624 var59 = string__NativeString__to_s_with_length(var57, var58);
5625 var56 = var59;
5626 varonce55 = var56;
5627 }
5628 var60 = NEW_array__Array(&type_array__Arraykernel__Object);
5629 { /* var60 = array_instance Array[Object] */
5630 var61 = 2;
5631 var62 = NEW_array__NativeArray(var61, &type_array__NativeArraykernel__Object);
5632 ((struct instance_array__NativeArray*)var62)->values[0] = (val*) var54;
5633 ((struct instance_array__NativeArray*)var62)->values[1] = (val*) var56;
5634 ((void (*)(val*, val*, long))(var60->class->vft[COLOR_array__Array__with_native]))(var60, var62, var61) /* with_native on <var60:Array[Object]>*/;
5635 }
5636 var63 = ((val* (*)(val*))(var60->class->vft[COLOR_string__Object__to_s]))(var60) /* to_s on <var60:Array[Object]>*/;
5637 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var63) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5638 } else {
5639 if (varonce64) {
5640 var65 = varonce64;
5641 } else {
5642 var66 = "0, /* dummy */";
5643 var67 = 14;
5644 var68 = string__NativeString__to_s_with_length(var66, var67);
5645 var65 = var68;
5646 varonce64 = var65;
5647 }
5648 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var65) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5649 }
5650 if (varonce69) {
5651 var70 = varonce69;
5652 } else {
5653 var71 = "{";
5654 var72 = 1;
5655 var73 = string__NativeString__to_s_with_length(var71, var72);
5656 var70 = var73;
5657 varonce69 = var70;
5658 }
5659 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var70) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5660 var74 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_tables]))(self) /* resolution_tables on <self:SeparateCompiler>*/;
5661 var75 = ((val* (*)(val*, val*))(var74->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var74, var_mclass_type) /* [] on <var74:Map[MClassType, Array[nullable MType]]>*/;
5662 var76 = ((val* (*)(val*))(var75->class->vft[COLOR_abstract_collection__Collection__iterator]))(var75) /* iterator on <var75:nullable Object(Array[nullable MType])>*/;
5663 for(;;) {
5664 var77 = ((short int (*)(val*))(var76->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var76) /* is_ok on <var76:Iterator[nullable Object]>*/;
5665 if(!var77) break;
5666 var78 = ((val* (*)(val*))(var76->class->vft[COLOR_abstract_collection__Iterator__item]))(var76) /* item on <var76:Iterator[nullable Object]>*/;
5667 var_t = var78;
5668 var79 = NULL;
5669 if (var_t == NULL) {
5670 var80 = 1; /* is null */
5671 } else {
5672 var80 = 0; /* arg is null but recv is not */
5673 }
5674 if (var80){
5675 if (varonce81) {
5676 var82 = varonce81;
5677 } else {
5678 var83 = "NULL, /* empty */";
5679 var84 = 17;
5680 var85 = string__NativeString__to_s_with_length(var83, var84);
5681 var82 = var85;
5682 varonce81 = var82;
5683 }
5684 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var82) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5685 } else {
5686 var86 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
5687 var87 = 1;
5688 var88 = ((val* (*)(val*, val*, val*, val*, short int))(var_t->class->vft[COLOR_model__MType__resolve_for]))(var_t, var_mclass_type, var_mclass_type, var86, var87) /* resolve_for on <var_t:nullable MType(MType)>*/;
5689 var_tv = var88;
5690 var89 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_layout]))(self) /* type_layout on <self:SeparateCompiler>*/;
5691 if (var89 == NULL) {
5692 fprintf(stderr, "Runtime error: %s", "Receiver is null");
5693 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 719);
5694 show_backtrace(1);
5695 } else {
5696 var90 = ((val* (*)(val*))(var89->class->vft[COLOR_layout_builders__Layout__ids]))(var89) /* ids on <var89:nullable Layout[MType]>*/;
5697 }
5698 var91 = ((short int (*)(val*, val*))(var90->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var90, var_tv) /* has_key on <var90:Map[Object, Int](Map[MType, Int])>*/;
5699 if (var91){
5700 if (varonce92) {
5701 var93 = varonce92;
5702 } else {
5703 var94 = "type_";
5704 var95 = 5;
5705 var96 = string__NativeString__to_s_with_length(var94, var95);
5706 var93 = var96;
5707 varonce92 = var93;
5708 }
5709 var97 = ((val* (*)(val*))(var_tv->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_tv) /* c_name on <var_tv:MType>*/;
5710 var98 = NEW_array__Array(&type_array__Arraykernel__Object);
5711 { /* var98 = array_instance Array[Object] */
5712 var99 = 2;
5713 var100 = NEW_array__NativeArray(var99, &type_array__NativeArraykernel__Object);
5714 ((struct instance_array__NativeArray*)var100)->values[0] = (val*) var93;
5715 ((struct instance_array__NativeArray*)var100)->values[1] = (val*) var97;
5716 ((void (*)(val*, val*, long))(var98->class->vft[COLOR_array__Array__with_native]))(var98, var100, var99) /* with_native on <var98:Array[Object]>*/;
5717 }
5718 var101 = ((val* (*)(val*))(var98->class->vft[COLOR_string__Object__to_s]))(var98) /* to_s on <var98:Array[Object]>*/;
5719 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var101) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
5720 if (varonce102) {
5721 var103 = varonce102;
5722 } else {
5723 var104 = "&type_";
5724 var105 = 6;
5725 var106 = string__NativeString__to_s_with_length(var104, var105);
5726 var103 = var106;
5727 varonce102 = var103;
5728 }
5729 var107 = ((val* (*)(val*))(var_tv->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_tv) /* c_name on <var_tv:MType>*/;
5730 if (varonce108) {
5731 var109 = varonce108;
5732 } else {
5733 var110 = ", /* ";
5734 var111 = 5;
5735 var112 = string__NativeString__to_s_with_length(var110, var111);
5736 var109 = var112;
5737 varonce108 = var109;
5738 }
5739 if (varonce113) {
5740 var114 = varonce113;
5741 } else {
5742 var115 = ": ";
5743 var116 = 2;
5744 var117 = string__NativeString__to_s_with_length(var115, var116);
5745 var114 = var117;
5746 varonce113 = var114;
5747 }
5748 if (varonce118) {
5749 var119 = varonce118;
5750 } else {
5751 var120 = " */";
5752 var121 = 3;
5753 var122 = string__NativeString__to_s_with_length(var120, var121);
5754 var119 = var122;
5755 varonce118 = var119;
5756 }
5757 var123 = NEW_array__Array(&type_array__Arraykernel__Object);
5758 { /* var123 = array_instance Array[Object] */
5759 var124 = 7;
5760 var125 = NEW_array__NativeArray(var124, &type_array__NativeArraykernel__Object);
5761 ((struct instance_array__NativeArray*)var125)->values[0] = (val*) var103;
5762 ((struct instance_array__NativeArray*)var125)->values[1] = (val*) var107;
5763 ((struct instance_array__NativeArray*)var125)->values[2] = (val*) var109;
5764 ((struct instance_array__NativeArray*)var125)->values[3] = (val*) var_t;
5765 ((struct instance_array__NativeArray*)var125)->values[4] = (val*) var114;
5766 ((struct instance_array__NativeArray*)var125)->values[5] = (val*) var_tv;
5767 ((struct instance_array__NativeArray*)var125)->values[6] = (val*) var119;
5768 ((void (*)(val*, val*, long))(var123->class->vft[COLOR_array__Array__with_native]))(var123, var125, var124) /* with_native on <var123:Array[Object]>*/;
5769 }
5770 var126 = ((val* (*)(val*))(var123->class->vft[COLOR_string__Object__to_s]))(var123) /* to_s on <var123:Array[Object]>*/;
5771 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var126) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5772 } else {
5773 if (varonce127) {
5774 var128 = varonce127;
5775 } else {
5776 var129 = "NULL, /* empty (";
5777 var130 = 16;
5778 var131 = string__NativeString__to_s_with_length(var129, var130);
5779 var128 = var131;
5780 varonce127 = var128;
5781 }
5782 if (varonce132) {
5783 var133 = varonce132;
5784 } else {
5785 var134 = ": ";
5786 var135 = 2;
5787 var136 = string__NativeString__to_s_with_length(var134, var135);
5788 var133 = var136;
5789 varonce132 = var133;
5790 }
5791 if (varonce137) {
5792 var138 = varonce137;
5793 } else {
5794 var139 = " not a live type) */";
5795 var140 = 20;
5796 var141 = string__NativeString__to_s_with_length(var139, var140);
5797 var138 = var141;
5798 varonce137 = var138;
5799 }
5800 var142 = NEW_array__Array(&type_array__Arraykernel__Object);
5801 { /* var142 = array_instance Array[Object] */
5802 var143 = 5;
5803 var144 = NEW_array__NativeArray(var143, &type_array__NativeArraykernel__Object);
5804 ((struct instance_array__NativeArray*)var144)->values[0] = (val*) var128;
5805 ((struct instance_array__NativeArray*)var144)->values[1] = (val*) var_t;
5806 ((struct instance_array__NativeArray*)var144)->values[2] = (val*) var133;
5807 ((struct instance_array__NativeArray*)var144)->values[3] = (val*) var_tv;
5808 ((struct instance_array__NativeArray*)var144)->values[4] = (val*) var138;
5809 ((void (*)(val*, val*, long))(var142->class->vft[COLOR_array__Array__with_native]))(var142, var144, var143) /* with_native on <var142:Array[Object]>*/;
5810 }
5811 var145 = ((val* (*)(val*))(var142->class->vft[COLOR_string__Object__to_s]))(var142) /* to_s on <var142:Array[Object]>*/;
5812 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var145) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5813 }
5814 }
5815 CONTINUE_label: (void)0;
5816 ((void (*)(val*))(var76->class->vft[COLOR_abstract_collection__Iterator__next]))(var76) /* next on <var76:Iterator[nullable Object]>*/;
5817 }
5818 BREAK_label: (void)0;
5819 if (varonce146) {
5820 var147 = varonce146;
5821 } else {
5822 var148 = "}";
5823 var149 = 1;
5824 var150 = string__NativeString__to_s_with_length(var148, var149);
5825 var147 = var150;
5826 varonce146 = var147;
5827 }
5828 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var147) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5829 if (varonce151) {
5830 var152 = varonce151;
5831 } else {
5832 var153 = "};";
5833 var154 = 2;
5834 var155 = string__NativeString__to_s_with_length(var153, var154);
5835 var152 = var155;
5836 varonce151 = var152;
5837 }
5838 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var152) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
5839 RET_LABEL:;
5840 }
5841 /* method separate_compiler#SeparateCompiler#compile_type_resolution_table for (self: Object, MType) */
5842 void VIRTUAL_separate_compiler__SeparateCompiler__compile_type_resolution_table(val* self, val* p0) {
5843 separate_compiler__SeparateCompiler__compile_type_resolution_table(self, p0);
5844 RET_LABEL:;
5845 }
5846 /* method separate_compiler#SeparateCompiler#compile_class_to_c for (self: SeparateCompiler, MClass) */
5847 void separate_compiler__SeparateCompiler__compile_class_to_c(val* self, val* p0) {
5848 val* var_mclass /* var mclass: MClass */;
5849 val* var /* : MClassDef */;
5850 val* var1 /* : MClassType */;
5851 val* var_mtype /* var mtype: MClassType */;
5852 val* var2 /* : String */;
5853 val* var_c_name /* var c_name: String */;
5854 val* var3 /* : String */;
5855 val* var_c_instance_name /* var c_instance_name: String */;
5856 val* var4 /* : Map[MClass, Array[nullable MPropDef]] */;
5857 val* var5 /* : nullable Object */;
5858 val* var_vft /* var vft: Array[nullable MPropDef] */;
5859 val* var6 /* : Map[MClass, Array[nullable MPropDef]] */;
5860 val* var7 /* : nullable Object */;
5861 val* var_attrs /* var attrs: Array[nullable MPropDef] */;
5862 val* var8 /* : AbstractCompilerVisitor */;
5863 val* var_v /* var v: SeparateCompilerVisitor */;
5864 short int var9 /* : Bool */;
5865 short int var10 /* : Bool */;
5866 short int var11 /* : Bool */;
5867 val* var12 /* : nullable RapidTypeAnalysis */;
5868 val* var13 /* : null */;
5869 short int var14 /* : Bool */;
5870 short int var_ /* var : Bool */;
5871 val* var15 /* : nullable RapidTypeAnalysis */;
5872 val* var16 /* : HashSet[MClass] */;
5873 short int var17 /* : Bool */;
5874 short int var18 /* : Bool */;
5875 short int var_19 /* var : Bool */;
5876 val* var20 /* : String */;
5877 static val* varonce;
5878 val* var21 /* : String */;
5879 char* var22 /* : NativeString */;
5880 long var23 /* : Int */;
5881 val* var24 /* : String */;
5882 short int var25 /* : Bool */;
5883 short int var_26 /* var : Bool */;
5884 val* var27 /* : String */;
5885 static val* varonce28;
5886 val* var29 /* : String */;
5887 char* var30 /* : NativeString */;
5888 long var31 /* : Int */;
5889 val* var32 /* : String */;
5890 short int var33 /* : Bool */;
5891 short int var_is_dead /* var is_dead: Bool */;
5892 static val* varonce34;
5893 val* var35 /* : String */;
5894 char* var36 /* : NativeString */;
5895 long var37 /* : Int */;
5896 val* var38 /* : String */;
5897 static val* varonce39;
5898 val* var40 /* : String */;
5899 char* var41 /* : NativeString */;
5900 long var42 /* : Int */;
5901 val* var43 /* : String */;
5902 val* var44 /* : Array[Object] */;
5903 long var45 /* : Int */;
5904 val* var46 /* : NativeArray[Object] */;
5905 val* var47 /* : String */;
5906 short int var48 /* : Bool */;
5907 static val* varonce49;
5908 val* var50 /* : String */;
5909 char* var51 /* : NativeString */;
5910 long var52 /* : Int */;
5911 val* var53 /* : String */;
5912 val* var54 /* : Array[Object] */;
5913 long var55 /* : Int */;
5914 val* var56 /* : NativeArray[Object] */;
5915 val* var57 /* : String */;
5916 static val* varonce58;
5917 val* var59 /* : String */;
5918 char* var60 /* : NativeString */;
5919 long var61 /* : Int */;
5920 val* var62 /* : String */;
5921 static val* varonce63;
5922 val* var64 /* : String */;
5923 char* var65 /* : NativeString */;
5924 long var66 /* : Int */;
5925 val* var67 /* : String */;
5926 val* var68 /* : Array[Object] */;
5927 long var69 /* : Int */;
5928 val* var70 /* : NativeArray[Object] */;
5929 val* var71 /* : String */;
5930 static val* varonce72;
5931 val* var73 /* : String */;
5932 char* var74 /* : NativeString */;
5933 long var75 /* : Int */;
5934 val* var76 /* : String */;
5935 static val* varonce77;
5936 val* var78 /* : String */;
5937 char* var79 /* : NativeString */;
5938 long var80 /* : Int */;
5939 val* var81 /* : String */;
5940 val* var82 /* : Array[Object] */;
5941 long var83 /* : Int */;
5942 val* var84 /* : NativeArray[Object] */;
5943 val* var85 /* : String */;
5944 long var86 /* : Int */;
5945 static val* varonce87;
5946 val* var88 /* : String */;
5947 char* var89 /* : NativeString */;
5948 long var90 /* : Int */;
5949 val* var91 /* : String */;
5950 val* var92 /* : Array[Object] */;
5951 long var93 /* : Int */;
5952 val* var94 /* : NativeArray[Object] */;
5953 val* var95 /* : Object */;
5954 val* var96 /* : String */;
5955 static val* varonce97;
5956 val* var98 /* : String */;
5957 char* var99 /* : NativeString */;
5958 long var100 /* : Int */;
5959 val* var101 /* : String */;
5960 val* var102 /* : Range[Int] */;
5961 long var103 /* : Int */;
5962 long var104 /* : Int */;
5963 val* var105 /* : Discrete */;
5964 val* var106 /* : Discrete */;
5965 val* var107 /* : Iterator[nullable Object] */;
5966 short int var108 /* : Bool */;
5967 val* var109 /* : nullable Object */;
5968 long var_i /* var i: Int */;
5969 long var110 /* : Int */;
5970 val* var111 /* : nullable Object */;
5971 val* var_mpropdef /* var mpropdef: nullable MPropDef */;
5972 val* var112 /* : null */;
5973 short int var113 /* : Bool */;
5974 static val* varonce114;
5975 val* var115 /* : String */;
5976 char* var116 /* : NativeString */;
5977 long var117 /* : Int */;
5978 val* var118 /* : String */;
5979 short int var119 /* : Bool */;
5980 int cltype;
5981 int idtype;
5982 val* var120 /* : AbstractRuntimeFunction */;
5983 val* var_rf /* var rf: AbstractRuntimeFunction */;
5984 val* var121 /* : String */;
5985 static val* varonce122;
5986 val* var123 /* : String */;
5987 char* var124 /* : NativeString */;
5988 long var125 /* : Int */;
5989 val* var126 /* : String */;
5990 val* var127 /* : String */;
5991 static val* varonce128;
5992 val* var129 /* : String */;
5993 char* var130 /* : NativeString */;
5994 long var131 /* : Int */;
5995 val* var132 /* : String */;
5996 val* var133 /* : MModule */;
5997 static val* varonce134;
5998 val* var135 /* : String */;
5999 char* var136 /* : NativeString */;
6000 long var137 /* : Int */;
6001 val* var138 /* : String */;
6002 static val* varonce139;
6003 val* var140 /* : String */;
6004 char* var141 /* : NativeString */;
6005 long var142 /* : Int */;
6006 val* var143 /* : String */;
6007 static val* varonce144;
6008 val* var145 /* : String */;
6009 char* var146 /* : NativeString */;
6010 long var147 /* : Int */;
6011 val* var148 /* : String */;
6012 val* var149 /* : Array[Object] */;
6013 long var150 /* : Int */;
6014 val* var151 /* : NativeArray[Object] */;
6015 val* var152 /* : String */;
6016 static val* varonce153;
6017 val* var154 /* : String */;
6018 char* var155 /* : NativeString */;
6019 long var156 /* : Int */;
6020 val* var157 /* : String */;
6021 static val* varonce158;
6022 val* var159 /* : String */;
6023 char* var160 /* : NativeString */;
6024 long var161 /* : Int */;
6025 val* var162 /* : String */;
6026 val* var163 /* : String */;
6027 static val* varonce164;
6028 val* var165 /* : String */;
6029 char* var166 /* : NativeString */;
6030 long var167 /* : Int */;
6031 val* var168 /* : String */;
6032 short int var169 /* : Bool */;
6033 short int var170 /* : Bool */;
6034 val* var171 /* : MClass */;
6035 val* var172 /* : String */;
6036 static val* varonce173;
6037 val* var174 /* : String */;
6038 char* var175 /* : NativeString */;
6039 long var176 /* : Int */;
6040 val* var177 /* : String */;
6041 short int var178 /* : Bool */;
6042 short int var_179 /* var : Bool */;
6043 val* var180 /* : MClass */;
6044 val* var181 /* : MClassKind */;
6045 val* var182 /* : MClassKind */;
6046 short int var183 /* : Bool */;
6047 val* var184 /* : CodeWriter */;
6048 static val* varonce185;
6049 val* var186 /* : String */;
6050 char* var187 /* : NativeString */;
6051 long var188 /* : Int */;
6052 val* var189 /* : String */;
6053 static val* varonce190;
6054 val* var191 /* : String */;
6055 char* var192 /* : NativeString */;
6056 long var193 /* : Int */;
6057 val* var194 /* : String */;
6058 val* var195 /* : Array[Object] */;
6059 long var196 /* : Int */;
6060 val* var197 /* : NativeArray[Object] */;
6061 val* var198 /* : String */;
6062 val* var199 /* : CodeWriter */;
6063 static val* varonce200;
6064 val* var201 /* : String */;
6065 char* var202 /* : NativeString */;
6066 long var203 /* : Int */;
6067 val* var204 /* : String */;
6068 val* var205 /* : CodeWriter */;
6069 static val* varonce206;
6070 val* var207 /* : String */;
6071 char* var208 /* : NativeString */;
6072 long var209 /* : Int */;
6073 val* var210 /* : String */;
6074 val* var211 /* : CodeWriter */;
6075 val* var212 /* : String */;
6076 static val* varonce213;
6077 val* var214 /* : String */;
6078 char* var215 /* : NativeString */;
6079 long var216 /* : Int */;
6080 val* var217 /* : String */;
6081 val* var218 /* : Array[Object] */;
6082 long var219 /* : Int */;
6083 val* var220 /* : NativeArray[Object] */;
6084 val* var221 /* : String */;
6085 val* var222 /* : CodeWriter */;
6086 static val* varonce223;
6087 val* var224 /* : String */;
6088 char* var225 /* : NativeString */;
6089 long var226 /* : Int */;
6090 val* var227 /* : String */;
6091 val* var228 /* : nullable RapidTypeAnalysis */;
6092 val* var229 /* : HashSet[MClassType] */;
6093 short int var230 /* : Bool */;
6094 short int var231 /* : Bool */;
6095 static val* varonce232;
6096 val* var233 /* : String */;
6097 char* var234 /* : NativeString */;
6098 long var235 /* : Int */;
6099 val* var236 /* : String */;
6100 val* var237 /* : Array[Object] */;
6101 long var238 /* : Int */;
6102 val* var239 /* : NativeArray[Object] */;
6103 val* var240 /* : String */;
6104 static val* varonce241;
6105 val* var242 /* : String */;
6106 char* var243 /* : NativeString */;
6107 long var244 /* : Int */;
6108 val* var245 /* : String */;
6109 static val* varonce246;
6110 val* var247 /* : String */;
6111 char* var248 /* : NativeString */;
6112 long var249 /* : Int */;
6113 val* var250 /* : String */;
6114 val* var251 /* : String */;
6115 static val* varonce252;
6116 val* var253 /* : String */;
6117 char* var254 /* : NativeString */;
6118 long var255 /* : Int */;
6119 val* var256 /* : String */;
6120 val* var257 /* : Array[Object] */;
6121 long var258 /* : Int */;
6122 val* var259 /* : NativeArray[Object] */;
6123 val* var260 /* : String */;
6124 static val* varonce261;
6125 val* var262 /* : String */;
6126 char* var263 /* : NativeString */;
6127 long var264 /* : Int */;
6128 val* var265 /* : String */;
6129 static val* varonce266;
6130 val* var267 /* : String */;
6131 char* var268 /* : NativeString */;
6132 long var269 /* : Int */;
6133 val* var270 /* : String */;
6134 val* var271 /* : Array[Object] */;
6135 long var272 /* : Int */;
6136 val* var273 /* : NativeArray[Object] */;
6137 val* var274 /* : String */;
6138 static val* varonce275;
6139 val* var276 /* : String */;
6140 char* var277 /* : NativeString */;
6141 long var278 /* : Int */;
6142 val* var279 /* : String */;
6143 val* var280 /* : String */;
6144 static val* varonce281;
6145 val* var282 /* : String */;
6146 char* var283 /* : NativeString */;
6147 long var284 /* : Int */;
6148 val* var285 /* : String */;
6149 val* var286 /* : String */;
6150 static val* varonce287;
6151 val* var288 /* : String */;
6152 char* var289 /* : NativeString */;
6153 long var290 /* : Int */;
6154 val* var291 /* : String */;
6155 val* var292 /* : Array[Object] */;
6156 long var293 /* : Int */;
6157 val* var294 /* : NativeArray[Object] */;
6158 val* var295 /* : String */;
6159 static val* varonce296;
6160 val* var297 /* : String */;
6161 char* var298 /* : NativeString */;
6162 long var299 /* : Int */;
6163 val* var300 /* : String */;
6164 static val* varonce301;
6165 val* var302 /* : String */;
6166 char* var303 /* : NativeString */;
6167 long var304 /* : Int */;
6168 val* var305 /* : String */;
6169 static val* varonce306;
6170 val* var307 /* : String */;
6171 char* var308 /* : NativeString */;
6172 long var309 /* : Int */;
6173 val* var310 /* : String */;
6174 val* var311 /* : Array[Object] */;
6175 long var312 /* : Int */;
6176 val* var313 /* : NativeArray[Object] */;
6177 val* var314 /* : String */;
6178 static val* varonce315;
6179 val* var316 /* : String */;
6180 char* var317 /* : NativeString */;
6181 long var318 /* : Int */;
6182 val* var319 /* : String */;
6183 val* var320 /* : Array[Object] */;
6184 long var321 /* : Int */;
6185 val* var322 /* : NativeArray[Object] */;
6186 val* var323 /* : String */;
6187 static val* varonce324;
6188 val* var325 /* : String */;
6189 char* var326 /* : NativeString */;
6190 long var327 /* : Int */;
6191 val* var328 /* : String */;
6192 static val* varonce329;
6193 val* var330 /* : String */;
6194 char* var331 /* : NativeString */;
6195 long var332 /* : Int */;
6196 val* var333 /* : String */;
6197 val* var334 /* : Array[Object] */;
6198 long var335 /* : Int */;
6199 val* var336 /* : NativeArray[Object] */;
6200 val* var337 /* : String */;
6201 static val* varonce338;
6202 val* var339 /* : String */;
6203 char* var340 /* : NativeString */;
6204 long var341 /* : Int */;
6205 val* var342 /* : String */;
6206 val* var343 /* : Array[Object] */;
6207 long var344 /* : Int */;
6208 val* var345 /* : NativeArray[Object] */;
6209 val* var346 /* : String */;
6210 static val* varonce347;
6211 val* var348 /* : String */;
6212 char* var349 /* : NativeString */;
6213 long var350 /* : Int */;
6214 val* var351 /* : String */;
6215 static val* varonce352;
6216 val* var353 /* : String */;
6217 char* var354 /* : NativeString */;
6218 long var355 /* : Int */;
6219 val* var356 /* : String */;
6220 val* var357 /* : Array[Object] */;
6221 long var358 /* : Int */;
6222 val* var359 /* : NativeArray[Object] */;
6223 val* var360 /* : String */;
6224 static val* varonce361;
6225 val* var362 /* : String */;
6226 char* var363 /* : NativeString */;
6227 long var364 /* : Int */;
6228 val* var365 /* : String */;
6229 static val* varonce366;
6230 val* var367 /* : String */;
6231 char* var368 /* : NativeString */;
6232 long var369 /* : Int */;
6233 val* var370 /* : String */;
6234 static val* varonce371;
6235 val* var372 /* : String */;
6236 char* var373 /* : NativeString */;
6237 long var374 /* : Int */;
6238 val* var375 /* : String */;
6239 val* var376 /* : String */;
6240 static val* varonce377;
6241 val* var378 /* : String */;
6242 char* var379 /* : NativeString */;
6243 long var380 /* : Int */;
6244 val* var381 /* : String */;
6245 short int var382 /* : Bool */;
6246 val* var383 /* : CodeWriter */;
6247 static val* varonce384;
6248 val* var385 /* : String */;
6249 char* var386 /* : NativeString */;
6250 long var387 /* : Int */;
6251 val* var388 /* : String */;
6252 static val* varonce389;
6253 val* var390 /* : String */;
6254 char* var391 /* : NativeString */;
6255 long var392 /* : Int */;
6256 val* var393 /* : String */;
6257 val* var394 /* : Array[Object] */;
6258 long var395 /* : Int */;
6259 val* var396 /* : NativeArray[Object] */;
6260 val* var397 /* : String */;
6261 val* var398 /* : CodeWriter */;
6262 static val* varonce399;
6263 val* var400 /* : String */;
6264 char* var401 /* : NativeString */;
6265 long var402 /* : Int */;
6266 val* var403 /* : String */;
6267 val* var404 /* : CodeWriter */;
6268 static val* varonce405;
6269 val* var406 /* : String */;
6270 char* var407 /* : NativeString */;
6271 long var408 /* : Int */;
6272 val* var409 /* : String */;
6273 val* var410 /* : CodeWriter */;
6274 static val* varonce411;
6275 val* var412 /* : String */;
6276 char* var413 /* : NativeString */;
6277 long var414 /* : Int */;
6278 val* var415 /* : String */;
6279 val* var416 /* : CodeWriter */;
6280 static val* varonce417;
6281 val* var418 /* : String */;
6282 char* var419 /* : NativeString */;
6283 long var420 /* : Int */;
6284 val* var421 /* : String */;
6285 static val* varonce422;
6286 val* var423 /* : String */;
6287 char* var424 /* : NativeString */;
6288 long var425 /* : Int */;
6289 val* var426 /* : String */;
6290 val* var427 /* : Array[Object] */;
6291 long var428 /* : Int */;
6292 val* var429 /* : NativeArray[Object] */;
6293 val* var430 /* : String */;
6294 val* var431 /* : String */;
6295 static val* varonce432;
6296 val* var433 /* : String */;
6297 char* var434 /* : NativeString */;
6298 long var435 /* : Int */;
6299 val* var436 /* : String */;
6300 static val* varonce437;
6301 val* var438 /* : String */;
6302 char* var439 /* : NativeString */;
6303 long var440 /* : Int */;
6304 val* var441 /* : String */;
6305 val* var442 /* : Array[Object] */;
6306 long var443 /* : Int */;
6307 val* var444 /* : NativeArray[Object] */;
6308 val* var445 /* : String */;
6309 static val* varonce446;
6310 val* var447 /* : String */;
6311 char* var448 /* : NativeString */;
6312 long var449 /* : Int */;
6313 val* var450 /* : String */;
6314 static val* varonce451;
6315 val* var452 /* : String */;
6316 char* var453 /* : NativeString */;
6317 long var454 /* : Int */;
6318 val* var455 /* : String */;
6319 val* var456 /* : Array[Object] */;
6320 long var457 /* : Int */;
6321 val* var458 /* : NativeArray[Object] */;
6322 val* var459 /* : String */;
6323 val* var460 /* : String */;
6324 static val* varonce461;
6325 val* var462 /* : String */;
6326 char* var463 /* : NativeString */;
6327 long var464 /* : Int */;
6328 val* var465 /* : String */;
6329 static val* varonce466;
6330 val* var467 /* : String */;
6331 char* var468 /* : NativeString */;
6332 long var469 /* : Int */;
6333 val* var470 /* : String */;
6334 val* var471 /* : Array[Object] */;
6335 long var472 /* : Int */;
6336 val* var473 /* : NativeArray[Object] */;
6337 val* var474 /* : String */;
6338 static val* varonce475;
6339 val* var476 /* : String */;
6340 char* var477 /* : NativeString */;
6341 long var478 /* : Int */;
6342 val* var479 /* : String */;
6343 val* var480 /* : RuntimeVariable */;
6344 val* var_res /* var res: RuntimeVariable */;
6345 short int var481 /* : Bool */;
6346 val* var482 /* : Array[MType] */;
6347 val* var483 /* : nullable Object */;
6348 val* var_mtype_elt /* var mtype_elt: MType */;
6349 static val* varonce484;
6350 val* var485 /* : String */;
6351 char* var486 /* : NativeString */;
6352 long var487 /* : Int */;
6353 val* var488 /* : String */;
6354 static val* varonce489;
6355 val* var490 /* : String */;
6356 char* var491 /* : NativeString */;
6357 long var492 /* : Int */;
6358 val* var493 /* : String */;
6359 val* var494 /* : String */;
6360 static val* varonce495;
6361 val* var496 /* : String */;
6362 char* var497 /* : NativeString */;
6363 long var498 /* : Int */;
6364 val* var499 /* : String */;
6365 val* var500 /* : Array[Object] */;
6366 long var501 /* : Int */;
6367 val* var502 /* : NativeArray[Object] */;
6368 val* var503 /* : String */;
6369 static val* varonce504;
6370 val* var505 /* : String */;
6371 char* var506 /* : NativeString */;
6372 long var507 /* : Int */;
6373 val* var508 /* : String */;
6374 val* var509 /* : Array[Object] */;
6375 long var510 /* : Int */;
6376 val* var511 /* : NativeArray[Object] */;
6377 val* var512 /* : String */;
6378 static val* varonce513;
6379 val* var514 /* : String */;
6380 char* var515 /* : NativeString */;
6381 long var516 /* : Int */;
6382 val* var517 /* : String */;
6383 static val* varonce518;
6384 val* var519 /* : String */;
6385 char* var520 /* : NativeString */;
6386 long var521 /* : Int */;
6387 val* var522 /* : String */;
6388 val* var523 /* : Array[Object] */;
6389 long var524 /* : Int */;
6390 val* var525 /* : NativeArray[Object] */;
6391 val* var526 /* : String */;
6392 static val* varonce527;
6393 val* var528 /* : String */;
6394 char* var529 /* : NativeString */;
6395 long var530 /* : Int */;
6396 val* var531 /* : String */;
6397 static val* varonce532;
6398 val* var533 /* : String */;
6399 char* var534 /* : NativeString */;
6400 long var535 /* : Int */;
6401 val* var536 /* : String */;
6402 val* var537 /* : Array[Object] */;
6403 long var538 /* : Int */;
6404 val* var539 /* : NativeArray[Object] */;
6405 val* var540 /* : String */;
6406 static val* varonce541;
6407 val* var542 /* : String */;
6408 char* var543 /* : NativeString */;
6409 long var544 /* : Int */;
6410 val* var545 /* : String */;
6411 static val* varonce546;
6412 val* var547 /* : String */;
6413 char* var548 /* : NativeString */;
6414 long var549 /* : Int */;
6415 val* var550 /* : String */;
6416 val* var551 /* : Array[Object] */;
6417 long var552 /* : Int */;
6418 val* var553 /* : NativeArray[Object] */;
6419 val* var554 /* : String */;
6420 static val* varonce555;
6421 val* var556 /* : String */;
6422 char* var557 /* : NativeString */;
6423 long var558 /* : Int */;
6424 val* var559 /* : String */;
6425 static val* varonce560;
6426 val* var561 /* : String */;
6427 char* var562 /* : NativeString */;
6428 long var563 /* : Int */;
6429 val* var564 /* : String */;
6430 val* var565 /* : Array[Object] */;
6431 long var566 /* : Int */;
6432 val* var567 /* : NativeArray[Object] */;
6433 val* var568 /* : String */;
6434 val* var569 /* : String */;
6435 static val* varonce570;
6436 val* var571 /* : String */;
6437 char* var572 /* : NativeString */;
6438 long var573 /* : Int */;
6439 val* var574 /* : String */;
6440 static val* varonce575;
6441 val* var576 /* : String */;
6442 char* var577 /* : NativeString */;
6443 long var578 /* : Int */;
6444 val* var579 /* : String */;
6445 val* var580 /* : Array[Object] */;
6446 long var581 /* : Int */;
6447 val* var582 /* : NativeArray[Object] */;
6448 val* var583 /* : String */;
6449 static val* varonce584;
6450 val* var585 /* : String */;
6451 char* var586 /* : NativeString */;
6452 long var587 /* : Int */;
6453 val* var588 /* : String */;
6454 static val* varonce589;
6455 val* var590 /* : String */;
6456 char* var591 /* : NativeString */;
6457 long var592 /* : Int */;
6458 val* var593 /* : String */;
6459 val* var594 /* : Array[Object] */;
6460 long var595 /* : Int */;
6461 val* var596 /* : NativeArray[Object] */;
6462 val* var597 /* : String */;
6463 val* var598 /* : String */;
6464 static val* varonce599;
6465 val* var600 /* : String */;
6466 char* var601 /* : NativeString */;
6467 long var602 /* : Int */;
6468 val* var603 /* : String */;
6469 static val* varonce604;
6470 val* var605 /* : String */;
6471 char* var606 /* : NativeString */;
6472 long var607 /* : Int */;
6473 val* var608 /* : String */;
6474 val* var609 /* : Array[Object] */;
6475 long var610 /* : Int */;
6476 val* var611 /* : NativeArray[Object] */;
6477 val* var612 /* : String */;
6478 static val* varonce613;
6479 val* var614 /* : String */;
6480 char* var615 /* : NativeString */;
6481 long var616 /* : Int */;
6482 val* var617 /* : String */;
6483 val* var618 /* : Array[Object] */;
6484 long var619 /* : Int */;
6485 val* var620 /* : NativeArray[Object] */;
6486 val* var621 /* : String */;
6487 static val* varonce622;
6488 val* var623 /* : String */;
6489 char* var624 /* : NativeString */;
6490 long var625 /* : Int */;
6491 val* var626 /* : String */;
6492 val* var627 /* : RuntimeVariable */;
6493 val* var_res628 /* var res: RuntimeVariable */;
6494 short int var629 /* : Bool */;
6495 static val* varonce630;
6496 val* var631 /* : String */;
6497 char* var632 /* : NativeString */;
6498 long var633 /* : Int */;
6499 val* var634 /* : String */;
6500 long var635 /* : Int */;
6501 static val* varonce636;
6502 val* var637 /* : String */;
6503 char* var638 /* : NativeString */;
6504 long var639 /* : Int */;
6505 val* var640 /* : String */;
6506 val* var641 /* : Array[Object] */;
6507 long var642 /* : Int */;
6508 val* var643 /* : NativeArray[Object] */;
6509 val* var644 /* : Object */;
6510 val* var645 /* : String */;
6511 static val* varonce646;
6512 val* var647 /* : String */;
6513 char* var648 /* : NativeString */;
6514 long var649 /* : Int */;
6515 val* var650 /* : String */;
6516 val* var651 /* : Array[Object] */;
6517 long var652 /* : Int */;
6518 val* var653 /* : NativeArray[Object] */;
6519 val* var654 /* : String */;
6520 static val* varonce655;
6521 val* var656 /* : String */;
6522 char* var657 /* : NativeString */;
6523 long var658 /* : Int */;
6524 val* var659 /* : String */;
6525 static val* varonce660;
6526 val* var661 /* : String */;
6527 char* var662 /* : NativeString */;
6528 long var663 /* : Int */;
6529 val* var664 /* : String */;
6530 val* var665 /* : Array[Object] */;
6531 long var666 /* : Int */;
6532 val* var667 /* : NativeArray[Object] */;
6533 val* var668 /* : String */;
6534 static val* varonce669;
6535 val* var670 /* : String */;
6536 char* var671 /* : NativeString */;
6537 long var672 /* : Int */;
6538 val* var673 /* : String */;
6539 static val* varonce674;
6540 val* var675 /* : String */;
6541 char* var676 /* : NativeString */;
6542 long var677 /* : Int */;
6543 val* var678 /* : String */;
6544 val* var679 /* : Array[Object] */;
6545 long var680 /* : Int */;
6546 val* var681 /* : NativeArray[Object] */;
6547 val* var682 /* : String */;
6548 static val* varonce683;
6549 val* var684 /* : String */;
6550 char* var685 /* : NativeString */;
6551 long var686 /* : Int */;
6552 val* var687 /* : String */;
6553 static val* varonce688;
6554 val* var689 /* : String */;
6555 char* var690 /* : NativeString */;
6556 long var691 /* : Int */;
6557 val* var692 /* : String */;
6558 val* var693 /* : Array[Object] */;
6559 long var694 /* : Int */;
6560 val* var695 /* : NativeArray[Object] */;
6561 val* var696 /* : String */;
6562 static val* varonce697;
6563 val* var698 /* : String */;
6564 char* var699 /* : NativeString */;
6565 long var700 /* : Int */;
6566 val* var701 /* : String */;
6567 var_mclass = p0;
6568 var = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro]))(var_mclass) /* intro on <var_mclass:MClass>*/;
6569 var1 = ((val* (*)(val*))(var->class->vft[COLOR_model__MClassDef__bound_mtype]))(var) /* bound_mtype on <var:MClassDef>*/;
6570 var_mtype = var1;
6571 var2 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_abstract_compiler__MClass__c_name]))(var_mclass) /* c_name on <var_mclass:MClass>*/;
6572 var_c_name = var2;
6573 var3 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_separate_compiler__MClass__c_instance_name]))(var_mclass) /* c_instance_name on <var_mclass:MClass>*/;
6574 var_c_instance_name = var3;
6575 var4 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_tables]))(self) /* method_tables on <self:SeparateCompiler>*/;
6576 var5 = ((val* (*)(val*, val*))(var4->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var4, var_mclass) /* [] on <var4:Map[MClass, Array[nullable MPropDef]]>*/;
6577 var_vft = var5;
6578 var6 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_tables]))(self) /* attr_tables on <self:SeparateCompiler>*/;
6579 var7 = ((val* (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var6, var_mclass) /* [] on <var6:Map[MClass, Array[nullable MPropDef]]>*/;
6580 var_attrs = var7;
6581 var8 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__new_visitor]))(self) /* new_visitor on <self:SeparateCompiler>*/;
6582 var_v = var8;
6583 var12 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
6584 var13 = NULL;
6585 if (var12 == NULL) {
6586 var14 = 0; /* is null */
6587 } else {
6588 var14 = 1; /* arg is null and recv is not */
6589 }
6590 var_ = var14;
6591 if (var14){
6592 var15 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
6593 if (var15 == NULL) {
6594 fprintf(stderr, "Runtime error: %s", "Receiver is null");
6595 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 744);
6596 show_backtrace(1);
6597 } else {
6598 var16 = ((val* (*)(val*))(var15->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_classes]))(var15) /* live_classes on <var15:nullable RapidTypeAnalysis>*/;
6599 }
6600 var17 = ((short int (*)(val*, val*))(var16->class->vft[COLOR_abstract_collection__Collection__has]))(var16, var_mclass) /* has on <var16:HashSet[MClass]>*/;
6601 var18 = !var17;
6602 var11 = var18;
6603 } else {
6604 var11 = var_;
6605 }
6606 var_19 = var11;
6607 if (var11){
6608 var20 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
6609 if (varonce) {
6610 var21 = varonce;
6611 } else {
6612 var22 = "val*";
6613 var23 = 4;
6614 var24 = string__NativeString__to_s_with_length(var22, var23);
6615 var21 = var24;
6616 varonce = var21;
6617 }
6618 var25 = ((short int (*)(val*, val*))(var20->class->vft[COLOR_kernel__Object___61d_61d]))(var20, var21) /* == on <var20:String>*/;
6619 var10 = var25;
6620 } else {
6621 var10 = var_19;
6622 }
6623 var_26 = var10;
6624 if (var10){
6625 var27 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__name]))(var_mclass) /* name on <var_mclass:MClass>*/;
6626 if (varonce28) {
6627 var29 = varonce28;
6628 } else {
6629 var30 = "NativeArray";
6630 var31 = 11;
6631 var32 = string__NativeString__to_s_with_length(var30, var31);
6632 var29 = var32;
6633 varonce28 = var29;
6634 }
6635 var33 = ((short int (*)(val*, val*))(var27->class->vft[COLOR_kernel__Object___33d_61d]))(var27, var29) /* != on <var27:String>*/;
6636 var9 = var33;
6637 } else {
6638 var9 = var_26;
6639 }
6640 var_is_dead = var9;
6641 if (varonce34) {
6642 var35 = varonce34;
6643 } else {
6644 var36 = "/* runtime class ";
6645 var37 = 17;
6646 var38 = string__NativeString__to_s_with_length(var36, var37);
6647 var35 = var38;
6648 varonce34 = var35;
6649 }
6650 if (varonce39) {
6651 var40 = varonce39;
6652 } else {
6653 var41 = " */";
6654 var42 = 3;
6655 var43 = string__NativeString__to_s_with_length(var41, var42);
6656 var40 = var43;
6657 varonce39 = var40;
6658 }
6659 var44 = NEW_array__Array(&type_array__Arraykernel__Object);
6660 { /* var44 = array_instance Array[Object] */
6661 var45 = 3;
6662 var46 = NEW_array__NativeArray(var45, &type_array__NativeArraykernel__Object);
6663 ((struct instance_array__NativeArray*)var46)->values[0] = (val*) var35;
6664 ((struct instance_array__NativeArray*)var46)->values[1] = (val*) var_c_name;
6665 ((struct instance_array__NativeArray*)var46)->values[2] = (val*) var40;
6666 ((void (*)(val*, val*, long))(var44->class->vft[COLOR_array__Array__with_native]))(var44, var46, var45) /* with_native on <var44:Array[Object]>*/;
6667 }
6668 var47 = ((val* (*)(val*))(var44->class->vft[COLOR_string__Object__to_s]))(var44) /* to_s on <var44:Array[Object]>*/;
6669 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var47) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6670 var48 = !var_is_dead;
6671 if (var48){
6672 if (varonce49) {
6673 var50 = varonce49;
6674 } else {
6675 var51 = "class_";
6676 var52 = 6;
6677 var53 = string__NativeString__to_s_with_length(var51, var52);
6678 var50 = var53;
6679 varonce49 = var50;
6680 }
6681 var54 = NEW_array__Array(&type_array__Arraykernel__Object);
6682 { /* var54 = array_instance Array[Object] */
6683 var55 = 2;
6684 var56 = NEW_array__NativeArray(var55, &type_array__NativeArraykernel__Object);
6685 ((struct instance_array__NativeArray*)var56)->values[0] = (val*) var50;
6686 ((struct instance_array__NativeArray*)var56)->values[1] = (val*) var_c_name;
6687 ((void (*)(val*, val*, long))(var54->class->vft[COLOR_array__Array__with_native]))(var54, var56, var55) /* with_native on <var54:Array[Object]>*/;
6688 }
6689 var57 = ((val* (*)(val*))(var54->class->vft[COLOR_string__Object__to_s]))(var54) /* to_s on <var54:Array[Object]>*/;
6690 if (varonce58) {
6691 var59 = varonce58;
6692 } else {
6693 var60 = "extern const struct class class_";
6694 var61 = 32;
6695 var62 = string__NativeString__to_s_with_length(var60, var61);
6696 var59 = var62;
6697 varonce58 = var59;
6698 }
6699 if (varonce63) {
6700 var64 = varonce63;
6701 } else {
6702 var65 = ";";
6703 var66 = 1;
6704 var67 = string__NativeString__to_s_with_length(var65, var66);
6705 var64 = var67;
6706 varonce63 = var64;
6707 }
6708 var68 = NEW_array__Array(&type_array__Arraykernel__Object);
6709 { /* var68 = array_instance Array[Object] */
6710 var69 = 3;
6711 var70 = NEW_array__NativeArray(var69, &type_array__NativeArraykernel__Object);
6712 ((struct instance_array__NativeArray*)var70)->values[0] = (val*) var59;
6713 ((struct instance_array__NativeArray*)var70)->values[1] = (val*) var_c_name;
6714 ((struct instance_array__NativeArray*)var70)->values[2] = (val*) var64;
6715 ((void (*)(val*, val*, long))(var68->class->vft[COLOR_array__Array__with_native]))(var68, var70, var69) /* with_native on <var68:Array[Object]>*/;
6716 }
6717 var71 = ((val* (*)(val*))(var68->class->vft[COLOR_string__Object__to_s]))(var68) /* to_s on <var68:Array[Object]>*/;
6718 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var57, var71) /* provide_declaration on <self:SeparateCompiler>*/;
6719 if (varonce72) {
6720 var73 = varonce72;
6721 } else {
6722 var74 = "const struct class class_";
6723 var75 = 25;
6724 var76 = string__NativeString__to_s_with_length(var74, var75);
6725 var73 = var76;
6726 varonce72 = var73;
6727 }
6728 if (varonce77) {
6729 var78 = varonce77;
6730 } else {
6731 var79 = " = {";
6732 var80 = 4;
6733 var81 = string__NativeString__to_s_with_length(var79, var80);
6734 var78 = var81;
6735 varonce77 = var78;
6736 }
6737 var82 = NEW_array__Array(&type_array__Arraykernel__Object);
6738 { /* var82 = array_instance Array[Object] */
6739 var83 = 3;
6740 var84 = NEW_array__NativeArray(var83, &type_array__NativeArraykernel__Object);
6741 ((struct instance_array__NativeArray*)var84)->values[0] = (val*) var73;
6742 ((struct instance_array__NativeArray*)var84)->values[1] = (val*) var_c_name;
6743 ((struct instance_array__NativeArray*)var84)->values[2] = (val*) var78;
6744 ((void (*)(val*, val*, long))(var82->class->vft[COLOR_array__Array__with_native]))(var82, var84, var83) /* with_native on <var82:Array[Object]>*/;
6745 }
6746 var85 = ((val* (*)(val*))(var82->class->vft[COLOR_string__Object__to_s]))(var82) /* to_s on <var82:Array[Object]>*/;
6747 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var85) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6748 var86 = ((long (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__box_kind_of]))(self, var_mclass) /* box_kind_of on <self:SeparateCompiler>*/;
6749 if (varonce87) {
6750 var88 = varonce87;
6751 } else {
6752 var89 = ", /* box_kind */";
6753 var90 = 16;
6754 var91 = string__NativeString__to_s_with_length(var89, var90);
6755 var88 = var91;
6756 varonce87 = var88;
6757 }
6758 var92 = NEW_array__Array(&type_array__Arraykernel__Object);
6759 { /* var92 = array_instance Array[Object] */
6760 var93 = 2;
6761 var94 = NEW_array__NativeArray(var93, &type_array__NativeArraykernel__Object);
6762 var95 = BOX_kernel__Int(var86); /* autobox from Int to Object */
6763 ((struct instance_array__NativeArray*)var94)->values[0] = (val*) var95;
6764 ((struct instance_array__NativeArray*)var94)->values[1] = (val*) var88;
6765 ((void (*)(val*, val*, long))(var92->class->vft[COLOR_array__Array__with_native]))(var92, var94, var93) /* with_native on <var92:Array[Object]>*/;
6766 }
6767 var96 = ((val* (*)(val*))(var92->class->vft[COLOR_string__Object__to_s]))(var92) /* to_s on <var92:Array[Object]>*/;
6768 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var96) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6769 if (varonce97) {
6770 var98 = varonce97;
6771 } else {
6772 var99 = "{";
6773 var100 = 1;
6774 var101 = string__NativeString__to_s_with_length(var99, var100);
6775 var98 = var101;
6776 varonce97 = var98;
6777 }
6778 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var98) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6779 var102 = NEW_range__Range(&type_range__Rangekernel__Int);
6780 var103 = 0;
6781 var104 = ((long (*)(val*))(var_vft->class->vft[COLOR_abstract_collection__Collection__length]))(var_vft) /* length on <var_vft:Array[nullable MPropDef]>*/;
6782 var105 = BOX_kernel__Int(var103); /* autobox from Int to Discrete */
6783 var106 = BOX_kernel__Int(var104); /* autobox from Int to Discrete */
6784 ((void (*)(val*, val*, val*))(var102->class->vft[COLOR_range__Range__without_last]))(var102, var105, var106) /* without_last on <var102:Range[Int]>*/;
6785 var107 = ((val* (*)(val*))(var102->class->vft[COLOR_abstract_collection__Collection__iterator]))(var102) /* iterator on <var102:Range[Int]>*/;
6786 for(;;) {
6787 var108 = ((short int (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var107) /* is_ok on <var107:Iterator[nullable Object]>*/;
6788 if(!var108) break;
6789 var109 = ((val* (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__item]))(var107) /* item on <var107:Iterator[nullable Object]>*/;
6790 var110 = ((struct instance_kernel__Int*)var109)->value; /* autounbox from nullable Object to Int */;
6791 var_i = var110;
6792 var111 = ((val* (*)(val*, long))(var_vft->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_vft, var_i) /* [] on <var_vft:Array[nullable MPropDef]>*/;
6793 var_mpropdef = var111;
6794 var112 = NULL;
6795 if (var_mpropdef == NULL) {
6796 var113 = 1; /* is null */
6797 } else {
6798 var113 = 0; /* arg is null but recv is not */
6799 }
6800 if (var113){
6801 if (varonce114) {
6802 var115 = varonce114;
6803 } else {
6804 var116 = "NULL, /* empty */";
6805 var117 = 17;
6806 var118 = string__NativeString__to_s_with_length(var116, var117);
6807 var115 = var118;
6808 varonce114 = var115;
6809 }
6810 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var115) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6811 } else {
6812 /* <var_mpropdef:nullable MPropDef(MPropDef)> isa MMethodDef */
6813 cltype = type_model__MMethodDef.color;
6814 idtype = type_model__MMethodDef.id;
6815 if(cltype >= var_mpropdef->type->table_size) {
6816 var119 = 0;
6817 } else {
6818 var119 = var_mpropdef->type->type_table[cltype] == idtype;
6819 }
6820 if (!var119) {
6821 fprintf(stderr, "Runtime error: %s", "Assert failed");
6822 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 759);
6823 show_backtrace(1);
6824 }
6825 var120 = ((val* (*)(val*))(var_mpropdef->class->vft[COLOR_separate_compiler__MMethodDef__virtual_runtime_function]))(var_mpropdef) /* virtual_runtime_function on <var_mpropdef:nullable MPropDef(MMethodDef)>*/;
6826 var_rf = var120;
6827 var121 = ((val* (*)(val*))(var_rf->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(var_rf) /* c_name on <var_rf:AbstractRuntimeFunction>*/;
6828 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var121) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
6829 if (varonce122) {
6830 var123 = varonce122;
6831 } else {
6832 var124 = "(nitmethod_t)";
6833 var125 = 13;
6834 var126 = string__NativeString__to_s_with_length(var124, var125);
6835 var123 = var126;
6836 varonce122 = var123;
6837 }
6838 var127 = ((val* (*)(val*))(var_rf->class->vft[COLOR_abstract_compiler__AbstractRuntimeFunction__c_name]))(var_rf) /* c_name on <var_rf:AbstractRuntimeFunction>*/;
6839 if (varonce128) {
6840 var129 = varonce128;
6841 } else {
6842 var130 = ", /* pointer to ";
6843 var131 = 16;
6844 var132 = string__NativeString__to_s_with_length(var130, var131);
6845 var129 = var132;
6846 varonce128 = var129;
6847 }
6848 var133 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__intro_mmodule]))(var_mclass) /* intro_mmodule on <var_mclass:MClass>*/;
6849 if (varonce134) {
6850 var135 = varonce134;
6851 } else {
6852 var136 = ":";
6853 var137 = 1;
6854 var138 = string__NativeString__to_s_with_length(var136, var137);
6855 var135 = var138;
6856 varonce134 = var135;
6857 }
6858 if (varonce139) {
6859 var140 = varonce139;
6860 } else {
6861 var141 = ":";
6862 var142 = 1;
6863 var143 = string__NativeString__to_s_with_length(var141, var142);
6864 var140 = var143;
6865 varonce139 = var140;
6866 }
6867 if (varonce144) {
6868 var145 = varonce144;
6869 } else {
6870 var146 = " */";
6871 var147 = 3;
6872 var148 = string__NativeString__to_s_with_length(var146, var147);
6873 var145 = var148;
6874 varonce144 = var145;
6875 }
6876 var149 = NEW_array__Array(&type_array__Arraykernel__Object);
6877 { /* var149 = array_instance Array[Object] */
6878 var150 = 9;
6879 var151 = NEW_array__NativeArray(var150, &type_array__NativeArraykernel__Object);
6880 ((struct instance_array__NativeArray*)var151)->values[0] = (val*) var123;
6881 ((struct instance_array__NativeArray*)var151)->values[1] = (val*) var127;
6882 ((struct instance_array__NativeArray*)var151)->values[2] = (val*) var129;
6883 ((struct instance_array__NativeArray*)var151)->values[3] = (val*) var133;
6884 ((struct instance_array__NativeArray*)var151)->values[4] = (val*) var135;
6885 ((struct instance_array__NativeArray*)var151)->values[5] = (val*) var_mclass;
6886 ((struct instance_array__NativeArray*)var151)->values[6] = (val*) var140;
6887 ((struct instance_array__NativeArray*)var151)->values[7] = (val*) var_mpropdef;
6888 ((struct instance_array__NativeArray*)var151)->values[8] = (val*) var145;
6889 ((void (*)(val*, val*, long))(var149->class->vft[COLOR_array__Array__with_native]))(var149, var151, var150) /* with_native on <var149:Array[Object]>*/;
6890 }
6891 var152 = ((val* (*)(val*))(var149->class->vft[COLOR_string__Object__to_s]))(var149) /* to_s on <var149:Array[Object]>*/;
6892 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var152) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6893 }
6894 CONTINUE_label: (void)0;
6895 ((void (*)(val*))(var107->class->vft[COLOR_abstract_collection__Iterator__next]))(var107) /* next on <var107:Iterator[nullable Object]>*/;
6896 }
6897 BREAK_label: (void)0;
6898 if (varonce153) {
6899 var154 = varonce153;
6900 } else {
6901 var155 = "}";
6902 var156 = 1;
6903 var157 = string__NativeString__to_s_with_length(var155, var156);
6904 var154 = var157;
6905 varonce153 = var154;
6906 }
6907 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var154) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6908 if (varonce158) {
6909 var159 = varonce158;
6910 } else {
6911 var160 = "};";
6912 var161 = 2;
6913 var162 = string__NativeString__to_s_with_length(var160, var161);
6914 var159 = var162;
6915 varonce158 = var159;
6916 }
6917 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var159) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
6918 } else {
6919 }
6920 var163 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
6921 if (varonce164) {
6922 var165 = varonce164;
6923 } else {
6924 var166 = "val*";
6925 var167 = 4;
6926 var168 = string__NativeString__to_s_with_length(var166, var167);
6927 var165 = var168;
6928 varonce164 = var165;
6929 }
6930 var169 = ((short int (*)(val*, val*))(var163->class->vft[COLOR_kernel__Object___33d_61d]))(var163, var165) /* != on <var163:String>*/;
6931 if (var169){
6932 var171 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
6933 var172 = ((val* (*)(val*))(var171->class->vft[COLOR_model__MClass__name]))(var171) /* name on <var171:MClass>*/;
6934 if (varonce173) {
6935 var174 = varonce173;
6936 } else {
6937 var175 = "Pointer";
6938 var176 = 7;
6939 var177 = string__NativeString__to_s_with_length(var175, var176);
6940 var174 = var177;
6941 varonce173 = var174;
6942 }
6943 var178 = ((short int (*)(val*, val*))(var172->class->vft[COLOR_kernel__Object___61d_61d]))(var172, var174) /* == on <var172:String>*/;
6944 var_179 = var178;
6945 if (var178){
6946 var170 = var_179;
6947 } else {
6948 var180 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__mclass]))(var_mtype) /* mclass on <var_mtype:MClassType>*/;
6949 var181 = ((val* (*)(val*))(var180->class->vft[COLOR_model__MClass__kind]))(var180) /* kind on <var180:MClass>*/;
6950 var182 = ((val* (*)(val*))(self->class->vft[COLOR_model__Object__extern_kind]))(self) /* extern_kind on <self:SeparateCompiler>*/;
6951 var183 = ((short int (*)(val*, val*))(var181->class->vft[COLOR_kernel__Object___33d_61d]))(var181, var182) /* != on <var181:MClassKind>*/;
6952 var170 = var183;
6953 }
6954 if (var170){
6955 var184 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
6956 if (varonce185) {
6957 var186 = varonce185;
6958 } else {
6959 var187 = "struct instance_";
6960 var188 = 16;
6961 var189 = string__NativeString__to_s_with_length(var187, var188);
6962 var186 = var189;
6963 varonce185 = var186;
6964 }
6965 if (varonce190) {
6966 var191 = varonce190;
6967 } else {
6968 var192 = " {";
6969 var193 = 2;
6970 var194 = string__NativeString__to_s_with_length(var192, var193);
6971 var191 = var194;
6972 varonce190 = var191;
6973 }
6974 var195 = NEW_array__Array(&type_array__Arraykernel__Object);
6975 { /* var195 = array_instance Array[Object] */
6976 var196 = 3;
6977 var197 = NEW_array__NativeArray(var196, &type_array__NativeArraykernel__Object);
6978 ((struct instance_array__NativeArray*)var197)->values[0] = (val*) var186;
6979 ((struct instance_array__NativeArray*)var197)->values[1] = (val*) var_c_instance_name;
6980 ((struct instance_array__NativeArray*)var197)->values[2] = (val*) var191;
6981 ((void (*)(val*, val*, long))(var195->class->vft[COLOR_array__Array__with_native]))(var195, var197, var196) /* with_native on <var195:Array[Object]>*/;
6982 }
6983 var198 = ((val* (*)(val*))(var195->class->vft[COLOR_string__Object__to_s]))(var195) /* to_s on <var195:Array[Object]>*/;
6984 ((void (*)(val*, val*))(var184->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var184, var198) /* add_decl on <var184:CodeWriter>*/;
6985 var199 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
6986 if (varonce200) {
6987 var201 = varonce200;
6988 } else {
6989 var202 = "const struct type *type;";
6990 var203 = 24;
6991 var204 = string__NativeString__to_s_with_length(var202, var203);
6992 var201 = var204;
6993 varonce200 = var201;
6994 }
6995 ((void (*)(val*, val*))(var199->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var199, var201) /* add_decl on <var199:CodeWriter>*/;
6996 var205 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
6997 if (varonce206) {
6998 var207 = varonce206;
6999 } else {
7000 var208 = "const struct class *class;";
7001 var209 = 26;
7002 var210 = string__NativeString__to_s_with_length(var208, var209);
7003 var207 = var210;
7004 varonce206 = var207;
7005 }
7006 ((void (*)(val*, val*))(var205->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var205, var207) /* add_decl on <var205:CodeWriter>*/;
7007 var211 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7008 var212 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7009 if (varonce213) {
7010 var214 = varonce213;
7011 } else {
7012 var215 = " value;";
7013 var216 = 7;
7014 var217 = string__NativeString__to_s_with_length(var215, var216);
7015 var214 = var217;
7016 varonce213 = var214;
7017 }
7018 var218 = NEW_array__Array(&type_array__Arraykernel__Object);
7019 { /* var218 = array_instance Array[Object] */
7020 var219 = 2;
7021 var220 = NEW_array__NativeArray(var219, &type_array__NativeArraykernel__Object);
7022 ((struct instance_array__NativeArray*)var220)->values[0] = (val*) var212;
7023 ((struct instance_array__NativeArray*)var220)->values[1] = (val*) var214;
7024 ((void (*)(val*, val*, long))(var218->class->vft[COLOR_array__Array__with_native]))(var218, var220, var219) /* with_native on <var218:Array[Object]>*/;
7025 }
7026 var221 = ((val* (*)(val*))(var218->class->vft[COLOR_string__Object__to_s]))(var218) /* to_s on <var218:Array[Object]>*/;
7027 ((void (*)(val*, val*))(var211->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var211, var221) /* add_decl on <var211:CodeWriter>*/;
7028 var222 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7029 if (varonce223) {
7030 var224 = varonce223;
7031 } else {
7032 var225 = "};";
7033 var226 = 2;
7034 var227 = string__NativeString__to_s_with_length(var225, var226);
7035 var224 = var227;
7036 varonce223 = var224;
7037 }
7038 ((void (*)(val*, val*))(var222->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var222, var224) /* add_decl on <var222:CodeWriter>*/;
7039 } else {
7040 }
7041 var228 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(self) /* runtime_type_analysis on <self:SeparateCompiler>*/;
7042 if (var228 == NULL) {
7043 fprintf(stderr, "Runtime error: %s", "Receiver is null");
7044 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 779);
7045 show_backtrace(1);
7046 } else {
7047 var229 = ((val* (*)(val*))(var228->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var228) /* live_types on <var228:nullable RapidTypeAnalysis>*/;
7048 }
7049 var230 = ((short int (*)(val*, val*))(var229->class->vft[COLOR_abstract_collection__Collection__has]))(var229, var_mtype) /* has on <var229:HashSet[MClassType]>*/;
7050 var231 = !var230;
7051 if (var231){
7052 goto RET_LABEL;
7053 } else {
7054 }
7055 if (varonce232) {
7056 var233 = varonce232;
7057 } else {
7058 var234 = "BOX_";
7059 var235 = 4;
7060 var236 = string__NativeString__to_s_with_length(var234, var235);
7061 var233 = var236;
7062 varonce232 = var233;
7063 }
7064 var237 = NEW_array__Array(&type_array__Arraykernel__Object);
7065 { /* var237 = array_instance Array[Object] */
7066 var238 = 2;
7067 var239 = NEW_array__NativeArray(var238, &type_array__NativeArraykernel__Object);
7068 ((struct instance_array__NativeArray*)var239)->values[0] = (val*) var233;
7069 ((struct instance_array__NativeArray*)var239)->values[1] = (val*) var_c_name;
7070 ((void (*)(val*, val*, long))(var237->class->vft[COLOR_array__Array__with_native]))(var237, var239, var238) /* with_native on <var237:Array[Object]>*/;
7071 }
7072 var240 = ((val* (*)(val*))(var237->class->vft[COLOR_string__Object__to_s]))(var237) /* to_s on <var237:Array[Object]>*/;
7073 if (varonce241) {
7074 var242 = varonce241;
7075 } else {
7076 var243 = "val* BOX_";
7077 var244 = 9;
7078 var245 = string__NativeString__to_s_with_length(var243, var244);
7079 var242 = var245;
7080 varonce241 = var242;
7081 }
7082 if (varonce246) {
7083 var247 = varonce246;
7084 } else {
7085 var248 = "(";
7086 var249 = 1;
7087 var250 = string__NativeString__to_s_with_length(var248, var249);
7088 var247 = var250;
7089 varonce246 = var247;
7090 }
7091 var251 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7092 if (varonce252) {
7093 var253 = varonce252;
7094 } else {
7095 var254 = ");";
7096 var255 = 2;
7097 var256 = string__NativeString__to_s_with_length(var254, var255);
7098 var253 = var256;
7099 varonce252 = var253;
7100 }
7101 var257 = NEW_array__Array(&type_array__Arraykernel__Object);
7102 { /* var257 = array_instance Array[Object] */
7103 var258 = 5;
7104 var259 = NEW_array__NativeArray(var258, &type_array__NativeArraykernel__Object);
7105 ((struct instance_array__NativeArray*)var259)->values[0] = (val*) var242;
7106 ((struct instance_array__NativeArray*)var259)->values[1] = (val*) var_c_name;
7107 ((struct instance_array__NativeArray*)var259)->values[2] = (val*) var247;
7108 ((struct instance_array__NativeArray*)var259)->values[3] = (val*) var251;
7109 ((struct instance_array__NativeArray*)var259)->values[4] = (val*) var253;
7110 ((void (*)(val*, val*, long))(var257->class->vft[COLOR_array__Array__with_native]))(var257, var259, var258) /* with_native on <var257:Array[Object]>*/;
7111 }
7112 var260 = ((val* (*)(val*))(var257->class->vft[COLOR_string__Object__to_s]))(var257) /* to_s on <var257:Array[Object]>*/;
7113 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var240, var260) /* provide_declaration on <self:SeparateCompiler>*/;
7114 if (varonce261) {
7115 var262 = varonce261;
7116 } else {
7117 var263 = "/* allocate ";
7118 var264 = 12;
7119 var265 = string__NativeString__to_s_with_length(var263, var264);
7120 var262 = var265;
7121 varonce261 = var262;
7122 }
7123 if (varonce266) {
7124 var267 = varonce266;
7125 } else {
7126 var268 = " */";
7127 var269 = 3;
7128 var270 = string__NativeString__to_s_with_length(var268, var269);
7129 var267 = var270;
7130 varonce266 = var267;
7131 }
7132 var271 = NEW_array__Array(&type_array__Arraykernel__Object);
7133 { /* var271 = array_instance Array[Object] */
7134 var272 = 3;
7135 var273 = NEW_array__NativeArray(var272, &type_array__NativeArraykernel__Object);
7136 ((struct instance_array__NativeArray*)var273)->values[0] = (val*) var262;
7137 ((struct instance_array__NativeArray*)var273)->values[1] = (val*) var_mtype;
7138 ((struct instance_array__NativeArray*)var273)->values[2] = (val*) var267;
7139 ((void (*)(val*, val*, long))(var271->class->vft[COLOR_array__Array__with_native]))(var271, var273, var272) /* with_native on <var271:Array[Object]>*/;
7140 }
7141 var274 = ((val* (*)(val*))(var271->class->vft[COLOR_string__Object__to_s]))(var271) /* to_s on <var271:Array[Object]>*/;
7142 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var274) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7143 if (varonce275) {
7144 var276 = varonce275;
7145 } else {
7146 var277 = "val* BOX_";
7147 var278 = 9;
7148 var279 = string__NativeString__to_s_with_length(var277, var278);
7149 var276 = var279;
7150 varonce275 = var276;
7151 }
7152 var280 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_mtype) /* c_name on <var_mtype:MClassType>*/;
7153 if (varonce281) {
7154 var282 = varonce281;
7155 } else {
7156 var283 = "(";
7157 var284 = 1;
7158 var285 = string__NativeString__to_s_with_length(var283, var284);
7159 var282 = var285;
7160 varonce281 = var282;
7161 }
7162 var286 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7163 if (varonce287) {
7164 var288 = varonce287;
7165 } else {
7166 var289 = " value) {";
7167 var290 = 9;
7168 var291 = string__NativeString__to_s_with_length(var289, var290);
7169 var288 = var291;
7170 varonce287 = var288;
7171 }
7172 var292 = NEW_array__Array(&type_array__Arraykernel__Object);
7173 { /* var292 = array_instance Array[Object] */
7174 var293 = 5;
7175 var294 = NEW_array__NativeArray(var293, &type_array__NativeArraykernel__Object);
7176 ((struct instance_array__NativeArray*)var294)->values[0] = (val*) var276;
7177 ((struct instance_array__NativeArray*)var294)->values[1] = (val*) var280;
7178 ((struct instance_array__NativeArray*)var294)->values[2] = (val*) var282;
7179 ((struct instance_array__NativeArray*)var294)->values[3] = (val*) var286;
7180 ((struct instance_array__NativeArray*)var294)->values[4] = (val*) var288;
7181 ((void (*)(val*, val*, long))(var292->class->vft[COLOR_array__Array__with_native]))(var292, var294, var293) /* with_native on <var292:Array[Object]>*/;
7182 }
7183 var295 = ((val* (*)(val*))(var292->class->vft[COLOR_string__Object__to_s]))(var292) /* to_s on <var292:Array[Object]>*/;
7184 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var295) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7185 if (varonce296) {
7186 var297 = varonce296;
7187 } else {
7188 var298 = "struct instance_";
7189 var299 = 16;
7190 var300 = string__NativeString__to_s_with_length(var298, var299);
7191 var297 = var300;
7192 varonce296 = var297;
7193 }
7194 if (varonce301) {
7195 var302 = varonce301;
7196 } else {
7197 var303 = "*res = nit_alloc(sizeof(struct instance_";
7198 var304 = 40;
7199 var305 = string__NativeString__to_s_with_length(var303, var304);
7200 var302 = var305;
7201 varonce301 = var302;
7202 }
7203 if (varonce306) {
7204 var307 = varonce306;
7205 } else {
7206 var308 = "));";
7207 var309 = 3;
7208 var310 = string__NativeString__to_s_with_length(var308, var309);
7209 var307 = var310;
7210 varonce306 = var307;
7211 }
7212 var311 = NEW_array__Array(&type_array__Arraykernel__Object);
7213 { /* var311 = array_instance Array[Object] */
7214 var312 = 5;
7215 var313 = NEW_array__NativeArray(var312, &type_array__NativeArraykernel__Object);
7216 ((struct instance_array__NativeArray*)var313)->values[0] = (val*) var297;
7217 ((struct instance_array__NativeArray*)var313)->values[1] = (val*) var_c_instance_name;
7218 ((struct instance_array__NativeArray*)var313)->values[2] = (val*) var302;
7219 ((struct instance_array__NativeArray*)var313)->values[3] = (val*) var_c_instance_name;
7220 ((struct instance_array__NativeArray*)var313)->values[4] = (val*) var307;
7221 ((void (*)(val*, val*, long))(var311->class->vft[COLOR_array__Array__with_native]))(var311, var313, var312) /* with_native on <var311:Array[Object]>*/;
7222 }
7223 var314 = ((val* (*)(val*))(var311->class->vft[COLOR_string__Object__to_s]))(var311) /* to_s on <var311:Array[Object]>*/;
7224 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var314) /* add on <var_v:SeparateCompilerVisitor>*/;
7225 if (varonce315) {
7226 var316 = varonce315;
7227 } else {
7228 var317 = "type_";
7229 var318 = 5;
7230 var319 = string__NativeString__to_s_with_length(var317, var318);
7231 var316 = var319;
7232 varonce315 = var316;
7233 }
7234 var320 = NEW_array__Array(&type_array__Arraykernel__Object);
7235 { /* var320 = array_instance Array[Object] */
7236 var321 = 2;
7237 var322 = NEW_array__NativeArray(var321, &type_array__NativeArraykernel__Object);
7238 ((struct instance_array__NativeArray*)var322)->values[0] = (val*) var316;
7239 ((struct instance_array__NativeArray*)var322)->values[1] = (val*) var_c_name;
7240 ((void (*)(val*, val*, long))(var320->class->vft[COLOR_array__Array__with_native]))(var320, var322, var321) /* with_native on <var320:Array[Object]>*/;
7241 }
7242 var323 = ((val* (*)(val*))(var320->class->vft[COLOR_string__Object__to_s]))(var320) /* to_s on <var320:Array[Object]>*/;
7243 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var323) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
7244 if (varonce324) {
7245 var325 = varonce324;
7246 } else {
7247 var326 = "res->type = &type_";
7248 var327 = 18;
7249 var328 = string__NativeString__to_s_with_length(var326, var327);
7250 var325 = var328;
7251 varonce324 = var325;
7252 }
7253 if (varonce329) {
7254 var330 = varonce329;
7255 } else {
7256 var331 = ";";
7257 var332 = 1;
7258 var333 = string__NativeString__to_s_with_length(var331, var332);
7259 var330 = var333;
7260 varonce329 = var330;
7261 }
7262 var334 = NEW_array__Array(&type_array__Arraykernel__Object);
7263 { /* var334 = array_instance Array[Object] */
7264 var335 = 3;
7265 var336 = NEW_array__NativeArray(var335, &type_array__NativeArraykernel__Object);
7266 ((struct instance_array__NativeArray*)var336)->values[0] = (val*) var325;
7267 ((struct instance_array__NativeArray*)var336)->values[1] = (val*) var_c_name;
7268 ((struct instance_array__NativeArray*)var336)->values[2] = (val*) var330;
7269 ((void (*)(val*, val*, long))(var334->class->vft[COLOR_array__Array__with_native]))(var334, var336, var335) /* with_native on <var334:Array[Object]>*/;
7270 }
7271 var337 = ((val* (*)(val*))(var334->class->vft[COLOR_string__Object__to_s]))(var334) /* to_s on <var334:Array[Object]>*/;
7272 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var337) /* add on <var_v:SeparateCompilerVisitor>*/;
7273 if (varonce338) {
7274 var339 = varonce338;
7275 } else {
7276 var340 = "class_";
7277 var341 = 6;
7278 var342 = string__NativeString__to_s_with_length(var340, var341);
7279 var339 = var342;
7280 varonce338 = var339;
7281 }
7282 var343 = NEW_array__Array(&type_array__Arraykernel__Object);
7283 { /* var343 = array_instance Array[Object] */
7284 var344 = 2;
7285 var345 = NEW_array__NativeArray(var344, &type_array__NativeArraykernel__Object);
7286 ((struct instance_array__NativeArray*)var345)->values[0] = (val*) var339;
7287 ((struct instance_array__NativeArray*)var345)->values[1] = (val*) var_c_name;
7288 ((void (*)(val*, val*, long))(var343->class->vft[COLOR_array__Array__with_native]))(var343, var345, var344) /* with_native on <var343:Array[Object]>*/;
7289 }
7290 var346 = ((val* (*)(val*))(var343->class->vft[COLOR_string__Object__to_s]))(var343) /* to_s on <var343:Array[Object]>*/;
7291 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var346) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
7292 if (varonce347) {
7293 var348 = varonce347;
7294 } else {
7295 var349 = "res->class = &class_";
7296 var350 = 20;
7297 var351 = string__NativeString__to_s_with_length(var349, var350);
7298 var348 = var351;
7299 varonce347 = var348;
7300 }
7301 if (varonce352) {
7302 var353 = varonce352;
7303 } else {
7304 var354 = ";";
7305 var355 = 1;
7306 var356 = string__NativeString__to_s_with_length(var354, var355);
7307 var353 = var356;
7308 varonce352 = var353;
7309 }
7310 var357 = NEW_array__Array(&type_array__Arraykernel__Object);
7311 { /* var357 = array_instance Array[Object] */
7312 var358 = 3;
7313 var359 = NEW_array__NativeArray(var358, &type_array__NativeArraykernel__Object);
7314 ((struct instance_array__NativeArray*)var359)->values[0] = (val*) var348;
7315 ((struct instance_array__NativeArray*)var359)->values[1] = (val*) var_c_name;
7316 ((struct instance_array__NativeArray*)var359)->values[2] = (val*) var353;
7317 ((void (*)(val*, val*, long))(var357->class->vft[COLOR_array__Array__with_native]))(var357, var359, var358) /* with_native on <var357:Array[Object]>*/;
7318 }
7319 var360 = ((val* (*)(val*))(var357->class->vft[COLOR_string__Object__to_s]))(var357) /* to_s on <var357:Array[Object]>*/;
7320 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var360) /* add on <var_v:SeparateCompilerVisitor>*/;
7321 if (varonce361) {
7322 var362 = varonce361;
7323 } else {
7324 var363 = "res->value = value;";
7325 var364 = 19;
7326 var365 = string__NativeString__to_s_with_length(var363, var364);
7327 var362 = var365;
7328 varonce361 = var362;
7329 }
7330 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var362) /* add on <var_v:SeparateCompilerVisitor>*/;
7331 if (varonce366) {
7332 var367 = varonce366;
7333 } else {
7334 var368 = "return (val*)res;";
7335 var369 = 17;
7336 var370 = string__NativeString__to_s_with_length(var368, var369);
7337 var367 = var370;
7338 varonce366 = var367;
7339 }
7340 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var367) /* add on <var_v:SeparateCompilerVisitor>*/;
7341 if (varonce371) {
7342 var372 = varonce371;
7343 } else {
7344 var373 = "}";
7345 var374 = 1;
7346 var375 = string__NativeString__to_s_with_length(var373, var374);
7347 var372 = var375;
7348 varonce371 = var372;
7349 }
7350 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var372) /* add on <var_v:SeparateCompilerVisitor>*/;
7351 goto RET_LABEL;
7352 } else {
7353 var376 = ((val* (*)(val*))(var_mclass->class->vft[COLOR_model__MClass__name]))(var_mclass) /* name on <var_mclass:MClass>*/;
7354 if (varonce377) {
7355 var378 = varonce377;
7356 } else {
7357 var379 = "NativeArray";
7358 var380 = 11;
7359 var381 = string__NativeString__to_s_with_length(var379, var380);
7360 var378 = var381;
7361 varonce377 = var378;
7362 }
7363 var382 = ((short int (*)(val*, val*))(var376->class->vft[COLOR_kernel__Object___61d_61d]))(var376, var378) /* == on <var376:String>*/;
7364 if (var382){
7365 var383 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7366 if (varonce384) {
7367 var385 = varonce384;
7368 } else {
7369 var386 = "struct instance_";
7370 var387 = 16;
7371 var388 = string__NativeString__to_s_with_length(var386, var387);
7372 var385 = var388;
7373 varonce384 = var385;
7374 }
7375 if (varonce389) {
7376 var390 = varonce389;
7377 } else {
7378 var391 = " {";
7379 var392 = 2;
7380 var393 = string__NativeString__to_s_with_length(var391, var392);
7381 var390 = var393;
7382 varonce389 = var390;
7383 }
7384 var394 = NEW_array__Array(&type_array__Arraykernel__Object);
7385 { /* var394 = array_instance Array[Object] */
7386 var395 = 3;
7387 var396 = NEW_array__NativeArray(var395, &type_array__NativeArraykernel__Object);
7388 ((struct instance_array__NativeArray*)var396)->values[0] = (val*) var385;
7389 ((struct instance_array__NativeArray*)var396)->values[1] = (val*) var_c_instance_name;
7390 ((struct instance_array__NativeArray*)var396)->values[2] = (val*) var390;
7391 ((void (*)(val*, val*, long))(var394->class->vft[COLOR_array__Array__with_native]))(var394, var396, var395) /* with_native on <var394:Array[Object]>*/;
7392 }
7393 var397 = ((val* (*)(val*))(var394->class->vft[COLOR_string__Object__to_s]))(var394) /* to_s on <var394:Array[Object]>*/;
7394 ((void (*)(val*, val*))(var383->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var383, var397) /* add_decl on <var383:CodeWriter>*/;
7395 var398 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7396 if (varonce399) {
7397 var400 = varonce399;
7398 } else {
7399 var401 = "const struct type *type;";
7400 var402 = 24;
7401 var403 = string__NativeString__to_s_with_length(var401, var402);
7402 var400 = var403;
7403 varonce399 = var400;
7404 }
7405 ((void (*)(val*, val*))(var398->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var398, var400) /* add_decl on <var398:CodeWriter>*/;
7406 var404 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7407 if (varonce405) {
7408 var406 = varonce405;
7409 } else {
7410 var407 = "const struct class *class;";
7411 var408 = 26;
7412 var409 = string__NativeString__to_s_with_length(var407, var408);
7413 var406 = var409;
7414 varonce405 = var406;
7415 }
7416 ((void (*)(val*, val*))(var404->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var404, var406) /* add_decl on <var404:CodeWriter>*/;
7417 var410 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7418 if (varonce411) {
7419 var412 = varonce411;
7420 } else {
7421 var413 = "val* values[0];";
7422 var414 = 15;
7423 var415 = string__NativeString__to_s_with_length(var413, var414);
7424 var412 = var415;
7425 varonce411 = var412;
7426 }
7427 ((void (*)(val*, val*))(var410->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var410, var412) /* add_decl on <var410:CodeWriter>*/;
7428 var416 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
7429 if (varonce417) {
7430 var418 = varonce417;
7431 } else {
7432 var419 = "};";
7433 var420 = 2;
7434 var421 = string__NativeString__to_s_with_length(var419, var420);
7435 var418 = var421;
7436 varonce417 = var418;
7437 }
7438 ((void (*)(val*, val*))(var416->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var416, var418) /* add_decl on <var416:CodeWriter>*/;
7439 if (varonce422) {
7440 var423 = varonce422;
7441 } else {
7442 var424 = "NEW_";
7443 var425 = 4;
7444 var426 = string__NativeString__to_s_with_length(var424, var425);
7445 var423 = var426;
7446 varonce422 = var423;
7447 }
7448 var427 = NEW_array__Array(&type_array__Arraykernel__Object);
7449 { /* var427 = array_instance Array[Object] */
7450 var428 = 2;
7451 var429 = NEW_array__NativeArray(var428, &type_array__NativeArraykernel__Object);
7452 ((struct instance_array__NativeArray*)var429)->values[0] = (val*) var423;
7453 ((struct instance_array__NativeArray*)var429)->values[1] = (val*) var_c_name;
7454 ((void (*)(val*, val*, long))(var427->class->vft[COLOR_array__Array__with_native]))(var427, var429, var428) /* with_native on <var427:Array[Object]>*/;
7455 }
7456 var430 = ((val* (*)(val*))(var427->class->vft[COLOR_string__Object__to_s]))(var427) /* to_s on <var427:Array[Object]>*/;
7457 var431 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7458 if (varonce432) {
7459 var433 = varonce432;
7460 } else {
7461 var434 = " NEW_";
7462 var435 = 5;
7463 var436 = string__NativeString__to_s_with_length(var434, var435);
7464 var433 = var436;
7465 varonce432 = var433;
7466 }
7467 if (varonce437) {
7468 var438 = varonce437;
7469 } else {
7470 var439 = "(int length, const struct type* type);";
7471 var440 = 38;
7472 var441 = string__NativeString__to_s_with_length(var439, var440);
7473 var438 = var441;
7474 varonce437 = var438;
7475 }
7476 var442 = NEW_array__Array(&type_array__Arraykernel__Object);
7477 { /* var442 = array_instance Array[Object] */
7478 var443 = 4;
7479 var444 = NEW_array__NativeArray(var443, &type_array__NativeArraykernel__Object);
7480 ((struct instance_array__NativeArray*)var444)->values[0] = (val*) var431;
7481 ((struct instance_array__NativeArray*)var444)->values[1] = (val*) var433;
7482 ((struct instance_array__NativeArray*)var444)->values[2] = (val*) var_c_name;
7483 ((struct instance_array__NativeArray*)var444)->values[3] = (val*) var438;
7484 ((void (*)(val*, val*, long))(var442->class->vft[COLOR_array__Array__with_native]))(var442, var444, var443) /* with_native on <var442:Array[Object]>*/;
7485 }
7486 var445 = ((val* (*)(val*))(var442->class->vft[COLOR_string__Object__to_s]))(var442) /* to_s on <var442:Array[Object]>*/;
7487 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var430, var445) /* provide_declaration on <self:SeparateCompiler>*/;
7488 if (varonce446) {
7489 var447 = varonce446;
7490 } else {
7491 var448 = "/* allocate ";
7492 var449 = 12;
7493 var450 = string__NativeString__to_s_with_length(var448, var449);
7494 var447 = var450;
7495 varonce446 = var447;
7496 }
7497 if (varonce451) {
7498 var452 = varonce451;
7499 } else {
7500 var453 = " */";
7501 var454 = 3;
7502 var455 = string__NativeString__to_s_with_length(var453, var454);
7503 var452 = var455;
7504 varonce451 = var452;
7505 }
7506 var456 = NEW_array__Array(&type_array__Arraykernel__Object);
7507 { /* var456 = array_instance Array[Object] */
7508 var457 = 3;
7509 var458 = NEW_array__NativeArray(var457, &type_array__NativeArraykernel__Object);
7510 ((struct instance_array__NativeArray*)var458)->values[0] = (val*) var447;
7511 ((struct instance_array__NativeArray*)var458)->values[1] = (val*) var_mtype;
7512 ((struct instance_array__NativeArray*)var458)->values[2] = (val*) var452;
7513 ((void (*)(val*, val*, long))(var456->class->vft[COLOR_array__Array__with_native]))(var456, var458, var457) /* with_native on <var456:Array[Object]>*/;
7514 }
7515 var459 = ((val* (*)(val*))(var456->class->vft[COLOR_string__Object__to_s]))(var456) /* to_s on <var456:Array[Object]>*/;
7516 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var459) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7517 var460 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7518 if (varonce461) {
7519 var462 = varonce461;
7520 } else {
7521 var463 = " NEW_";
7522 var464 = 5;
7523 var465 = string__NativeString__to_s_with_length(var463, var464);
7524 var462 = var465;
7525 varonce461 = var462;
7526 }
7527 if (varonce466) {
7528 var467 = varonce466;
7529 } else {
7530 var468 = "(int length, const struct type* type) {";
7531 var469 = 39;
7532 var470 = string__NativeString__to_s_with_length(var468, var469);
7533 var467 = var470;
7534 varonce466 = var467;
7535 }
7536 var471 = NEW_array__Array(&type_array__Arraykernel__Object);
7537 { /* var471 = array_instance Array[Object] */
7538 var472 = 4;
7539 var473 = NEW_array__NativeArray(var472, &type_array__NativeArraykernel__Object);
7540 ((struct instance_array__NativeArray*)var473)->values[0] = (val*) var460;
7541 ((struct instance_array__NativeArray*)var473)->values[1] = (val*) var462;
7542 ((struct instance_array__NativeArray*)var473)->values[2] = (val*) var_c_name;
7543 ((struct instance_array__NativeArray*)var473)->values[3] = (val*) var467;
7544 ((void (*)(val*, val*, long))(var471->class->vft[COLOR_array__Array__with_native]))(var471, var473, var472) /* with_native on <var471:Array[Object]>*/;
7545 }
7546 var474 = ((val* (*)(val*))(var471->class->vft[COLOR_string__Object__to_s]))(var471) /* to_s on <var471:Array[Object]>*/;
7547 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var474) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7548 if (varonce475) {
7549 var476 = varonce475;
7550 } else {
7551 var477 = "self";
7552 var478 = 4;
7553 var479 = string__NativeString__to_s_with_length(var477, var478);
7554 var476 = var479;
7555 varonce475 = var476;
7556 }
7557 var480 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_named_var]))(var_v, var_mtype, var476) /* new_named_var on <var_v:SeparateCompilerVisitor>*/;
7558 var_res = var480;
7559 var481 = 1;
7560 ((void (*)(val*, short int))(var_res->class->vft[COLOR_abstract_compiler__RuntimeVariable__is_exact_61d]))(var_res, var481) /* is_exact= on <var_res:RuntimeVariable>*/;
7561 var482 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_model__MClassType__arguments]))(var_mtype) /* arguments on <var_mtype:MClassType>*/;
7562 var483 = ((val* (*)(val*))(var482->class->vft[COLOR_abstract_collection__Collection__first]))(var482) /* first on <var482:Array[MType]>*/;
7563 var_mtype_elt = var483;
7564 if (varonce484) {
7565 var485 = varonce484;
7566 } else {
7567 var486 = " = nit_alloc(sizeof(struct instance_";
7568 var487 = 36;
7569 var488 = string__NativeString__to_s_with_length(var486, var487);
7570 var485 = var488;
7571 varonce484 = var485;
7572 }
7573 if (varonce489) {
7574 var490 = varonce489;
7575 } else {
7576 var491 = ") + length*sizeof(";
7577 var492 = 18;
7578 var493 = string__NativeString__to_s_with_length(var491, var492);
7579 var490 = var493;
7580 varonce489 = var490;
7581 }
7582 var494 = ((val* (*)(val*))(var_mtype_elt->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype_elt) /* ctype on <var_mtype_elt:MType>*/;
7583 if (varonce495) {
7584 var496 = varonce495;
7585 } else {
7586 var497 = "));";
7587 var498 = 3;
7588 var499 = string__NativeString__to_s_with_length(var497, var498);
7589 var496 = var499;
7590 varonce495 = var496;
7591 }
7592 var500 = NEW_array__Array(&type_array__Arraykernel__Object);
7593 { /* var500 = array_instance Array[Object] */
7594 var501 = 6;
7595 var502 = NEW_array__NativeArray(var501, &type_array__NativeArraykernel__Object);
7596 ((struct instance_array__NativeArray*)var502)->values[0] = (val*) var_res;
7597 ((struct instance_array__NativeArray*)var502)->values[1] = (val*) var485;
7598 ((struct instance_array__NativeArray*)var502)->values[2] = (val*) var_c_instance_name;
7599 ((struct instance_array__NativeArray*)var502)->values[3] = (val*) var490;
7600 ((struct instance_array__NativeArray*)var502)->values[4] = (val*) var494;
7601 ((struct instance_array__NativeArray*)var502)->values[5] = (val*) var496;
7602 ((void (*)(val*, val*, long))(var500->class->vft[COLOR_array__Array__with_native]))(var500, var502, var501) /* with_native on <var500:Array[Object]>*/;
7603 }
7604 var503 = ((val* (*)(val*))(var500->class->vft[COLOR_string__Object__to_s]))(var500) /* to_s on <var500:Array[Object]>*/;
7605 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var503) /* add on <var_v:SeparateCompilerVisitor>*/;
7606 if (varonce504) {
7607 var505 = varonce504;
7608 } else {
7609 var506 = "->type = type;";
7610 var507 = 14;
7611 var508 = string__NativeString__to_s_with_length(var506, var507);
7612 var505 = var508;
7613 varonce504 = var505;
7614 }
7615 var509 = NEW_array__Array(&type_array__Arraykernel__Object);
7616 { /* var509 = array_instance Array[Object] */
7617 var510 = 2;
7618 var511 = NEW_array__NativeArray(var510, &type_array__NativeArraykernel__Object);
7619 ((struct instance_array__NativeArray*)var511)->values[0] = (val*) var_res;
7620 ((struct instance_array__NativeArray*)var511)->values[1] = (val*) var505;
7621 ((void (*)(val*, val*, long))(var509->class->vft[COLOR_array__Array__with_native]))(var509, var511, var510) /* with_native on <var509:Array[Object]>*/;
7622 }
7623 var512 = ((val* (*)(val*))(var509->class->vft[COLOR_string__Object__to_s]))(var509) /* to_s on <var509:Array[Object]>*/;
7624 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var512) /* add on <var_v:SeparateCompilerVisitor>*/;
7625 if (varonce513) {
7626 var514 = varonce513;
7627 } else {
7628 var515 = "type";
7629 var516 = 4;
7630 var517 = string__NativeString__to_s_with_length(var515, var516);
7631 var514 = var517;
7632 varonce513 = var514;
7633 }
7634 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__hardening_live_type]))(self, var_v, var514) /* hardening_live_type on <self:SeparateCompiler>*/;
7635 if (varonce518) {
7636 var519 = varonce518;
7637 } else {
7638 var520 = "class_";
7639 var521 = 6;
7640 var522 = string__NativeString__to_s_with_length(var520, var521);
7641 var519 = var522;
7642 varonce518 = var519;
7643 }
7644 var523 = NEW_array__Array(&type_array__Arraykernel__Object);
7645 { /* var523 = array_instance Array[Object] */
7646 var524 = 2;
7647 var525 = NEW_array__NativeArray(var524, &type_array__NativeArraykernel__Object);
7648 ((struct instance_array__NativeArray*)var525)->values[0] = (val*) var519;
7649 ((struct instance_array__NativeArray*)var525)->values[1] = (val*) var_c_name;
7650 ((void (*)(val*, val*, long))(var523->class->vft[COLOR_array__Array__with_native]))(var523, var525, var524) /* with_native on <var523:Array[Object]>*/;
7651 }
7652 var526 = ((val* (*)(val*))(var523->class->vft[COLOR_string__Object__to_s]))(var523) /* to_s on <var523:Array[Object]>*/;
7653 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var526) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
7654 if (varonce527) {
7655 var528 = varonce527;
7656 } else {
7657 var529 = "->class = &class_";
7658 var530 = 17;
7659 var531 = string__NativeString__to_s_with_length(var529, var530);
7660 var528 = var531;
7661 varonce527 = var528;
7662 }
7663 if (varonce532) {
7664 var533 = varonce532;
7665 } else {
7666 var534 = ";";
7667 var535 = 1;
7668 var536 = string__NativeString__to_s_with_length(var534, var535);
7669 var533 = var536;
7670 varonce532 = var533;
7671 }
7672 var537 = NEW_array__Array(&type_array__Arraykernel__Object);
7673 { /* var537 = array_instance Array[Object] */
7674 var538 = 4;
7675 var539 = NEW_array__NativeArray(var538, &type_array__NativeArraykernel__Object);
7676 ((struct instance_array__NativeArray*)var539)->values[0] = (val*) var_res;
7677 ((struct instance_array__NativeArray*)var539)->values[1] = (val*) var528;
7678 ((struct instance_array__NativeArray*)var539)->values[2] = (val*) var_c_name;
7679 ((struct instance_array__NativeArray*)var539)->values[3] = (val*) var533;
7680 ((void (*)(val*, val*, long))(var537->class->vft[COLOR_array__Array__with_native]))(var537, var539, var538) /* with_native on <var537:Array[Object]>*/;
7681 }
7682 var540 = ((val* (*)(val*))(var537->class->vft[COLOR_string__Object__to_s]))(var537) /* to_s on <var537:Array[Object]>*/;
7683 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var540) /* add on <var_v:SeparateCompilerVisitor>*/;
7684 if (varonce541) {
7685 var542 = varonce541;
7686 } else {
7687 var543 = "return ";
7688 var544 = 7;
7689 var545 = string__NativeString__to_s_with_length(var543, var544);
7690 var542 = var545;
7691 varonce541 = var542;
7692 }
7693 if (varonce546) {
7694 var547 = varonce546;
7695 } else {
7696 var548 = ";";
7697 var549 = 1;
7698 var550 = string__NativeString__to_s_with_length(var548, var549);
7699 var547 = var550;
7700 varonce546 = var547;
7701 }
7702 var551 = NEW_array__Array(&type_array__Arraykernel__Object);
7703 { /* var551 = array_instance Array[Object] */
7704 var552 = 3;
7705 var553 = NEW_array__NativeArray(var552, &type_array__NativeArraykernel__Object);
7706 ((struct instance_array__NativeArray*)var553)->values[0] = (val*) var542;
7707 ((struct instance_array__NativeArray*)var553)->values[1] = (val*) var_res;
7708 ((struct instance_array__NativeArray*)var553)->values[2] = (val*) var547;
7709 ((void (*)(val*, val*, long))(var551->class->vft[COLOR_array__Array__with_native]))(var551, var553, var552) /* with_native on <var551:Array[Object]>*/;
7710 }
7711 var554 = ((val* (*)(val*))(var551->class->vft[COLOR_string__Object__to_s]))(var551) /* to_s on <var551:Array[Object]>*/;
7712 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var554) /* add on <var_v:SeparateCompilerVisitor>*/;
7713 if (varonce555) {
7714 var556 = varonce555;
7715 } else {
7716 var557 = "}";
7717 var558 = 1;
7718 var559 = string__NativeString__to_s_with_length(var557, var558);
7719 var556 = var559;
7720 varonce555 = var556;
7721 }
7722 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var556) /* add on <var_v:SeparateCompilerVisitor>*/;
7723 goto RET_LABEL;
7724 } else {
7725 }
7726 }
7727 if (varonce560) {
7728 var561 = varonce560;
7729 } else {
7730 var562 = "NEW_";
7731 var563 = 4;
7732 var564 = string__NativeString__to_s_with_length(var562, var563);
7733 var561 = var564;
7734 varonce560 = var561;
7735 }
7736 var565 = NEW_array__Array(&type_array__Arraykernel__Object);
7737 { /* var565 = array_instance Array[Object] */
7738 var566 = 2;
7739 var567 = NEW_array__NativeArray(var566, &type_array__NativeArraykernel__Object);
7740 ((struct instance_array__NativeArray*)var567)->values[0] = (val*) var561;
7741 ((struct instance_array__NativeArray*)var567)->values[1] = (val*) var_c_name;
7742 ((void (*)(val*, val*, long))(var565->class->vft[COLOR_array__Array__with_native]))(var565, var567, var566) /* with_native on <var565:Array[Object]>*/;
7743 }
7744 var568 = ((val* (*)(val*))(var565->class->vft[COLOR_string__Object__to_s]))(var565) /* to_s on <var565:Array[Object]>*/;
7745 var569 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7746 if (varonce570) {
7747 var571 = varonce570;
7748 } else {
7749 var572 = " NEW_";
7750 var573 = 5;
7751 var574 = string__NativeString__to_s_with_length(var572, var573);
7752 var571 = var574;
7753 varonce570 = var571;
7754 }
7755 if (varonce575) {
7756 var576 = varonce575;
7757 } else {
7758 var577 = "(const struct type* type);";
7759 var578 = 26;
7760 var579 = string__NativeString__to_s_with_length(var577, var578);
7761 var576 = var579;
7762 varonce575 = var576;
7763 }
7764 var580 = NEW_array__Array(&type_array__Arraykernel__Object);
7765 { /* var580 = array_instance Array[Object] */
7766 var581 = 4;
7767 var582 = NEW_array__NativeArray(var581, &type_array__NativeArraykernel__Object);
7768 ((struct instance_array__NativeArray*)var582)->values[0] = (val*) var569;
7769 ((struct instance_array__NativeArray*)var582)->values[1] = (val*) var571;
7770 ((struct instance_array__NativeArray*)var582)->values[2] = (val*) var_c_name;
7771 ((struct instance_array__NativeArray*)var582)->values[3] = (val*) var576;
7772 ((void (*)(val*, val*, long))(var580->class->vft[COLOR_array__Array__with_native]))(var580, var582, var581) /* with_native on <var580:Array[Object]>*/;
7773 }
7774 var583 = ((val* (*)(val*))(var580->class->vft[COLOR_string__Object__to_s]))(var580) /* to_s on <var580:Array[Object]>*/;
7775 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__provide_declaration]))(self, var568, var583) /* provide_declaration on <self:SeparateCompiler>*/;
7776 if (varonce584) {
7777 var585 = varonce584;
7778 } else {
7779 var586 = "/* allocate ";
7780 var587 = 12;
7781 var588 = string__NativeString__to_s_with_length(var586, var587);
7782 var585 = var588;
7783 varonce584 = var585;
7784 }
7785 if (varonce589) {
7786 var590 = varonce589;
7787 } else {
7788 var591 = " */";
7789 var592 = 3;
7790 var593 = string__NativeString__to_s_with_length(var591, var592);
7791 var590 = var593;
7792 varonce589 = var590;
7793 }
7794 var594 = NEW_array__Array(&type_array__Arraykernel__Object);
7795 { /* var594 = array_instance Array[Object] */
7796 var595 = 3;
7797 var596 = NEW_array__NativeArray(var595, &type_array__NativeArraykernel__Object);
7798 ((struct instance_array__NativeArray*)var596)->values[0] = (val*) var585;
7799 ((struct instance_array__NativeArray*)var596)->values[1] = (val*) var_mtype;
7800 ((struct instance_array__NativeArray*)var596)->values[2] = (val*) var590;
7801 ((void (*)(val*, val*, long))(var594->class->vft[COLOR_array__Array__with_native]))(var594, var596, var595) /* with_native on <var594:Array[Object]>*/;
7802 }
7803 var597 = ((val* (*)(val*))(var594->class->vft[COLOR_string__Object__to_s]))(var594) /* to_s on <var594:Array[Object]>*/;
7804 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var597) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7805 var598 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MClassType>*/;
7806 if (varonce599) {
7807 var600 = varonce599;
7808 } else {
7809 var601 = " NEW_";
7810 var602 = 5;
7811 var603 = string__NativeString__to_s_with_length(var601, var602);
7812 var600 = var603;
7813 varonce599 = var600;
7814 }
7815 if (varonce604) {
7816 var605 = varonce604;
7817 } else {
7818 var606 = "(const struct type* type) {";
7819 var607 = 27;
7820 var608 = string__NativeString__to_s_with_length(var606, var607);
7821 var605 = var608;
7822 varonce604 = var605;
7823 }
7824 var609 = NEW_array__Array(&type_array__Arraykernel__Object);
7825 { /* var609 = array_instance Array[Object] */
7826 var610 = 4;
7827 var611 = NEW_array__NativeArray(var610, &type_array__NativeArraykernel__Object);
7828 ((struct instance_array__NativeArray*)var611)->values[0] = (val*) var598;
7829 ((struct instance_array__NativeArray*)var611)->values[1] = (val*) var600;
7830 ((struct instance_array__NativeArray*)var611)->values[2] = (val*) var_c_name;
7831 ((struct instance_array__NativeArray*)var611)->values[3] = (val*) var605;
7832 ((void (*)(val*, val*, long))(var609->class->vft[COLOR_array__Array__with_native]))(var609, var611, var610) /* with_native on <var609:Array[Object]>*/;
7833 }
7834 var612 = ((val* (*)(val*))(var609->class->vft[COLOR_string__Object__to_s]))(var609) /* to_s on <var609:Array[Object]>*/;
7835 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl]))(var_v, var612) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
7836 if (var_is_dead){
7837 if (varonce613) {
7838 var614 = varonce613;
7839 } else {
7840 var615 = " is DEAD";
7841 var616 = 8;
7842 var617 = string__NativeString__to_s_with_length(var615, var616);
7843 var614 = var617;
7844 varonce613 = var614;
7845 }
7846 var618 = NEW_array__Array(&type_array__Arraykernel__Object);
7847 { /* var618 = array_instance Array[Object] */
7848 var619 = 2;
7849 var620 = NEW_array__NativeArray(var619, &type_array__NativeArraykernel__Object);
7850 ((struct instance_array__NativeArray*)var620)->values[0] = (val*) var_mclass;
7851 ((struct instance_array__NativeArray*)var620)->values[1] = (val*) var614;
7852 ((void (*)(val*, val*, long))(var618->class->vft[COLOR_array__Array__with_native]))(var618, var620, var619) /* with_native on <var618:Array[Object]>*/;
7853 }
7854 var621 = ((val* (*)(val*))(var618->class->vft[COLOR_string__Object__to_s]))(var618) /* to_s on <var618:Array[Object]>*/;
7855 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(var_v, var621) /* add_abort on <var_v:SeparateCompilerVisitor>*/;
7856 } else {
7857 if (varonce622) {
7858 var623 = varonce622;
7859 } else {
7860 var624 = "self";
7861 var625 = 4;
7862 var626 = string__NativeString__to_s_with_length(var624, var625);
7863 var623 = var626;
7864 varonce622 = var623;
7865 }
7866 var627 = ((val* (*)(val*, val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_named_var]))(var_v, var_mtype, var623) /* new_named_var on <var_v:SeparateCompilerVisitor>*/;
7867 var_res628 = var627;
7868 var629 = 1;
7869 ((void (*)(val*, short int))(var_res628->class->vft[COLOR_abstract_compiler__RuntimeVariable__is_exact_61d]))(var_res628, var629) /* is_exact= on <var_res628:RuntimeVariable>*/;
7870 if (varonce630) {
7871 var631 = varonce630;
7872 } else {
7873 var632 = " = nit_alloc(sizeof(struct instance) + ";
7874 var633 = 39;
7875 var634 = string__NativeString__to_s_with_length(var632, var633);
7876 var631 = var634;
7877 varonce630 = var631;
7878 }
7879 var635 = ((long (*)(val*))(var_attrs->class->vft[COLOR_abstract_collection__Collection__length]))(var_attrs) /* length on <var_attrs:Array[nullable MPropDef]>*/;
7880 if (varonce636) {
7881 var637 = varonce636;
7882 } else {
7883 var638 = "*sizeof(nitattribute_t));";
7884 var639 = 25;
7885 var640 = string__NativeString__to_s_with_length(var638, var639);
7886 var637 = var640;
7887 varonce636 = var637;
7888 }
7889 var641 = NEW_array__Array(&type_array__Arraykernel__Object);
7890 { /* var641 = array_instance Array[Object] */
7891 var642 = 4;
7892 var643 = NEW_array__NativeArray(var642, &type_array__NativeArraykernel__Object);
7893 ((struct instance_array__NativeArray*)var643)->values[0] = (val*) var_res628;
7894 ((struct instance_array__NativeArray*)var643)->values[1] = (val*) var631;
7895 var644 = BOX_kernel__Int(var635); /* autobox from Int to Object */
7896 ((struct instance_array__NativeArray*)var643)->values[2] = (val*) var644;
7897 ((struct instance_array__NativeArray*)var643)->values[3] = (val*) var637;
7898 ((void (*)(val*, val*, long))(var641->class->vft[COLOR_array__Array__with_native]))(var641, var643, var642) /* with_native on <var641:Array[Object]>*/;
7899 }
7900 var645 = ((val* (*)(val*))(var641->class->vft[COLOR_string__Object__to_s]))(var641) /* to_s on <var641:Array[Object]>*/;
7901 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var645) /* add on <var_v:SeparateCompilerVisitor>*/;
7902 if (varonce646) {
7903 var647 = varonce646;
7904 } else {
7905 var648 = "->type = type;";
7906 var649 = 14;
7907 var650 = string__NativeString__to_s_with_length(var648, var649);
7908 var647 = var650;
7909 varonce646 = var647;
7910 }
7911 var651 = NEW_array__Array(&type_array__Arraykernel__Object);
7912 { /* var651 = array_instance Array[Object] */
7913 var652 = 2;
7914 var653 = NEW_array__NativeArray(var652, &type_array__NativeArraykernel__Object);
7915 ((struct instance_array__NativeArray*)var653)->values[0] = (val*) var_res628;
7916 ((struct instance_array__NativeArray*)var653)->values[1] = (val*) var647;
7917 ((void (*)(val*, val*, long))(var651->class->vft[COLOR_array__Array__with_native]))(var651, var653, var652) /* with_native on <var651:Array[Object]>*/;
7918 }
7919 var654 = ((val* (*)(val*))(var651->class->vft[COLOR_string__Object__to_s]))(var651) /* to_s on <var651:Array[Object]>*/;
7920 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var654) /* add on <var_v:SeparateCompilerVisitor>*/;
7921 if (varonce655) {
7922 var656 = varonce655;
7923 } else {
7924 var657 = "type";
7925 var658 = 4;
7926 var659 = string__NativeString__to_s_with_length(var657, var658);
7927 var656 = var659;
7928 varonce655 = var656;
7929 }
7930 ((void (*)(val*, val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__hardening_live_type]))(self, var_v, var656) /* hardening_live_type on <self:SeparateCompiler>*/;
7931 if (varonce660) {
7932 var661 = varonce660;
7933 } else {
7934 var662 = "class_";
7935 var663 = 6;
7936 var664 = string__NativeString__to_s_with_length(var662, var663);
7937 var661 = var664;
7938 varonce660 = var661;
7939 }
7940 var665 = NEW_array__Array(&type_array__Arraykernel__Object);
7941 { /* var665 = array_instance Array[Object] */
7942 var666 = 2;
7943 var667 = NEW_array__NativeArray(var666, &type_array__NativeArraykernel__Object);
7944 ((struct instance_array__NativeArray*)var667)->values[0] = (val*) var661;
7945 ((struct instance_array__NativeArray*)var667)->values[1] = (val*) var_c_name;
7946 ((void (*)(val*, val*, long))(var665->class->vft[COLOR_array__Array__with_native]))(var665, var667, var666) /* with_native on <var665:Array[Object]>*/;
7947 }
7948 var668 = ((val* (*)(val*))(var665->class->vft[COLOR_string__Object__to_s]))(var665) /* to_s on <var665:Array[Object]>*/;
7949 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(var_v, var668) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
7950 if (varonce669) {
7951 var670 = varonce669;
7952 } else {
7953 var671 = "->class = &class_";
7954 var672 = 17;
7955 var673 = string__NativeString__to_s_with_length(var671, var672);
7956 var670 = var673;
7957 varonce669 = var670;
7958 }
7959 if (varonce674) {
7960 var675 = varonce674;
7961 } else {
7962 var676 = ";";
7963 var677 = 1;
7964 var678 = string__NativeString__to_s_with_length(var676, var677);
7965 var675 = var678;
7966 varonce674 = var675;
7967 }
7968 var679 = NEW_array__Array(&type_array__Arraykernel__Object);
7969 { /* var679 = array_instance Array[Object] */
7970 var680 = 4;
7971 var681 = NEW_array__NativeArray(var680, &type_array__NativeArraykernel__Object);
7972 ((struct instance_array__NativeArray*)var681)->values[0] = (val*) var_res628;
7973 ((struct instance_array__NativeArray*)var681)->values[1] = (val*) var670;
7974 ((struct instance_array__NativeArray*)var681)->values[2] = (val*) var_c_name;
7975 ((struct instance_array__NativeArray*)var681)->values[3] = (val*) var675;
7976 ((void (*)(val*, val*, long))(var679->class->vft[COLOR_array__Array__with_native]))(var679, var681, var680) /* with_native on <var679:Array[Object]>*/;
7977 }
7978 var682 = ((val* (*)(val*))(var679->class->vft[COLOR_string__Object__to_s]))(var679) /* to_s on <var679:Array[Object]>*/;
7979 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var682) /* add on <var_v:SeparateCompilerVisitor>*/;
7980 ((void (*)(val*, val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__generate_init_attr]))(self, var_v, var_res628, var_mtype) /* generate_init_attr on <self:SeparateCompiler>*/;
7981 if (varonce683) {
7982 var684 = varonce683;
7983 } else {
7984 var685 = "return ";
7985 var686 = 7;
7986 var687 = string__NativeString__to_s_with_length(var685, var686);
7987 var684 = var687;
7988 varonce683 = var684;
7989 }
7990 if (varonce688) {
7991 var689 = varonce688;
7992 } else {
7993 var690 = ";";
7994 var691 = 1;
7995 var692 = string__NativeString__to_s_with_length(var690, var691);
7996 var689 = var692;
7997 varonce688 = var689;
7998 }
7999 var693 = NEW_array__Array(&type_array__Arraykernel__Object);
8000 { /* var693 = array_instance Array[Object] */
8001 var694 = 3;
8002 var695 = NEW_array__NativeArray(var694, &type_array__NativeArraykernel__Object);
8003 ((struct instance_array__NativeArray*)var695)->values[0] = (val*) var684;
8004 ((struct instance_array__NativeArray*)var695)->values[1] = (val*) var_res628;
8005 ((struct instance_array__NativeArray*)var695)->values[2] = (val*) var689;
8006 ((void (*)(val*, val*, long))(var693->class->vft[COLOR_array__Array__with_native]))(var693, var695, var694) /* with_native on <var693:Array[Object]>*/;
8007 }
8008 var696 = ((val* (*)(val*))(var693->class->vft[COLOR_string__Object__to_s]))(var693) /* to_s on <var693:Array[Object]>*/;
8009 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var696) /* add on <var_v:SeparateCompilerVisitor>*/;
8010 }
8011 if (varonce697) {
8012 var698 = varonce697;
8013 } else {
8014 var699 = "}";
8015 var700 = 1;
8016 var701 = string__NativeString__to_s_with_length(var699, var700);
8017 var698 = var701;
8018 varonce697 = var698;
8019 }
8020 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var698) /* add on <var_v:SeparateCompilerVisitor>*/;
8021 RET_LABEL:;
8022 }
8023 /* method separate_compiler#SeparateCompiler#compile_class_to_c for (self: Object, MClass) */
8024 void VIRTUAL_separate_compiler__SeparateCompiler__compile_class_to_c(val* self, val* p0) {
8025 separate_compiler__SeparateCompiler__compile_class_to_c(self, p0);
8026 RET_LABEL:;
8027 }
8028 /* method separate_compiler#SeparateCompiler#hardening_live_type for (self: SeparateCompiler, SeparateCompilerVisitor, String) */
8029 void separate_compiler__SeparateCompiler__hardening_live_type(val* self, val* p0, val* p1) {
8030 short int var /* : Bool */;
8031 int cltype;
8032 int idtype;
8033 const struct type* type_struct;
8034 const char* var_class_name;
8035 val* var_v /* var v: SeparateCompilerVisitor */;
8036 val* var_t /* var t: String */;
8037 val* var1 /* : AbstractCompiler */;
8038 val* var2 /* : ModelBuilder */;
8039 val* var3 /* : ToolContext */;
8040 val* var4 /* : OptionBool */;
8041 val* var5 /* : nullable Object */;
8042 short int var6 /* : Bool */;
8043 short int var7 /* : Bool */;
8044 static val* varonce;
8045 val* var8 /* : String */;
8046 char* var9 /* : NativeString */;
8047 long var10 /* : Int */;
8048 val* var11 /* : String */;
8049 static val* varonce12;
8050 val* var13 /* : String */;
8051 char* var14 /* : NativeString */;
8052 long var15 /* : Int */;
8053 val* var16 /* : String */;
8054 val* var17 /* : Array[Object] */;
8055 long var18 /* : Int */;
8056 val* var19 /* : NativeArray[Object] */;
8057 val* var20 /* : String */;
8058 static val* varonce21;
8059 val* var22 /* : String */;
8060 char* var23 /* : NativeString */;
8061 long var24 /* : Int */;
8062 val* var25 /* : String */;
8063 static val* varonce26;
8064 val* var27 /* : String */;
8065 char* var28 /* : NativeString */;
8066 long var29 /* : Int */;
8067 val* var30 /* : String */;
8068 static val* varonce31;
8069 val* var32 /* : String */;
8070 char* var33 /* : NativeString */;
8071 long var34 /* : Int */;
8072 val* var35 /* : String */;
8073 static val* varonce36;
8074 val* var37 /* : String */;
8075 char* var38 /* : NativeString */;
8076 long var39 /* : Int */;
8077 val* var40 /* : String */;
8078 val* var41 /* : Array[Object] */;
8079 long var42 /* : Int */;
8080 val* var43 /* : NativeArray[Object] */;
8081 val* var44 /* : String */;
8082 static val* varonce45;
8083 val* var46 /* : String */;
8084 char* var47 /* : NativeString */;
8085 long var48 /* : Int */;
8086 val* var49 /* : String */;
8087 static val* varonce50;
8088 val* var51 /* : String */;
8089 char* var52 /* : NativeString */;
8090 long var53 /* : Int */;
8091 val* var54 /* : String */;
8092 val* var55 /* : Array[Object] */;
8093 long var56 /* : Int */;
8094 val* var57 /* : NativeArray[Object] */;
8095 val* var58 /* : String */;
8096 static val* varonce59;
8097 val* var60 /* : String */;
8098 char* var61 /* : NativeString */;
8099 long var62 /* : Int */;
8100 val* var63 /* : String */;
8101 static val* varonce64;
8102 val* var65 /* : String */;
8103 char* var66 /* : NativeString */;
8104 long var67 /* : Int */;
8105 val* var68 /* : String */;
8106 /* Covariant cast for argument 0 (v) <p0:SeparateCompilerVisitor> isa VISITOR */
8107 /* <p0:SeparateCompilerVisitor> isa VISITOR */
8108 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
8109 cltype = type_struct->color;
8110 idtype = type_struct->id;
8111 if(cltype >= p0->type->table_size) {
8112 var = 0;
8113 } else {
8114 var = p0->type->type_table[cltype] == idtype;
8115 }
8116 if (!var) {
8117 var_class_name = p0 == NULL ? "null" : p0->type->name;
8118 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
8119 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 840);
8120 show_backtrace(1);
8121 }
8122 var_v = p0;
8123 var_t = p1;
8124 var1 = ((val* (*)(val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(var_v) /* compiler on <var_v:SeparateCompilerVisitor>*/;
8125 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(var1) /* modelbuilder on <var1:AbstractCompiler(SeparateCompiler)>*/;
8126 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var2) /* toolcontext on <var2:ModelBuilder>*/;
8127 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_compiler__ToolContext__opt_hardening]))(var3) /* opt_hardening on <var3:ToolContext>*/;
8128 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_opts__Option__value]))(var4) /* value on <var4:OptionBool>*/;
8129 var6 = ((struct instance_kernel__Bool*)var5)->value; /* autounbox from nullable Object to Bool */;
8130 var7 = !var6;
8131 if (var7){
8132 goto RET_LABEL;
8133 } else {
8134 }
8135 if (varonce) {
8136 var8 = varonce;
8137 } else {
8138 var9 = "if(";
8139 var10 = 3;
8140 var11 = string__NativeString__to_s_with_length(var9, var10);
8141 var8 = var11;
8142 varonce = var8;
8143 }
8144 if (varonce12) {
8145 var13 = varonce12;
8146 } else {
8147 var14 = " == NULL) {";
8148 var15 = 11;
8149 var16 = string__NativeString__to_s_with_length(var14, var15);
8150 var13 = var16;
8151 varonce12 = var13;
8152 }
8153 var17 = NEW_array__Array(&type_array__Arraykernel__Object);
8154 { /* var17 = array_instance Array[Object] */
8155 var18 = 3;
8156 var19 = NEW_array__NativeArray(var18, &type_array__NativeArraykernel__Object);
8157 ((struct instance_array__NativeArray*)var19)->values[0] = (val*) var8;
8158 ((struct instance_array__NativeArray*)var19)->values[1] = (val*) var_t;
8159 ((struct instance_array__NativeArray*)var19)->values[2] = (val*) var13;
8160 ((void (*)(val*, val*, long))(var17->class->vft[COLOR_array__Array__with_native]))(var17, var19, var18) /* with_native on <var17:Array[Object]>*/;
8161 }
8162 var20 = ((val* (*)(val*))(var17->class->vft[COLOR_string__Object__to_s]))(var17) /* to_s on <var17:Array[Object]>*/;
8163 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var20) /* add on <var_v:SeparateCompilerVisitor>*/;
8164 if (varonce21) {
8165 var22 = varonce21;
8166 } else {
8167 var23 = "type null";
8168 var24 = 9;
8169 var25 = string__NativeString__to_s_with_length(var23, var24);
8170 var22 = var25;
8171 varonce21 = var22;
8172 }
8173 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(var_v, var22) /* add_abort on <var_v:SeparateCompilerVisitor>*/;
8174 if (varonce26) {
8175 var27 = varonce26;
8176 } else {
8177 var28 = "}";
8178 var29 = 1;
8179 var30 = string__NativeString__to_s_with_length(var28, var29);
8180 var27 = var30;
8181 varonce26 = var27;
8182 }
8183 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var27) /* add on <var_v:SeparateCompilerVisitor>*/;
8184 if (varonce31) {
8185 var32 = varonce31;
8186 } else {
8187 var33 = "if(";
8188 var34 = 3;
8189 var35 = string__NativeString__to_s_with_length(var33, var34);
8190 var32 = var35;
8191 varonce31 = var32;
8192 }
8193 if (varonce36) {
8194 var37 = varonce36;
8195 } else {
8196 var38 = "->table_size == 0) {";
8197 var39 = 20;
8198 var40 = string__NativeString__to_s_with_length(var38, var39);
8199 var37 = var40;
8200 varonce36 = var37;
8201 }
8202 var41 = NEW_array__Array(&type_array__Arraykernel__Object);
8203 { /* var41 = array_instance Array[Object] */
8204 var42 = 3;
8205 var43 = NEW_array__NativeArray(var42, &type_array__NativeArraykernel__Object);
8206 ((struct instance_array__NativeArray*)var43)->values[0] = (val*) var32;
8207 ((struct instance_array__NativeArray*)var43)->values[1] = (val*) var_t;
8208 ((struct instance_array__NativeArray*)var43)->values[2] = (val*) var37;
8209 ((void (*)(val*, val*, long))(var41->class->vft[COLOR_array__Array__with_native]))(var41, var43, var42) /* with_native on <var41:Array[Object]>*/;
8210 }
8211 var44 = ((val* (*)(val*))(var41->class->vft[COLOR_string__Object__to_s]))(var41) /* to_s on <var41:Array[Object]>*/;
8212 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var44) /* add on <var_v:SeparateCompilerVisitor>*/;
8213 if (varonce45) {
8214 var46 = varonce45;
8215 } else {
8216 var47 = "fprintf(stderr, \"Insantiation of a dead type: %s\\n\", ";
8217 var48 = 53;
8218 var49 = string__NativeString__to_s_with_length(var47, var48);
8219 var46 = var49;
8220 varonce45 = var46;
8221 }
8222 if (varonce50) {
8223 var51 = varonce50;
8224 } else {
8225 var52 = "->name);";
8226 var53 = 8;
8227 var54 = string__NativeString__to_s_with_length(var52, var53);
8228 var51 = var54;
8229 varonce50 = var51;
8230 }
8231 var55 = NEW_array__Array(&type_array__Arraykernel__Object);
8232 { /* var55 = array_instance Array[Object] */
8233 var56 = 3;
8234 var57 = NEW_array__NativeArray(var56, &type_array__NativeArraykernel__Object);
8235 ((struct instance_array__NativeArray*)var57)->values[0] = (val*) var46;
8236 ((struct instance_array__NativeArray*)var57)->values[1] = (val*) var_t;
8237 ((struct instance_array__NativeArray*)var57)->values[2] = (val*) var51;
8238 ((void (*)(val*, val*, long))(var55->class->vft[COLOR_array__Array__with_native]))(var55, var57, var56) /* with_native on <var55:Array[Object]>*/;
8239 }
8240 var58 = ((val* (*)(val*))(var55->class->vft[COLOR_string__Object__to_s]))(var55) /* to_s on <var55:Array[Object]>*/;
8241 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var58) /* add on <var_v:SeparateCompilerVisitor>*/;
8242 if (varonce59) {
8243 var60 = varonce59;
8244 } else {
8245 var61 = "type dead";
8246 var62 = 9;
8247 var63 = string__NativeString__to_s_with_length(var61, var62);
8248 var60 = var63;
8249 varonce59 = var60;
8250 }
8251 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort]))(var_v, var60) /* add_abort on <var_v:SeparateCompilerVisitor>*/;
8252 if (varonce64) {
8253 var65 = varonce64;
8254 } else {
8255 var66 = "}";
8256 var67 = 1;
8257 var68 = string__NativeString__to_s_with_length(var66, var67);
8258 var65 = var68;
8259 varonce64 = var65;
8260 }
8261 ((void (*)(val*, val*))(var_v->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(var_v, var65) /* add on <var_v:SeparateCompilerVisitor>*/;
8262 RET_LABEL:;
8263 }
8264 /* method separate_compiler#SeparateCompiler#hardening_live_type for (self: Object, SeparateCompilerVisitor, String) */
8265 void VIRTUAL_separate_compiler__SeparateCompiler__hardening_live_type(val* self, val* p0, val* p1) {
8266 separate_compiler__SeparateCompiler__hardening_live_type(self, p0, p1);
8267 RET_LABEL:;
8268 }
8269 /* method separate_compiler#SeparateCompiler#new_visitor for (self: SeparateCompiler): SeparateCompilerVisitor */
8270 val* separate_compiler__SeparateCompiler__new_visitor(val* self) {
8271 val* var /* : SeparateCompilerVisitor */;
8272 val* var1 /* : SeparateCompilerVisitor */;
8273 short int var2 /* : Bool */;
8274 int cltype;
8275 int idtype;
8276 const struct type* type_struct;
8277 const char* var_class_name;
8278 var1 = NEW_separate_compiler__SeparateCompilerVisitor(&type_separate_compiler__SeparateCompilerVisitor);
8279 ((void (*)(val*, val*))(var1->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__init]))(var1, self) /* init on <var1:SeparateCompilerVisitor>*/;
8280 /* <var1:SeparateCompilerVisitor> isa VISITOR */
8281 type_struct = self->type->resolution_table->types[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR];
8282 cltype = type_struct->color;
8283 idtype = type_struct->id;
8284 if(cltype >= var1->type->table_size) {
8285 var2 = 0;
8286 } else {
8287 var2 = var1->type->type_table[cltype] == idtype;
8288 }
8289 if (!var2) {
8290 var_class_name = var1 == NULL ? "null" : var1->type->name;
8291 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name);
8292 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 853);
8293 show_backtrace(1);
8294 }
8295 var = var1;
8296 goto RET_LABEL;
8297 RET_LABEL:;
8298 return var;
8299 }
8300 /* method separate_compiler#SeparateCompiler#new_visitor for (self: Object): AbstractCompilerVisitor */
8301 val* VIRTUAL_separate_compiler__SeparateCompiler__new_visitor(val* self) {
8302 val* var /* : AbstractCompilerVisitor */;
8303 val* var1 /* : SeparateCompilerVisitor */;
8304 var1 = separate_compiler__SeparateCompiler__new_visitor(self);
8305 var = var1;
8306 RET_LABEL:;
8307 return var;
8308 }
8309 /* method separate_compiler#SeparateCompiler#type_tables for (self: SeparateCompiler): Map[MType, Array[nullable MType]] */
8310 val* separate_compiler__SeparateCompiler__type_tables(val* self) {
8311 val* var /* : Map[MType, Array[nullable MType]] */;
8312 val* var1 /* : Map[MType, Array[nullable MType]] */;
8313 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dtype_tables].val; /* @type_tables on <self:SeparateCompiler> */
8314 if (var1 == NULL) {
8315 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @type_tables");
8316 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 857);
8317 show_backtrace(1);
8318 }
8319 var = var1;
8320 RET_LABEL:;
8321 return var;
8322 }
8323 /* method separate_compiler#SeparateCompiler#type_tables for (self: Object): Map[MType, Array[nullable MType]] */
8324 val* VIRTUAL_separate_compiler__SeparateCompiler__type_tables(val* self) {
8325 val* var /* : Map[MType, Array[nullable MType]] */;
8326 val* var1 /* : Map[MType, Array[nullable MType]] */;
8327 var1 = separate_compiler__SeparateCompiler__type_tables(self);
8328 var = var1;
8329 RET_LABEL:;
8330 return var;
8331 }
8332 /* method separate_compiler#SeparateCompiler#type_tables= for (self: SeparateCompiler, Map[MType, Array[nullable MType]]) */
8333 void separate_compiler__SeparateCompiler__type_tables_61d(val* self, val* p0) {
8334 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dtype_tables].val = p0; /* @type_tables on <self:SeparateCompiler> */
8335 RET_LABEL:;
8336 }
8337 /* method separate_compiler#SeparateCompiler#type_tables= for (self: Object, Map[MType, Array[nullable MType]]) */
8338 void VIRTUAL_separate_compiler__SeparateCompiler__type_tables_61d(val* self, val* p0) {
8339 separate_compiler__SeparateCompiler__type_tables_61d(self, p0);
8340 RET_LABEL:;
8341 }
8342 /* method separate_compiler#SeparateCompiler#resolution_tables for (self: SeparateCompiler): Map[MClassType, Array[nullable MType]] */
8343 val* separate_compiler__SeparateCompiler__resolution_tables(val* self) {
8344 val* var /* : Map[MClassType, Array[nullable MType]] */;
8345 val* var1 /* : Map[MClassType, Array[nullable MType]] */;
8346 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dresolution_tables].val; /* @resolution_tables on <self:SeparateCompiler> */
8347 if (var1 == NULL) {
8348 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @resolution_tables");
8349 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 858);
8350 show_backtrace(1);
8351 }
8352 var = var1;
8353 RET_LABEL:;
8354 return var;
8355 }
8356 /* method separate_compiler#SeparateCompiler#resolution_tables for (self: Object): Map[MClassType, Array[nullable MType]] */
8357 val* VIRTUAL_separate_compiler__SeparateCompiler__resolution_tables(val* self) {
8358 val* var /* : Map[MClassType, Array[nullable MType]] */;
8359 val* var1 /* : Map[MClassType, Array[nullable MType]] */;
8360 var1 = separate_compiler__SeparateCompiler__resolution_tables(self);
8361 var = var1;
8362 RET_LABEL:;
8363 return var;
8364 }
8365 /* method separate_compiler#SeparateCompiler#resolution_tables= for (self: SeparateCompiler, Map[MClassType, Array[nullable MType]]) */
8366 void separate_compiler__SeparateCompiler__resolution_tables_61d(val* self, val* p0) {
8367 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dresolution_tables].val = p0; /* @resolution_tables on <self:SeparateCompiler> */
8368 RET_LABEL:;
8369 }
8370 /* method separate_compiler#SeparateCompiler#resolution_tables= for (self: Object, Map[MClassType, Array[nullable MType]]) */
8371 void VIRTUAL_separate_compiler__SeparateCompiler__resolution_tables_61d(val* self, val* p0) {
8372 separate_compiler__SeparateCompiler__resolution_tables_61d(self, p0);
8373 RET_LABEL:;
8374 }
8375 /* method separate_compiler#SeparateCompiler#method_tables for (self: SeparateCompiler): Map[MClass, Array[nullable MPropDef]] */
8376 val* separate_compiler__SeparateCompiler__method_tables(val* self) {
8377 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
8378 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
8379 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dmethod_tables].val; /* @method_tables on <self:SeparateCompiler> */
8380 if (var1 == NULL) {
8381 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @method_tables");
8382 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 859);
8383 show_backtrace(1);
8384 }
8385 var = var1;
8386 RET_LABEL:;
8387 return var;
8388 }
8389 /* method separate_compiler#SeparateCompiler#method_tables for (self: Object): Map[MClass, Array[nullable MPropDef]] */
8390 val* VIRTUAL_separate_compiler__SeparateCompiler__method_tables(val* self) {
8391 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
8392 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
8393 var1 = separate_compiler__SeparateCompiler__method_tables(self);
8394 var = var1;
8395 RET_LABEL:;
8396 return var;
8397 }
8398 /* method separate_compiler#SeparateCompiler#method_tables= for (self: SeparateCompiler, Map[MClass, Array[nullable MPropDef]]) */
8399 void separate_compiler__SeparateCompiler__method_tables_61d(val* self, val* p0) {
8400 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dmethod_tables].val = p0; /* @method_tables on <self:SeparateCompiler> */
8401 RET_LABEL:;
8402 }
8403 /* method separate_compiler#SeparateCompiler#method_tables= for (self: Object, Map[MClass, Array[nullable MPropDef]]) */
8404 void VIRTUAL_separate_compiler__SeparateCompiler__method_tables_61d(val* self, val* p0) {
8405 separate_compiler__SeparateCompiler__method_tables_61d(self, p0);
8406 RET_LABEL:;
8407 }
8408 /* method separate_compiler#SeparateCompiler#attr_tables for (self: SeparateCompiler): Map[MClass, Array[nullable MPropDef]] */
8409 val* separate_compiler__SeparateCompiler__attr_tables(val* self) {
8410 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
8411 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
8412 var1 = self->attrs[COLOR_separate_compiler__SeparateCompiler___64dattr_tables].val; /* @attr_tables on <self:SeparateCompiler> */
8413 if (var1 == NULL) {
8414 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @attr_tables");
8415 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 860);
8416 show_backtrace(1);
8417 }
8418 var = var1;
8419 RET_LABEL:;
8420 return var;
8421 }
8422 /* method separate_compiler#SeparateCompiler#attr_tables for (self: Object): Map[MClass, Array[nullable MPropDef]] */
8423 val* VIRTUAL_separate_compiler__SeparateCompiler__attr_tables(val* self) {
8424 val* var /* : Map[MClass, Array[nullable MPropDef]] */;
8425 val* var1 /* : Map[MClass, Array[nullable MPropDef]] */;
8426 var1 = separate_compiler__SeparateCompiler__attr_tables(self);
8427 var = var1;
8428 RET_LABEL:;
8429 return var;
8430 }
8431 /* method separate_compiler#SeparateCompiler#attr_tables= for (self: SeparateCompiler, Map[MClass, Array[nullable MPropDef]]) */
8432 void separate_compiler__SeparateCompiler__attr_tables_61d(val* self, val* p0) {
8433 self->attrs[COLOR_separate_compiler__SeparateCompiler___64dattr_tables].val = p0; /* @attr_tables on <self:SeparateCompiler> */
8434 RET_LABEL:;
8435 }
8436 /* method separate_compiler#SeparateCompiler#attr_tables= for (self: Object, Map[MClass, Array[nullable MPropDef]]) */
8437 void VIRTUAL_separate_compiler__SeparateCompiler__attr_tables_61d(val* self, val* p0) {
8438 separate_compiler__SeparateCompiler__attr_tables_61d(self, p0);
8439 RET_LABEL:;
8440 }
8441 /* method separate_compiler#SeparateCompiler#display_stats for (self: SeparateCompiler) */
8442 void separate_compiler__SeparateCompiler__display_stats(val* self) {
8443 val* var /* : ModelBuilder */;
8444 val* var1 /* : ToolContext */;
8445 val* var2 /* : OptionBool */;
8446 val* var3 /* : nullable Object */;
8447 short int var4 /* : Bool */;
8448 ((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__display_stats]))(self) /* display_stats on <self:SeparateCompiler>*/;
8449 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__modelbuilder]))(self) /* modelbuilder on <self:SeparateCompiler>*/;
8450 var1 = ((val* (*)(val*))(var->class->vft[COLOR_modelbuilder__ModelBuilder__toolcontext]))(var) /* toolcontext on <var:ModelBuilder>*/;
8451 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_separate_compiler__ToolContext__opt_tables_metrics]))(var1) /* opt_tables_metrics on <var1:ToolContext>*/;
8452 var3 = ((val* (*)(val*))(var2->class->vft[COLOR_opts__Option__value]))(var2) /* value on <var2:OptionBool>*/;
8453 var4 = ((struct instance_kernel__Bool*)var3)->value; /* autounbox from nullable Object to Bool */;
8454 if (var4){
8455 ((void (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__display_sizes]))(self) /* display_sizes on <self:SeparateCompiler>*/;
8456 } else {
8457 }
8458 RET_LABEL:;
8459 }
8460 /* method separate_compiler#SeparateCompiler#display_stats for (self: Object) */
8461 void VIRTUAL_separate_compiler__SeparateCompiler__display_stats(val* self) {
8462 separate_compiler__SeparateCompiler__display_stats(self);
8463 RET_LABEL:;
8464 }
8465 /* method separate_compiler#SeparateCompiler#display_sizes for (self: SeparateCompiler) */
8466 void separate_compiler__SeparateCompiler__display_sizes(val* self) {
8467 static val* varonce;
8468 val* var /* : String */;
8469 char* var1 /* : NativeString */;
8470 long var2 /* : Int */;
8471 val* var3 /* : String */;
8472 static val* varonce4;
8473 val* var5 /* : String */;
8474 char* var6 /* : NativeString */;
8475 long var7 /* : Int */;
8476 val* var8 /* : String */;
8477 long var9 /* : Int */;
8478 long var_total /* var total: Int */;
8479 long var10 /* : Int */;
8480 long var_holes /* var holes: Int */;
8481 val* var11 /* : Map[MType, Array[nullable MType]] */;
8482 val* var12 /* : MapIterator[Object, nullable Object] */;
8483 short int var13 /* : Bool */;
8484 val* var14 /* : Object */;
8485 val* var_t /* var t: MType */;
8486 val* var15 /* : nullable Object */;
8487 val* var_table /* var table: Array[nullable MType] */;
8488 long var16 /* : Int */;
8489 long var17 /* : Int */;
8490 long var19 /* : Int */;
8491 val* var20 /* : Iterator[nullable Object] */;
8492 short int var21 /* : Bool */;
8493 val* var22 /* : nullable Object */;
8494 val* var_e /* var e: nullable MType */;
8495 val* var23 /* : null */;
8496 short int var24 /* : Bool */;
8497 long var25 /* : Int */;
8498 long var26 /* : Int */;
8499 long var28 /* : Int */;
8500 static val* varonce30;
8501 val* var31 /* : String */;
8502 char* var32 /* : NativeString */;
8503 long var33 /* : Int */;
8504 val* var34 /* : String */;
8505 static val* varonce35;
8506 val* var36 /* : String */;
8507 char* var37 /* : NativeString */;
8508 long var38 /* : Int */;
8509 val* var39 /* : String */;
8510 val* var40 /* : Array[Object] */;
8511 long var41 /* : Int */;
8512 val* var42 /* : NativeArray[Object] */;
8513 val* var43 /* : Object */;
8514 val* var44 /* : Object */;
8515 val* var45 /* : String */;
8516 static val* varonce46;
8517 val* var47 /* : String */;
8518 char* var48 /* : NativeString */;
8519 long var49 /* : Int */;
8520 val* var50 /* : String */;
8521 static val* varonce51;
8522 val* var52 /* : String */;
8523 char* var53 /* : NativeString */;
8524 long var54 /* : Int */;
8525 val* var55 /* : String */;
8526 long var56 /* : Int */;
8527 long var57 /* : Int */;
8528 val* var58 /* : Map[MClassType, Array[nullable MType]] */;
8529 val* var59 /* : MapIterator[Object, nullable Object] */;
8530 short int var60 /* : Bool */;
8531 val* var61 /* : Object */;
8532 val* var_t62 /* var t: MClassType */;
8533 val* var63 /* : nullable Object */;
8534 val* var_table64 /* var table: Array[nullable MType] */;
8535 long var65 /* : Int */;
8536 long var66 /* : Int */;
8537 long var68 /* : Int */;
8538 val* var69 /* : Iterator[nullable Object] */;
8539 short int var70 /* : Bool */;
8540 val* var71 /* : nullable Object */;
8541 val* var_e72 /* var e: nullable MType */;
8542 val* var73 /* : null */;
8543 short int var74 /* : Bool */;
8544 long var75 /* : Int */;
8545 long var76 /* : Int */;
8546 long var78 /* : Int */;
8547 static val* varonce81;
8548 val* var82 /* : String */;
8549 char* var83 /* : NativeString */;
8550 long var84 /* : Int */;
8551 val* var85 /* : String */;
8552 static val* varonce86;
8553 val* var87 /* : String */;
8554 char* var88 /* : NativeString */;
8555 long var89 /* : Int */;
8556 val* var90 /* : String */;
8557 val* var91 /* : Array[Object] */;
8558 long var92 /* : Int */;
8559 val* var93 /* : NativeArray[Object] */;
8560 val* var94 /* : Object */;
8561 val* var95 /* : Object */;
8562 val* var96 /* : String */;
8563 static val* varonce97;
8564 val* var98 /* : String */;
8565 char* var99 /* : NativeString */;
8566 long var100 /* : Int */;
8567 val* var101 /* : String */;
8568 static val* varonce102;
8569 val* var103 /* : String */;
8570 char* var104 /* : NativeString */;
8571 long var105 /* : Int */;
8572 val* var106 /* : String */;
8573 long var107 /* : Int */;
8574 long var108 /* : Int */;
8575 val* var109 /* : Map[MClass, Array[nullable MPropDef]] */;
8576 val* var110 /* : MapIterator[Object, nullable Object] */;
8577 short int var111 /* : Bool */;
8578 val* var112 /* : Object */;
8579 val* var_t113 /* var t: MClass */;
8580 val* var114 /* : nullable Object */;
8581 val* var_table115 /* var table: Array[nullable MPropDef] */;
8582 long var116 /* : Int */;
8583 long var117 /* : Int */;
8584 long var119 /* : Int */;
8585 val* var120 /* : Iterator[nullable Object] */;
8586 short int var121 /* : Bool */;
8587 val* var122 /* : nullable Object */;
8588 val* var_e123 /* var e: nullable MPropDef */;
8589 val* var124 /* : null */;
8590 short int var125 /* : Bool */;
8591 long var126 /* : Int */;
8592 long var127 /* : Int */;
8593 long var129 /* : Int */;
8594 static val* varonce132;
8595 val* var133 /* : String */;
8596 char* var134 /* : NativeString */;
8597 long var135 /* : Int */;
8598 val* var136 /* : String */;
8599 static val* varonce137;
8600 val* var138 /* : String */;
8601 char* var139 /* : NativeString */;
8602 long var140 /* : Int */;
8603 val* var141 /* : String */;
8604 val* var142 /* : Array[Object] */;
8605 long var143 /* : Int */;
8606 val* var144 /* : NativeArray[Object] */;
8607 val* var145 /* : Object */;
8608 val* var146 /* : Object */;
8609 val* var147 /* : String */;
8610 static val* varonce148;
8611 val* var149 /* : String */;
8612 char* var150 /* : NativeString */;
8613 long var151 /* : Int */;
8614 val* var152 /* : String */;
8615 static val* varonce153;
8616 val* var154 /* : String */;
8617 char* var155 /* : NativeString */;
8618 long var156 /* : Int */;
8619 val* var157 /* : String */;
8620 long var158 /* : Int */;
8621 long var159 /* : Int */;
8622 val* var160 /* : Map[MClass, Array[nullable MPropDef]] */;
8623 val* var161 /* : MapIterator[Object, nullable Object] */;
8624 short int var162 /* : Bool */;
8625 val* var163 /* : Object */;
8626 val* var_t164 /* var t: MClass */;
8627 val* var165 /* : nullable Object */;
8628 val* var_table166 /* var table: Array[nullable MPropDef] */;
8629 long var167 /* : Int */;
8630 long var168 /* : Int */;
8631 long var170 /* : Int */;
8632 val* var171 /* : Iterator[nullable Object] */;
8633 short int var172 /* : Bool */;
8634 val* var173 /* : nullable Object */;
8635 val* var_e174 /* var e: nullable MPropDef */;
8636 val* var175 /* : null */;
8637 short int var176 /* : Bool */;
8638 long var177 /* : Int */;
8639 long var178 /* : Int */;
8640 long var180 /* : Int */;
8641 static val* varonce183;
8642 val* var184 /* : String */;
8643 char* var185 /* : NativeString */;
8644 long var186 /* : Int */;
8645 val* var187 /* : String */;
8646 static val* varonce188;
8647 val* var189 /* : String */;
8648 char* var190 /* : NativeString */;
8649 long var191 /* : Int */;
8650 val* var192 /* : String */;
8651 val* var193 /* : Array[Object] */;
8652 long var194 /* : Int */;
8653 val* var195 /* : NativeArray[Object] */;
8654 val* var196 /* : Object */;
8655 val* var197 /* : Object */;
8656 val* var198 /* : String */;
8657 if (varonce) {
8658 var = varonce;
8659 } else {
8660 var1 = "# size of subtyping tables";
8661 var2 = 26;
8662 var3 = string__NativeString__to_s_with_length(var1, var2);
8663 var = var3;
8664 varonce = var;
8665 }
8666 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var) /* print on <self:SeparateCompiler>*/;
8667 if (varonce4) {
8668 var5 = varonce4;
8669 } else {
8670 var6 = "\11total \11holes";
8671 var7 = 13;
8672 var8 = string__NativeString__to_s_with_length(var6, var7);
8673 var5 = var8;
8674 varonce4 = var5;
8675 }
8676 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var5) /* print on <self:SeparateCompiler>*/;
8677 var9 = 0;
8678 var_total = var9;
8679 var10 = 0;
8680 var_holes = var10;
8681 var11 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__type_tables]))(self) /* type_tables on <self:SeparateCompiler>*/;
8682 var12 = ((val* (*)(val*))(var11->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var11) /* iterator on <var11:Map[MType, Array[nullable MType]]>*/;
8683 for(;;) {
8684 var13 = ((short int (*)(val*))(var12->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var12) /* is_ok on <var12:MapIterator[Object, nullable Object]>*/;
8685 if(!var13) break;
8686 var14 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__MapIterator__key]))(var12) /* key on <var12:MapIterator[Object, nullable Object]>*/;
8687 var_t = var14;
8688 var15 = ((val* (*)(val*))(var12->class->vft[COLOR_abstract_collection__MapIterator__item]))(var12) /* item on <var12:MapIterator[Object, nullable Object]>*/;
8689 var_table = var15;
8690 var16 = ((long (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__length]))(var_table) /* length on <var_table:Array[nullable MType]>*/;
8691 { /* Inline kernel#Int#+ (var_total,var16) */
8692 var19 = var_total + var16;
8693 var17 = var19;
8694 goto RET_LABEL18;
8695 RET_LABEL18:(void)0;
8696 }
8697 var_total = var17;
8698 var20 = ((val* (*)(val*))(var_table->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_table) /* iterator on <var_table:Array[nullable MType]>*/;
8699 for(;;) {
8700 var21 = ((short int (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var20) /* is_ok on <var20:Iterator[nullable Object]>*/;
8701 if(!var21) break;
8702 var22 = ((val* (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__item]))(var20) /* item on <var20:Iterator[nullable Object]>*/;
8703 var_e = var22;
8704 var23 = NULL;
8705 if (var_e == NULL) {
8706 var24 = 1; /* is null */
8707 } else {
8708 var24 = 0; /* arg is null but recv is not */
8709 }
8710 if (var24){
8711 var25 = 1;
8712 { /* Inline kernel#Int#+ (var_holes,var25) */
8713 var28 = var_holes + var25;
8714 var26 = var28;
8715 goto RET_LABEL27;
8716 RET_LABEL27:(void)0;
8717 }
8718 var_holes = var26;
8719 } else {
8720 }
8721 CONTINUE_label: (void)0;
8722 ((void (*)(val*))(var20->class->vft[COLOR_abstract_collection__Iterator__next]))(var20) /* next on <var20:Iterator[nullable Object]>*/;
8723 }
8724 BREAK_label: (void)0;
8725 CONTINUE_label29: (void)0;
8726 ((void (*)(val*))(var12->class->vft[COLOR_abstract_collection__MapIterator__next]))(var12) /* next on <var12:MapIterator[Object, nullable Object]>*/;
8727 }
8728 BREAK_label29: (void)0;
8729 if (varonce30) {
8730 var31 = varonce30;
8731 } else {
8732 var32 = "\11";
8733 var33 = 1;
8734 var34 = string__NativeString__to_s_with_length(var32, var33);
8735 var31 = var34;
8736 varonce30 = var31;
8737 }
8738 if (varonce35) {
8739 var36 = varonce35;
8740 } else {
8741 var37 = "\11";
8742 var38 = 1;
8743 var39 = string__NativeString__to_s_with_length(var37, var38);
8744 var36 = var39;
8745 varonce35 = var36;
8746 }
8747 var40 = NEW_array__Array(&type_array__Arraykernel__Object);
8748 { /* var40 = array_instance Array[Object] */
8749 var41 = 4;
8750 var42 = NEW_array__NativeArray(var41, &type_array__NativeArraykernel__Object);
8751 ((struct instance_array__NativeArray*)var42)->values[0] = (val*) var31;
8752 var43 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
8753 ((struct instance_array__NativeArray*)var42)->values[1] = (val*) var43;
8754 ((struct instance_array__NativeArray*)var42)->values[2] = (val*) var36;
8755 var44 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
8756 ((struct instance_array__NativeArray*)var42)->values[3] = (val*) var44;
8757 ((void (*)(val*, val*, long))(var40->class->vft[COLOR_array__Array__with_native]))(var40, var42, var41) /* with_native on <var40:Array[Object]>*/;
8758 }
8759 var45 = ((val* (*)(val*))(var40->class->vft[COLOR_string__Object__to_s]))(var40) /* to_s on <var40:Array[Object]>*/;
8760 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var45) /* print on <self:SeparateCompiler>*/;
8761 if (varonce46) {
8762 var47 = varonce46;
8763 } else {
8764 var48 = "# size of resolution tables";
8765 var49 = 27;
8766 var50 = string__NativeString__to_s_with_length(var48, var49);
8767 var47 = var50;
8768 varonce46 = var47;
8769 }
8770 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var47) /* print on <self:SeparateCompiler>*/;
8771 if (varonce51) {
8772 var52 = varonce51;
8773 } else {
8774 var53 = "\11total \11holes";
8775 var54 = 13;
8776 var55 = string__NativeString__to_s_with_length(var53, var54);
8777 var52 = var55;
8778 varonce51 = var52;
8779 }
8780 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var52) /* print on <self:SeparateCompiler>*/;
8781 var56 = 0;
8782 var_total = var56;
8783 var57 = 0;
8784 var_holes = var57;
8785 var58 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__resolution_tables]))(self) /* resolution_tables on <self:SeparateCompiler>*/;
8786 var59 = ((val* (*)(val*))(var58->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var58) /* iterator on <var58:Map[MClassType, Array[nullable MType]]>*/;
8787 for(;;) {
8788 var60 = ((short int (*)(val*))(var59->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var59) /* is_ok on <var59:MapIterator[Object, nullable Object]>*/;
8789 if(!var60) break;
8790 var61 = ((val* (*)(val*))(var59->class->vft[COLOR_abstract_collection__MapIterator__key]))(var59) /* key on <var59:MapIterator[Object, nullable Object]>*/;
8791 var_t62 = var61;
8792 var63 = ((val* (*)(val*))(var59->class->vft[COLOR_abstract_collection__MapIterator__item]))(var59) /* item on <var59:MapIterator[Object, nullable Object]>*/;
8793 var_table64 = var63;
8794 var65 = ((long (*)(val*))(var_table64->class->vft[COLOR_abstract_collection__Collection__length]))(var_table64) /* length on <var_table64:Array[nullable MType]>*/;
8795 { /* Inline kernel#Int#+ (var_total,var65) */
8796 var68 = var_total + var65;
8797 var66 = var68;
8798 goto RET_LABEL67;
8799 RET_LABEL67:(void)0;
8800 }
8801 var_total = var66;
8802 var69 = ((val* (*)(val*))(var_table64->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_table64) /* iterator on <var_table64:Array[nullable MType]>*/;
8803 for(;;) {
8804 var70 = ((short int (*)(val*))(var69->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var69) /* is_ok on <var69:Iterator[nullable Object]>*/;
8805 if(!var70) break;
8806 var71 = ((val* (*)(val*))(var69->class->vft[COLOR_abstract_collection__Iterator__item]))(var69) /* item on <var69:Iterator[nullable Object]>*/;
8807 var_e72 = var71;
8808 var73 = NULL;
8809 if (var_e72 == NULL) {
8810 var74 = 1; /* is null */
8811 } else {
8812 var74 = 0; /* arg is null but recv is not */
8813 }
8814 if (var74){
8815 var75 = 1;
8816 { /* Inline kernel#Int#+ (var_holes,var75) */
8817 var78 = var_holes + var75;
8818 var76 = var78;
8819 goto RET_LABEL77;
8820 RET_LABEL77:(void)0;
8821 }
8822 var_holes = var76;
8823 } else {
8824 }
8825 CONTINUE_label79: (void)0;
8826 ((void (*)(val*))(var69->class->vft[COLOR_abstract_collection__Iterator__next]))(var69) /* next on <var69:Iterator[nullable Object]>*/;
8827 }
8828 BREAK_label79: (void)0;
8829 CONTINUE_label80: (void)0;
8830 ((void (*)(val*))(var59->class->vft[COLOR_abstract_collection__MapIterator__next]))(var59) /* next on <var59:MapIterator[Object, nullable Object]>*/;
8831 }
8832 BREAK_label80: (void)0;
8833 if (varonce81) {
8834 var82 = varonce81;
8835 } else {
8836 var83 = "\11";
8837 var84 = 1;
8838 var85 = string__NativeString__to_s_with_length(var83, var84);
8839 var82 = var85;
8840 varonce81 = var82;
8841 }
8842 if (varonce86) {
8843 var87 = varonce86;
8844 } else {
8845 var88 = "\11";
8846 var89 = 1;
8847 var90 = string__NativeString__to_s_with_length(var88, var89);
8848 var87 = var90;
8849 varonce86 = var87;
8850 }
8851 var91 = NEW_array__Array(&type_array__Arraykernel__Object);
8852 { /* var91 = array_instance Array[Object] */
8853 var92 = 4;
8854 var93 = NEW_array__NativeArray(var92, &type_array__NativeArraykernel__Object);
8855 ((struct instance_array__NativeArray*)var93)->values[0] = (val*) var82;
8856 var94 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
8857 ((struct instance_array__NativeArray*)var93)->values[1] = (val*) var94;
8858 ((struct instance_array__NativeArray*)var93)->values[2] = (val*) var87;
8859 var95 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
8860 ((struct instance_array__NativeArray*)var93)->values[3] = (val*) var95;
8861 ((void (*)(val*, val*, long))(var91->class->vft[COLOR_array__Array__with_native]))(var91, var93, var92) /* with_native on <var91:Array[Object]>*/;
8862 }
8863 var96 = ((val* (*)(val*))(var91->class->vft[COLOR_string__Object__to_s]))(var91) /* to_s on <var91:Array[Object]>*/;
8864 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var96) /* print on <self:SeparateCompiler>*/;
8865 if (varonce97) {
8866 var98 = varonce97;
8867 } else {
8868 var99 = "# size of methods tables";
8869 var100 = 24;
8870 var101 = string__NativeString__to_s_with_length(var99, var100);
8871 var98 = var101;
8872 varonce97 = var98;
8873 }
8874 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var98) /* print on <self:SeparateCompiler>*/;
8875 if (varonce102) {
8876 var103 = varonce102;
8877 } else {
8878 var104 = "\11total \11holes";
8879 var105 = 13;
8880 var106 = string__NativeString__to_s_with_length(var104, var105);
8881 var103 = var106;
8882 varonce102 = var103;
8883 }
8884 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var103) /* print on <self:SeparateCompiler>*/;
8885 var107 = 0;
8886 var_total = var107;
8887 var108 = 0;
8888 var_holes = var108;
8889 var109 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__method_tables]))(self) /* method_tables on <self:SeparateCompiler>*/;
8890 var110 = ((val* (*)(val*))(var109->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var109) /* iterator on <var109:Map[MClass, Array[nullable MPropDef]]>*/;
8891 for(;;) {
8892 var111 = ((short int (*)(val*))(var110->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var110) /* is_ok on <var110:MapIterator[Object, nullable Object]>*/;
8893 if(!var111) break;
8894 var112 = ((val* (*)(val*))(var110->class->vft[COLOR_abstract_collection__MapIterator__key]))(var110) /* key on <var110:MapIterator[Object, nullable Object]>*/;
8895 var_t113 = var112;
8896 var114 = ((val* (*)(val*))(var110->class->vft[COLOR_abstract_collection__MapIterator__item]))(var110) /* item on <var110:MapIterator[Object, nullable Object]>*/;
8897 var_table115 = var114;
8898 var116 = ((long (*)(val*))(var_table115->class->vft[COLOR_abstract_collection__Collection__length]))(var_table115) /* length on <var_table115:Array[nullable MPropDef]>*/;
8899 { /* Inline kernel#Int#+ (var_total,var116) */
8900 var119 = var_total + var116;
8901 var117 = var119;
8902 goto RET_LABEL118;
8903 RET_LABEL118:(void)0;
8904 }
8905 var_total = var117;
8906 var120 = ((val* (*)(val*))(var_table115->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_table115) /* iterator on <var_table115:Array[nullable MPropDef]>*/;
8907 for(;;) {
8908 var121 = ((short int (*)(val*))(var120->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var120) /* is_ok on <var120:Iterator[nullable Object]>*/;
8909 if(!var121) break;
8910 var122 = ((val* (*)(val*))(var120->class->vft[COLOR_abstract_collection__Iterator__item]))(var120) /* item on <var120:Iterator[nullable Object]>*/;
8911 var_e123 = var122;
8912 var124 = NULL;
8913 if (var_e123 == NULL) {
8914 var125 = 1; /* is null */
8915 } else {
8916 var125 = 0; /* arg is null but recv is not */
8917 }
8918 if (var125){
8919 var126 = 1;
8920 { /* Inline kernel#Int#+ (var_holes,var126) */
8921 var129 = var_holes + var126;
8922 var127 = var129;
8923 goto RET_LABEL128;
8924 RET_LABEL128:(void)0;
8925 }
8926 var_holes = var127;
8927 } else {
8928 }
8929 CONTINUE_label130: (void)0;
8930 ((void (*)(val*))(var120->class->vft[COLOR_abstract_collection__Iterator__next]))(var120) /* next on <var120:Iterator[nullable Object]>*/;
8931 }
8932 BREAK_label130: (void)0;
8933 CONTINUE_label131: (void)0;
8934 ((void (*)(val*))(var110->class->vft[COLOR_abstract_collection__MapIterator__next]))(var110) /* next on <var110:MapIterator[Object, nullable Object]>*/;
8935 }
8936 BREAK_label131: (void)0;
8937 if (varonce132) {
8938 var133 = varonce132;
8939 } else {
8940 var134 = "\11";
8941 var135 = 1;
8942 var136 = string__NativeString__to_s_with_length(var134, var135);
8943 var133 = var136;
8944 varonce132 = var133;
8945 }
8946 if (varonce137) {
8947 var138 = varonce137;
8948 } else {
8949 var139 = "\11";
8950 var140 = 1;
8951 var141 = string__NativeString__to_s_with_length(var139, var140);
8952 var138 = var141;
8953 varonce137 = var138;
8954 }
8955 var142 = NEW_array__Array(&type_array__Arraykernel__Object);
8956 { /* var142 = array_instance Array[Object] */
8957 var143 = 4;
8958 var144 = NEW_array__NativeArray(var143, &type_array__NativeArraykernel__Object);
8959 ((struct instance_array__NativeArray*)var144)->values[0] = (val*) var133;
8960 var145 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
8961 ((struct instance_array__NativeArray*)var144)->values[1] = (val*) var145;
8962 ((struct instance_array__NativeArray*)var144)->values[2] = (val*) var138;
8963 var146 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
8964 ((struct instance_array__NativeArray*)var144)->values[3] = (val*) var146;
8965 ((void (*)(val*, val*, long))(var142->class->vft[COLOR_array__Array__with_native]))(var142, var144, var143) /* with_native on <var142:Array[Object]>*/;
8966 }
8967 var147 = ((val* (*)(val*))(var142->class->vft[COLOR_string__Object__to_s]))(var142) /* to_s on <var142:Array[Object]>*/;
8968 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var147) /* print on <self:SeparateCompiler>*/;
8969 if (varonce148) {
8970 var149 = varonce148;
8971 } else {
8972 var150 = "# size of attributes tables";
8973 var151 = 27;
8974 var152 = string__NativeString__to_s_with_length(var150, var151);
8975 var149 = var152;
8976 varonce148 = var149;
8977 }
8978 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var149) /* print on <self:SeparateCompiler>*/;
8979 if (varonce153) {
8980 var154 = varonce153;
8981 } else {
8982 var155 = "\11total \11holes";
8983 var156 = 13;
8984 var157 = string__NativeString__to_s_with_length(var155, var156);
8985 var154 = var157;
8986 varonce153 = var154;
8987 }
8988 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var154) /* print on <self:SeparateCompiler>*/;
8989 var158 = 0;
8990 var_total = var158;
8991 var159 = 0;
8992 var_holes = var159;
8993 var160 = ((val* (*)(val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__attr_tables]))(self) /* attr_tables on <self:SeparateCompiler>*/;
8994 var161 = ((val* (*)(val*))(var160->class->vft[COLOR_abstract_collection__MapRead__iterator]))(var160) /* iterator on <var160:Map[MClass, Array[nullable MPropDef]]>*/;
8995 for(;;) {
8996 var162 = ((short int (*)(val*))(var161->class->vft[COLOR_abstract_collection__MapIterator__is_ok]))(var161) /* is_ok on <var161:MapIterator[Object, nullable Object]>*/;
8997 if(!var162) break;
8998 var163 = ((val* (*)(val*))(var161->class->vft[COLOR_abstract_collection__MapIterator__key]))(var161) /* key on <var161:MapIterator[Object, nullable Object]>*/;
8999 var_t164 = var163;
9000 var165 = ((val* (*)(val*))(var161->class->vft[COLOR_abstract_collection__MapIterator__item]))(var161) /* item on <var161:MapIterator[Object, nullable Object]>*/;
9001 var_table166 = var165;
9002 var167 = ((long (*)(val*))(var_table166->class->vft[COLOR_abstract_collection__Collection__length]))(var_table166) /* length on <var_table166:Array[nullable MPropDef]>*/;
9003 { /* Inline kernel#Int#+ (var_total,var167) */
9004 var170 = var_total + var167;
9005 var168 = var170;
9006 goto RET_LABEL169;
9007 RET_LABEL169:(void)0;
9008 }
9009 var_total = var168;
9010 var171 = ((val* (*)(val*))(var_table166->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_table166) /* iterator on <var_table166:Array[nullable MPropDef]>*/;
9011 for(;;) {
9012 var172 = ((short int (*)(val*))(var171->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var171) /* is_ok on <var171:Iterator[nullable Object]>*/;
9013 if(!var172) break;
9014 var173 = ((val* (*)(val*))(var171->class->vft[COLOR_abstract_collection__Iterator__item]))(var171) /* item on <var171:Iterator[nullable Object]>*/;
9015 var_e174 = var173;
9016 var175 = NULL;
9017 if (var_e174 == NULL) {
9018 var176 = 1; /* is null */
9019 } else {
9020 var176 = 0; /* arg is null but recv is not */
9021 }
9022 if (var176){
9023 var177 = 1;
9024 { /* Inline kernel#Int#+ (var_holes,var177) */
9025 var180 = var_holes + var177;
9026 var178 = var180;
9027 goto RET_LABEL179;
9028 RET_LABEL179:(void)0;
9029 }
9030 var_holes = var178;
9031 } else {
9032 }
9033 CONTINUE_label181: (void)0;
9034 ((void (*)(val*))(var171->class->vft[COLOR_abstract_collection__Iterator__next]))(var171) /* next on <var171:Iterator[nullable Object]>*/;
9035 }
9036 BREAK_label181: (void)0;
9037 CONTINUE_label182: (void)0;
9038 ((void (*)(val*))(var161->class->vft[COLOR_abstract_collection__MapIterator__next]))(var161) /* next on <var161:MapIterator[Object, nullable Object]>*/;
9039 }
9040 BREAK_label182: (void)0;
9041 if (varonce183) {
9042 var184 = varonce183;
9043 } else {
9044 var185 = "\11";
9045 var186 = 1;
9046 var187 = string__NativeString__to_s_with_length(var185, var186);
9047 var184 = var187;
9048 varonce183 = var184;
9049 }
9050 if (varonce188) {
9051 var189 = varonce188;
9052 } else {
9053 var190 = "\11";
9054 var191 = 1;
9055 var192 = string__NativeString__to_s_with_length(var190, var191);
9056 var189 = var192;
9057 varonce188 = var189;
9058 }
9059 var193 = NEW_array__Array(&type_array__Arraykernel__Object);
9060 { /* var193 = array_instance Array[Object] */
9061 var194 = 4;
9062 var195 = NEW_array__NativeArray(var194, &type_array__NativeArraykernel__Object);
9063 ((struct instance_array__NativeArray*)var195)->values[0] = (val*) var184;
9064 var196 = BOX_kernel__Int(var_total); /* autobox from Int to Object */
9065 ((struct instance_array__NativeArray*)var195)->values[1] = (val*) var196;
9066 ((struct instance_array__NativeArray*)var195)->values[2] = (val*) var189;
9067 var197 = BOX_kernel__Int(var_holes); /* autobox from Int to Object */
9068 ((struct instance_array__NativeArray*)var195)->values[3] = (val*) var197;
9069 ((void (*)(val*, val*, long))(var193->class->vft[COLOR_array__Array__with_native]))(var193, var195, var194) /* with_native on <var193:Array[Object]>*/;
9070 }
9071 var198 = ((val* (*)(val*))(var193->class->vft[COLOR_string__Object__to_s]))(var193) /* to_s on <var193:Array[Object]>*/;
9072 ((void (*)(val*, val*))(self->class->vft[COLOR_file__Object__print]))(self, var198) /* print on <self:SeparateCompiler>*/;
9073 RET_LABEL:;
9074 }
9075 /* method separate_compiler#SeparateCompiler#display_sizes for (self: Object) */
9076 void VIRTUAL_separate_compiler__SeparateCompiler__display_sizes(val* self) {
9077 separate_compiler__SeparateCompiler__display_sizes(self);
9078 RET_LABEL:;
9079 }
9080 /* method separate_compiler#SeparateCompiler#compile_nitni_structs for (self: SeparateCompiler) */
9081 void separate_compiler__SeparateCompiler__compile_nitni_structs(val* self) {
9082 val* var /* : CodeWriter */;
9083 static val* varonce;
9084 val* var1 /* : String */;
9085 char* var2 /* : NativeString */;
9086 long var3 /* : Int */;
9087 val* var4 /* : String */;
9088 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__header]))(self) /* header on <self:SeparateCompiler>*/;
9089 if (varonce) {
9090 var1 = varonce;
9091 } else {
9092 var2 = "struct nitni_instance {struct instance *value;};";
9093 var3 = 48;
9094 var4 = string__NativeString__to_s_with_length(var2, var3);
9095 var1 = var4;
9096 varonce = var1;
9097 }
9098 ((void (*)(val*, val*))(var->class->vft[COLOR_abstract_compiler__CodeWriter__add_decl]))(var, var1) /* add_decl on <var:CodeWriter>*/;
9099 RET_LABEL:;
9100 }
9101 /* method separate_compiler#SeparateCompiler#compile_nitni_structs for (self: Object) */
9102 void VIRTUAL_separate_compiler__SeparateCompiler__compile_nitni_structs(val* self) {
9103 separate_compiler__SeparateCompiler__compile_nitni_structs(self);
9104 RET_LABEL:;
9105 }
9106 /* method separate_compiler#SeparateCompiler#finalize_ffi_for_module for (self: SeparateCompiler, AModule) */
9107 void separate_compiler__SeparateCompiler__finalize_ffi_for_module(val* self, val* p0) {
9108 val* var_nmodule /* var nmodule: AModule */;
9109 val* var /* : MModule */;
9110 val* var_old_module /* var old_module: MModule */;
9111 val* var1 /* : nullable MModule */;
9112 var_nmodule = p0;
9113 var = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule]))(self) /* mainmodule on <self:SeparateCompiler>*/;
9114 var_old_module = var;
9115 var1 = ((val* (*)(val*))(var_nmodule->class->vft[COLOR_modelbuilder__AModule__mmodule]))(var_nmodule) /* mmodule on <var_nmodule:AModule>*/;
9116 if (var1 == NULL) {
9117 fprintf(stderr, "Runtime error: %s", "Cast failed");
9118 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 921);
9119 show_backtrace(1);
9120 }
9121 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(self, var1) /* mainmodule= on <self:SeparateCompiler>*/;
9122 ((void (*)(val*, val*))(self->class->vft[COLOR_separate_compiler__SeparateCompiler__finalize_ffi_for_module]))(self, p0) /* finalize_ffi_for_module on <self:SeparateCompiler>*/;
9123 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompiler__mainmodule_61d]))(self, var_old_module) /* mainmodule= on <self:SeparateCompiler>*/;
9124 RET_LABEL:;
9125 }
9126 /* method separate_compiler#SeparateCompiler#finalize_ffi_for_module for (self: Object, AModule) */
9127 void VIRTUAL_separate_compiler__SeparateCompiler__finalize_ffi_for_module(val* self, val* p0) {
9128 separate_compiler__SeparateCompiler__finalize_ffi_for_module(self, p0);
9129 RET_LABEL:;
9130 }
9131 /* method separate_compiler#SeparateCompilerVisitor#adapt_signature for (self: SeparateCompilerVisitor, MMethodDef, Array[RuntimeVariable]) */
9132 void separate_compiler__SeparateCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
9133 val* var_m /* var m: MMethodDef */;
9134 val* var_args /* var args: Array[RuntimeVariable] */;
9135 val* var /* : nullable MSignature */;
9136 val* var1 /* : MClassDef */;
9137 val* var2 /* : MClassType */;
9138 val* var3 /* : MClassDef */;
9139 val* var4 /* : MClassType */;
9140 val* var5 /* : MClassDef */;
9141 val* var6 /* : MModule */;
9142 short int var7 /* : Bool */;
9143 val* var8 /* : MType */;
9144 val* var_msignature /* var msignature: MSignature */;
9145 val* var9 /* : nullable Object */;
9146 val* var_recv /* var recv: RuntimeVariable */;
9147 val* var10 /* : MType */;
9148 val* var11 /* : String */;
9149 val* var12 /* : MClassDef */;
9150 val* var13 /* : MClass */;
9151 val* var14 /* : MClassType */;
9152 val* var15 /* : String */;
9153 short int var16 /* : Bool */;
9154 val* var17 /* : nullable Object */;
9155 val* var18 /* : MClassDef */;
9156 val* var19 /* : MClass */;
9157 val* var20 /* : MClassType */;
9158 val* var21 /* : RuntimeVariable */;
9159 val* var22 /* : Range[Int] */;
9160 long var23 /* : Int */;
9161 long var24 /* : Int */;
9162 val* var25 /* : Discrete */;
9163 val* var26 /* : Discrete */;
9164 val* var27 /* : Iterator[nullable Object] */;
9165 short int var28 /* : Bool */;
9166 val* var29 /* : nullable Object */;
9167 long var_i /* var i: Int */;
9168 long var30 /* : Int */;
9169 val* var31 /* : Array[MParameter] */;
9170 val* var32 /* : nullable Object */;
9171 val* var33 /* : MType */;
9172 val* var_t /* var t: MType */;
9173 long var34 /* : Int */;
9174 short int var35 /* : Bool */;
9175 short int var37 /* : Bool */;
9176 long var38 /* : Int */;
9177 long var39 /* : Int */;
9178 long var41 /* : Int */;
9179 val* var42 /* : nullable Object */;
9180 val* var43 /* : MType */;
9181 long var44 /* : Int */;
9182 long var45 /* : Int */;
9183 long var47 /* : Int */;
9184 long var48 /* : Int */;
9185 long var49 /* : Int */;
9186 long var51 /* : Int */;
9187 val* var52 /* : nullable Object */;
9188 val* var53 /* : RuntimeVariable */;
9189 var_m = p0;
9190 var_args = p1;
9191 var = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MMethodDef__msignature]))(var_m) /* msignature on <var_m:MMethodDef>*/;
9192 var1 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mclassdef]))(var_m) /* mclassdef on <var_m:MMethodDef>*/;
9193 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_model__MClassDef__bound_mtype]))(var1) /* bound_mtype on <var1:MClassDef>*/;
9194 var3 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mclassdef]))(var_m) /* mclassdef on <var_m:MMethodDef>*/;
9195 var4 = ((val* (*)(val*))(var3->class->vft[COLOR_model__MClassDef__bound_mtype]))(var3) /* bound_mtype on <var3:MClassDef>*/;
9196 var5 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mclassdef]))(var_m) /* mclassdef on <var_m:MMethodDef>*/;
9197 var6 = ((val* (*)(val*))(var5->class->vft[COLOR_model__MClassDef__mmodule]))(var5) /* mmodule on <var5:MClassDef>*/;
9198 var7 = 1;
9199 if (var == NULL) {
9200 fprintf(stderr, "Runtime error: %s", "Receiver is null");
9201 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 935);
9202 show_backtrace(1);
9203 } else {
9204 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>*/;
9205 }
9206 var_msignature = var8;
9207 var9 = ((val* (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__first]))(var_args) /* first on <var_args:Array[RuntimeVariable]>*/;
9208 var_recv = var9;
9209 var10 = ((val* (*)(val*))(var_recv->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_recv) /* mtype on <var_recv:RuntimeVariable>*/;
9210 var11 = ((val* (*)(val*))(var10->class->vft[COLOR_abstract_compiler__MType__ctype]))(var10) /* ctype on <var10:MType>*/;
9211 var12 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mclassdef]))(var_m) /* mclassdef on <var_m:MMethodDef>*/;
9212 var13 = ((val* (*)(val*))(var12->class->vft[COLOR_model__MClassDef__mclass]))(var12) /* mclass on <var12:MClassDef>*/;
9213 var14 = ((val* (*)(val*))(var13->class->vft[COLOR_model__MClass__mclass_type]))(var13) /* mclass_type on <var13:MClass>*/;
9214 var15 = ((val* (*)(val*))(var14->class->vft[COLOR_abstract_compiler__MType__ctype]))(var14) /* ctype on <var14:MClassType>*/;
9215 var16 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___33d_61d]))(var11, var15) /* != on <var11:String>*/;
9216 if (var16){
9217 var17 = ((val* (*)(val*))(var_args->class->vft[COLOR_abstract_collection__Collection__first]))(var_args) /* first on <var_args:Array[RuntimeVariable]>*/;
9218 var18 = ((val* (*)(val*))(var_m->class->vft[COLOR_model__MPropDef__mclassdef]))(var_m) /* mclassdef on <var_m:MMethodDef>*/;
9219 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_model__MClassDef__mclass]))(var18) /* mclass on <var18:MClassDef>*/;
9220 var20 = ((val* (*)(val*))(var19->class->vft[COLOR_model__MClass__mclass_type]))(var19) /* mclass_type on <var19:MClass>*/;
9221 var21 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var17, var20) /* autobox on <self:SeparateCompilerVisitor>*/;
9222 ((void (*)(val*, val*))(var_args->class->vft[COLOR_abstract_collection__Sequence__first_61d]))(var_args, var21) /* first= on <var_args:Array[RuntimeVariable]>*/;
9223 } else {
9224 }
9225 var22 = NEW_range__Range(&type_range__Rangekernel__Int);
9226 var23 = 0;
9227 var24 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__arity]))(var_msignature) /* arity on <var_msignature:MSignature>*/;
9228 var25 = BOX_kernel__Int(var23); /* autobox from Int to Discrete */
9229 var26 = BOX_kernel__Int(var24); /* autobox from Int to Discrete */
9230 ((void (*)(val*, val*, val*))(var22->class->vft[COLOR_range__Range__without_last]))(var22, var25, var26) /* without_last on <var22:Range[Int]>*/;
9231 var27 = ((val* (*)(val*))(var22->class->vft[COLOR_abstract_collection__Collection__iterator]))(var22) /* iterator on <var22:Range[Int]>*/;
9232 for(;;) {
9233 var28 = ((short int (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var27) /* is_ok on <var27:Iterator[nullable Object]>*/;
9234 if(!var28) break;
9235 var29 = ((val* (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__item]))(var27) /* item on <var27:Iterator[nullable Object]>*/;
9236 var30 = ((struct instance_kernel__Int*)var29)->value; /* autounbox from nullable Object to Int */;
9237 var_i = var30;
9238 var31 = ((val* (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__mparameters]))(var_msignature) /* mparameters on <var_msignature:MSignature>*/;
9239 var32 = ((val* (*)(val*, long))(var31->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var31, var_i) /* [] on <var31:Array[MParameter]>*/;
9240 var33 = ((val* (*)(val*))(var32->class->vft[COLOR_model__MParameter__mtype]))(var32) /* mtype on <var32:nullable Object(MParameter)>*/;
9241 var_t = var33;
9242 var34 = ((long (*)(val*))(var_msignature->class->vft[COLOR_model__MSignature__vararg_rank]))(var_msignature) /* vararg_rank on <var_msignature:MSignature>*/;
9243 { /* Inline kernel#Int#== (var_i,var34) */
9244 var37 = var_i == var34;
9245 var35 = var37;
9246 goto RET_LABEL36;
9247 RET_LABEL36:(void)0;
9248 }
9249 if (var35){
9250 var38 = 1;
9251 { /* Inline kernel#Int#+ (var_i,var38) */
9252 var41 = var_i + var38;
9253 var39 = var41;
9254 goto RET_LABEL40;
9255 RET_LABEL40:(void)0;
9256 }
9257 var42 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var39) /* [] on <var_args:Array[RuntimeVariable]>*/;
9258 var43 = ((val* (*)(val*))(var42->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var42) /* mtype on <var42:nullable Object(RuntimeVariable)>*/;
9259 var_t = var43;
9260 } else {
9261 }
9262 var44 = 1;
9263 { /* Inline kernel#Int#+ (var_i,var44) */
9264 var47 = var_i + var44;
9265 var45 = var47;
9266 goto RET_LABEL46;
9267 RET_LABEL46:(void)0;
9268 }
9269 var48 = 1;
9270 { /* Inline kernel#Int#+ (var_i,var48) */
9271 var51 = var_i + var48;
9272 var49 = var51;
9273 goto RET_LABEL50;
9274 RET_LABEL50:(void)0;
9275 }
9276 var52 = ((val* (*)(val*, long))(var_args->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_args, var49) /* [] on <var_args:Array[RuntimeVariable]>*/;
9277 var53 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox]))(self, var52, var_t) /* autobox on <self:SeparateCompilerVisitor>*/;
9278 ((void (*)(val*, long, val*))(var_args->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_args, var45, var53) /* []= on <var_args:Array[RuntimeVariable]>*/;
9279 CONTINUE_label: (void)0;
9280 ((void (*)(val*))(var27->class->vft[COLOR_abstract_collection__Iterator__next]))(var27) /* next on <var27:Iterator[nullable Object]>*/;
9281 }
9282 BREAK_label: (void)0;
9283 RET_LABEL:;
9284 }
9285 /* method separate_compiler#SeparateCompilerVisitor#adapt_signature for (self: Object, MMethodDef, Array[RuntimeVariable]) */
9286 void VIRTUAL_separate_compiler__SeparateCompilerVisitor__adapt_signature(val* self, val* p0, val* p1) {
9287 separate_compiler__SeparateCompilerVisitor__adapt_signature(self, p0, p1);
9288 RET_LABEL:;
9289 }
9290 /* method separate_compiler#SeparateCompilerVisitor#autobox for (self: SeparateCompilerVisitor, RuntimeVariable, MType): RuntimeVariable */
9291 val* separate_compiler__SeparateCompilerVisitor__autobox(val* self, val* p0, val* p1) {
9292 val* var /* : RuntimeVariable */;
9293 val* var_value /* var value: RuntimeVariable */;
9294 val* var_mtype /* var mtype: MType */;
9295 val* var1 /* : MType */;
9296 short int var2 /* : Bool */;
9297 short int var3 /* : Bool */;
9298 val* var4 /* : MType */;
9299 val* var5 /* : String */;
9300 static val* varonce;
9301 val* var6 /* : String */;
9302 char* var7 /* : NativeString */;
9303 long var8 /* : Int */;
9304 val* var9 /* : String */;
9305 short int var10 /* : Bool */;
9306 short int var_ /* var : Bool */;
9307 val* var11 /* : String */;
9308 static val* varonce12;
9309 val* var13 /* : String */;
9310 char* var14 /* : NativeString */;
9311 long var15 /* : Int */;
9312 val* var16 /* : String */;
9313 short int var17 /* : Bool */;
9314 val* var18 /* : MType */;
9315 val* var19 /* : String */;
9316 static val* varonce20;
9317 val* var21 /* : String */;
9318 char* var22 /* : NativeString */;
9319 long var23 /* : Int */;
9320 val* var24 /* : String */;
9321 short int var25 /* : Bool */;
9322 static val* varonce26;
9323 val* var27 /* : String */;
9324 char* var28 /* : NativeString */;
9325 long var29 /* : Int */;
9326 val* var30 /* : String */;
9327 val* var31 /* : String */;
9328 static val* varonce32;
9329 val* var33 /* : String */;
9330 char* var34 /* : NativeString */;
9331 long var35 /* : Int */;
9332 val* var36 /* : String */;
9333 static val* varonce37;
9334 val* var38 /* : String */;
9335 char* var39 /* : NativeString */;
9336 long var40 /* : Int */;
9337 val* var41 /* : String */;
9338 val* var42 /* : MType */;
9339 static val* varonce43;
9340 val* var44 /* : String */;
9341 char* var45 /* : NativeString */;
9342 long var46 /* : Int */;
9343 val* var47 /* : String */;
9344 static val* varonce48;
9345 val* var49 /* : String */;
9346 char* var50 /* : NativeString */;
9347 long var51 /* : Int */;
9348 val* var52 /* : String */;
9349 val* var53 /* : Array[Object] */;
9350 long var54 /* : Int */;
9351 val* var55 /* : NativeArray[Object] */;
9352 val* var56 /* : String */;
9353 val* var57 /* : RuntimeVariable */;
9354 val* var58 /* : String */;
9355 static val* varonce59;
9356 val* var60 /* : String */;
9357 char* var61 /* : NativeString */;
9358 long var62 /* : Int */;
9359 val* var63 /* : String */;
9360 short int var64 /* : Bool */;
9361 val* var65 /* : MType */;
9362 short int var66 /* : Bool */;
9363 int cltype;
9364 int idtype;
9365 const char* var_class_name;
9366 val* var_valtype /* var valtype: MClassType */;
9367 val* var67 /* : RuntimeVariable */;
9368 val* var_res /* var res: RuntimeVariable */;
9369 short int var68 /* : Bool */;
9370 val* var69 /* : AbstractCompiler */;
9371 val* var70 /* : nullable RapidTypeAnalysis */;
9372 val* var71 /* : null */;
9373 short int var72 /* : Bool */;
9374 short int var_73 /* var : Bool */;
9375 val* var74 /* : AbstractCompiler */;
9376 val* var75 /* : nullable RapidTypeAnalysis */;
9377 val* var76 /* : HashSet[MClassType] */;
9378 short int var77 /* : Bool */;
9379 short int var78 /* : Bool */;
9380 static val* varonce79;
9381 val* var80 /* : String */;
9382 char* var81 /* : NativeString */;
9383 long var82 /* : Int */;
9384 val* var83 /* : String */;
9385 val* var84 /* : MType */;
9386 static val* varonce85;
9387 val* var86 /* : String */;
9388 char* var87 /* : NativeString */;
9389 long var88 /* : Int */;
9390 val* var89 /* : String */;
9391 static val* varonce90;
9392 val* var91 /* : String */;
9393 char* var92 /* : NativeString */;
9394 long var93 /* : Int */;
9395 val* var94 /* : String */;
9396 val* var95 /* : MType */;
9397 static val* varonce96;
9398 val* var97 /* : String */;
9399 char* var98 /* : NativeString */;
9400 long var99 /* : Int */;
9401 val* var100 /* : String */;
9402 val* var101 /* : Array[Object] */;
9403 long var102 /* : Int */;
9404 val* var103 /* : NativeArray[Object] */;
9405 val* var104 /* : String */;
9406 static val* varonce105;
9407 val* var106 /* : String */;
9408 char* var107 /* : NativeString */;
9409 long var108 /* : Int */;
9410 val* var109 /* : String */;
9411 static val* varonce110;
9412 val* var111 /* : String */;
9413 char* var112 /* : NativeString */;
9414 long var113 /* : Int */;
9415 val* var114 /* : String */;
9416 val* var115 /* : String */;
9417 val* var116 /* : Array[Object] */;
9418 long var117 /* : Int */;
9419 val* var118 /* : NativeArray[Object] */;
9420 val* var119 /* : String */;
9421 static val* varonce120;
9422 val* var121 /* : String */;
9423 char* var122 /* : NativeString */;
9424 long var123 /* : Int */;
9425 val* var124 /* : String */;
9426 val* var125 /* : String */;
9427 static val* varonce126;
9428 val* var127 /* : String */;
9429 char* var128 /* : NativeString */;
9430 long var129 /* : Int */;
9431 val* var130 /* : String */;
9432 static val* varonce131;
9433 val* var132 /* : String */;
9434 char* var133 /* : NativeString */;
9435 long var134 /* : Int */;
9436 val* var135 /* : String */;
9437 val* var136 /* : MType */;
9438 static val* varonce137;
9439 val* var138 /* : String */;
9440 char* var139 /* : NativeString */;
9441 long var140 /* : Int */;
9442 val* var141 /* : String */;
9443 static val* varonce142;
9444 val* var143 /* : String */;
9445 char* var144 /* : NativeString */;
9446 long var145 /* : Int */;
9447 val* var146 /* : String */;
9448 val* var147 /* : Array[Object] */;
9449 long var148 /* : Int */;
9450 val* var149 /* : NativeArray[Object] */;
9451 val* var150 /* : String */;
9452 short int var151 /* : Bool */;
9453 val* var152 /* : MType */;
9454 val* var153 /* : String */;
9455 static val* varonce154;
9456 val* var155 /* : String */;
9457 char* var156 /* : NativeString */;
9458 long var157 /* : Int */;
9459 val* var158 /* : String */;
9460 short int var159 /* : Bool */;
9461 short int var_160 /* var : Bool */;
9462 val* var161 /* : String */;
9463 static val* varonce162;
9464 val* var163 /* : String */;
9465 char* var164 /* : NativeString */;
9466 long var165 /* : Int */;
9467 val* var166 /* : String */;
9468 short int var167 /* : Bool */;
9469 val* var168 /* : RuntimeVariable */;
9470 val* var_res169 /* var res: RuntimeVariable */;
9471 static val* varonce170;
9472 val* var171 /* : String */;
9473 char* var172 /* : NativeString */;
9474 long var173 /* : Int */;
9475 val* var174 /* : String */;
9476 static val* varonce175;
9477 val* var176 /* : String */;
9478 char* var177 /* : NativeString */;
9479 long var178 /* : Int */;
9480 val* var179 /* : String */;
9481 val* var180 /* : MType */;
9482 static val* varonce181;
9483 val* var182 /* : String */;
9484 char* var183 /* : NativeString */;
9485 long var184 /* : Int */;
9486 val* var185 /* : String */;
9487 static val* varonce186;
9488 val* var187 /* : String */;
9489 char* var188 /* : NativeString */;
9490 long var189 /* : Int */;
9491 val* var190 /* : String */;
9492 val* var191 /* : Array[Object] */;
9493 long var192 /* : Int */;
9494 val* var193 /* : NativeArray[Object] */;
9495 val* var194 /* : String */;
9496 static val* varonce195;
9497 val* var196 /* : String */;
9498 char* var197 /* : NativeString */;
9499 long var198 /* : Int */;
9500 val* var199 /* : String */;
9501 val* var200 /* : MType */;
9502 static val* varonce201;
9503 val* var202 /* : String */;
9504 char* var203 /* : NativeString */;
9505 long var204 /* : Int */;
9506 val* var205 /* : String */;
9507 static val* varonce206;
9508 val* var207 /* : String */;
9509 char* var208 /* : NativeString */;
9510 long var209 /* : Int */;
9511 val* var210 /* : String */;
9512 val* var211 /* : Array[Object] */;
9513 long var212 /* : Int */;
9514 val* var213 /* : NativeArray[Object] */;
9515 val* var214 /* : String */;
9516 var_value = p0;
9517 var_mtype = p1;
9518 var1 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9519 var2 = ((short int (*)(val*, val*))(var1->class->vft[COLOR_kernel__Object___61d_61d]))(var1, var_mtype) /* == on <var1:MType>*/;
9520 if (var2){
9521 var = var_value;
9522 goto RET_LABEL;
9523 } else {
9524 var4 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9525 var5 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_compiler__MType__ctype]))(var4) /* ctype on <var4:MType>*/;
9526 if (varonce) {
9527 var6 = varonce;
9528 } else {
9529 var7 = "val*";
9530 var8 = 4;
9531 var9 = string__NativeString__to_s_with_length(var7, var8);
9532 var6 = var9;
9533 varonce = var6;
9534 }
9535 var10 = ((short int (*)(val*, val*))(var5->class->vft[COLOR_kernel__Object___61d_61d]))(var5, var6) /* == on <var5:String>*/;
9536 var_ = var10;
9537 if (var10){
9538 var11 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
9539 if (varonce12) {
9540 var13 = varonce12;
9541 } else {
9542 var14 = "val*";
9543 var15 = 4;
9544 var16 = string__NativeString__to_s_with_length(var14, var15);
9545 var13 = var16;
9546 varonce12 = var13;
9547 }
9548 var17 = ((short int (*)(val*, val*))(var11->class->vft[COLOR_kernel__Object___61d_61d]))(var11, var13) /* == on <var11:String>*/;
9549 var3 = var17;
9550 } else {
9551 var3 = var_;
9552 }
9553 if (var3){
9554 var = var_value;
9555 goto RET_LABEL;
9556 } else {
9557 var18 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9558 var19 = ((val* (*)(val*))(var18->class->vft[COLOR_abstract_compiler__MType__ctype]))(var18) /* ctype on <var18:MType>*/;
9559 if (varonce20) {
9560 var21 = varonce20;
9561 } else {
9562 var22 = "val*";
9563 var23 = 4;
9564 var24 = string__NativeString__to_s_with_length(var22, var23);
9565 var21 = var24;
9566 varonce20 = var21;
9567 }
9568 var25 = ((short int (*)(val*, val*))(var19->class->vft[COLOR_kernel__Object___61d_61d]))(var19, var21) /* == on <var19:String>*/;
9569 if (var25){
9570 if (varonce26) {
9571 var27 = varonce26;
9572 } else {
9573 var28 = "((struct instance_";
9574 var29 = 18;
9575 var30 = string__NativeString__to_s_with_length(var28, var29);
9576 var27 = var30;
9577 varonce26 = var27;
9578 }
9579 var31 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_separate_compiler__MType__c_instance_name]))(var_mtype) /* c_instance_name on <var_mtype:MType>*/;
9580 if (varonce32) {
9581 var33 = varonce32;
9582 } else {
9583 var34 = "*)";
9584 var35 = 2;
9585 var36 = string__NativeString__to_s_with_length(var34, var35);
9586 var33 = var36;
9587 varonce32 = var33;
9588 }
9589 if (varonce37) {
9590 var38 = varonce37;
9591 } else {
9592 var39 = ")->value; /* autounbox from ";
9593 var40 = 28;
9594 var41 = string__NativeString__to_s_with_length(var39, var40);
9595 var38 = var41;
9596 varonce37 = var38;
9597 }
9598 var42 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9599 if (varonce43) {
9600 var44 = varonce43;
9601 } else {
9602 var45 = " to ";
9603 var46 = 4;
9604 var47 = string__NativeString__to_s_with_length(var45, var46);
9605 var44 = var47;
9606 varonce43 = var44;
9607 }
9608 if (varonce48) {
9609 var49 = varonce48;
9610 } else {
9611 var50 = " */";
9612 var51 = 3;
9613 var52 = string__NativeString__to_s_with_length(var50, var51);
9614 var49 = var52;
9615 varonce48 = var49;
9616 }
9617 var53 = NEW_array__Array(&type_array__Arraykernel__Object);
9618 { /* var53 = array_instance Array[Object] */
9619 var54 = 9;
9620 var55 = NEW_array__NativeArray(var54, &type_array__NativeArraykernel__Object);
9621 ((struct instance_array__NativeArray*)var55)->values[0] = (val*) var27;
9622 ((struct instance_array__NativeArray*)var55)->values[1] = (val*) var31;
9623 ((struct instance_array__NativeArray*)var55)->values[2] = (val*) var33;
9624 ((struct instance_array__NativeArray*)var55)->values[3] = (val*) var_value;
9625 ((struct instance_array__NativeArray*)var55)->values[4] = (val*) var38;
9626 ((struct instance_array__NativeArray*)var55)->values[5] = (val*) var42;
9627 ((struct instance_array__NativeArray*)var55)->values[6] = (val*) var44;
9628 ((struct instance_array__NativeArray*)var55)->values[7] = (val*) var_mtype;
9629 ((struct instance_array__NativeArray*)var55)->values[8] = (val*) var49;
9630 ((void (*)(val*, val*, long))(var53->class->vft[COLOR_array__Array__with_native]))(var53, var55, var54) /* with_native on <var53:Array[Object]>*/;
9631 }
9632 var56 = ((val* (*)(val*))(var53->class->vft[COLOR_string__Object__to_s]))(var53) /* to_s on <var53:Array[Object]>*/;
9633 var57 = ((val* (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr]))(self, var56, var_mtype) /* new_expr on <self:SeparateCompilerVisitor>*/;
9634 var = var57;
9635 goto RET_LABEL;
9636 } else {
9637 var58 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_abstract_compiler__MType__ctype]))(var_mtype) /* ctype on <var_mtype:MType>*/;
9638 if (varonce59) {
9639 var60 = varonce59;
9640 } else {
9641 var61 = "val*";
9642 var62 = 4;
9643 var63 = string__NativeString__to_s_with_length(var61, var62);
9644 var60 = var63;
9645 varonce59 = var60;
9646 }
9647 var64 = ((short int (*)(val*, val*))(var58->class->vft[COLOR_kernel__Object___61d_61d]))(var58, var60) /* == on <var58:String>*/;
9648 if (var64){
9649 var65 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9650 /* <var65:MType> isa MClassType */
9651 cltype = type_model__MClassType.color;
9652 idtype = type_model__MClassType.id;
9653 if(cltype >= var65->type->table_size) {
9654 var66 = 0;
9655 } else {
9656 var66 = var65->type->type_table[cltype] == idtype;
9657 }
9658 if (!var66) {
9659 var_class_name = var65 == NULL ? "null" : var65->type->name;
9660 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name);
9661 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 958);
9662 show_backtrace(1);
9663 }
9664 var_valtype = var65;
9665 var67 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_mtype) /* new_var on <self:SeparateCompilerVisitor>*/;
9666 var_res = var67;
9667 var69 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
9668 var70 = ((val* (*)(val*))(var69->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(var69) /* runtime_type_analysis on <var69:AbstractCompiler(SeparateCompiler)>*/;
9669 var71 = NULL;
9670 if (var70 == NULL) {
9671 var72 = 0; /* is null */
9672 } else {
9673 var72 = 1; /* arg is null and recv is not */
9674 }
9675 var_73 = var72;
9676 if (var72){
9677 var74 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler]))(self) /* compiler on <self:SeparateCompilerVisitor>*/;
9678 var75 = ((val* (*)(val*))(var74->class->vft[COLOR_separate_compiler__SeparateCompiler__runtime_type_analysis]))(var74) /* runtime_type_analysis on <var74:AbstractCompiler(SeparateCompiler)>*/;
9679 if (var75 == NULL) {
9680 fprintf(stderr, "Runtime error: %s", "Receiver is null");
9681 fprintf(stderr, " (%s:%d)\n", "src/separate_compiler.nit", 960);
9682 show_backtrace(1);
9683 } else {
9684 var76 = ((val* (*)(val*))(var75->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(var75) /* live_types on <var75:nullable RapidTypeAnalysis>*/;
9685 }
9686 var77 = ((short int (*)(val*, val*))(var76->class->vft[COLOR_abstract_collection__Collection__has]))(var76, var_valtype) /* has on <var76:HashSet[MClassType]>*/;
9687 var78 = !var77;
9688 var68 = var78;
9689 } else {
9690 var68 = var_73;
9691 }
9692 if (var68){
9693 if (varonce79) {
9694 var80 = varonce79;
9695 } else {
9696 var81 = "/*no autobox from ";
9697 var82 = 18;
9698 var83 = string__NativeString__to_s_with_length(var81, var82);
9699 var80 = var83;
9700 varonce79 = var80;
9701 }
9702 var84 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9703 if (varonce85) {
9704 var86 = varonce85;
9705 } else {
9706 var87 = " to ";
9707 var88 = 4;
9708 var89 = string__NativeString__to_s_with_length(var87, var88);
9709 var86 = var89;
9710 varonce85 = var86;
9711 }
9712 if (varonce90) {
9713 var91 = varonce90;
9714 } else {
9715 var92 = ": ";
9716 var93 = 2;
9717 var94 = string__NativeString__to_s_with_length(var92, var93);
9718 var91 = var94;
9719 varonce90 = var91;
9720 }
9721 var95 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9722 if (varonce96) {
9723 var97 = varonce96;
9724 } else {
9725 var98 = " is not live! */";
9726 var99 = 16;
9727 var100 = string__NativeString__to_s_with_length(var98, var99);
9728 var97 = var100;
9729 varonce96 = var97;
9730 }
9731 var101 = NEW_array__Array(&type_array__Arraykernel__Object);
9732 { /* var101 = array_instance Array[Object] */
9733 var102 = 7;
9734 var103 = NEW_array__NativeArray(var102, &type_array__NativeArraykernel__Object);
9735 ((struct instance_array__NativeArray*)var103)->values[0] = (val*) var80;
9736 ((struct instance_array__NativeArray*)var103)->values[1] = (val*) var84;
9737 ((struct instance_array__NativeArray*)var103)->values[2] = (val*) var86;
9738 ((struct instance_array__NativeArray*)var103)->values[3] = (val*) var_mtype;
9739 ((struct instance_array__NativeArray*)var103)->values[4] = (val*) var91;
9740 ((struct instance_array__NativeArray*)var103)->values[5] = (val*) var95;
9741 ((struct instance_array__NativeArray*)var103)->values[6] = (val*) var97;
9742 ((void (*)(val*, val*, long))(var101->class->vft[COLOR_array__Array__with_native]))(var101, var103, var102) /* with_native on <var101:Array[Object]>*/;
9743 }
9744 var104 = ((val* (*)(val*))(var101->class->vft[COLOR_string__Object__to_s]))(var101) /* to_s on <var101:Array[Object]>*/;
9745 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var104) /* add on <self:SeparateCompilerVisitor>*/;
9746 if (varonce105) {
9747 var106 = varonce105;
9748 } else {
9749 var107 = "printf(\"Dead code executed!\\n\"); show_backtrace(1);";
9750 var108 = 51;
9751 var109 = string__NativeString__to_s_with_length(var107, var108);
9752 var106 = var109;
9753 varonce105 = var106;
9754 }
9755 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var106) /* add on <self:SeparateCompilerVisitor>*/;
9756 var = var_res;
9757 goto RET_LABEL;
9758 } else {
9759 }
9760 if (varonce110) {
9761 var111 = varonce110;
9762 } else {
9763 var112 = "BOX_";
9764 var113 = 4;
9765 var114 = string__NativeString__to_s_with_length(var112, var113);
9766 var111 = var114;
9767 varonce110 = var111;
9768 }
9769 var115 = ((val* (*)(val*))(var_valtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_valtype) /* c_name on <var_valtype:MClassType>*/;
9770 var116 = NEW_array__Array(&type_array__Arraykernel__Object);
9771 { /* var116 = array_instance Array[Object] */
9772 var117 = 2;
9773 var118 = NEW_array__NativeArray(var117, &type_array__NativeArraykernel__Object);
9774 ((struct instance_array__NativeArray*)var118)->values[0] = (val*) var111;
9775 ((struct instance_array__NativeArray*)var118)->values[1] = (val*) var115;
9776 ((void (*)(val*, val*, long))(var116->class->vft[COLOR_array__Array__with_native]))(var116, var118, var117) /* with_native on <var116:Array[Object]>*/;
9777 }
9778 var119 = ((val* (*)(val*))(var116->class->vft[COLOR_string__Object__to_s]))(var116) /* to_s on <var116:Array[Object]>*/;
9779 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration]))(self, var119) /* require_declaration on <self:SeparateCompilerVisitor>*/;
9780 if (varonce120) {
9781 var121 = varonce120;
9782 } else {
9783 var122 = " = BOX_";
9784 var123 = 7;
9785 var124 = string__NativeString__to_s_with_length(var122, var123);
9786 var121 = var124;
9787 varonce120 = var121;
9788 }
9789 var125 = ((val* (*)(val*))(var_valtype->class->vft[COLOR_abstract_compiler__MType__c_name]))(var_valtype) /* c_name on <var_valtype:MClassType>*/;
9790 if (varonce126) {
9791 var127 = varonce126;
9792 } else {
9793 var128 = "(";
9794 var129 = 1;
9795 var130 = string__NativeString__to_s_with_length(var128, var129);
9796 var127 = var130;
9797 varonce126 = var127;
9798 }
9799 if (varonce131) {
9800 var132 = varonce131;
9801 } else {
9802 var133 = "); /* autobox from ";
9803 var134 = 19;
9804 var135 = string__NativeString__to_s_with_length(var133, var134);
9805 var132 = var135;
9806 varonce131 = var132;
9807 }
9808 var136 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9809 if (varonce137) {
9810 var138 = varonce137;
9811 } else {
9812 var139 = " to ";
9813 var140 = 4;
9814 var141 = string__NativeString__to_s_with_length(var139, var140);
9815 var138 = var141;
9816 varonce137 = var138;
9817 }
9818 if (varonce142) {
9819 var143 = varonce142;
9820 } else {
9821 var144 = " */";
9822 var145 = 3;
9823 var146 = string__NativeString__to_s_with_length(var144, var145);
9824 var143 = var146;
9825 varonce142 = var143;
9826 }
9827 var147 = NEW_array__Array(&type_array__Arraykernel__Object);
9828 { /* var147 = array_instance Array[Object] */
9829 var148 = 10;
9830 var149 = NEW_array__NativeArray(var148, &type_array__NativeArraykernel__Object);
9831 ((struct instance_array__NativeArray*)var149)->values[0] = (val*) var_res;
9832 ((struct instance_array__NativeArray*)var149)->values[1] = (val*) var121;
9833 ((struct instance_array__NativeArray*)var149)->values[2] = (val*) var125;
9834 ((struct instance_array__NativeArray*)var149)->values[3] = (val*) var127;
9835 ((struct instance_array__NativeArray*)var149)->values[4] = (val*) var_value;
9836 ((struct instance_array__NativeArray*)var149)->values[5] = (val*) var132;
9837 ((struct instance_array__NativeArray*)var149)->values[6] = (val*) var136;
9838 ((struct instance_array__NativeArray*)var149)->values[7] = (val*) var138;
9839 ((struct instance_array__NativeArray*)var149)->values[8] = (val*) var_mtype;
9840 ((struct instance_array__NativeArray*)var149)->values[9] = (val*) var143;
9841 ((void (*)(val*, val*, long))(var147->class->vft[COLOR_array__Array__with_native]))(var147, var149, var148) /* with_native on <var147:Array[Object]>*/;
9842 }
9843 var150 = ((val* (*)(val*))(var147->class->vft[COLOR_string__Object__to_s]))(var147) /* to_s on <var147:Array[Object]>*/;
9844 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var150) /* add on <self:SeparateCompilerVisitor>*/;
9845 var = var_res;
9846 goto RET_LABEL;
9847 } else {
9848 var152 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9849 var153 = ((val* (*)(val*))(var152->class->vft[COLOR_nitni_base__MType__cname_blind]))(var152) /* cname_blind on <var152:MType>*/;
9850 if (varonce154) {
9851 var155 = varonce154;
9852 } else {
9853 var156 = "void*";
9854 var157 = 5;
9855 var158 = string__NativeString__to_s_with_length(var156, var157);
9856 var155 = var158;
9857 varonce154 = var155;
9858 }
9859 var159 = ((short int (*)(val*, val*))(var153->class->vft[COLOR_kernel__Object___61d_61d]))(var153, var155) /* == on <var153:String>*/;
9860 var_160 = var159;
9861 if (var159){
9862 var161 = ((val* (*)(val*))(var_mtype->class->vft[COLOR_nitni_base__MType__cname_blind]))(var_mtype) /* cname_blind on <var_mtype:MType>*/;
9863 if (varonce162) {
9864 var163 = varonce162;
9865 } else {
9866 var164 = "void*";
9867 var165 = 5;
9868 var166 = string__NativeString__to_s_with_length(var164, var165);
9869 var163 = var166;
9870 varonce162 = var163;
9871 }
9872 var167 = ((short int (*)(val*, val*))(var161->class->vft[COLOR_kernel__Object___61d_61d]))(var161, var163) /* == on <var161:String>*/;
9873 var151 = var167;
9874 } else {
9875 var151 = var_160;
9876 }
9877 if (var151){
9878 var = var_value;
9879 goto RET_LABEL;
9880 } else {
9881 var168 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var]))(self, var_mtype) /* new_var on <self:SeparateCompilerVisitor>*/;
9882 var_res169 = var168;
9883 if (varonce170) {
9884 var171 = varonce170;
9885 } else {
9886 var172 = "/* ";
9887 var173 = 3;
9888 var174 = string__NativeString__to_s_with_length(var172, var173);
9889 var171 = var174;
9890 varonce170 = var171;
9891 }
9892 if (varonce175) {
9893 var176 = varonce175;
9894 } else {
9895 var177 = " left unintialized (cannot convert ";
9896 var178 = 35;
9897 var179 = string__NativeString__to_s_with_length(var177, var178);
9898 var176 = var179;
9899 varonce175 = var176;
9900 }
9901 var180 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9902 if (varonce181) {
9903 var182 = varonce181;
9904 } else {
9905 var183 = " to ";
9906 var184 = 4;
9907 var185 = string__NativeString__to_s_with_length(var183, var184);
9908 var182 = var185;
9909 varonce181 = var182;
9910 }
9911 if (varonce186) {
9912 var187 = varonce186;
9913 } else {
9914 var188 = ") */";
9915 var189 = 4;
9916 var190 = string__NativeString__to_s_with_length(var188, var189);
9917 var187 = var190;
9918 varonce186 = var187;
9919 }
9920 var191 = NEW_array__Array(&type_array__Arraykernel__Object);
9921 { /* var191 = array_instance Array[Object] */
9922 var192 = 7;
9923 var193 = NEW_array__NativeArray(var192, &type_array__NativeArraykernel__Object);
9924 ((struct instance_array__NativeArray*)var193)->values[0] = (val*) var171;
9925 ((struct instance_array__NativeArray*)var193)->values[1] = (val*) var_res169;
9926 ((struct instance_array__NativeArray*)var193)->values[2] = (val*) var176;
9927 ((struct instance_array__NativeArray*)var193)->values[3] = (val*) var180;
9928 ((struct instance_array__NativeArray*)var193)->values[4] = (val*) var182;
9929 ((struct instance_array__NativeArray*)var193)->values[5] = (val*) var_mtype;
9930 ((struct instance_array__NativeArray*)var193)->values[6] = (val*) var187;
9931 ((void (*)(val*, val*, long))(var191->class->vft[COLOR_array__Array__with_native]))(var191, var193, var192) /* with_native on <var191:Array[Object]>*/;
9932 }
9933 var194 = ((val* (*)(val*))(var191->class->vft[COLOR_string__Object__to_s]))(var191) /* to_s on <var191:Array[Object]>*/;
9934 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var194) /* add on <self:SeparateCompilerVisitor>*/;
9935 if (varonce195) {
9936 var196 = varonce195;
9937 } else {
9938 var197 = "printf(\"Cast error: Cannot cast %s to %s.\\n\", \"";
9939 var198 = 47;
9940 var199 = string__NativeString__to_s_with_length(var197, var198);
9941 var196 = var199;
9942 varonce195 = var196;
9943 }
9944 var200 = ((val* (*)(val*))(var_value->class->vft[COLOR_abstract_compiler__RuntimeVariable__mtype]))(var_value) /* mtype on <var_value:RuntimeVariable>*/;
9945 if (varonce201) {
9946 var202 = varonce201;
9947 } else {
9948 var203 = "\", \"";
9949 var204 = 4;
9950 var205 = string__NativeString__to_s_with_length(var203, var204);
9951 var202 = var205;
9952 varonce201 = var202;
9953 }
9954 if (varonce206) {
9955 var207 = varonce206;
9956 } else {
9957 var208 = "\"); show_backtrace(1);";
9958 var209 = 22;
9959 var210 = string__NativeString__to_s_with_length(var208, var209);
9960 var207 = var210;
9961 varonce206 = var207;
9962 }
9963 var211 = NEW_array__Array(&type_array__Arraykernel__Object);
9964 { /* var211 = array_instance Array[Object] */
9965 var212 = 5;
9966 var213 = NEW_array__NativeArray(var212, &type_array__NativeArraykernel__Object);
9967 ((struct instance_array__NativeArray*)var213)->values[0] = (val*) var196;
9968 ((struct instance_array__NativeArray*)var213)->values[1] = (val*) var200;
9969 ((struct instance_array__NativeArray*)var213)->values[2] = (val*) var202;
9970 ((struct instance_array__NativeArray*)var213)->values[3] = (val*) var_mtype;
9971 ((struct instance_array__NativeArray*)var213)->values[4] = (val*) var207;
9972 ((void (*)(val*, val*, long))(var211->class->vft[COLOR_array__Array__with_native]))(var211, var213, var212) /* with_native on <var211:Array[Object]>*/;
9973 }
9974 var214 = ((val* (*)(val*))(var211->class->vft[COLOR_string__Object__to_s]))(var211) /* to_s on <var211:Array[Object]>*/;
9975 ((void (*)(val*, val*))(self->class->vft[COLOR_abstract_compiler__AbstractCompilerVisitor__add]))(self, var214) /* add on <self:SeparateCompilerVisitor>*/;
9976 var = var_res169;
9977 goto RET_LABEL;
9978 }
9979 }
9980 }
9981 }
9982 }
9983 RET_LABEL:;
9984 return var;
9985 }
9986 /* method separate_compiler#SeparateCompilerVisitor#autobox for (self: Object, RuntimeVariable, MType): RuntimeVariable */
9987 val* VIRTUAL_separate_compiler__SeparateCompilerVisitor__autobox(val* self, val* p0, val* p1) {
9988 val* var /* : RuntimeVariable */;
9989 val* var1 /* : RuntimeVariable */;
9990 var1 = separate_compiler__SeparateCompilerVisitor__autobox(self, p0, p1);
9991 var = var1;
9992 RET_LABEL:;
9993 return var;
9994 }