1 #include "separate_erasure_compiler.sep.0.h"
2 /* method separate_erasure_compiler#ToolContext#opt_erasure for (self: ToolContext): OptionBool */
3 val
* separate_erasure_compiler__ToolContext__opt_erasure(val
* self
) {
4 val
* var
/* : OptionBool */;
5 val
* var1
/* : OptionBool */;
6 var1
= self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_erasure
].val
; /* _opt_erasure on <self:ToolContext> */
7 if (unlikely(var1
== NULL
)) {
8 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_erasure");
9 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 22);
16 /* method separate_erasure_compiler#ToolContext#opt_erasure for (self: Object): OptionBool */
17 val
* VIRTUAL_separate_erasure_compiler__ToolContext__opt_erasure(val
* self
) {
18 val
* var
/* : OptionBool */;
19 val
* var1
/* : OptionBool */;
20 val
* var3
/* : OptionBool */;
21 { /* Inline separate_erasure_compiler#ToolContext#opt_erasure (self) on <self:Object(ToolContext)> */
22 var3
= self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_erasure
].val
; /* _opt_erasure on <self:Object(ToolContext)> */
23 if (unlikely(var3
== NULL
)) {
24 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_erasure");
25 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 22);
35 /* method separate_erasure_compiler#ToolContext#opt_rta for (self: ToolContext): OptionBool */
36 val
* separate_erasure_compiler__ToolContext__opt_rta(val
* self
) {
37 val
* var
/* : OptionBool */;
38 val
* var1
/* : OptionBool */;
39 var1
= self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_rta
].val
; /* _opt_rta on <self:ToolContext> */
40 if (unlikely(var1
== NULL
)) {
41 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_rta");
42 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 24);
49 /* method separate_erasure_compiler#ToolContext#opt_rta for (self: Object): OptionBool */
50 val
* VIRTUAL_separate_erasure_compiler__ToolContext__opt_rta(val
* self
) {
51 val
* var
/* : OptionBool */;
52 val
* var1
/* : OptionBool */;
53 val
* var3
/* : OptionBool */;
54 { /* Inline separate_erasure_compiler#ToolContext#opt_rta (self) on <self:Object(ToolContext)> */
55 var3
= self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_rta
].val
; /* _opt_rta on <self:Object(ToolContext)> */
56 if (unlikely(var3
== NULL
)) {
57 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_rta");
58 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 24);
68 /* method separate_erasure_compiler#ToolContext#opt_no_check_erasure_cast for (self: ToolContext): OptionBool */
69 val
* separate_erasure_compiler__ToolContext__opt_no_check_erasure_cast(val
* self
) {
70 val
* var
/* : OptionBool */;
71 val
* var1
/* : OptionBool */;
72 var1
= self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_no_check_erasure_cast
].val
; /* _opt_no_check_erasure_cast on <self:ToolContext> */
73 if (unlikely(var1
== NULL
)) {
74 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_erasure_cast");
75 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 26);
82 /* method separate_erasure_compiler#ToolContext#opt_no_check_erasure_cast for (self: Object): OptionBool */
83 val
* VIRTUAL_separate_erasure_compiler__ToolContext__opt_no_check_erasure_cast(val
* self
) {
84 val
* var
/* : OptionBool */;
85 val
* var1
/* : OptionBool */;
86 val
* var3
/* : OptionBool */;
87 { /* Inline separate_erasure_compiler#ToolContext#opt_no_check_erasure_cast (self) on <self:Object(ToolContext)> */
88 var3
= self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_no_check_erasure_cast
].val
; /* _opt_no_check_erasure_cast on <self:Object(ToolContext)> */
89 if (unlikely(var3
== NULL
)) {
90 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_erasure_cast");
91 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 26);
101 /* method separate_erasure_compiler#ToolContext#init for (self: ToolContext) */
102 void separate_erasure_compiler__ToolContext__init(val
* self
) {
103 val
* var
/* : OptionContext */;
104 val
* var2
/* : OptionContext */;
105 val
* var3
/* : OptionBool */;
106 val
* var5
/* : OptionBool */;
107 val
* var6
/* : OptionBool */;
108 val
* var8
/* : OptionBool */;
109 val
* var9
/* : OptionBool */;
110 val
* var11
/* : OptionBool */;
111 val
* var12
/* : Array[Option] */;
112 long var13
/* : Int */;
113 val
* var14
/* : NativeArray[Option] */;
115 ((void (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__ToolContext__init
]))(self
) /* init on <self:ToolContext>*/;
118 { /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
119 var2
= self
->attrs
[COLOR_toolcontext__ToolContext___option_context
].val
; /* _option_context on <self:ToolContext> */
120 if (unlikely(var2
== NULL
)) {
121 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
122 PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
130 { /* Inline separate_erasure_compiler#ToolContext#opt_erasure (self) on <self:ToolContext> */
131 var5
= self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_erasure
].val
; /* _opt_erasure on <self:ToolContext> */
132 if (unlikely(var5
== NULL
)) {
133 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_erasure");
134 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 22);
142 { /* Inline separate_erasure_compiler#ToolContext#opt_no_check_erasure_cast (self) on <self:ToolContext> */
143 var8
= self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_no_check_erasure_cast
].val
; /* _opt_no_check_erasure_cast on <self:ToolContext> */
144 if (unlikely(var8
== NULL
)) {
145 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_erasure_cast");
146 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 26);
154 { /* Inline separate_erasure_compiler#ToolContext#opt_rta (self) on <self:ToolContext> */
155 var11
= self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_rta
].val
; /* _opt_rta on <self:ToolContext> */
156 if (unlikely(var11
== NULL
)) {
157 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_rta");
158 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 24);
165 var12
= NEW_array__Array(&type_array__Arrayopts__Option
);
166 { /* var12 = array_instance Array[Option] */
168 var14
= NEW_array__NativeArray(var13
, &type_array__NativeArrayopts__Option
);
169 ((struct instance_array__NativeArray
*)var14
)->values
[0] = (val
*) var3
;
170 ((struct instance_array__NativeArray
*)var14
)->values
[1] = (val
*) var6
;
171 ((struct instance_array__NativeArray
*)var14
)->values
[2] = (val
*) var9
;
173 ((void (*)(val
*, val
*, long))(var12
->class->vft
[COLOR_array__Array__with_native
]))(var12
, var14
, var13
) /* with_native on <var12:Array[Option]>*/;
177 opts__OptionContext__add_option(var
, var12
); /* Direct call opts#OptionContext#add_option on <var:OptionContext>*/
181 /* method separate_erasure_compiler#ToolContext#init for (self: Object) */
182 void VIRTUAL_separate_erasure_compiler__ToolContext__init(val
* self
) {
183 separate_erasure_compiler__ToolContext__init(self
); /* Direct call separate_erasure_compiler#ToolContext#init on <self:Object(ToolContext)>*/
186 /* method separate_erasure_compiler#ErasureCompilerPhase#process_mainmodule for (self: ErasureCompilerPhase, MModule, SequenceRead[MModule]) */
187 void separate_erasure_compiler__ErasureCompilerPhase__process_mainmodule(val
* self
, val
* p0
, val
* p1
) {
188 val
* var_mainmodule
/* var mainmodule: MModule */;
189 val
* var_given_mmodules
/* var given_mmodules: SequenceRead[MModule] */;
190 val
* var
/* : ToolContext */;
191 val
* var2
/* : ToolContext */;
192 val
* var3
/* : OptionBool */;
193 val
* var5
/* : OptionBool */;
194 val
* var6
/* : nullable Object */;
195 val
* var8
/* : nullable Object */;
196 short int var9
/* : Bool */;
197 short int var10
/* : Bool */;
198 val
* var11
/* : ToolContext */;
199 val
* var13
/* : ToolContext */;
200 val
* var14
/* : ModelBuilder */;
201 val
* var_modelbuilder
/* var modelbuilder: ModelBuilder */;
202 val
* var15
/* : null */;
203 val
* var_analysis
/* var analysis: nullable Object */;
204 val
* var16
/* : ToolContext */;
205 val
* var18
/* : ToolContext */;
206 val
* var19
/* : OptionBool */;
207 val
* var21
/* : OptionBool */;
208 val
* var22
/* : nullable Object */;
209 val
* var24
/* : nullable Object */;
210 short int var25
/* : Bool */;
211 val
* var26
/* : RapidTypeAnalysis */;
213 var_given_mmodules
= p1
;
215 { /* Inline phase#Phase#toolcontext (self) on <self:ErasureCompilerPhase> */
216 var2
= self
->attrs
[COLOR_phase__Phase___toolcontext
].val
; /* _toolcontext on <self:ErasureCompilerPhase> */
217 if (unlikely(var2
== NULL
)) {
218 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
219 PRINT_ERROR(" (%s:%d)\n", "src/phase.nit", 145);
227 { /* Inline separate_erasure_compiler#ToolContext#opt_erasure (var) on <var:ToolContext> */
228 var5
= var
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_erasure
].val
; /* _opt_erasure on <var:ToolContext> */
229 if (unlikely(var5
== NULL
)) {
230 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_erasure");
231 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 22);
239 { /* Inline opts#Option#value (var3) on <var3:OptionBool> */
240 var8
= var3
->attrs
[COLOR_opts__Option___value
].val
; /* _value on <var3:OptionBool> */
245 var9
= ((struct instance_kernel__Bool
*)var6
)->value
; /* autounbox from nullable Object to Bool */;
252 { /* Inline phase#Phase#toolcontext (self) on <self:ErasureCompilerPhase> */
253 var13
= self
->attrs
[COLOR_phase__Phase___toolcontext
].val
; /* _toolcontext on <self:ErasureCompilerPhase> */
254 if (unlikely(var13
== NULL
)) {
255 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
256 PRINT_ERROR(" (%s:%d)\n", "src/phase.nit", 145);
264 var14
= modelbuilder__ToolContext__modelbuilder(var11
);
266 var_modelbuilder
= var14
;
268 var_analysis
= var15
;
270 { /* Inline phase#Phase#toolcontext (self) on <self:ErasureCompilerPhase> */
271 var18
= self
->attrs
[COLOR_phase__Phase___toolcontext
].val
; /* _toolcontext on <self:ErasureCompilerPhase> */
272 if (unlikely(var18
== NULL
)) {
273 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
274 PRINT_ERROR(" (%s:%d)\n", "src/phase.nit", 145);
282 { /* Inline separate_erasure_compiler#ToolContext#opt_rta (var16) on <var16:ToolContext> */
283 var21
= var16
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_rta
].val
; /* _opt_rta on <var16:ToolContext> */
284 if (unlikely(var21
== NULL
)) {
285 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_rta");
286 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 24);
294 { /* Inline opts#Option#value (var19) on <var19:OptionBool> */
295 var24
= var19
->attrs
[COLOR_opts__Option___value
].val
; /* _value on <var19:OptionBool> */
300 var25
= ((struct instance_kernel__Bool
*)var22
)->value
; /* autounbox from nullable Object to Bool */;
303 var26
= rapid_type_analysis__ModelBuilder__do_rapid_type_analysis(var_modelbuilder
, var_mainmodule
);
305 var_analysis
= var26
;
309 separate_erasure_compiler__ModelBuilder__run_separate_erasure_compiler(var_modelbuilder
, var_mainmodule
, var_analysis
); /* Direct call separate_erasure_compiler#ModelBuilder#run_separate_erasure_compiler on <var_modelbuilder:ModelBuilder>*/
313 /* method separate_erasure_compiler#ErasureCompilerPhase#process_mainmodule for (self: Object, MModule, SequenceRead[MModule]) */
314 void VIRTUAL_separate_erasure_compiler__ErasureCompilerPhase__process_mainmodule(val
* self
, val
* p0
, val
* p1
) {
315 separate_erasure_compiler__ErasureCompilerPhase__process_mainmodule(self
, p0
, p1
); /* Direct call separate_erasure_compiler#ErasureCompilerPhase#process_mainmodule on <self:Object(ErasureCompilerPhase)>*/
318 /* method separate_erasure_compiler#ModelBuilder#run_separate_erasure_compiler for (self: ModelBuilder, MModule, nullable RapidTypeAnalysis) */
319 void separate_erasure_compiler__ModelBuilder__run_separate_erasure_compiler(val
* self
, val
* p0
, val
* p1
) {
320 val
* var_mainmodule
/* var mainmodule: MModule */;
321 val
* var_runtime_type_analysis
/* var runtime_type_analysis: nullable RapidTypeAnalysis */;
322 long var
/* : Int */;
323 long var2
/* : Int */;
324 long var_time0
/* var time0: Int */;
325 val
* var3
/* : ToolContext */;
326 val
* var5
/* : ToolContext */;
328 val
* var6
/* : String */;
329 char* var7
/* : NativeString */;
330 long var8
/* : Int */;
331 val
* var9
/* : FlatString */;
332 long var10
/* : Int */;
333 val
* var11
/* : SeparateErasureCompiler */;
334 val
* var_compiler
/* var compiler: SeparateErasureCompiler */;
335 val
* var12
/* : ToolContext */;
336 val
* var14
/* : ToolContext */;
337 static val
* varonce15
;
338 val
* var16
/* : String */;
339 char* var17
/* : NativeString */;
340 long var18
/* : Int */;
341 val
* var19
/* : FlatString */;
342 long var20
/* : Int */;
343 val
* var21
/* : String */;
344 val
* var23
/* : String */;
345 static val
* varonce24
;
346 val
* var25
/* : String */;
347 char* var26
/* : NativeString */;
348 long var27
/* : Int */;
349 val
* var28
/* : FlatString */;
350 val
* var29
/* : Array[Object] */;
351 long var30
/* : Int */;
352 val
* var31
/* : NativeArray[Object] */;
353 val
* var32
/* : String */;
354 val
* var33
/* : CodeFile */;
355 val
* var34
/* : POSetElement[MModule] */;
356 val
* var36
/* : POSetElement[MModule] */;
357 val
* var37
/* : Collection[Object] */;
358 val
* var38
/* : Iterator[nullable Object] */;
359 short int var39
/* : Bool */;
360 val
* var40
/* : nullable Object */;
361 val
* var_m
/* var m: MModule */;
362 val
* var41
/* : Array[MClass] */;
363 val
* var43
/* : Array[MClass] */;
364 val
* var44
/* : ArrayIterator[nullable Object] */;
365 short int var45
/* : Bool */;
366 val
* var46
/* : nullable Object */;
367 val
* var_mclass
/* var mclass: MClass */;
368 val
* var48
/* : Map[MVirtualTypeProp, Int] */;
369 val
* var50
/* : Map[MVirtualTypeProp, Int] */;
370 val
* var51
/* : String */;
371 val
* var53
/* : String */;
372 static val
* varonce54
;
373 val
* var55
/* : String */;
374 char* var56
/* : NativeString */;
375 long var57
/* : Int */;
376 val
* var58
/* : FlatString */;
377 val
* var59
/* : Array[Object] */;
378 long var60
/* : Int */;
379 val
* var61
/* : NativeArray[Object] */;
380 val
* var62
/* : String */;
381 val
* var63
/* : CodeFile */;
382 val
* var64
/* : POSetElement[MModule] */;
383 val
* var66
/* : POSetElement[MModule] */;
384 val
* var67
/* : Collection[Object] */;
385 val
* var68
/* : Iterator[nullable Object] */;
386 short int var69
/* : Bool */;
387 val
* var70
/* : nullable Object */;
388 val
* var_m71
/* var m: MModule */;
389 val
* var72
/* : ToolContext */;
390 val
* var74
/* : ToolContext */;
391 static val
* varonce75
;
392 val
* var76
/* : String */;
393 char* var77
/* : NativeString */;
394 long var78
/* : Int */;
395 val
* var79
/* : FlatString */;
396 val
* var80
/* : Array[Object] */;
397 long var81
/* : Int */;
398 val
* var82
/* : NativeArray[Object] */;
399 val
* var83
/* : String */;
400 long var84
/* : Int */;
401 val
* var85
/* : String */;
402 val
* var87
/* : String */;
403 static val
* varonce88
;
404 val
* var89
/* : String */;
405 char* var90
/* : NativeString */;
406 long var91
/* : Int */;
407 val
* var92
/* : FlatString */;
408 val
* var93
/* : Array[Object] */;
409 long var94
/* : Int */;
410 val
* var95
/* : NativeArray[Object] */;
411 val
* var96
/* : String */;
412 val
* var97
/* : CodeFile */;
413 long var99
/* : Int */;
414 long var101
/* : Int */;
415 long var_time1
/* var time1: Int */;
416 val
* var102
/* : ToolContext */;
417 val
* var104
/* : ToolContext */;
418 static val
* varonce105
;
419 val
* var106
/* : String */;
420 char* var107
/* : NativeString */;
421 long var108
/* : Int */;
422 val
* var109
/* : FlatString */;
423 long var110
/* : Int */;
424 short int var112
/* : Bool */;
427 const char* var_class_name
;
428 long var113
/* : Int */;
429 static val
* varonce114
;
430 val
* var115
/* : String */;
431 char* var116
/* : NativeString */;
432 long var117
/* : Int */;
433 val
* var118
/* : FlatString */;
434 val
* var119
/* : Array[Object] */;
435 long var120
/* : Int */;
436 val
* var121
/* : NativeArray[Object] */;
437 val
* var122
/* : Object */;
438 val
* var123
/* : String */;
439 long var124
/* : Int */;
441 var_runtime_type_analysis
= p1
;
443 { /* Inline time#Object#get_time (self) on <self:ModelBuilder> */
444 var2
= kernel_Any_Any_get_time_0(self
);
452 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
453 var5
= self
->attrs
[COLOR_modelbuilder__ModelBuilder___toolcontext
].val
; /* _toolcontext on <self:ModelBuilder> */
454 if (unlikely(var5
== NULL
)) {
455 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
456 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
466 var7
= "*** GENERATING C ***";
468 var9
= string__NativeString__to_s_with_length(var7
, var8
);
474 toolcontext__ToolContext__info(var3
, var6
, var10
); /* Direct call toolcontext#ToolContext#info on <var3:ToolContext>*/
476 var11
= NEW_separate_erasure_compiler__SeparateErasureCompiler(&type_separate_erasure_compiler__SeparateErasureCompiler
);
478 separate_erasure_compiler__SeparateErasureCompiler__init(var11
, var_mainmodule
, self
, var_runtime_type_analysis
); /* Direct call separate_erasure_compiler#SeparateErasureCompiler#init on <var11:SeparateErasureCompiler>*/
480 var_compiler
= var11
;
482 abstract_compiler__AbstractCompiler__compile_header(var_compiler
); /* Direct call abstract_compiler#AbstractCompiler#compile_header on <var_compiler:SeparateErasureCompiler>*/
485 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
486 var14
= self
->attrs
[COLOR_modelbuilder__ModelBuilder___toolcontext
].val
; /* _toolcontext on <self:ModelBuilder> */
487 if (unlikely(var14
== NULL
)) {
488 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
489 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
499 var17
= "Property coloring";
501 var19
= string__NativeString__to_s_with_length(var17
, var18
);
507 toolcontext__ToolContext__info(var12
, var16
, var20
); /* Direct call toolcontext#ToolContext#info on <var12:ToolContext>*/
510 { /* Inline mmodule#MModule#name (var_mainmodule) on <var_mainmodule:MModule> */
511 var23
= var_mainmodule
->attrs
[COLOR_mmodule__MModule___name
].val
; /* _name on <var_mainmodule:MModule> */
512 if (unlikely(var23
== NULL
)) {
513 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
514 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 86);
526 var28
= string__NativeString__to_s_with_length(var26
, var27
);
530 var29
= NEW_array__Array(&type_array__Arraykernel__Object
);
531 { /* var29 = array_instance Array[Object] */
533 var31
= NEW_array__NativeArray(var30
, &type_array__NativeArraykernel__Object
);
534 ((struct instance_array__NativeArray
*)var31
)->values
[0] = (val
*) var21
;
535 ((struct instance_array__NativeArray
*)var31
)->values
[1] = (val
*) var25
;
537 ((void (*)(val
*, val
*, long))(var29
->class->vft
[COLOR_array__Array__with_native
]))(var29
, var31
, var30
) /* with_native on <var29:Array[Object]>*/;
541 var32
= ((val
* (*)(val
*))(var29
->class->vft
[COLOR_string__Object__to_s
]))(var29
) /* to_s on <var29:Array[Object]>*/;
544 var33
= abstract_compiler__AbstractCompiler__new_file(var_compiler
, var32
);
548 separate_compiler__SeparateCompiler__do_property_coloring(var_compiler
); /* Direct call separate_compiler#SeparateCompiler#do_property_coloring on <var_compiler:SeparateErasureCompiler>*/
551 { /* Inline mmodule#MModule#in_importation (var_mainmodule) on <var_mainmodule:MModule> */
552 var36
= var_mainmodule
->attrs
[COLOR_mmodule__MModule___in_importation
].val
; /* _in_importation on <var_mainmodule:MModule> */
553 if (unlikely(var36
== NULL
)) {
554 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
555 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
563 var37
= poset__POSetElement__greaters(var34
);
566 var38
= ((val
* (*)(val
*))(var37
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var37
) /* iterator on <var37:Collection[Object](Collection[MModule])>*/;
570 var39
= ((short int (*)(val
*))(var38
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var38
) /* is_ok on <var38:Iterator[nullable Object]>*/;
574 var40
= ((val
* (*)(val
*))(var38
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var38
) /* item on <var38:Iterator[nullable Object]>*/;
578 { /* Inline model#MModule#intro_mclasses (var_m) on <var_m:MModule> */
579 var43
= var_m
->attrs
[COLOR_model__MModule___intro_mclasses
].val
; /* _intro_mclasses on <var_m:MModule> */
580 if (unlikely(var43
== NULL
)) {
581 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mclasses");
582 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 138);
590 var44
= array__AbstractArrayRead__iterator(var41
);
594 var45
= array__ArrayIterator__is_ok(var44
);
598 var46
= array__ArrayIterator__item(var44
);
602 separate_erasure_compiler__SeparateErasureCompiler__compile_class_to_c(var_compiler
, var_mclass
); /* Direct call separate_erasure_compiler#SeparateErasureCompiler#compile_class_to_c on <var_compiler:SeparateErasureCompiler>*/
604 CONTINUE_label
: (void)0;
606 array__ArrayIterator__next(var44
); /* Direct call array#ArrayIterator#next on <var44:ArrayIterator[nullable Object]>*/
609 BREAK_label
: (void)0;
610 CONTINUE_label47
: (void)0;
612 ((void (*)(val
*))(var38
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var38
) /* next on <var38:Iterator[nullable Object]>*/;
615 BREAK_label47
: (void)0;
617 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors (var_compiler) on <var_compiler:SeparateErasureCompiler> */
618 var50
= var_compiler
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors
].val
; /* _vt_colors on <var_compiler:SeparateErasureCompiler> */
619 if (unlikely(var50
== NULL
)) {
620 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
621 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 97);
629 separate_compiler__SeparateCompiler__compile_color_consts(var_compiler
, var48
); /* Direct call separate_compiler#SeparateCompiler#compile_color_consts on <var_compiler:SeparateErasureCompiler>*/
632 { /* Inline mmodule#MModule#name (var_mainmodule) on <var_mainmodule:MModule> */
633 var53
= var_mainmodule
->attrs
[COLOR_mmodule__MModule___name
].val
; /* _name on <var_mainmodule:MModule> */
634 if (unlikely(var53
== NULL
)) {
635 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
636 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 86);
648 var58
= string__NativeString__to_s_with_length(var56
, var57
);
652 var59
= NEW_array__Array(&type_array__Arraykernel__Object
);
653 { /* var59 = array_instance Array[Object] */
655 var61
= NEW_array__NativeArray(var60
, &type_array__NativeArraykernel__Object
);
656 ((struct instance_array__NativeArray
*)var61
)->values
[0] = (val
*) var51
;
657 ((struct instance_array__NativeArray
*)var61
)->values
[1] = (val
*) var55
;
659 ((void (*)(val
*, val
*, long))(var59
->class->vft
[COLOR_array__Array__with_native
]))(var59
, var61
, var60
) /* with_native on <var59:Array[Object]>*/;
663 var62
= ((val
* (*)(val
*))(var59
->class->vft
[COLOR_string__Object__to_s
]))(var59
) /* to_s on <var59:Array[Object]>*/;
666 var63
= abstract_compiler__AbstractCompiler__new_file(var_compiler
, var62
);
670 abstract_compiler__AbstractCompiler__compile_nitni_global_ref_functions(var_compiler
); /* Direct call abstract_compiler#AbstractCompiler#compile_nitni_global_ref_functions on <var_compiler:SeparateErasureCompiler>*/
673 abstract_compiler__AbstractCompiler__compile_main_function(var_compiler
); /* Direct call abstract_compiler#AbstractCompiler#compile_main_function on <var_compiler:SeparateErasureCompiler>*/
676 { /* Inline mmodule#MModule#in_importation (var_mainmodule) on <var_mainmodule:MModule> */
677 var66
= var_mainmodule
->attrs
[COLOR_mmodule__MModule___in_importation
].val
; /* _in_importation on <var_mainmodule:MModule> */
678 if (unlikely(var66
== NULL
)) {
679 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _in_importation");
680 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 101);
688 var67
= poset__POSetElement__greaters(var64
);
691 var68
= ((val
* (*)(val
*))(var67
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var67
) /* iterator on <var67:Collection[Object](Collection[MModule])>*/;
695 var69
= ((short int (*)(val
*))(var68
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var68
) /* is_ok on <var68:Iterator[nullable Object]>*/;
699 var70
= ((val
* (*)(val
*))(var68
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var68
) /* item on <var68:Iterator[nullable Object]>*/;
703 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
704 var74
= self
->attrs
[COLOR_modelbuilder__ModelBuilder___toolcontext
].val
; /* _toolcontext on <self:ModelBuilder> */
705 if (unlikely(var74
== NULL
)) {
706 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
707 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
717 var77
= "Generate C for module ";
719 var79
= string__NativeString__to_s_with_length(var77
, var78
);
723 var80
= NEW_array__Array(&type_array__Arraykernel__Object
);
724 { /* var80 = array_instance Array[Object] */
726 var82
= NEW_array__NativeArray(var81
, &type_array__NativeArraykernel__Object
);
727 ((struct instance_array__NativeArray
*)var82
)->values
[0] = (val
*) var76
;
728 ((struct instance_array__NativeArray
*)var82
)->values
[1] = (val
*) var_m71
;
730 ((void (*)(val
*, val
*, long))(var80
->class->vft
[COLOR_array__Array__with_native
]))(var80
, var82
, var81
) /* with_native on <var80:Array[Object]>*/;
734 var83
= ((val
* (*)(val
*))(var80
->class->vft
[COLOR_string__Object__to_s
]))(var80
) /* to_s on <var80:Array[Object]>*/;
738 toolcontext__ToolContext__info(var72
, var83
, var84
); /* Direct call toolcontext#ToolContext#info on <var72:ToolContext>*/
741 { /* Inline mmodule#MModule#name (var_m71) on <var_m71:MModule> */
742 var87
= var_m71
->attrs
[COLOR_mmodule__MModule___name
].val
; /* _name on <var_m71:MModule> */
743 if (unlikely(var87
== NULL
)) {
744 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
745 PRINT_ERROR(" (%s:%d)\n", "src/model/mmodule.nit", 86);
757 var92
= string__NativeString__to_s_with_length(var90
, var91
);
761 var93
= NEW_array__Array(&type_array__Arraykernel__Object
);
762 { /* var93 = array_instance Array[Object] */
764 var95
= NEW_array__NativeArray(var94
, &type_array__NativeArraykernel__Object
);
765 ((struct instance_array__NativeArray
*)var95
)->values
[0] = (val
*) var85
;
766 ((struct instance_array__NativeArray
*)var95
)->values
[1] = (val
*) var89
;
768 ((void (*)(val
*, val
*, long))(var93
->class->vft
[COLOR_array__Array__with_native
]))(var93
, var95
, var94
) /* with_native on <var93:Array[Object]>*/;
772 var96
= ((val
* (*)(val
*))(var93
->class->vft
[COLOR_string__Object__to_s
]))(var93
) /* to_s on <var93:Array[Object]>*/;
775 var97
= abstract_compiler__AbstractCompiler__new_file(var_compiler
, var96
);
779 separate_compiler__SeparateCompiler__compile_module_to_c(var_compiler
, var_m71
); /* Direct call separate_compiler#SeparateCompiler#compile_module_to_c on <var_compiler:SeparateErasureCompiler>*/
781 CONTINUE_label98
: (void)0;
783 ((void (*)(val
*))(var68
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var68
) /* next on <var68:Iterator[nullable Object]>*/;
786 BREAK_label98
: (void)0;
788 separate_compiler__SeparateCompiler__display_stats(var_compiler
); /* Direct call separate_compiler#SeparateCompiler#display_stats on <var_compiler:SeparateErasureCompiler>*/
791 { /* Inline time#Object#get_time (self) on <self:ModelBuilder> */
792 var101
= kernel_Any_Any_get_time_0(self
);
795 RET_LABEL100
:(void)0;
800 { /* Inline modelbuilder#ModelBuilder#toolcontext (self) on <self:ModelBuilder> */
801 var104
= self
->attrs
[COLOR_modelbuilder__ModelBuilder___toolcontext
].val
; /* _toolcontext on <self:ModelBuilder> */
802 if (unlikely(var104
== NULL
)) {
803 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
804 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
808 RET_LABEL103
:(void)0;
814 var107
= "*** END GENERATING C: ";
816 var109
= string__NativeString__to_s_with_length(var107
, var108
);
821 { /* Inline kernel#Int#- (var_time1,var_time0) on <var_time1:Int> */
822 /* Covariant cast for argument 0 (i) <var_time0:Int> isa OTHER */
823 /* <var_time0:Int> isa OTHER */
824 var112
= 1; /* easy <var_time0:Int> isa OTHER*/
825 if (unlikely(!var112
)) {
826 var_class_name
= type_kernel__Int
.name
;
827 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name
);
828 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 331);
831 var113
= var_time1
- var_time0
;
834 RET_LABEL111
:(void)0;
842 var118
= string__NativeString__to_s_with_length(var116
, var117
);
846 var119
= NEW_array__Array(&type_array__Arraykernel__Object
);
847 { /* var119 = array_instance Array[Object] */
849 var121
= NEW_array__NativeArray(var120
, &type_array__NativeArraykernel__Object
);
850 ((struct instance_array__NativeArray
*)var121
)->values
[0] = (val
*) var106
;
851 var122
= BOX_kernel__Int(var110
); /* autobox from Int to Object */
852 ((struct instance_array__NativeArray
*)var121
)->values
[1] = (val
*) var122
;
853 ((struct instance_array__NativeArray
*)var121
)->values
[2] = (val
*) var115
;
855 ((void (*)(val
*, val
*, long))(var119
->class->vft
[COLOR_array__Array__with_native
]))(var119
, var121
, var120
) /* with_native on <var119:Array[Object]>*/;
859 var123
= ((val
* (*)(val
*))(var119
->class->vft
[COLOR_string__Object__to_s
]))(var119
) /* to_s on <var119:Array[Object]>*/;
863 toolcontext__ToolContext__info(var102
, var123
, var124
); /* Direct call toolcontext#ToolContext#info on <var102:ToolContext>*/
866 abstract_compiler__ModelBuilder__write_and_make(self
, var_compiler
); /* Direct call abstract_compiler#ModelBuilder#write_and_make on <self:ModelBuilder>*/
870 /* method separate_erasure_compiler#ModelBuilder#run_separate_erasure_compiler for (self: Object, MModule, nullable RapidTypeAnalysis) */
871 void VIRTUAL_separate_erasure_compiler__ModelBuilder__run_separate_erasure_compiler(val
* self
, val
* p0
, val
* p1
) {
872 separate_erasure_compiler__ModelBuilder__run_separate_erasure_compiler(self
, p0
, p1
); /* Direct call separate_erasure_compiler#ModelBuilder#run_separate_erasure_compiler on <self:Object(ModelBuilder)>*/
875 /* method separate_erasure_compiler#SeparateErasureCompiler#class_ids for (self: SeparateErasureCompiler): Map[MClass, Int] */
876 val
* separate_erasure_compiler__SeparateErasureCompiler__class_ids(val
* self
) {
877 val
* var
/* : Map[MClass, Int] */;
878 val
* var1
/* : Map[MClass, Int] */;
879 var1
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids
].val
; /* _class_ids on <self:SeparateErasureCompiler> */
880 if (unlikely(var1
== NULL
)) {
881 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_ids");
882 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 95);
889 /* method separate_erasure_compiler#SeparateErasureCompiler#class_ids for (self: Object): Map[MClass, Int] */
890 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_ids(val
* self
) {
891 val
* var
/* : Map[MClass, Int] */;
892 val
* var1
/* : Map[MClass, Int] */;
893 val
* var3
/* : Map[MClass, Int] */;
894 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_ids (self) on <self:Object(SeparateErasureCompiler)> */
895 var3
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids
].val
; /* _class_ids on <self:Object(SeparateErasureCompiler)> */
896 if (unlikely(var3
== NULL
)) {
897 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_ids");
898 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 95);
908 /* method separate_erasure_compiler#SeparateErasureCompiler#class_ids= for (self: SeparateErasureCompiler, Map[MClass, Int]) */
909 void separate_erasure_compiler__SeparateErasureCompiler__class_ids_61d(val
* self
, val
* p0
) {
910 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids
].val
= p0
; /* _class_ids on <self:SeparateErasureCompiler> */
913 /* method separate_erasure_compiler#SeparateErasureCompiler#class_ids= for (self: Object, Map[MClass, Int]) */
914 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_ids_61d(val
* self
, val
* p0
) {
915 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_ids= (self,p0) on <self:Object(SeparateErasureCompiler)> */
916 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids
].val
= p0
; /* _class_ids on <self:Object(SeparateErasureCompiler)> */
921 /* method separate_erasure_compiler#SeparateErasureCompiler#class_colors for (self: SeparateErasureCompiler): Map[MClass, Int] */
922 val
* separate_erasure_compiler__SeparateErasureCompiler__class_colors(val
* self
) {
923 val
* var
/* : Map[MClass, Int] */;
924 val
* var1
/* : Map[MClass, Int] */;
925 var1
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors
].val
; /* _class_colors on <self:SeparateErasureCompiler> */
926 if (unlikely(var1
== NULL
)) {
927 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
928 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 96);
935 /* method separate_erasure_compiler#SeparateErasureCompiler#class_colors for (self: Object): Map[MClass, Int] */
936 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_colors(val
* self
) {
937 val
* var
/* : Map[MClass, Int] */;
938 val
* var1
/* : Map[MClass, Int] */;
939 val
* var3
/* : Map[MClass, Int] */;
940 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_colors (self) on <self:Object(SeparateErasureCompiler)> */
941 var3
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors
].val
; /* _class_colors on <self:Object(SeparateErasureCompiler)> */
942 if (unlikely(var3
== NULL
)) {
943 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
944 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 96);
954 /* method separate_erasure_compiler#SeparateErasureCompiler#class_colors= for (self: SeparateErasureCompiler, Map[MClass, Int]) */
955 void separate_erasure_compiler__SeparateErasureCompiler__class_colors_61d(val
* self
, val
* p0
) {
956 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors
].val
= p0
; /* _class_colors on <self:SeparateErasureCompiler> */
959 /* method separate_erasure_compiler#SeparateErasureCompiler#class_colors= for (self: Object, Map[MClass, Int]) */
960 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_colors_61d(val
* self
, val
* p0
) {
961 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_colors= (self,p0) on <self:Object(SeparateErasureCompiler)> */
962 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors
].val
= p0
; /* _class_colors on <self:Object(SeparateErasureCompiler)> */
967 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_colors for (self: SeparateErasureCompiler): Map[MVirtualTypeProp, Int] */
968 val
* separate_erasure_compiler__SeparateErasureCompiler__vt_colors(val
* self
) {
969 val
* var
/* : Map[MVirtualTypeProp, Int] */;
970 val
* var1
/* : Map[MVirtualTypeProp, Int] */;
971 var1
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors
].val
; /* _vt_colors on <self:SeparateErasureCompiler> */
972 if (unlikely(var1
== NULL
)) {
973 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
974 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 97);
981 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_colors for (self: Object): Map[MVirtualTypeProp, Int] */
982 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__vt_colors(val
* self
) {
983 val
* var
/* : Map[MVirtualTypeProp, Int] */;
984 val
* var1
/* : Map[MVirtualTypeProp, Int] */;
985 val
* var3
/* : Map[MVirtualTypeProp, Int] */;
986 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors (self) on <self:Object(SeparateErasureCompiler)> */
987 var3
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors
].val
; /* _vt_colors on <self:Object(SeparateErasureCompiler)> */
988 if (unlikely(var3
== NULL
)) {
989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
990 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 97);
1000 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_colors= for (self: SeparateErasureCompiler, Map[MVirtualTypeProp, Int]) */
1001 void separate_erasure_compiler__SeparateErasureCompiler__vt_colors_61d(val
* self
, val
* p0
) {
1002 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors
].val
= p0
; /* _vt_colors on <self:SeparateErasureCompiler> */
1005 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_colors= for (self: Object, Map[MVirtualTypeProp, Int]) */
1006 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__vt_colors_61d(val
* self
, val
* p0
) {
1007 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors= (self,p0) on <self:Object(SeparateErasureCompiler)> */
1008 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors
].val
= p0
; /* _vt_colors on <self:Object(SeparateErasureCompiler)> */
1013 /* method separate_erasure_compiler#SeparateErasureCompiler#init for (self: SeparateErasureCompiler, MModule, ModelBuilder, nullable RapidTypeAnalysis) */
1014 void separate_erasure_compiler__SeparateErasureCompiler__init(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
1015 val
* var_mainmodule
/* var mainmodule: MModule */;
1016 val
* var_mmbuilder
/* var mmbuilder: ModelBuilder */;
1017 val
* var_runtime_type_analysis
/* var runtime_type_analysis: nullable RapidTypeAnalysis */;
1018 val
* var
/* : POSet[MClass] */;
1019 val
* var_poset
/* var poset: POSet[MClass] */;
1020 val
* var1
/* : HashSet[MClass] */;
1021 val
* var_mclasses
/* var mclasses: HashSet[MClass] */;
1022 val
* var2
/* : POSetColorer[MClass] */;
1023 val
* var_colorer
/* var colorer: POSetColorer[MClass] */;
1024 val
* var4
/* : Map[Object, Int] */;
1025 val
* var6
/* : Map[Object, Int] */;
1026 val
* var8
/* : Map[MClass, Array[nullable MClass]] */;
1027 val
* var10
/* : HashMap[MClass, Set[MVirtualTypeProp]] */;
1028 val
* var_vts
/* var vts: HashMap[MClass, Set[MVirtualTypeProp]] */;
1029 val
* var11
/* : Iterator[Object] */;
1030 short int var12
/* : Bool */;
1031 val
* var13
/* : nullable Object */;
1032 val
* var_mclass
/* var mclass: MClass */;
1033 val
* var14
/* : HashSet[MVirtualTypeProp] */;
1034 val
* var15
/* : MModule */;
1035 val
* var17
/* : MModule */;
1036 val
* var18
/* : Set[MProperty] */;
1037 val
* var19
/* : Iterator[nullable Object] */;
1038 short int var20
/* : Bool */;
1039 val
* var21
/* : nullable Object */;
1040 val
* var_mprop
/* var mprop: MProperty */;
1041 short int var22
/* : Bool */;
1044 val
* var23
/* : nullable Object */;
1045 val
* var25
/* : POSetBucketsColorer[MClass, MVirtualTypeProp] */;
1046 val
* var26
/* : Map[Object, Set[Object]] */;
1047 val
* var_vt_colorer
/* var vt_colorer: POSetBucketsColorer[MClass, MVirtualTypeProp] */;
1048 val
* var27
/* : Map[Object, Int] */;
1049 val
* var29
/* : Map[MClass, Array[nullable MPropDef]] */;
1050 var_mainmodule
= p0
;
1052 var_runtime_type_analysis
= p2
;
1054 separate_compiler__SeparateCompiler__init(self
, p0
, p1
, p2
); /* Direct call separate_compiler#SeparateCompiler#init on <self:SeparateErasureCompiler>*/
1057 var
= model__MModule__flatten_mclass_hierarchy(var_mainmodule
);
1060 var1
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass
);
1062 hash_collection__HashSet__from(var1
, var_poset
); /* Direct call hash_collection#HashSet#from on <var1:HashSet[MClass]>*/
1064 var_mclasses
= var1
;
1065 var2
= NEW_coloring__POSetColorer(&type_coloring__POSetColorermodel__MClass
);
1067 { /* Inline coloring#POSetColorer#init (var2) on <var2:POSetColorer[MClass]> */
1073 coloring__POSetColorer__colorize(var_colorer
, var_poset
); /* Direct call coloring#POSetColorer#colorize on <var_colorer:POSetColorer[MClass]>*/
1076 var4
= coloring__POSetColorer__ids(var_colorer
);
1079 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_ids= (self,var4) on <self:SeparateErasureCompiler> */
1080 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids
].val
= var4
; /* _class_ids on <self:SeparateErasureCompiler> */
1085 var6
= coloring__POSetColorer__colors(var_colorer
);
1088 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_colors= (self,var6) on <self:SeparateErasureCompiler> */
1089 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors
].val
= var6
; /* _class_colors on <self:SeparateErasureCompiler> */
1094 var8
= separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(self
, var_mclasses
);
1097 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_tables= (self,var8) on <self:SeparateErasureCompiler> */
1098 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_tables
].val
= var8
; /* _class_tables on <self:SeparateErasureCompiler> */
1102 var10
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassabstract_collection__Setmodel__MVirtualTypeProp
);
1104 hash_collection__HashMap__init(var10
); /* Direct call hash_collection#HashMap#init on <var10:HashMap[MClass, Set[MVirtualTypeProp]]>*/
1108 var11
= hash_collection__HashSet__iterator(var_mclasses
);
1112 var12
= ((short int (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var11
) /* is_ok on <var11:Iterator[Object]>*/;
1116 var13
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var11
) /* item on <var11:Iterator[Object]>*/;
1119 var14
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MVirtualTypeProp
);
1121 hash_collection__HashSet__init(var14
); /* Direct call hash_collection#HashSet#init on <var14:HashSet[MVirtualTypeProp]>*/
1124 hash_collection__HashMap___91d_93d_61d(var_vts
, var_mclass
, var14
); /* Direct call hash_collection#HashMap#[]= on <var_vts:HashMap[MClass, Set[MVirtualTypeProp]]>*/
1127 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
1128 var17
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___mainmodule
].val
; /* _mainmodule on <self:SeparateErasureCompiler> */
1129 if (unlikely(var17
== NULL
)) {
1130 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1131 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
1135 RET_LABEL16
:(void)0;
1139 var18
= abstract_compiler__MModule__properties(var15
, var_mclass
);
1142 var19
= ((val
* (*)(val
*))(var18
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var18
) /* iterator on <var18:Set[MProperty]>*/;
1146 var20
= ((short int (*)(val
*))(var19
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var19
) /* is_ok on <var19:Iterator[nullable Object]>*/;
1150 var21
= ((val
* (*)(val
*))(var19
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var19
) /* item on <var19:Iterator[nullable Object]>*/;
1153 /* <var_mprop:MProperty> isa MVirtualTypeProp */
1154 cltype
= type_model__MVirtualTypeProp
.color
;
1155 idtype
= type_model__MVirtualTypeProp
.id
;
1156 if(cltype
>= var_mprop
->type
->table_size
) {
1159 var22
= var_mprop
->type
->type_table
[cltype
] == idtype
;
1163 var23
= hash_collection__HashMap___91d_93d(var_vts
, var_mclass
);
1166 ((void (*)(val
*, val
*))(var23
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var23
, var_mprop
) /* add on <var23:nullable Object(Set[MVirtualTypeProp])>*/;
1170 CONTINUE_label
: (void)0;
1172 ((void (*)(val
*))(var19
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var19
) /* next on <var19:Iterator[nullable Object]>*/;
1175 BREAK_label
: (void)0;
1176 CONTINUE_label24
: (void)0;
1178 ((void (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var11
) /* next on <var11:Iterator[Object]>*/;
1181 BREAK_label24
: (void)0;
1182 var25
= NEW_coloring__POSetBucketsColorer(&type_coloring__POSetBucketsColorermodel__MClassmodel__MVirtualTypeProp
);
1184 var26
= coloring__POSetColorer__conflicts(var_colorer
);
1187 coloring__POSetBucketsColorer__init(var25
, var_poset
, var26
); /* Direct call coloring#POSetBucketsColorer#init on <var25:POSetBucketsColorer[MClass, MVirtualTypeProp]>*/
1189 var_vt_colorer
= var25
;
1191 var27
= coloring__POSetBucketsColorer__colorize(var_vt_colorer
, var_vts
);
1194 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors= (self,var27) on <self:SeparateErasureCompiler> */
1195 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors
].val
= var27
; /* _vt_colors on <self:SeparateErasureCompiler> */
1196 RET_LABEL28
:(void)0;
1200 var29
= separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(self
, var_mclasses
);
1203 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_tables= (self,var29) on <self:SeparateErasureCompiler> */
1204 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_tables
].val
= var29
; /* _vt_tables on <self:SeparateErasureCompiler> */
1205 RET_LABEL30
:(void)0;
1210 /* method separate_erasure_compiler#SeparateErasureCompiler#init for (self: Object, MModule, ModelBuilder, nullable RapidTypeAnalysis) */
1211 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__init(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
1212 separate_erasure_compiler__SeparateErasureCompiler__init(self
, p0
, p1
, p2
); /* Direct call separate_erasure_compiler#SeparateErasureCompiler#init on <self:Object(SeparateErasureCompiler)>*/
1215 /* method separate_erasure_compiler#SeparateErasureCompiler#build_vt_tables for (self: SeparateErasureCompiler, Set[MClass]): Map[MClass, Array[nullable MPropDef]] */
1216 val
* separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(val
* self
, val
* p0
) {
1217 val
* var
/* : Map[MClass, Array[nullable MPropDef]] */;
1218 val
* var_mclasses
/* var mclasses: Set[MClass] */;
1219 val
* var1
/* : HashMap[MClass, Array[nullable MPropDef]] */;
1220 val
* var_tables
/* var tables: HashMap[MClass, Array[nullable MPropDef]] */;
1221 val
* var2
/* : Iterator[nullable Object] */;
1222 short int var3
/* : Bool */;
1223 val
* var4
/* : nullable Object */;
1224 val
* var_mclass
/* var mclass: MClass */;
1225 val
* var5
/* : Array[nullable MPropDef] */;
1226 val
* var_table
/* var table: Array[nullable MPropDef] */;
1227 val
* var6
/* : Array[MClass] */;
1228 val
* var_parents
/* var parents: Array[MClass] */;
1229 val
* var7
/* : MModule */;
1230 val
* var9
/* : MModule */;
1231 val
* var10
/* : POSet[MClass] */;
1232 short int var11
/* : Bool */;
1233 val
* var12
/* : MModule */;
1234 val
* var14
/* : MModule */;
1235 val
* var15
/* : POSetElement[MClass] */;
1236 val
* var16
/* : Collection[Object] */;
1237 val
* var17
/* : Array[nullable Object] */;
1238 val
* var18
/* : MModule */;
1239 val
* var20
/* : MModule */;
1240 val
* var21
/* : ArrayIterator[nullable Object] */;
1241 short int var22
/* : Bool */;
1242 val
* var23
/* : nullable Object */;
1243 val
* var_parent
/* var parent: MClass */;
1244 short int var24
/* : Bool */;
1245 short int var25
/* : Bool */;
1246 val
* var_other
/* var other: nullable Object */;
1247 short int var27
/* : Bool */;
1248 short int var29
/* : Bool */;
1249 val
* var30
/* : MModule */;
1250 val
* var32
/* : MModule */;
1251 val
* var33
/* : Set[MProperty] */;
1252 val
* var34
/* : Iterator[nullable Object] */;
1253 short int var35
/* : Bool */;
1254 val
* var36
/* : nullable Object */;
1255 val
* var_mproperty
/* var mproperty: MProperty */;
1256 short int var37
/* : Bool */;
1259 short int var38
/* : Bool */;
1260 val
* var40
/* : Map[MVirtualTypeProp, Int] */;
1261 val
* var42
/* : Map[MVirtualTypeProp, Int] */;
1262 val
* var43
/* : nullable Object */;
1263 long var44
/* : Int */;
1264 long var_color
/* var color: Int */;
1265 long var45
/* : Int */;
1266 short int var46
/* : Bool */;
1267 short int var48
/* : Bool */;
1270 const char* var_class_name
;
1271 short int var51
/* : Bool */;
1272 val
* var52
/* : Range[Int] */;
1273 long var53
/* : Int */;
1274 val
* var54
/* : Discrete */;
1275 val
* var55
/* : Discrete */;
1276 val
* var56
/* : Iterator[Discrete] */;
1277 short int var57
/* : Bool */;
1278 val
* var58
/* : nullable Object */;
1279 long var_i
/* var i: Int */;
1280 long var59
/* : Int */;
1281 val
* var60
/* : null */;
1282 val
* var62
/* : Array[MPropDef] */;
1283 val
* var64
/* : Array[MPropDef] */;
1284 val
* var65
/* : ArrayIterator[nullable Object] */;
1285 short int var66
/* : Bool */;
1286 val
* var67
/* : nullable Object */;
1287 val
* var_mpropdef
/* var mpropdef: MVirtualTypeDef */;
1288 val
* var68
/* : MClassDef */;
1289 val
* var70
/* : MClassDef */;
1290 val
* var71
/* : MClass */;
1291 val
* var73
/* : MClass */;
1292 short int var74
/* : Bool */;
1293 short int var75
/* : Bool */;
1294 short int var77
/* : Bool */;
1295 short int var79
/* : Bool */;
1296 val
* var81
/* : MModule */;
1297 val
* var83
/* : MModule */;
1298 val
* var84
/* : Set[MProperty] */;
1299 val
* var85
/* : Iterator[nullable Object] */;
1300 short int var86
/* : Bool */;
1301 val
* var87
/* : nullable Object */;
1302 val
* var_mproperty88
/* var mproperty: MProperty */;
1303 short int var89
/* : Bool */;
1306 short int var92
/* : Bool */;
1307 val
* var94
/* : Map[MVirtualTypeProp, Int] */;
1308 val
* var96
/* : Map[MVirtualTypeProp, Int] */;
1309 val
* var97
/* : nullable Object */;
1310 long var98
/* : Int */;
1311 long var_color99
/* var color: Int */;
1312 long var100
/* : Int */;
1313 short int var101
/* : Bool */;
1314 short int var103
/* : Bool */;
1317 const char* var_class_name106
;
1318 short int var107
/* : Bool */;
1319 val
* var108
/* : Range[Int] */;
1320 long var109
/* : Int */;
1321 val
* var110
/* : Discrete */;
1322 val
* var111
/* : Discrete */;
1323 val
* var112
/* : Iterator[Discrete] */;
1324 short int var113
/* : Bool */;
1325 val
* var114
/* : nullable Object */;
1326 long var_i115
/* var i: Int */;
1327 long var116
/* : Int */;
1328 val
* var117
/* : null */;
1329 val
* var119
/* : Array[MPropDef] */;
1330 val
* var121
/* : Array[MPropDef] */;
1331 val
* var122
/* : ArrayIterator[nullable Object] */;
1332 short int var123
/* : Bool */;
1333 val
* var124
/* : nullable Object */;
1334 val
* var_mpropdef125
/* var mpropdef: MVirtualTypeDef */;
1335 val
* var126
/* : MClassDef */;
1336 val
* var128
/* : MClassDef */;
1337 val
* var129
/* : MClass */;
1338 val
* var131
/* : MClass */;
1339 short int var132
/* : Bool */;
1340 short int var133
/* : Bool */;
1341 short int var135
/* : Bool */;
1342 short int var137
/* : Bool */;
1344 var1
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassarray__Arraynullable_model__MPropDef
);
1346 hash_collection__HashMap__init(var1
); /* Direct call hash_collection#HashMap#init on <var1:HashMap[MClass, Array[nullable MPropDef]]>*/
1350 var2
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:Set[MClass]>*/;
1354 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var2
) /* is_ok on <var2:Iterator[nullable Object]>*/;
1358 var4
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var2
) /* item on <var2:Iterator[nullable Object]>*/;
1361 var5
= NEW_array__Array(&type_array__Arraynullable_model__MPropDef
);
1363 array__Array__init(var5
); /* Direct call array#Array#init on <var5:Array[nullable MPropDef]>*/
1366 var6
= NEW_array__Array(&type_array__Arraymodel__MClass
);
1368 array__Array__init(var6
); /* Direct call array#Array#init on <var6:Array[MClass]>*/
1372 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
1373 var9
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___mainmodule
].val
; /* _mainmodule on <self:SeparateErasureCompiler> */
1374 if (unlikely(var9
== NULL
)) {
1375 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1376 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
1384 var10
= model__MModule__flatten_mclass_hierarchy(var7
);
1387 var11
= poset__POSet__has(var10
, var_mclass
);
1391 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
1392 var14
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___mainmodule
].val
; /* _mainmodule on <self:SeparateErasureCompiler> */
1393 if (unlikely(var14
== NULL
)) {
1394 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1395 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
1399 RET_LABEL13
:(void)0;
1403 var15
= model__MClass__in_hierarchy(var_mclass
, var12
);
1406 var16
= poset__POSetElement__greaters(var15
);
1409 var17
= array__Collection__to_a(var16
);
1411 var_parents
= var17
;
1413 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
1414 var20
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___mainmodule
].val
; /* _mainmodule on <self:SeparateErasureCompiler> */
1415 if (unlikely(var20
== NULL
)) {
1416 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1417 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
1421 RET_LABEL19
:(void)0;
1425 model__MModule__linearize_mclasses(var18
, var_parents
); /* Direct call model#MModule#linearize_mclasses on <var18:MModule>*/
1430 var21
= array__AbstractArrayRead__iterator(var_parents
);
1434 var22
= array__ArrayIterator__is_ok(var21
);
1438 var23
= array__ArrayIterator__item(var21
);
1442 { /* Inline kernel#Object#== (var_parent,var_mclass) on <var_parent:MClass> */
1443 var_other
= var_mclass
;
1445 { /* Inline kernel#Object#is_same_instance (var_parent,var_other) on <var_parent:MClass> */
1446 var29
= var_parent
== var_other
;
1449 RET_LABEL28
:(void)0;
1454 RET_LABEL26
:(void)0;
1459 goto CONTINUE_label
;
1463 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
1464 var32
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___mainmodule
].val
; /* _mainmodule on <self:SeparateErasureCompiler> */
1465 if (unlikely(var32
== NULL
)) {
1466 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1467 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
1471 RET_LABEL31
:(void)0;
1475 var33
= abstract_compiler__MModule__properties(var30
, var_parent
);
1478 var34
= ((val
* (*)(val
*))(var33
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var33
) /* iterator on <var33:Set[MProperty]>*/;
1482 var35
= ((short int (*)(val
*))(var34
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var34
) /* is_ok on <var34:Iterator[nullable Object]>*/;
1486 var36
= ((val
* (*)(val
*))(var34
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var34
) /* item on <var34:Iterator[nullable Object]>*/;
1488 var_mproperty
= var36
;
1489 /* <var_mproperty:MProperty> isa MVirtualTypeProp */
1490 cltype
= type_model__MVirtualTypeProp
.color
;
1491 idtype
= type_model__MVirtualTypeProp
.id
;
1492 if(cltype
>= var_mproperty
->type
->table_size
) {
1495 var37
= var_mproperty
->type
->type_table
[cltype
] == idtype
;
1499 goto CONTINUE_label39
;
1503 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors (self) on <self:SeparateErasureCompiler> */
1504 var42
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors
].val
; /* _vt_colors on <self:SeparateErasureCompiler> */
1505 if (unlikely(var42
== NULL
)) {
1506 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
1507 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 97);
1511 RET_LABEL41
:(void)0;
1515 var43
= ((val
* (*)(val
*, val
*))(var40
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var40
, var_mproperty
) /* [] on <var40:Map[MVirtualTypeProp, Int]>*/;
1517 var44
= ((struct instance_kernel__Int
*)var43
)->value
; /* autounbox from nullable Object to Int */;
1520 var45
= array__AbstractArrayRead__length(var_table
);
1523 { /* Inline kernel#Int#<= (var45,var_color) on <var45:Int> */
1524 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
1525 /* <var_color:Int> isa OTHER */
1526 var48
= 1; /* easy <var_color:Int> isa OTHER*/
1527 if (unlikely(!var48
)) {
1528 var_class_name
= type_kernel__Int
.name
;
1529 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name
);
1530 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
1533 var51
= var45
<= var_color
;
1536 RET_LABEL47
:(void)0;
1540 var52
= NEW_range__Range(&type_range__Rangekernel__Int
);
1542 var53
= array__AbstractArrayRead__length(var_table
);
1545 var54
= BOX_kernel__Int(var53
); /* autobox from Int to Discrete */
1546 var55
= BOX_kernel__Int(var_color
); /* autobox from Int to Discrete */
1547 range__Range__without_last(var52
, var54
, var55
); /* Direct call range#Range#without_last on <var52:Range[Int]>*/
1550 var56
= range__Range__iterator(var52
);
1554 var57
= ((short int (*)(val
*))(var56
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var56
) /* is_ok on <var56:Iterator[Discrete]>*/;
1558 var58
= ((val
* (*)(val
*))(var56
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var56
) /* item on <var56:Iterator[Discrete]>*/;
1560 var59
= ((struct instance_kernel__Int
*)var58
)->value
; /* autounbox from nullable Object to Int */;
1564 array__Array___91d_93d_61d(var_table
, var_i
, var60
); /* Direct call array#Array#[]= on <var_table:Array[nullable MPropDef]>*/
1566 CONTINUE_label61
: (void)0;
1568 ((void (*)(val
*))(var56
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var56
) /* next on <var56:Iterator[Discrete]>*/;
1571 BREAK_label61
: (void)0;
1575 { /* Inline model#MProperty#mpropdefs (var_mproperty) on <var_mproperty:MProperty(MVirtualTypeProp)> */
1576 var64
= var_mproperty
->attrs
[COLOR_model__MProperty___mpropdefs
].val
; /* _mpropdefs on <var_mproperty:MProperty(MVirtualTypeProp)> */
1577 if (unlikely(var64
== NULL
)) {
1578 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
1579 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1631);
1583 RET_LABEL63
:(void)0;
1587 var65
= array__AbstractArrayRead__iterator(var62
);
1591 var66
= array__ArrayIterator__is_ok(var65
);
1595 var67
= array__ArrayIterator__item(var65
);
1597 var_mpropdef
= var67
;
1599 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:MVirtualTypeDef> */
1600 var70
= var_mpropdef
->attrs
[COLOR_model__MPropDef___mclassdef
].val
; /* _mclassdef on <var_mpropdef:MVirtualTypeDef> */
1601 if (unlikely(var70
== NULL
)) {
1602 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1603 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
1607 RET_LABEL69
:(void)0;
1611 { /* Inline model#MClassDef#mclass (var68) on <var68:MClassDef> */
1612 var73
= var68
->attrs
[COLOR_model__MClassDef___mclass
].val
; /* _mclass on <var68:MClassDef> */
1613 if (unlikely(var73
== NULL
)) {
1614 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1615 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
1619 RET_LABEL72
:(void)0;
1623 { /* Inline kernel#Object#== (var71,var_parent) on <var71:MClass> */
1624 var_other
= var_parent
;
1626 { /* Inline kernel#Object#is_same_instance (var71,var_other) on <var71:MClass> */
1627 var79
= var71
== var_other
;
1630 RET_LABEL78
:(void)0;
1635 RET_LABEL76
:(void)0;
1641 array__Array___91d_93d_61d(var_table
, var_color
, var_mpropdef
); /* Direct call array#Array#[]= on <var_table:Array[nullable MPropDef]>*/
1645 CONTINUE_label80
: (void)0;
1647 array__ArrayIterator__next(var65
); /* Direct call array#ArrayIterator#next on <var65:ArrayIterator[nullable Object]>*/
1650 BREAK_label80
: (void)0;
1651 CONTINUE_label39
: (void)0;
1653 ((void (*)(val
*))(var34
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var34
) /* next on <var34:Iterator[nullable Object]>*/;
1656 BREAK_label39
: (void)0;
1657 CONTINUE_label
: (void)0;
1659 array__ArrayIterator__next(var21
); /* Direct call array#ArrayIterator#next on <var21:ArrayIterator[nullable Object]>*/
1662 BREAK_label
: (void)0;
1664 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
1665 var83
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___mainmodule
].val
; /* _mainmodule on <self:SeparateErasureCompiler> */
1666 if (unlikely(var83
== NULL
)) {
1667 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1668 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
1672 RET_LABEL82
:(void)0;
1676 var84
= abstract_compiler__MModule__properties(var81
, var_mclass
);
1679 var85
= ((val
* (*)(val
*))(var84
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var84
) /* iterator on <var84:Set[MProperty]>*/;
1683 var86
= ((short int (*)(val
*))(var85
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var85
) /* is_ok on <var85:Iterator[nullable Object]>*/;
1687 var87
= ((val
* (*)(val
*))(var85
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var85
) /* item on <var85:Iterator[nullable Object]>*/;
1689 var_mproperty88
= var87
;
1690 /* <var_mproperty88:MProperty> isa MVirtualTypeProp */
1691 cltype90
= type_model__MVirtualTypeProp
.color
;
1692 idtype91
= type_model__MVirtualTypeProp
.id
;
1693 if(cltype90
>= var_mproperty88
->type
->table_size
) {
1696 var89
= var_mproperty88
->type
->type_table
[cltype90
] == idtype91
;
1700 goto CONTINUE_label93
;
1704 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_colors (self) on <self:SeparateErasureCompiler> */
1705 var96
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_colors
].val
; /* _vt_colors on <self:SeparateErasureCompiler> */
1706 if (unlikely(var96
== NULL
)) {
1707 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_colors");
1708 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 97);
1712 RET_LABEL95
:(void)0;
1716 var97
= ((val
* (*)(val
*, val
*))(var94
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var94
, var_mproperty88
) /* [] on <var94:Map[MVirtualTypeProp, Int]>*/;
1718 var98
= ((struct instance_kernel__Int
*)var97
)->value
; /* autounbox from nullable Object to Int */;
1719 var_color99
= var98
;
1721 var100
= array__AbstractArrayRead__length(var_table
);
1724 { /* Inline kernel#Int#<= (var100,var_color99) on <var100:Int> */
1725 /* Covariant cast for argument 0 (i) <var_color99:Int> isa OTHER */
1726 /* <var_color99:Int> isa OTHER */
1727 var103
= 1; /* easy <var_color99:Int> isa OTHER*/
1728 if (unlikely(!var103
)) {
1729 var_class_name106
= type_kernel__Int
.name
;
1730 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name106
);
1731 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
1734 var107
= var100
<= var_color99
;
1737 RET_LABEL102
:(void)0;
1741 var108
= NEW_range__Range(&type_range__Rangekernel__Int
);
1743 var109
= array__AbstractArrayRead__length(var_table
);
1746 var110
= BOX_kernel__Int(var109
); /* autobox from Int to Discrete */
1747 var111
= BOX_kernel__Int(var_color99
); /* autobox from Int to Discrete */
1748 range__Range__without_last(var108
, var110
, var111
); /* Direct call range#Range#without_last on <var108:Range[Int]>*/
1751 var112
= range__Range__iterator(var108
);
1755 var113
= ((short int (*)(val
*))(var112
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var112
) /* is_ok on <var112:Iterator[Discrete]>*/;
1759 var114
= ((val
* (*)(val
*))(var112
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var112
) /* item on <var112:Iterator[Discrete]>*/;
1761 var116
= ((struct instance_kernel__Int
*)var114
)->value
; /* autounbox from nullable Object to Int */;
1765 array__Array___91d_93d_61d(var_table
, var_i115
, var117
); /* Direct call array#Array#[]= on <var_table:Array[nullable MPropDef]>*/
1767 CONTINUE_label118
: (void)0;
1769 ((void (*)(val
*))(var112
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var112
) /* next on <var112:Iterator[Discrete]>*/;
1772 BREAK_label118
: (void)0;
1776 { /* Inline model#MProperty#mpropdefs (var_mproperty88) on <var_mproperty88:MProperty(MVirtualTypeProp)> */
1777 var121
= var_mproperty88
->attrs
[COLOR_model__MProperty___mpropdefs
].val
; /* _mpropdefs on <var_mproperty88:MProperty(MVirtualTypeProp)> */
1778 if (unlikely(var121
== NULL
)) {
1779 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdefs");
1780 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1631);
1784 RET_LABEL120
:(void)0;
1788 var122
= array__AbstractArrayRead__iterator(var119
);
1792 var123
= array__ArrayIterator__is_ok(var122
);
1796 var124
= array__ArrayIterator__item(var122
);
1798 var_mpropdef125
= var124
;
1800 { /* Inline model#MPropDef#mclassdef (var_mpropdef125) on <var_mpropdef125:MVirtualTypeDef> */
1801 var128
= var_mpropdef125
->attrs
[COLOR_model__MPropDef___mclassdef
].val
; /* _mclassdef on <var_mpropdef125:MVirtualTypeDef> */
1802 if (unlikely(var128
== NULL
)) {
1803 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
1804 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
1808 RET_LABEL127
:(void)0;
1812 { /* Inline model#MClassDef#mclass (var126) on <var126:MClassDef> */
1813 var131
= var126
->attrs
[COLOR_model__MClassDef___mclass
].val
; /* _mclass on <var126:MClassDef> */
1814 if (unlikely(var131
== NULL
)) {
1815 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
1816 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 474);
1820 RET_LABEL130
:(void)0;
1824 { /* Inline kernel#Object#== (var129,var_mclass) on <var129:MClass> */
1825 var_other
= var_mclass
;
1827 { /* Inline kernel#Object#is_same_instance (var129,var_other) on <var129:MClass> */
1828 var137
= var129
== var_other
;
1831 RET_LABEL136
:(void)0;
1836 RET_LABEL134
:(void)0;
1842 array__Array___91d_93d_61d(var_table
, var_color99
, var_mpropdef125
); /* Direct call array#Array#[]= on <var_table:Array[nullable MPropDef]>*/
1846 CONTINUE_label138
: (void)0;
1848 array__ArrayIterator__next(var122
); /* Direct call array#ArrayIterator#next on <var122:ArrayIterator[nullable Object]>*/
1851 BREAK_label138
: (void)0;
1852 CONTINUE_label93
: (void)0;
1854 ((void (*)(val
*))(var85
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var85
) /* next on <var85:Iterator[nullable Object]>*/;
1857 BREAK_label93
: (void)0;
1859 hash_collection__HashMap___91d_93d_61d(var_tables
, var_mclass
, var_table
); /* Direct call hash_collection#HashMap#[]= on <var_tables:HashMap[MClass, Array[nullable MPropDef]]>*/
1861 CONTINUE_label139
: (void)0;
1863 ((void (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var2
) /* next on <var2:Iterator[nullable Object]>*/;
1866 BREAK_label139
: (void)0;
1872 /* method separate_erasure_compiler#SeparateErasureCompiler#build_vt_tables for (self: Object, Set[MClass]): Map[MClass, Array[nullable MPropDef]] */
1873 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(val
* self
, val
* p0
) {
1874 val
* var
/* : Map[MClass, Array[nullable MPropDef]] */;
1875 val
* var1
/* : Map[MClass, Array[nullable MPropDef]] */;
1876 var1
= separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(self
, p0
);
1881 /* method separate_erasure_compiler#SeparateErasureCompiler#build_class_typing_tables for (self: SeparateErasureCompiler, Set[MClass]): Map[MClass, Array[nullable MClass]] */
1882 val
* separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(val
* self
, val
* p0
) {
1883 val
* var
/* : Map[MClass, Array[nullable MClass]] */;
1884 val
* var_mclasses
/* var mclasses: Set[MClass] */;
1885 val
* var1
/* : HashMap[MClass, Array[nullable MClass]] */;
1886 val
* var_tables
/* var tables: HashMap[MClass, Array[nullable MClass]] */;
1887 val
* var2
/* : Iterator[nullable Object] */;
1888 short int var3
/* : Bool */;
1889 val
* var4
/* : nullable Object */;
1890 val
* var_mclass
/* var mclass: MClass */;
1891 val
* var5
/* : Array[nullable MClass] */;
1892 val
* var_table
/* var table: Array[nullable MClass] */;
1893 val
* var6
/* : Array[MClass] */;
1894 val
* var_supers
/* var supers: Array[MClass] */;
1895 val
* var7
/* : MModule */;
1896 val
* var9
/* : MModule */;
1897 val
* var10
/* : POSet[MClass] */;
1898 short int var11
/* : Bool */;
1899 val
* var12
/* : MModule */;
1900 val
* var14
/* : MModule */;
1901 val
* var15
/* : POSetElement[MClass] */;
1902 val
* var16
/* : Collection[Object] */;
1903 val
* var17
/* : Array[nullable Object] */;
1904 val
* var18
/* : ArrayIterator[nullable Object] */;
1905 short int var19
/* : Bool */;
1906 val
* var20
/* : nullable Object */;
1907 val
* var_sup
/* var sup: MClass */;
1908 val
* var21
/* : Map[MClass, Int] */;
1909 val
* var23
/* : Map[MClass, Int] */;
1910 val
* var24
/* : nullable Object */;
1911 long var25
/* : Int */;
1912 long var_color
/* var color: Int */;
1913 long var26
/* : Int */;
1914 short int var27
/* : Bool */;
1915 short int var29
/* : Bool */;
1918 const char* var_class_name
;
1919 short int var30
/* : Bool */;
1920 val
* var31
/* : Range[Int] */;
1921 long var32
/* : Int */;
1922 val
* var33
/* : Discrete */;
1923 val
* var34
/* : Discrete */;
1924 val
* var35
/* : Iterator[Discrete] */;
1925 short int var36
/* : Bool */;
1926 val
* var37
/* : nullable Object */;
1927 long var_i
/* var i: Int */;
1928 long var38
/* : Int */;
1929 val
* var39
/* : null */;
1931 var1
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassarray__Arraynullable_model__MClass
);
1933 hash_collection__HashMap__init(var1
); /* Direct call hash_collection#HashMap#init on <var1:HashMap[MClass, Array[nullable MClass]]>*/
1937 var2
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:Set[MClass]>*/;
1941 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var2
) /* is_ok on <var2:Iterator[nullable Object]>*/;
1945 var4
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var2
) /* item on <var2:Iterator[nullable Object]>*/;
1948 var5
= NEW_array__Array(&type_array__Arraynullable_model__MClass
);
1950 array__Array__init(var5
); /* Direct call array#Array#init on <var5:Array[nullable MClass]>*/
1953 var6
= NEW_array__Array(&type_array__Arraymodel__MClass
);
1955 array__Array__init(var6
); /* Direct call array#Array#init on <var6:Array[MClass]>*/
1959 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
1960 var9
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___mainmodule
].val
; /* _mainmodule on <self:SeparateErasureCompiler> */
1961 if (unlikely(var9
== NULL
)) {
1962 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1963 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
1971 var10
= model__MModule__flatten_mclass_hierarchy(var7
);
1974 var11
= poset__POSet__has(var10
, var_mclass
);
1978 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
1979 var14
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___mainmodule
].val
; /* _mainmodule on <self:SeparateErasureCompiler> */
1980 if (unlikely(var14
== NULL
)) {
1981 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
1982 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
1986 RET_LABEL13
:(void)0;
1990 var15
= model__MClass__in_hierarchy(var_mclass
, var12
);
1993 var16
= poset__POSetElement__greaters(var15
);
1996 var17
= array__Collection__to_a(var16
);
2002 var18
= array__AbstractArrayRead__iterator(var_supers
);
2006 var19
= array__ArrayIterator__is_ok(var18
);
2010 var20
= array__ArrayIterator__item(var18
);
2014 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_colors (self) on <self:SeparateErasureCompiler> */
2015 var23
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors
].val
; /* _class_colors on <self:SeparateErasureCompiler> */
2016 if (unlikely(var23
== NULL
)) {
2017 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
2018 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 96);
2022 RET_LABEL22
:(void)0;
2026 var24
= ((val
* (*)(val
*, val
*))(var21
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var21
, var_sup
) /* [] on <var21:Map[MClass, Int]>*/;
2028 var25
= ((struct instance_kernel__Int
*)var24
)->value
; /* autounbox from nullable Object to Int */;
2031 var26
= array__AbstractArrayRead__length(var_table
);
2034 { /* Inline kernel#Int#<= (var26,var_color) on <var26:Int> */
2035 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
2036 /* <var_color:Int> isa OTHER */
2037 var29
= 1; /* easy <var_color:Int> isa OTHER*/
2038 if (unlikely(!var29
)) {
2039 var_class_name
= type_kernel__Int
.name
;
2040 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name
);
2041 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 324);
2044 var30
= var26
<= var_color
;
2047 RET_LABEL28
:(void)0;
2051 var31
= NEW_range__Range(&type_range__Rangekernel__Int
);
2053 var32
= array__AbstractArrayRead__length(var_table
);
2056 var33
= BOX_kernel__Int(var32
); /* autobox from Int to Discrete */
2057 var34
= BOX_kernel__Int(var_color
); /* autobox from Int to Discrete */
2058 range__Range__without_last(var31
, var33
, var34
); /* Direct call range#Range#without_last on <var31:Range[Int]>*/
2061 var35
= range__Range__iterator(var31
);
2065 var36
= ((short int (*)(val
*))(var35
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var35
) /* is_ok on <var35:Iterator[Discrete]>*/;
2069 var37
= ((val
* (*)(val
*))(var35
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var35
) /* item on <var35:Iterator[Discrete]>*/;
2071 var38
= ((struct instance_kernel__Int
*)var37
)->value
; /* autounbox from nullable Object to Int */;
2075 array__Array___91d_93d_61d(var_table
, var_i
, var39
); /* Direct call array#Array#[]= on <var_table:Array[nullable MClass]>*/
2077 CONTINUE_label
: (void)0;
2079 ((void (*)(val
*))(var35
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var35
) /* next on <var35:Iterator[Discrete]>*/;
2082 BREAK_label
: (void)0;
2086 array__Array___91d_93d_61d(var_table
, var_color
, var_sup
); /* Direct call array#Array#[]= on <var_table:Array[nullable MClass]>*/
2088 CONTINUE_label40
: (void)0;
2090 array__ArrayIterator__next(var18
); /* Direct call array#ArrayIterator#next on <var18:ArrayIterator[nullable Object]>*/
2093 BREAK_label40
: (void)0;
2095 hash_collection__HashMap___91d_93d_61d(var_tables
, var_mclass
, var_table
); /* Direct call hash_collection#HashMap#[]= on <var_tables:HashMap[MClass, Array[nullable MClass]]>*/
2097 CONTINUE_label41
: (void)0;
2099 ((void (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var2
) /* next on <var2:Iterator[nullable Object]>*/;
2102 BREAK_label41
: (void)0;
2108 /* method separate_erasure_compiler#SeparateErasureCompiler#build_class_typing_tables for (self: Object, Set[MClass]): Map[MClass, Array[nullable MClass]] */
2109 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(val
* self
, val
* p0
) {
2110 val
* var
/* : Map[MClass, Array[nullable MClass]] */;
2111 val
* var1
/* : Map[MClass, Array[nullable MClass]] */;
2112 var1
= separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(self
, p0
);
2117 /* method separate_erasure_compiler#SeparateErasureCompiler#compile_header_structs for (self: SeparateErasureCompiler) */
2118 void separate_erasure_compiler__SeparateErasureCompiler__compile_header_structs(val
* self
) {
2119 val
* var
/* : CodeWriter */;
2120 val
* var2
/* : CodeWriter */;
2121 static val
* varonce
;
2122 val
* var3
/* : String */;
2123 char* var4
/* : NativeString */;
2124 long var5
/* : Int */;
2125 val
* var6
/* : FlatString */;
2126 val
* var7
/* : CodeWriter */;
2127 val
* var9
/* : CodeWriter */;
2128 static val
* varonce10
;
2129 val
* var11
/* : String */;
2130 char* var12
/* : NativeString */;
2131 long var13
/* : Int */;
2132 val
* var14
/* : FlatString */;
2133 val
* var15
/* : CodeWriter */;
2134 val
* var17
/* : CodeWriter */;
2135 static val
* varonce18
;
2136 val
* var19
/* : String */;
2137 char* var20
/* : NativeString */;
2138 long var21
/* : Int */;
2139 val
* var22
/* : FlatString */;
2140 val
* var23
/* : CodeWriter */;
2141 val
* var25
/* : CodeWriter */;
2142 static val
* varonce26
;
2143 val
* var27
/* : String */;
2144 char* var28
/* : NativeString */;
2145 long var29
/* : Int */;
2146 val
* var30
/* : FlatString */;
2147 val
* var31
/* : CodeWriter */;
2148 val
* var33
/* : CodeWriter */;
2149 static val
* varonce34
;
2150 val
* var35
/* : String */;
2151 char* var36
/* : NativeString */;
2152 long var37
/* : Int */;
2153 val
* var38
/* : FlatString */;
2154 val
* var39
/* : CodeWriter */;
2155 val
* var41
/* : CodeWriter */;
2156 static val
* varonce42
;
2157 val
* var43
/* : String */;
2158 char* var44
/* : NativeString */;
2159 long var45
/* : Int */;
2160 val
* var46
/* : FlatString */;
2162 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
2163 var2
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
2164 if (unlikely(var2
== NULL
)) {
2165 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2166 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
2176 var4
= "typedef void(*nitmethod_t)(void); /* general C type representing a Nit method. */";
2178 var6
= string__NativeString__to_s_with_length(var4
, var5
);
2183 abstract_compiler__CodeWriter__add_decl(var
, var3
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var:CodeWriter>*/
2186 separate_compiler__SeparateCompiler__compile_header_attribute_structs(self
); /* Direct call separate_compiler#SeparateCompiler#compile_header_attribute_structs on <self:SeparateErasureCompiler>*/
2189 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
2190 var9
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
2191 if (unlikely(var9
== NULL
)) {
2192 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2193 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
2203 var12
= "struct class { int id; const char *name; int box_kind; int color; const struct vts_table *vts_table; const struct type_table *type_table; nitmethod_t vft[]; }; /* general C type representing a Nit class. */";
2205 var14
= string__NativeString__to_s_with_length(var12
, var13
);
2210 abstract_compiler__CodeWriter__add_decl(var7
, var11
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var7:CodeWriter>*/
2213 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
2214 var17
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
2215 if (unlikely(var17
== NULL
)) {
2216 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2217 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
2221 RET_LABEL16
:(void)0;
2227 var20
= "struct type_table { int size; int table[]; }; /* colorized type table. */";
2229 var22
= string__NativeString__to_s_with_length(var20
, var21
);
2234 abstract_compiler__CodeWriter__add_decl(var15
, var19
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var15:CodeWriter>*/
2237 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
2238 var25
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
2239 if (unlikely(var25
== NULL
)) {
2240 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2241 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
2245 RET_LABEL24
:(void)0;
2251 var28
= "struct vts_entry { short int is_nullable; const struct class *class; }; /* link (nullable or not) between the vts and is bound. */";
2253 var30
= string__NativeString__to_s_with_length(var28
, var29
);
2258 abstract_compiler__CodeWriter__add_decl(var23
, var27
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var23:CodeWriter>*/
2261 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
2262 var33
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
2263 if (unlikely(var33
== NULL
)) {
2264 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2265 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
2269 RET_LABEL32
:(void)0;
2275 var36
= "struct vts_table { int dummy; const struct vts_entry vts[]; }; /* vts list of a C type representation. */";
2277 var38
= string__NativeString__to_s_with_length(var36
, var37
);
2282 abstract_compiler__CodeWriter__add_decl(var31
, var35
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var31:CodeWriter>*/
2285 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
2286 var41
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
2287 if (unlikely(var41
== NULL
)) {
2288 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
2289 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
2293 RET_LABEL40
:(void)0;
2299 var44
= "typedef struct instance { const struct class *class; nitattribute_t attrs[1]; } val; /* general C type representing a Nit instance. */";
2301 var46
= string__NativeString__to_s_with_length(var44
, var45
);
2306 abstract_compiler__CodeWriter__add_decl(var39
, var43
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var39:CodeWriter>*/
2310 /* method separate_erasure_compiler#SeparateErasureCompiler#compile_header_structs for (self: Object) */
2311 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__compile_header_structs(val
* self
) {
2312 separate_erasure_compiler__SeparateErasureCompiler__compile_header_structs(self
); /* Direct call separate_erasure_compiler#SeparateErasureCompiler#compile_header_structs on <self:Object(SeparateErasureCompiler)>*/
2315 /* method separate_erasure_compiler#SeparateErasureCompiler#compile_class_to_c for (self: SeparateErasureCompiler, MClass) */
2316 void separate_erasure_compiler__SeparateErasureCompiler__compile_class_to_c(val
* self
, val
* p0
) {
2317 val
* var_mclass
/* var mclass: MClass */;
2318 val
* var
/* : MClassDef */;
2319 val
* var1
/* : MClassType */;
2320 val
* var3
/* : MClassType */;
2321 val
* var_mtype
/* var mtype: MClassType */;
2322 val
* var4
/* : String */;
2323 val
* var_c_name
/* var c_name: String */;
2324 val
* var5
/* : String */;
2325 val
* var_c_instance_name
/* var c_instance_name: String */;
2326 val
* var6
/* : Map[MClass, Array[nullable MPropDef]] */;
2327 val
* var8
/* : Map[MClass, Array[nullable MPropDef]] */;
2328 val
* var9
/* : nullable Object */;
2329 val
* var_vft
/* var vft: Array[nullable MPropDef] */;
2330 val
* var10
/* : Map[MClass, Array[nullable MPropDef]] */;
2331 val
* var12
/* : Map[MClass, Array[nullable MPropDef]] */;
2332 val
* var13
/* : nullable Object */;
2333 val
* var_attrs
/* var attrs: Array[nullable MPropDef] */;
2334 val
* var14
/* : Map[MClass, Array[nullable MClass]] */;
2335 val
* var16
/* : Map[MClass, Array[nullable MClass]] */;
2336 val
* var17
/* : nullable Object */;
2337 val
* var_class_table
/* var class_table: Array[nullable MClass] */;
2338 val
* var18
/* : SeparateCompilerVisitor */;
2339 val
* var_v
/* var v: SeparateCompilerVisitor */;
2340 val
* var19
/* : nullable RapidTypeAnalysis */;
2341 val
* var21
/* : nullable RapidTypeAnalysis */;
2342 val
* var_rta
/* var rta: nullable RapidTypeAnalysis */;
2343 short int var22
/* : Bool */;
2344 val
* var23
/* : MClassKind */;
2345 val
* var25
/* : MClassKind */;
2346 val
* var26
/* : MClassKind */;
2347 short int var27
/* : Bool */;
2348 short int var28
/* : Bool */;
2349 val
* var_other
/* var other: nullable Object */;
2350 short int var30
/* : Bool */;
2351 short int var32
/* : Bool */;
2352 short int var_
/* var : Bool */;
2353 val
* var33
/* : MClassKind */;
2354 val
* var35
/* : MClassKind */;
2355 val
* var36
/* : MClassKind */;
2356 short int var37
/* : Bool */;
2357 short int var38
/* : Bool */;
2358 short int var40
/* : Bool */;
2359 short int var42
/* : Bool */;
2360 short int var_is_dead
/* var is_dead: Bool */;
2361 short int var43
/* : Bool */;
2362 short int var44
/* : Bool */;
2363 short int var45
/* : Bool */;
2364 short int var46
/* : Bool */;
2365 short int var47
/* : Bool */;
2366 short int var_48
/* var : Bool */;
2367 val
* var49
/* : null */;
2368 short int var50
/* : Bool */;
2369 short int var51
/* : Bool */;
2370 val
* var_other53
/* var other: nullable Object */;
2371 short int var54
/* : Bool */;
2372 short int var55
/* : Bool */;
2373 short int var56
/* : Bool */;
2374 short int var_57
/* var : Bool */;
2375 val
* var58
/* : HashSet[MClass] */;
2376 val
* var60
/* : HashSet[MClass] */;
2377 short int var61
/* : Bool */;
2378 short int var62
/* : Bool */;
2379 short int var_63
/* var : Bool */;
2380 val
* var64
/* : String */;
2381 static val
* varonce
;
2382 val
* var65
/* : String */;
2383 char* var66
/* : NativeString */;
2384 long var67
/* : Int */;
2385 val
* var68
/* : FlatString */;
2386 short int var69
/* : Bool */;
2387 short int var70
/* : Bool */;
2388 short int var_71
/* var : Bool */;
2389 val
* var72
/* : String */;
2390 val
* var74
/* : String */;
2391 static val
* varonce75
;
2392 val
* var76
/* : String */;
2393 char* var77
/* : NativeString */;
2394 long var78
/* : Int */;
2395 val
* var79
/* : FlatString */;
2396 short int var80
/* : Bool */;
2397 short int var81
/* : Bool */;
2398 short int var83
/* : Bool */;
2399 short int var84
/* : Bool */;
2400 short int var85
/* : Bool */;
2401 short int var86
/* : Bool */;
2402 static val
* varonce87
;
2403 val
* var88
/* : String */;
2404 char* var89
/* : NativeString */;
2405 long var90
/* : Int */;
2406 val
* var91
/* : FlatString */;
2407 static val
* varonce92
;
2408 val
* var93
/* : String */;
2409 char* var94
/* : NativeString */;
2410 long var95
/* : Int */;
2411 val
* var96
/* : FlatString */;
2412 val
* var97
/* : Array[Object] */;
2413 long var98
/* : Int */;
2414 val
* var99
/* : NativeArray[Object] */;
2415 val
* var100
/* : String */;
2416 static val
* varonce101
;
2417 val
* var102
/* : String */;
2418 char* var103
/* : NativeString */;
2419 long var104
/* : Int */;
2420 val
* var105
/* : FlatString */;
2421 val
* var106
/* : Array[Object] */;
2422 long var107
/* : Int */;
2423 val
* var108
/* : NativeArray[Object] */;
2424 val
* var109
/* : String */;
2425 static val
* varonce110
;
2426 val
* var111
/* : String */;
2427 char* var112
/* : NativeString */;
2428 long var113
/* : Int */;
2429 val
* var114
/* : FlatString */;
2430 static val
* varonce115
;
2431 val
* var116
/* : String */;
2432 char* var117
/* : NativeString */;
2433 long var118
/* : Int */;
2434 val
* var119
/* : FlatString */;
2435 val
* var120
/* : Array[Object] */;
2436 long var121
/* : Int */;
2437 val
* var122
/* : NativeArray[Object] */;
2438 val
* var123
/* : String */;
2439 static val
* varonce124
;
2440 val
* var125
/* : String */;
2441 char* var126
/* : NativeString */;
2442 long var127
/* : Int */;
2443 val
* var128
/* : FlatString */;
2444 static val
* varonce129
;
2445 val
* var130
/* : String */;
2446 char* var131
/* : NativeString */;
2447 long var132
/* : Int */;
2448 val
* var133
/* : FlatString */;
2449 val
* var134
/* : Array[Object] */;
2450 long var135
/* : Int */;
2451 val
* var136
/* : NativeArray[Object] */;
2452 val
* var137
/* : String */;
2453 static val
* varonce138
;
2454 val
* var139
/* : String */;
2455 char* var140
/* : NativeString */;
2456 long var141
/* : Int */;
2457 val
* var142
/* : FlatString */;
2458 static val
* varonce143
;
2459 val
* var144
/* : String */;
2460 char* var145
/* : NativeString */;
2461 long var146
/* : Int */;
2462 val
* var147
/* : FlatString */;
2463 val
* var148
/* : Array[Object] */;
2464 long var149
/* : Int */;
2465 val
* var150
/* : NativeArray[Object] */;
2466 val
* var151
/* : String */;
2467 val
* var152
/* : Map[MClass, Int] */;
2468 val
* var154
/* : Map[MClass, Int] */;
2469 val
* var155
/* : nullable Object */;
2470 static val
* varonce156
;
2471 val
* var157
/* : String */;
2472 char* var158
/* : NativeString */;
2473 long var159
/* : Int */;
2474 val
* var160
/* : FlatString */;
2475 val
* var161
/* : Array[Object] */;
2476 long var162
/* : Int */;
2477 val
* var163
/* : NativeArray[Object] */;
2478 val
* var164
/* : String */;
2479 static val
* varonce165
;
2480 val
* var166
/* : String */;
2481 char* var167
/* : NativeString */;
2482 long var168
/* : Int */;
2483 val
* var169
/* : FlatString */;
2484 val
* var170
/* : String */;
2485 val
* var172
/* : String */;
2486 static val
* varonce173
;
2487 val
* var174
/* : String */;
2488 char* var175
/* : NativeString */;
2489 long var176
/* : Int */;
2490 val
* var177
/* : FlatString */;
2491 val
* var178
/* : Array[Object] */;
2492 long var179
/* : Int */;
2493 val
* var180
/* : NativeArray[Object] */;
2494 val
* var181
/* : String */;
2495 long var182
/* : Int */;
2496 static val
* varonce183
;
2497 val
* var184
/* : String */;
2498 char* var185
/* : NativeString */;
2499 long var186
/* : Int */;
2500 val
* var187
/* : FlatString */;
2501 val
* var188
/* : Array[Object] */;
2502 long var189
/* : Int */;
2503 val
* var190
/* : NativeArray[Object] */;
2504 val
* var191
/* : Object */;
2505 val
* var192
/* : String */;
2506 val
* var193
/* : Map[MClass, Int] */;
2507 val
* var195
/* : Map[MClass, Int] */;
2508 val
* var196
/* : nullable Object */;
2509 static val
* varonce197
;
2510 val
* var198
/* : String */;
2511 char* var199
/* : NativeString */;
2512 long var200
/* : Int */;
2513 val
* var201
/* : FlatString */;
2514 val
* var202
/* : Array[Object] */;
2515 long var203
/* : Int */;
2516 val
* var204
/* : NativeArray[Object] */;
2517 val
* var205
/* : String */;
2518 short int var206
/* : Bool */;
2519 short int var207
/* : Bool */;
2520 static val
* varonce208
;
2521 val
* var209
/* : String */;
2522 char* var210
/* : NativeString */;
2523 long var211
/* : Int */;
2524 val
* var212
/* : FlatString */;
2525 val
* var213
/* : Array[Object] */;
2526 long var214
/* : Int */;
2527 val
* var215
/* : NativeArray[Object] */;
2528 val
* var216
/* : String */;
2529 static val
* varonce217
;
2530 val
* var218
/* : String */;
2531 char* var219
/* : NativeString */;
2532 long var220
/* : Int */;
2533 val
* var221
/* : FlatString */;
2534 static val
* varonce222
;
2535 val
* var223
/* : String */;
2536 char* var224
/* : NativeString */;
2537 long var225
/* : Int */;
2538 val
* var226
/* : FlatString */;
2539 val
* var227
/* : Array[Object] */;
2540 long var228
/* : Int */;
2541 val
* var229
/* : NativeArray[Object] */;
2542 val
* var230
/* : String */;
2543 static val
* varonce231
;
2544 val
* var232
/* : String */;
2545 char* var233
/* : NativeString */;
2546 long var234
/* : Int */;
2547 val
* var235
/* : FlatString */;
2548 static val
* varonce236
;
2549 val
* var237
/* : String */;
2550 char* var238
/* : NativeString */;
2551 long var239
/* : Int */;
2552 val
* var240
/* : FlatString */;
2553 static val
* varonce241
;
2554 val
* var242
/* : String */;
2555 char* var243
/* : NativeString */;
2556 long var244
/* : Int */;
2557 val
* var245
/* : FlatString */;
2558 val
* var246
/* : Array[Object] */;
2559 long var247
/* : Int */;
2560 val
* var248
/* : NativeArray[Object] */;
2561 val
* var249
/* : String */;
2562 static val
* varonce250
;
2563 val
* var251
/* : String */;
2564 char* var252
/* : NativeString */;
2565 long var253
/* : Int */;
2566 val
* var254
/* : FlatString */;
2567 val
* var255
/* : Range[Int] */;
2568 long var256
/* : Int */;
2569 long var257
/* : Int */;
2570 val
* var258
/* : Discrete */;
2571 val
* var259
/* : Discrete */;
2572 val
* var260
/* : Iterator[Discrete] */;
2573 short int var261
/* : Bool */;
2574 val
* var262
/* : nullable Object */;
2575 long var_i
/* var i: Int */;
2576 long var263
/* : Int */;
2577 val
* var264
/* : nullable Object */;
2578 val
* var_mpropdef
/* var mpropdef: nullable MPropDef */;
2579 val
* var265
/* : null */;
2580 short int var266
/* : Bool */;
2581 short int var267
/* : Bool */;
2582 short int var269
/* : Bool */;
2583 short int var271
/* : Bool */;
2584 static val
* varonce272
;
2585 val
* var273
/* : String */;
2586 char* var274
/* : NativeString */;
2587 long var275
/* : Int */;
2588 val
* var276
/* : FlatString */;
2589 short int var277
/* : Bool */;
2592 short int var278
/* : Bool */;
2593 val
* var279
/* : null */;
2594 short int var280
/* : Bool */;
2595 short int var281
/* : Bool */;
2596 short int var283
/* : Bool */;
2597 short int var284
/* : Bool */;
2598 short int var285
/* : Bool */;
2599 short int var_286
/* var : Bool */;
2600 val
* var287
/* : HashSet[MMethodDef] */;
2601 val
* var289
/* : HashSet[MMethodDef] */;
2602 short int var290
/* : Bool */;
2603 short int var291
/* : Bool */;
2604 static val
* varonce292
;
2605 val
* var293
/* : String */;
2606 char* var294
/* : NativeString */;
2607 long var295
/* : Int */;
2608 val
* var296
/* : FlatString */;
2609 val
* var297
/* : MModule */;
2610 val
* var299
/* : MModule */;
2611 static val
* varonce300
;
2612 val
* var301
/* : String */;
2613 char* var302
/* : NativeString */;
2614 long var303
/* : Int */;
2615 val
* var304
/* : FlatString */;
2616 static val
* varonce305
;
2617 val
* var306
/* : String */;
2618 char* var307
/* : NativeString */;
2619 long var308
/* : Int */;
2620 val
* var309
/* : FlatString */;
2621 static val
* varonce310
;
2622 val
* var311
/* : String */;
2623 char* var312
/* : NativeString */;
2624 long var313
/* : Int */;
2625 val
* var314
/* : FlatString */;
2626 val
* var315
/* : Array[Object] */;
2627 long var316
/* : Int */;
2628 val
* var317
/* : NativeArray[Object] */;
2629 val
* var318
/* : String */;
2630 short int var319
/* : Bool */;
2631 short int var320
/* : Bool */;
2632 short int var_321
/* var : Bool */;
2633 val
* var322
/* : MClassDef */;
2634 val
* var324
/* : MClassDef */;
2635 val
* var325
/* : MClassType */;
2636 val
* var327
/* : MClassType */;
2637 val
* var328
/* : String */;
2638 static val
* varonce329
;
2639 val
* var330
/* : String */;
2640 char* var331
/* : NativeString */;
2641 long var332
/* : Int */;
2642 val
* var333
/* : FlatString */;
2643 short int var334
/* : Bool */;
2644 short int var335
/* : Bool */;
2645 short int var337
/* : Bool */;
2646 short int var338
/* : Bool */;
2647 short int var339
/* : Bool */;
2648 static val
* varonce340
;
2649 val
* var341
/* : String */;
2650 char* var342
/* : NativeString */;
2651 long var343
/* : Int */;
2652 val
* var344
/* : FlatString */;
2653 val
* var345
/* : String */;
2654 val
* var346
/* : Array[Object] */;
2655 long var347
/* : Int */;
2656 val
* var348
/* : NativeArray[Object] */;
2657 val
* var349
/* : String */;
2658 static val
* varonce350
;
2659 val
* var351
/* : String */;
2660 char* var352
/* : NativeString */;
2661 long var353
/* : Int */;
2662 val
* var354
/* : FlatString */;
2663 val
* var355
/* : String */;
2664 static val
* varonce356
;
2665 val
* var357
/* : String */;
2666 char* var358
/* : NativeString */;
2667 long var359
/* : Int */;
2668 val
* var360
/* : FlatString */;
2669 val
* var361
/* : MModule */;
2670 val
* var363
/* : MModule */;
2671 static val
* varonce364
;
2672 val
* var365
/* : String */;
2673 char* var366
/* : NativeString */;
2674 long var367
/* : Int */;
2675 val
* var368
/* : FlatString */;
2676 static val
* varonce369
;
2677 val
* var370
/* : String */;
2678 char* var371
/* : NativeString */;
2679 long var372
/* : Int */;
2680 val
* var373
/* : FlatString */;
2681 static val
* varonce374
;
2682 val
* var375
/* : String */;
2683 char* var376
/* : NativeString */;
2684 long var377
/* : Int */;
2685 val
* var378
/* : FlatString */;
2686 val
* var379
/* : Array[Object] */;
2687 long var380
/* : Int */;
2688 val
* var381
/* : NativeArray[Object] */;
2689 val
* var382
/* : String */;
2690 val
* var383
/* : String */;
2691 val
* var384
/* : Array[Object] */;
2692 long var385
/* : Int */;
2693 val
* var386
/* : NativeArray[Object] */;
2694 val
* var387
/* : String */;
2695 static val
* varonce388
;
2696 val
* var389
/* : String */;
2697 char* var390
/* : NativeString */;
2698 long var391
/* : Int */;
2699 val
* var392
/* : FlatString */;
2700 val
* var393
/* : String */;
2701 static val
* varonce394
;
2702 val
* var395
/* : String */;
2703 char* var396
/* : NativeString */;
2704 long var397
/* : Int */;
2705 val
* var398
/* : FlatString */;
2706 val
* var399
/* : MModule */;
2707 val
* var401
/* : MModule */;
2708 static val
* varonce402
;
2709 val
* var403
/* : String */;
2710 char* var404
/* : NativeString */;
2711 long var405
/* : Int */;
2712 val
* var406
/* : FlatString */;
2713 static val
* varonce407
;
2714 val
* var408
/* : String */;
2715 char* var409
/* : NativeString */;
2716 long var410
/* : Int */;
2717 val
* var411
/* : FlatString */;
2718 static val
* varonce412
;
2719 val
* var413
/* : String */;
2720 char* var414
/* : NativeString */;
2721 long var415
/* : Int */;
2722 val
* var416
/* : FlatString */;
2723 val
* var417
/* : Array[Object] */;
2724 long var418
/* : Int */;
2725 val
* var419
/* : NativeArray[Object] */;
2726 val
* var420
/* : String */;
2727 static val
* varonce421
;
2728 val
* var422
/* : String */;
2729 char* var423
/* : NativeString */;
2730 long var424
/* : Int */;
2731 val
* var425
/* : FlatString */;
2732 static val
* varonce426
;
2733 val
* var427
/* : String */;
2734 char* var428
/* : NativeString */;
2735 long var429
/* : Int */;
2736 val
* var430
/* : FlatString */;
2737 static val
* varonce431
;
2738 val
* var432
/* : String */;
2739 char* var433
/* : NativeString */;
2740 long var434
/* : Int */;
2741 val
* var435
/* : FlatString */;
2742 static val
* varonce436
;
2743 val
* var437
/* : String */;
2744 char* var438
/* : NativeString */;
2745 long var439
/* : Int */;
2746 val
* var440
/* : FlatString */;
2747 val
* var441
/* : Array[Object] */;
2748 long var442
/* : Int */;
2749 val
* var443
/* : NativeArray[Object] */;
2750 val
* var444
/* : String */;
2751 long var445
/* : Int */;
2752 static val
* varonce446
;
2753 val
* var447
/* : String */;
2754 char* var448
/* : NativeString */;
2755 long var449
/* : Int */;
2756 val
* var450
/* : FlatString */;
2757 val
* var451
/* : Array[Object] */;
2758 long var452
/* : Int */;
2759 val
* var453
/* : NativeArray[Object] */;
2760 val
* var454
/* : Object */;
2761 val
* var455
/* : String */;
2762 static val
* varonce456
;
2763 val
* var457
/* : String */;
2764 char* var458
/* : NativeString */;
2765 long var459
/* : Int */;
2766 val
* var460
/* : FlatString */;
2767 val
* var461
/* : ArrayIterator[nullable Object] */;
2768 short int var462
/* : Bool */;
2769 val
* var463
/* : nullable Object */;
2770 val
* var_msuper
/* var msuper: nullable MClass */;
2771 val
* var464
/* : null */;
2772 short int var465
/* : Bool */;
2773 short int var466
/* : Bool */;
2774 short int var468
/* : Bool */;
2775 short int var470
/* : Bool */;
2776 static val
* varonce471
;
2777 val
* var472
/* : String */;
2778 char* var473
/* : NativeString */;
2779 long var474
/* : Int */;
2780 val
* var475
/* : FlatString */;
2781 val
* var476
/* : Map[MClass, Int] */;
2782 val
* var478
/* : Map[MClass, Int] */;
2783 val
* var479
/* : nullable Object */;
2784 static val
* varonce480
;
2785 val
* var481
/* : String */;
2786 char* var482
/* : NativeString */;
2787 long var483
/* : Int */;
2788 val
* var484
/* : FlatString */;
2789 static val
* varonce485
;
2790 val
* var486
/* : String */;
2791 char* var487
/* : NativeString */;
2792 long var488
/* : Int */;
2793 val
* var489
/* : FlatString */;
2794 val
* var490
/* : Array[Object] */;
2795 long var491
/* : Int */;
2796 val
* var492
/* : NativeArray[Object] */;
2797 val
* var493
/* : String */;
2798 static val
* varonce495
;
2799 val
* var496
/* : String */;
2800 char* var497
/* : NativeString */;
2801 long var498
/* : Int */;
2802 val
* var499
/* : FlatString */;
2803 static val
* varonce500
;
2804 val
* var501
/* : String */;
2805 char* var502
/* : NativeString */;
2806 long var503
/* : Int */;
2807 val
* var504
/* : FlatString */;
2808 val
* var505
/* : String */;
2809 static val
* varonce506
;
2810 val
* var507
/* : String */;
2811 char* var508
/* : NativeString */;
2812 long var509
/* : Int */;
2813 val
* var510
/* : FlatString */;
2814 short int var511
/* : Bool */;
2815 short int var512
/* : Bool */;
2816 short int var514
/* : Bool */;
2817 short int var515
/* : Bool */;
2818 short int var516
/* : Bool */;
2819 short int var517
/* : Bool */;
2820 val
* var518
/* : MClass */;
2821 val
* var520
/* : MClass */;
2822 val
* var521
/* : String */;
2823 val
* var523
/* : String */;
2824 static val
* varonce524
;
2825 val
* var525
/* : String */;
2826 char* var526
/* : NativeString */;
2827 long var527
/* : Int */;
2828 val
* var528
/* : FlatString */;
2829 short int var529
/* : Bool */;
2830 short int var530
/* : Bool */;
2831 short int var_531
/* var : Bool */;
2832 val
* var532
/* : MClass */;
2833 val
* var534
/* : MClass */;
2834 val
* var535
/* : MClassKind */;
2835 val
* var537
/* : MClassKind */;
2836 val
* var538
/* : MClassKind */;
2837 short int var539
/* : Bool */;
2838 short int var540
/* : Bool */;
2839 short int var542
/* : Bool */;
2840 short int var543
/* : Bool */;
2841 short int var544
/* : Bool */;
2842 val
* var545
/* : CodeWriter */;
2843 val
* var547
/* : CodeWriter */;
2844 static val
* varonce548
;
2845 val
* var549
/* : String */;
2846 char* var550
/* : NativeString */;
2847 long var551
/* : Int */;
2848 val
* var552
/* : FlatString */;
2849 static val
* varonce553
;
2850 val
* var554
/* : String */;
2851 char* var555
/* : NativeString */;
2852 long var556
/* : Int */;
2853 val
* var557
/* : FlatString */;
2854 val
* var558
/* : Array[Object] */;
2855 long var559
/* : Int */;
2856 val
* var560
/* : NativeArray[Object] */;
2857 val
* var561
/* : String */;
2858 val
* var562
/* : CodeWriter */;
2859 val
* var564
/* : CodeWriter */;
2860 static val
* varonce565
;
2861 val
* var566
/* : String */;
2862 char* var567
/* : NativeString */;
2863 long var568
/* : Int */;
2864 val
* var569
/* : FlatString */;
2865 val
* var570
/* : CodeWriter */;
2866 val
* var572
/* : CodeWriter */;
2867 val
* var573
/* : String */;
2868 static val
* varonce574
;
2869 val
* var575
/* : String */;
2870 char* var576
/* : NativeString */;
2871 long var577
/* : Int */;
2872 val
* var578
/* : FlatString */;
2873 val
* var579
/* : Array[Object] */;
2874 long var580
/* : Int */;
2875 val
* var581
/* : NativeArray[Object] */;
2876 val
* var582
/* : String */;
2877 val
* var583
/* : CodeWriter */;
2878 val
* var585
/* : CodeWriter */;
2879 static val
* varonce586
;
2880 val
* var587
/* : String */;
2881 char* var588
/* : NativeString */;
2882 long var589
/* : Int */;
2883 val
* var590
/* : FlatString */;
2884 static val
* varonce591
;
2885 val
* var592
/* : String */;
2886 char* var593
/* : NativeString */;
2887 long var594
/* : Int */;
2888 val
* var595
/* : FlatString */;
2889 val
* var596
/* : Array[Object] */;
2890 long var597
/* : Int */;
2891 val
* var598
/* : NativeArray[Object] */;
2892 val
* var599
/* : String */;
2893 static val
* varonce600
;
2894 val
* var601
/* : String */;
2895 char* var602
/* : NativeString */;
2896 long var603
/* : Int */;
2897 val
* var604
/* : FlatString */;
2898 static val
* varonce605
;
2899 val
* var606
/* : String */;
2900 char* var607
/* : NativeString */;
2901 long var608
/* : Int */;
2902 val
* var609
/* : FlatString */;
2903 val
* var610
/* : String */;
2904 static val
* varonce611
;
2905 val
* var612
/* : String */;
2906 char* var613
/* : NativeString */;
2907 long var614
/* : Int */;
2908 val
* var615
/* : FlatString */;
2909 val
* var616
/* : Array[Object] */;
2910 long var617
/* : Int */;
2911 val
* var618
/* : NativeArray[Object] */;
2912 val
* var619
/* : String */;
2913 static val
* varonce620
;
2914 val
* var621
/* : String */;
2915 char* var622
/* : NativeString */;
2916 long var623
/* : Int */;
2917 val
* var624
/* : FlatString */;
2918 static val
* varonce625
;
2919 val
* var626
/* : String */;
2920 char* var627
/* : NativeString */;
2921 long var628
/* : Int */;
2922 val
* var629
/* : FlatString */;
2923 val
* var630
/* : Array[Object] */;
2924 long var631
/* : Int */;
2925 val
* var632
/* : NativeArray[Object] */;
2926 val
* var633
/* : String */;
2927 static val
* varonce634
;
2928 val
* var635
/* : String */;
2929 char* var636
/* : NativeString */;
2930 long var637
/* : Int */;
2931 val
* var638
/* : FlatString */;
2932 val
* var639
/* : String */;
2933 static val
* varonce640
;
2934 val
* var641
/* : String */;
2935 char* var642
/* : NativeString */;
2936 long var643
/* : Int */;
2937 val
* var644
/* : FlatString */;
2938 val
* var645
/* : String */;
2939 static val
* varonce646
;
2940 val
* var647
/* : String */;
2941 char* var648
/* : NativeString */;
2942 long var649
/* : Int */;
2943 val
* var650
/* : FlatString */;
2944 val
* var651
/* : Array[Object] */;
2945 long var652
/* : Int */;
2946 val
* var653
/* : NativeArray[Object] */;
2947 val
* var654
/* : String */;
2948 static val
* varonce655
;
2949 val
* var656
/* : String */;
2950 char* var657
/* : NativeString */;
2951 long var658
/* : Int */;
2952 val
* var659
/* : FlatString */;
2953 static val
* varonce660
;
2954 val
* var661
/* : String */;
2955 char* var662
/* : NativeString */;
2956 long var663
/* : Int */;
2957 val
* var664
/* : FlatString */;
2958 static val
* varonce665
;
2959 val
* var666
/* : String */;
2960 char* var667
/* : NativeString */;
2961 long var668
/* : Int */;
2962 val
* var669
/* : FlatString */;
2963 val
* var670
/* : Array[Object] */;
2964 long var671
/* : Int */;
2965 val
* var672
/* : NativeArray[Object] */;
2966 val
* var673
/* : String */;
2967 static val
* varonce674
;
2968 val
* var675
/* : String */;
2969 char* var676
/* : NativeString */;
2970 long var677
/* : Int */;
2971 val
* var678
/* : FlatString */;
2972 val
* var679
/* : Array[Object] */;
2973 long var680
/* : Int */;
2974 val
* var681
/* : NativeArray[Object] */;
2975 val
* var682
/* : String */;
2976 static val
* varonce683
;
2977 val
* var684
/* : String */;
2978 char* var685
/* : NativeString */;
2979 long var686
/* : Int */;
2980 val
* var687
/* : FlatString */;
2981 static val
* varonce688
;
2982 val
* var689
/* : String */;
2983 char* var690
/* : NativeString */;
2984 long var691
/* : Int */;
2985 val
* var692
/* : FlatString */;
2986 val
* var693
/* : Array[Object] */;
2987 long var694
/* : Int */;
2988 val
* var695
/* : NativeArray[Object] */;
2989 val
* var696
/* : String */;
2990 static val
* varonce697
;
2991 val
* var698
/* : String */;
2992 char* var699
/* : NativeString */;
2993 long var700
/* : Int */;
2994 val
* var701
/* : FlatString */;
2995 static val
* varonce702
;
2996 val
* var703
/* : String */;
2997 char* var704
/* : NativeString */;
2998 long var705
/* : Int */;
2999 val
* var706
/* : FlatString */;
3000 static val
* varonce707
;
3001 val
* var708
/* : String */;
3002 char* var709
/* : NativeString */;
3003 long var710
/* : Int */;
3004 val
* var711
/* : FlatString */;
3005 val
* var712
/* : String */;
3006 val
* var714
/* : String */;
3007 static val
* varonce715
;
3008 val
* var716
/* : String */;
3009 char* var717
/* : NativeString */;
3010 long var718
/* : Int */;
3011 val
* var719
/* : FlatString */;
3012 short int var720
/* : Bool */;
3013 short int var721
/* : Bool */;
3014 val
* var722
/* : CodeWriter */;
3015 val
* var724
/* : CodeWriter */;
3016 static val
* varonce725
;
3017 val
* var726
/* : String */;
3018 char* var727
/* : NativeString */;
3019 long var728
/* : Int */;
3020 val
* var729
/* : FlatString */;
3021 static val
* varonce730
;
3022 val
* var731
/* : String */;
3023 char* var732
/* : NativeString */;
3024 long var733
/* : Int */;
3025 val
* var734
/* : FlatString */;
3026 val
* var735
/* : Array[Object] */;
3027 long var736
/* : Int */;
3028 val
* var737
/* : NativeArray[Object] */;
3029 val
* var738
/* : String */;
3030 val
* var739
/* : CodeWriter */;
3031 val
* var741
/* : CodeWriter */;
3032 static val
* varonce742
;
3033 val
* var743
/* : String */;
3034 char* var744
/* : NativeString */;
3035 long var745
/* : Int */;
3036 val
* var746
/* : FlatString */;
3037 val
* var747
/* : CodeWriter */;
3038 val
* var749
/* : CodeWriter */;
3039 static val
* varonce750
;
3040 val
* var751
/* : String */;
3041 char* var752
/* : NativeString */;
3042 long var753
/* : Int */;
3043 val
* var754
/* : FlatString */;
3044 val
* var755
/* : CodeWriter */;
3045 val
* var757
/* : CodeWriter */;
3046 static val
* varonce758
;
3047 val
* var759
/* : String */;
3048 char* var760
/* : NativeString */;
3049 long var761
/* : Int */;
3050 val
* var762
/* : FlatString */;
3051 val
* var763
/* : CodeWriter */;
3052 val
* var765
/* : CodeWriter */;
3053 static val
* varonce766
;
3054 val
* var767
/* : String */;
3055 char* var768
/* : NativeString */;
3056 long var769
/* : Int */;
3057 val
* var770
/* : FlatString */;
3058 static val
* varonce771
;
3059 val
* var772
/* : String */;
3060 char* var773
/* : NativeString */;
3061 long var774
/* : Int */;
3062 val
* var775
/* : FlatString */;
3063 val
* var776
/* : Array[Object] */;
3064 long var777
/* : Int */;
3065 val
* var778
/* : NativeArray[Object] */;
3066 val
* var779
/* : String */;
3067 val
* var780
/* : String */;
3068 static val
* varonce781
;
3069 val
* var782
/* : String */;
3070 char* var783
/* : NativeString */;
3071 long var784
/* : Int */;
3072 val
* var785
/* : FlatString */;
3073 static val
* varonce786
;
3074 val
* var787
/* : String */;
3075 char* var788
/* : NativeString */;
3076 long var789
/* : Int */;
3077 val
* var790
/* : FlatString */;
3078 val
* var791
/* : Array[Object] */;
3079 long var792
/* : Int */;
3080 val
* var793
/* : NativeArray[Object] */;
3081 val
* var794
/* : String */;
3082 static val
* varonce795
;
3083 val
* var796
/* : String */;
3084 char* var797
/* : NativeString */;
3085 long var798
/* : Int */;
3086 val
* var799
/* : FlatString */;
3087 static val
* varonce800
;
3088 val
* var801
/* : String */;
3089 char* var802
/* : NativeString */;
3090 long var803
/* : Int */;
3091 val
* var804
/* : FlatString */;
3092 val
* var805
/* : Array[Object] */;
3093 long var806
/* : Int */;
3094 val
* var807
/* : NativeArray[Object] */;
3095 val
* var808
/* : String */;
3096 val
* var809
/* : String */;
3097 static val
* varonce810
;
3098 val
* var811
/* : String */;
3099 char* var812
/* : NativeString */;
3100 long var813
/* : Int */;
3101 val
* var814
/* : FlatString */;
3102 static val
* varonce815
;
3103 val
* var816
/* : String */;
3104 char* var817
/* : NativeString */;
3105 long var818
/* : Int */;
3106 val
* var819
/* : FlatString */;
3107 val
* var820
/* : Array[Object] */;
3108 long var821
/* : Int */;
3109 val
* var822
/* : NativeArray[Object] */;
3110 val
* var823
/* : String */;
3111 static val
* varonce824
;
3112 val
* var825
/* : String */;
3113 char* var826
/* : NativeString */;
3114 long var827
/* : Int */;
3115 val
* var828
/* : FlatString */;
3116 val
* var829
/* : String */;
3117 val
* var_res
/* var res: String */;
3118 static val
* varonce830
;
3119 val
* var831
/* : String */;
3120 char* var832
/* : NativeString */;
3121 long var833
/* : Int */;
3122 val
* var834
/* : FlatString */;
3123 static val
* varonce835
;
3124 val
* var836
/* : String */;
3125 char* var837
/* : NativeString */;
3126 long var838
/* : Int */;
3127 val
* var839
/* : FlatString */;
3128 static val
* varonce840
;
3129 val
* var841
/* : String */;
3130 char* var842
/* : NativeString */;
3131 long var843
/* : Int */;
3132 val
* var844
/* : FlatString */;
3133 val
* var845
/* : Array[Object] */;
3134 long var846
/* : Int */;
3135 val
* var847
/* : NativeArray[Object] */;
3136 val
* var848
/* : String */;
3137 val
* var849
/* : Array[MType] */;
3138 val
* var851
/* : Array[MType] */;
3139 val
* var852
/* : nullable Object */;
3140 val
* var_mtype_elt
/* var mtype_elt: MType */;
3141 static val
* varonce853
;
3142 val
* var854
/* : String */;
3143 char* var855
/* : NativeString */;
3144 long var856
/* : Int */;
3145 val
* var857
/* : FlatString */;
3146 static val
* varonce858
;
3147 val
* var859
/* : String */;
3148 char* var860
/* : NativeString */;
3149 long var861
/* : Int */;
3150 val
* var862
/* : FlatString */;
3151 val
* var863
/* : String */;
3152 static val
* varonce864
;
3153 val
* var865
/* : String */;
3154 char* var866
/* : NativeString */;
3155 long var867
/* : Int */;
3156 val
* var868
/* : FlatString */;
3157 val
* var869
/* : Array[Object] */;
3158 long var870
/* : Int */;
3159 val
* var871
/* : NativeArray[Object] */;
3160 val
* var872
/* : String */;
3161 static val
* varonce873
;
3162 val
* var874
/* : String */;
3163 char* var875
/* : NativeString */;
3164 long var876
/* : Int */;
3165 val
* var877
/* : FlatString */;
3166 val
* var878
/* : Array[Object] */;
3167 long var879
/* : Int */;
3168 val
* var880
/* : NativeArray[Object] */;
3169 val
* var881
/* : String */;
3170 static val
* varonce882
;
3171 val
* var883
/* : String */;
3172 char* var884
/* : NativeString */;
3173 long var885
/* : Int */;
3174 val
* var886
/* : FlatString */;
3175 static val
* varonce887
;
3176 val
* var888
/* : String */;
3177 char* var889
/* : NativeString */;
3178 long var890
/* : Int */;
3179 val
* var891
/* : FlatString */;
3180 val
* var892
/* : Array[Object] */;
3181 long var893
/* : Int */;
3182 val
* var894
/* : NativeArray[Object] */;
3183 val
* var895
/* : String */;
3184 static val
* varonce896
;
3185 val
* var897
/* : String */;
3186 char* var898
/* : NativeString */;
3187 long var899
/* : Int */;
3188 val
* var900
/* : FlatString */;
3189 val
* var901
/* : Array[Object] */;
3190 long var902
/* : Int */;
3191 val
* var903
/* : NativeArray[Object] */;
3192 val
* var904
/* : String */;
3193 static val
* varonce905
;
3194 val
* var906
/* : String */;
3195 char* var907
/* : NativeString */;
3196 long var908
/* : Int */;
3197 val
* var909
/* : FlatString */;
3198 static val
* varonce910
;
3199 val
* var911
/* : String */;
3200 char* var912
/* : NativeString */;
3201 long var913
/* : Int */;
3202 val
* var914
/* : FlatString */;
3203 val
* var915
/* : Array[Object] */;
3204 long var916
/* : Int */;
3205 val
* var917
/* : NativeArray[Object] */;
3206 val
* var918
/* : String */;
3207 static val
* varonce919
;
3208 val
* var920
/* : String */;
3209 char* var921
/* : NativeString */;
3210 long var922
/* : Int */;
3211 val
* var923
/* : FlatString */;
3212 static val
* varonce924
;
3213 val
* var925
/* : String */;
3214 char* var926
/* : NativeString */;
3215 long var927
/* : Int */;
3216 val
* var928
/* : FlatString */;
3217 val
* var929
/* : Array[Object] */;
3218 long var930
/* : Int */;
3219 val
* var931
/* : NativeArray[Object] */;
3220 val
* var932
/* : String */;
3221 val
* var933
/* : String */;
3222 static val
* varonce934
;
3223 val
* var935
/* : String */;
3224 char* var936
/* : NativeString */;
3225 long var937
/* : Int */;
3226 val
* var938
/* : FlatString */;
3227 static val
* varonce939
;
3228 val
* var940
/* : String */;
3229 char* var941
/* : NativeString */;
3230 long var942
/* : Int */;
3231 val
* var943
/* : FlatString */;
3232 val
* var944
/* : Array[Object] */;
3233 long var945
/* : Int */;
3234 val
* var946
/* : NativeArray[Object] */;
3235 val
* var947
/* : String */;
3236 static val
* varonce948
;
3237 val
* var949
/* : String */;
3238 char* var950
/* : NativeString */;
3239 long var951
/* : Int */;
3240 val
* var952
/* : FlatString */;
3241 static val
* varonce953
;
3242 val
* var954
/* : String */;
3243 char* var955
/* : NativeString */;
3244 long var956
/* : Int */;
3245 val
* var957
/* : FlatString */;
3246 val
* var958
/* : Array[Object] */;
3247 long var959
/* : Int */;
3248 val
* var960
/* : NativeArray[Object] */;
3249 val
* var961
/* : String */;
3250 val
* var962
/* : String */;
3251 static val
* varonce963
;
3252 val
* var964
/* : String */;
3253 char* var965
/* : NativeString */;
3254 long var966
/* : Int */;
3255 val
* var967
/* : FlatString */;
3256 static val
* varonce968
;
3257 val
* var969
/* : String */;
3258 char* var970
/* : NativeString */;
3259 long var971
/* : Int */;
3260 val
* var972
/* : FlatString */;
3261 val
* var973
/* : Array[Object] */;
3262 long var974
/* : Int */;
3263 val
* var975
/* : NativeArray[Object] */;
3264 val
* var976
/* : String */;
3265 static val
* varonce977
;
3266 val
* var978
/* : String */;
3267 char* var979
/* : NativeString */;
3268 long var980
/* : Int */;
3269 val
* var981
/* : FlatString */;
3270 val
* var982
/* : Array[Object] */;
3271 long var983
/* : Int */;
3272 val
* var984
/* : NativeArray[Object] */;
3273 val
* var985
/* : String */;
3274 static val
* varonce986
;
3275 val
* var987
/* : String */;
3276 char* var988
/* : NativeString */;
3277 long var989
/* : Int */;
3278 val
* var990
/* : FlatString */;
3279 val
* var991
/* : RuntimeVariable */;
3280 val
* var_res992
/* var res: RuntimeVariable */;
3281 short int var993
/* : Bool */;
3282 static val
* varonce995
;
3283 val
* var996
/* : String */;
3284 char* var997
/* : NativeString */;
3285 long var998
/* : Int */;
3286 val
* var999
/* : FlatString */;
3287 long var1000
/* : Int */;
3288 static val
* varonce1001
;
3289 val
* var1002
/* : String */;
3290 char* var1003
/* : NativeString */;
3291 long var1004
/* : Int */;
3292 val
* var1005
/* : FlatString */;
3293 val
* var1006
/* : Array[Object] */;
3294 long var1007
/* : Int */;
3295 val
* var1008
/* : NativeArray[Object] */;
3296 val
* var1009
/* : Object */;
3297 val
* var1010
/* : String */;
3298 static val
* varonce1011
;
3299 val
* var1012
/* : String */;
3300 char* var1013
/* : NativeString */;
3301 long var1014
/* : Int */;
3302 val
* var1015
/* : FlatString */;
3303 val
* var1016
/* : Array[Object] */;
3304 long var1017
/* : Int */;
3305 val
* var1018
/* : NativeArray[Object] */;
3306 val
* var1019
/* : String */;
3307 static val
* varonce1020
;
3308 val
* var1021
/* : String */;
3309 char* var1022
/* : NativeString */;
3310 long var1023
/* : Int */;
3311 val
* var1024
/* : FlatString */;
3312 static val
* varonce1025
;
3313 val
* var1026
/* : String */;
3314 char* var1027
/* : NativeString */;
3315 long var1028
/* : Int */;
3316 val
* var1029
/* : FlatString */;
3317 val
* var1030
/* : Array[Object] */;
3318 long var1031
/* : Int */;
3319 val
* var1032
/* : NativeArray[Object] */;
3320 val
* var1033
/* : String */;
3321 static val
* varonce1034
;
3322 val
* var1035
/* : String */;
3323 char* var1036
/* : NativeString */;
3324 long var1037
/* : Int */;
3325 val
* var1038
/* : FlatString */;
3326 static val
* varonce1039
;
3327 val
* var1040
/* : String */;
3328 char* var1041
/* : NativeString */;
3329 long var1042
/* : Int */;
3330 val
* var1043
/* : FlatString */;
3331 val
* var1044
/* : Array[Object] */;
3332 long var1045
/* : Int */;
3333 val
* var1046
/* : NativeArray[Object] */;
3334 val
* var1047
/* : String */;
3335 static val
* varonce1048
;
3336 val
* var1049
/* : String */;
3337 char* var1050
/* : NativeString */;
3338 long var1051
/* : Int */;
3339 val
* var1052
/* : FlatString */;
3342 var
= model__MClass__intro(var_mclass
);
3345 { /* Inline model#MClassDef#bound_mtype (var) on <var:MClassDef> */
3346 var3
= var
->attrs
[COLOR_model__MClassDef___bound_mtype
].val
; /* _bound_mtype on <var:MClassDef> */
3347 if (unlikely(var3
== NULL
)) {
3348 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
3349 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
3358 var4
= abstract_compiler__MClass__c_name(var_mclass
);
3362 var5
= separate_compiler__MClass__c_instance_name(var_mclass
);
3364 var_c_instance_name
= var5
;
3366 { /* Inline separate_compiler#SeparateCompiler#method_tables (self) on <self:SeparateErasureCompiler> */
3367 var8
= self
->attrs
[COLOR_separate_compiler__SeparateCompiler___method_tables
].val
; /* _method_tables on <self:SeparateErasureCompiler> */
3368 if (unlikely(var8
== NULL
)) {
3369 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
3370 PRINT_ERROR(" (%s:%d)\n", "src/separate_compiler.nit", 792);
3378 var9
= ((val
* (*)(val
*, val
*))(var6
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var6
, var_mclass
) /* [] on <var6:Map[MClass, Array[nullable MPropDef]]>*/;
3382 { /* Inline separate_compiler#SeparateCompiler#attr_tables (self) on <self:SeparateErasureCompiler> */
3383 var12
= self
->attrs
[COLOR_separate_compiler__SeparateCompiler___attr_tables
].val
; /* _attr_tables on <self:SeparateErasureCompiler> */
3384 if (unlikely(var12
== NULL
)) {
3385 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
3386 PRINT_ERROR(" (%s:%d)\n", "src/separate_compiler.nit", 793);
3390 RET_LABEL11
:(void)0;
3394 var13
= ((val
* (*)(val
*, val
*))(var10
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var10
, var_mclass
) /* [] on <var10:Map[MClass, Array[nullable MPropDef]]>*/;
3398 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_tables (self) on <self:SeparateErasureCompiler> */
3399 var16
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_tables
].val
; /* _class_tables on <self:SeparateErasureCompiler> */
3400 if (unlikely(var16
== NULL
)) {
3401 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_tables");
3402 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 395);
3406 RET_LABEL15
:(void)0;
3410 var17
= ((val
* (*)(val
*, val
*))(var14
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var14
, var_mclass
) /* [] on <var14:Map[MClass, Array[nullable MClass]]>*/;
3412 var_class_table
= var17
;
3414 var18
= separate_erasure_compiler__SeparateErasureCompiler__new_visitor(self
);
3418 { /* Inline separate_compiler#SeparateCompiler#runtime_type_analysis (self) on <self:SeparateErasureCompiler> */
3419 var21
= self
->attrs
[COLOR_separate_compiler__SeparateCompiler___runtime_type_analysis
].val
; /* _runtime_type_analysis on <self:SeparateErasureCompiler> */
3421 RET_LABEL20
:(void)0;
3426 { /* Inline model#MClass#kind (var_mclass) on <var_mclass:MClass> */
3427 var25
= var_mclass
->attrs
[COLOR_model__MClass___kind
].val
; /* _kind on <var_mclass:MClass> */
3428 if (unlikely(var25
== NULL
)) {
3429 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
3430 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
3434 RET_LABEL24
:(void)0;
3438 var26
= model__Object__abstract_kind(self
);
3441 { /* Inline kernel#Object#== (var23,var26) on <var23:MClassKind> */
3444 { /* Inline kernel#Object#is_same_instance (var23,var_other) on <var23:MClassKind> */
3445 var32
= var23
== var_other
;
3448 RET_LABEL31
:(void)0;
3453 RET_LABEL29
:(void)0;
3462 { /* Inline model#MClass#kind (var_mclass) on <var_mclass:MClass> */
3463 var35
= var_mclass
->attrs
[COLOR_model__MClass___kind
].val
; /* _kind on <var_mclass:MClass> */
3464 if (unlikely(var35
== NULL
)) {
3465 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
3466 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
3470 RET_LABEL34
:(void)0;
3474 var36
= model__Object__interface_kind(self
);
3477 { /* Inline kernel#Object#== (var33,var36) on <var33:MClassKind> */
3480 { /* Inline kernel#Object#is_same_instance (var33,var_other) on <var33:MClassKind> */
3481 var42
= var33
== var_other
;
3484 RET_LABEL41
:(void)0;
3489 RET_LABEL39
:(void)0;
3495 var_is_dead
= var22
;
3496 var47
= !var_is_dead
;
3500 if (var_rta
== NULL
) {
3501 var50
= 0; /* is null */
3503 var50
= 1; /* arg is null and recv is not */
3506 { /* Inline kernel#Object#!= (var_rta,var49) on <var_rta:nullable RapidTypeAnalysis> */
3507 var_other53
= var49
;
3509 var55
= ((short int (*)(val
*, val
*))(var_rta
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_rta
, var_other53
) /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/;
3515 RET_LABEL52
:(void)0;
3526 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_classes (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
3527 var60
= var_rta
->attrs
[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_classes
].val
; /* _live_classes on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
3528 if (unlikely(var60
== NULL
)) {
3529 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_classes");
3530 PRINT_ERROR(" (%s:%d)\n", "src/rapid_type_analysis.nit", 64);
3534 RET_LABEL59
:(void)0;
3538 var61
= hash_collection__HashSet__has(var58
, var_mclass
);
3548 var64
= abstract_compiler__MClassType__ctype(var_mtype
);
3555 var68
= string__NativeString__to_s_with_length(var66
, var67
);
3560 var70
= string__FlatString___61d_61d(var64
, var65
);
3570 { /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
3571 var74
= var_mclass
->attrs
[COLOR_model__MClass___name
].val
; /* _name on <var_mclass:MClass> */
3572 if (unlikely(var74
== NULL
)) {
3573 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3574 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 340);
3578 RET_LABEL73
:(void)0;
3584 var77
= "NativeArray";
3586 var79
= string__NativeString__to_s_with_length(var77
, var78
);
3591 { /* Inline kernel#Object#!= (var72,var76) on <var72:String> */
3592 var_other53
= var76
;
3594 var84
= ((short int (*)(val
*, val
*))(var72
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var72
, var_other53
) /* == on <var72:String>*/;
3600 RET_LABEL82
:(void)0;
3610 var_is_dead
= var86
;
3616 var89
= "/* runtime class ";
3618 var91
= string__NativeString__to_s_with_length(var89
, var90
);
3627 var96
= string__NativeString__to_s_with_length(var94
, var95
);
3631 var97
= NEW_array__Array(&type_array__Arraykernel__Object
);
3632 { /* var97 = array_instance Array[Object] */
3634 var99
= NEW_array__NativeArray(var98
, &type_array__NativeArraykernel__Object
);
3635 ((struct instance_array__NativeArray
*)var99
)->values
[0] = (val
*) var88
;
3636 ((struct instance_array__NativeArray
*)var99
)->values
[1] = (val
*) var_c_name
;
3637 ((struct instance_array__NativeArray
*)var99
)->values
[2] = (val
*) var93
;
3639 ((void (*)(val
*, val
*, long))(var97
->class->vft
[COLOR_array__Array__with_native
]))(var97
, var99
, var98
) /* with_native on <var97:Array[Object]>*/;
3643 var100
= ((val
* (*)(val
*))(var97
->class->vft
[COLOR_string__Object__to_s
]))(var97
) /* to_s on <var97:Array[Object]>*/;
3646 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var100
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3649 var102
= varonce101
;
3653 var105
= string__NativeString__to_s_with_length(var103
, var104
);
3655 varonce101
= var102
;
3657 var106
= NEW_array__Array(&type_array__Arraykernel__Object
);
3658 { /* var106 = array_instance Array[Object] */
3660 var108
= NEW_array__NativeArray(var107
, &type_array__NativeArraykernel__Object
);
3661 ((struct instance_array__NativeArray
*)var108
)->values
[0] = (val
*) var102
;
3662 ((struct instance_array__NativeArray
*)var108
)->values
[1] = (val
*) var_c_name
;
3664 ((void (*)(val
*, val
*, long))(var106
->class->vft
[COLOR_array__Array__with_native
]))(var106
, var108
, var107
) /* with_native on <var106:Array[Object]>*/;
3668 var109
= ((val
* (*)(val
*))(var106
->class->vft
[COLOR_string__Object__to_s
]))(var106
) /* to_s on <var106:Array[Object]>*/;
3671 var111
= varonce110
;
3673 var112
= "extern const struct class class_";
3675 var114
= string__NativeString__to_s_with_length(var112
, var113
);
3677 varonce110
= var111
;
3680 var116
= varonce115
;
3684 var119
= string__NativeString__to_s_with_length(var117
, var118
);
3686 varonce115
= var116
;
3688 var120
= NEW_array__Array(&type_array__Arraykernel__Object
);
3689 { /* var120 = array_instance Array[Object] */
3691 var122
= NEW_array__NativeArray(var121
, &type_array__NativeArraykernel__Object
);
3692 ((struct instance_array__NativeArray
*)var122
)->values
[0] = (val
*) var111
;
3693 ((struct instance_array__NativeArray
*)var122
)->values
[1] = (val
*) var_c_name
;
3694 ((struct instance_array__NativeArray
*)var122
)->values
[2] = (val
*) var116
;
3696 ((void (*)(val
*, val
*, long))(var120
->class->vft
[COLOR_array__Array__with_native
]))(var120
, var122
, var121
) /* with_native on <var120:Array[Object]>*/;
3700 var123
= ((val
* (*)(val
*))(var120
->class->vft
[COLOR_string__Object__to_s
]))(var120
) /* to_s on <var120:Array[Object]>*/;
3703 abstract_compiler__AbstractCompiler__provide_declaration(self
, var109
, var123
); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateErasureCompiler>*/
3706 var125
= varonce124
;
3708 var126
= "extern const struct type_table type_table_";
3710 var128
= string__NativeString__to_s_with_length(var126
, var127
);
3712 varonce124
= var125
;
3715 var130
= varonce129
;
3719 var133
= string__NativeString__to_s_with_length(var131
, var132
);
3721 varonce129
= var130
;
3723 var134
= NEW_array__Array(&type_array__Arraykernel__Object
);
3724 { /* var134 = array_instance Array[Object] */
3726 var136
= NEW_array__NativeArray(var135
, &type_array__NativeArraykernel__Object
);
3727 ((struct instance_array__NativeArray
*)var136
)->values
[0] = (val
*) var125
;
3728 ((struct instance_array__NativeArray
*)var136
)->values
[1] = (val
*) var_c_name
;
3729 ((struct instance_array__NativeArray
*)var136
)->values
[2] = (val
*) var130
;
3731 ((void (*)(val
*, val
*, long))(var134
->class->vft
[COLOR_array__Array__with_native
]))(var134
, var136
, var135
) /* with_native on <var134:Array[Object]>*/;
3735 var137
= ((val
* (*)(val
*))(var134
->class->vft
[COLOR_string__Object__to_s
]))(var134
) /* to_s on <var134:Array[Object]>*/;
3738 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var137
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3741 var139
= varonce138
;
3743 var140
= "const struct class class_";
3745 var142
= string__NativeString__to_s_with_length(var140
, var141
);
3747 varonce138
= var139
;
3750 var144
= varonce143
;
3754 var147
= string__NativeString__to_s_with_length(var145
, var146
);
3756 varonce143
= var144
;
3758 var148
= NEW_array__Array(&type_array__Arraykernel__Object
);
3759 { /* var148 = array_instance Array[Object] */
3761 var150
= NEW_array__NativeArray(var149
, &type_array__NativeArraykernel__Object
);
3762 ((struct instance_array__NativeArray
*)var150
)->values
[0] = (val
*) var139
;
3763 ((struct instance_array__NativeArray
*)var150
)->values
[1] = (val
*) var_c_name
;
3764 ((struct instance_array__NativeArray
*)var150
)->values
[2] = (val
*) var144
;
3766 ((void (*)(val
*, val
*, long))(var148
->class->vft
[COLOR_array__Array__with_native
]))(var148
, var150
, var149
) /* with_native on <var148:Array[Object]>*/;
3770 var151
= ((val
* (*)(val
*))(var148
->class->vft
[COLOR_string__Object__to_s
]))(var148
) /* to_s on <var148:Array[Object]>*/;
3773 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var151
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3776 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_ids (self) on <self:SeparateErasureCompiler> */
3777 var154
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids
].val
; /* _class_ids on <self:SeparateErasureCompiler> */
3778 if (unlikely(var154
== NULL
)) {
3779 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_ids");
3780 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 95);
3784 RET_LABEL153
:(void)0;
3788 var155
= ((val
* (*)(val
*, val
*))(var152
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var152
, var_mclass
) /* [] on <var152:Map[MClass, Int]>*/;
3791 var157
= varonce156
;
3795 var160
= string__NativeString__to_s_with_length(var158
, var159
);
3797 varonce156
= var157
;
3799 var161
= NEW_array__Array(&type_array__Arraykernel__Object
);
3800 { /* var161 = array_instance Array[Object] */
3802 var163
= NEW_array__NativeArray(var162
, &type_array__NativeArraykernel__Object
);
3803 ((struct instance_array__NativeArray
*)var163
)->values
[0] = (val
*) var155
;
3804 ((struct instance_array__NativeArray
*)var163
)->values
[1] = (val
*) var157
;
3806 ((void (*)(val
*, val
*, long))(var161
->class->vft
[COLOR_array__Array__with_native
]))(var161
, var163
, var162
) /* with_native on <var161:Array[Object]>*/;
3810 var164
= ((val
* (*)(val
*))(var161
->class->vft
[COLOR_string__Object__to_s
]))(var161
) /* to_s on <var161:Array[Object]>*/;
3813 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var164
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3816 var166
= varonce165
;
3820 var169
= string__NativeString__to_s_with_length(var167
, var168
);
3822 varonce165
= var166
;
3825 { /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
3826 var172
= var_mclass
->attrs
[COLOR_model__MClass___name
].val
; /* _name on <var_mclass:MClass> */
3827 if (unlikely(var172
== NULL
)) {
3828 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
3829 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 340);
3833 RET_LABEL171
:(void)0;
3837 var174
= varonce173
;
3839 var175
= "\", /* class_name_string */";
3841 var177
= string__NativeString__to_s_with_length(var175
, var176
);
3843 varonce173
= var174
;
3845 var178
= NEW_array__Array(&type_array__Arraykernel__Object
);
3846 { /* var178 = array_instance Array[Object] */
3848 var180
= NEW_array__NativeArray(var179
, &type_array__NativeArraykernel__Object
);
3849 ((struct instance_array__NativeArray
*)var180
)->values
[0] = (val
*) var166
;
3850 ((struct instance_array__NativeArray
*)var180
)->values
[1] = (val
*) var170
;
3851 ((struct instance_array__NativeArray
*)var180
)->values
[2] = (val
*) var174
;
3853 ((void (*)(val
*, val
*, long))(var178
->class->vft
[COLOR_array__Array__with_native
]))(var178
, var180
, var179
) /* with_native on <var178:Array[Object]>*/;
3857 var181
= ((val
* (*)(val
*))(var178
->class->vft
[COLOR_string__Object__to_s
]))(var178
) /* to_s on <var178:Array[Object]>*/;
3860 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var181
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3863 var182
= separate_compiler__SeparateCompiler__box_kind_of(self
, var_mclass
);
3866 var184
= varonce183
;
3868 var185
= ", /* box_kind */";
3870 var187
= string__NativeString__to_s_with_length(var185
, var186
);
3872 varonce183
= var184
;
3874 var188
= NEW_array__Array(&type_array__Arraykernel__Object
);
3875 { /* var188 = array_instance Array[Object] */
3877 var190
= NEW_array__NativeArray(var189
, &type_array__NativeArraykernel__Object
);
3878 var191
= BOX_kernel__Int(var182
); /* autobox from Int to Object */
3879 ((struct instance_array__NativeArray
*)var190
)->values
[0] = (val
*) var191
;
3880 ((struct instance_array__NativeArray
*)var190
)->values
[1] = (val
*) var184
;
3882 ((void (*)(val
*, val
*, long))(var188
->class->vft
[COLOR_array__Array__with_native
]))(var188
, var190
, var189
) /* with_native on <var188:Array[Object]>*/;
3886 var192
= ((val
* (*)(val
*))(var188
->class->vft
[COLOR_string__Object__to_s
]))(var188
) /* to_s on <var188:Array[Object]>*/;
3889 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var192
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3892 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_colors (self) on <self:SeparateErasureCompiler> */
3893 var195
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_colors
].val
; /* _class_colors on <self:SeparateErasureCompiler> */
3894 if (unlikely(var195
== NULL
)) {
3895 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_colors");
3896 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 96);
3900 RET_LABEL194
:(void)0;
3904 var196
= ((val
* (*)(val
*, val
*))(var193
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var193
, var_mclass
) /* [] on <var193:Map[MClass, Int]>*/;
3907 var198
= varonce197
;
3911 var201
= string__NativeString__to_s_with_length(var199
, var200
);
3913 varonce197
= var198
;
3915 var202
= NEW_array__Array(&type_array__Arraykernel__Object
);
3916 { /* var202 = array_instance Array[Object] */
3918 var204
= NEW_array__NativeArray(var203
, &type_array__NativeArraykernel__Object
);
3919 ((struct instance_array__NativeArray
*)var204
)->values
[0] = (val
*) var196
;
3920 ((struct instance_array__NativeArray
*)var204
)->values
[1] = (val
*) var198
;
3922 ((void (*)(val
*, val
*, long))(var202
->class->vft
[COLOR_array__Array__with_native
]))(var202
, var204
, var203
) /* with_native on <var202:Array[Object]>*/;
3926 var205
= ((val
* (*)(val
*))(var202
->class->vft
[COLOR_string__Object__to_s
]))(var202
) /* to_s on <var202:Array[Object]>*/;
3929 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var205
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3931 var206
= !var_is_dead
;
3934 var207
= separate_erasure_compiler__SeparateErasureCompiler__build_class_vts_table(self
, var_mclass
);
3938 var209
= varonce208
;
3940 var210
= "vts_table_";
3942 var212
= string__NativeString__to_s_with_length(var210
, var211
);
3944 varonce208
= var209
;
3946 var213
= NEW_array__Array(&type_array__Arraykernel__Object
);
3947 { /* var213 = array_instance Array[Object] */
3949 var215
= NEW_array__NativeArray(var214
, &type_array__NativeArraykernel__Object
);
3950 ((struct instance_array__NativeArray
*)var215
)->values
[0] = (val
*) var209
;
3951 ((struct instance_array__NativeArray
*)var215
)->values
[1] = (val
*) var_c_name
;
3953 ((void (*)(val
*, val
*, long))(var213
->class->vft
[COLOR_array__Array__with_native
]))(var213
, var215
, var214
) /* with_native on <var213:Array[Object]>*/;
3957 var216
= ((val
* (*)(val
*))(var213
->class->vft
[COLOR_string__Object__to_s
]))(var213
) /* to_s on <var213:Array[Object]>*/;
3960 abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v
, var216
); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
3963 var218
= varonce217
;
3965 var219
= "&vts_table_";
3967 var221
= string__NativeString__to_s_with_length(var219
, var220
);
3969 varonce217
= var218
;
3972 var223
= varonce222
;
3976 var226
= string__NativeString__to_s_with_length(var224
, var225
);
3978 varonce222
= var223
;
3980 var227
= NEW_array__Array(&type_array__Arraykernel__Object
);
3981 { /* var227 = array_instance Array[Object] */
3983 var229
= NEW_array__NativeArray(var228
, &type_array__NativeArraykernel__Object
);
3984 ((struct instance_array__NativeArray
*)var229
)->values
[0] = (val
*) var218
;
3985 ((struct instance_array__NativeArray
*)var229
)->values
[1] = (val
*) var_c_name
;
3986 ((struct instance_array__NativeArray
*)var229
)->values
[2] = (val
*) var223
;
3988 ((void (*)(val
*, val
*, long))(var227
->class->vft
[COLOR_array__Array__with_native
]))(var227
, var229
, var228
) /* with_native on <var227:Array[Object]>*/;
3992 var230
= ((val
* (*)(val
*))(var227
->class->vft
[COLOR_string__Object__to_s
]))(var227
) /* to_s on <var227:Array[Object]>*/;
3995 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var230
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
3999 var232
= varonce231
;
4003 var235
= string__NativeString__to_s_with_length(var233
, var234
);
4005 varonce231
= var232
;
4008 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var232
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4012 var237
= varonce236
;
4014 var238
= "&type_table_";
4016 var240
= string__NativeString__to_s_with_length(var238
, var239
);
4018 varonce236
= var237
;
4021 var242
= varonce241
;
4025 var245
= string__NativeString__to_s_with_length(var243
, var244
);
4027 varonce241
= var242
;
4029 var246
= NEW_array__Array(&type_array__Arraykernel__Object
);
4030 { /* var246 = array_instance Array[Object] */
4032 var248
= NEW_array__NativeArray(var247
, &type_array__NativeArraykernel__Object
);
4033 ((struct instance_array__NativeArray
*)var248
)->values
[0] = (val
*) var237
;
4034 ((struct instance_array__NativeArray
*)var248
)->values
[1] = (val
*) var_c_name
;
4035 ((struct instance_array__NativeArray
*)var248
)->values
[2] = (val
*) var242
;
4037 ((void (*)(val
*, val
*, long))(var246
->class->vft
[COLOR_array__Array__with_native
]))(var246
, var248
, var247
) /* with_native on <var246:Array[Object]>*/;
4041 var249
= ((val
* (*)(val
*))(var246
->class->vft
[COLOR_string__Object__to_s
]))(var246
) /* to_s on <var246:Array[Object]>*/;
4044 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var249
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4047 var251
= varonce250
;
4051 var254
= string__NativeString__to_s_with_length(var252
, var253
);
4053 varonce250
= var251
;
4056 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var251
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4058 var255
= NEW_range__Range(&type_range__Rangekernel__Int
);
4061 var257
= array__AbstractArrayRead__length(var_vft
);
4064 var258
= BOX_kernel__Int(var256
); /* autobox from Int to Discrete */
4065 var259
= BOX_kernel__Int(var257
); /* autobox from Int to Discrete */
4066 range__Range__without_last(var255
, var258
, var259
); /* Direct call range#Range#without_last on <var255:Range[Int]>*/
4069 var260
= range__Range__iterator(var255
);
4073 var261
= ((short int (*)(val
*))(var260
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var260
) /* is_ok on <var260:Iterator[Discrete]>*/;
4077 var262
= ((val
* (*)(val
*))(var260
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var260
) /* item on <var260:Iterator[Discrete]>*/;
4079 var263
= ((struct instance_kernel__Int
*)var262
)->value
; /* autounbox from nullable Object to Int */;
4082 var264
= array__Array___91d_93d(var_vft
, var_i
);
4084 var_mpropdef
= var264
;
4086 if (var_mpropdef
== NULL
) {
4087 var266
= 1; /* is null */
4089 var266
= 0; /* arg is null but recv is not */
4092 { /* Inline kernel#Object#== (var_mpropdef,var265) on <var_mpropdef:nullable MPropDef> */
4095 { /* Inline kernel#Object#is_same_instance (var_mpropdef,var_other) on <var_mpropdef:nullable MPropDef(MPropDef)> */
4096 var271
= var_mpropdef
== var_other
;
4099 RET_LABEL270
:(void)0;
4104 RET_LABEL268
:(void)0;
4110 var273
= varonce272
;
4112 var274
= "NULL, /* empty */";
4114 var276
= string__NativeString__to_s_with_length(var274
, var275
);
4116 varonce272
= var273
;
4119 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var273
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4122 /* <var_mpropdef:nullable MPropDef(MPropDef)> isa MMethodDef */
4123 cltype
= type_model__MMethodDef
.color
;
4124 idtype
= type_model__MMethodDef
.id
;
4125 if(cltype
>= var_mpropdef
->type
->table_size
) {
4128 var277
= var_mpropdef
->type
->type_table
[cltype
] == idtype
;
4130 if (unlikely(!var277
)) {
4131 PRINT_ERROR("Runtime error: %s", "Assert failed");
4132 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 251);
4136 if (var_rta
== NULL
) {
4137 var280
= 0; /* is null */
4139 var280
= 1; /* arg is null and recv is not */
4142 { /* Inline kernel#Object#!= (var_rta,var279) on <var_rta:nullable RapidTypeAnalysis> */
4143 var_other53
= var279
;
4145 var284
= ((short int (*)(val
*, val
*))(var_rta
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_rta
, var_other53
) /* == on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)>*/;
4151 RET_LABEL282
:(void)0;
4158 { /* Inline rapid_type_analysis#RapidTypeAnalysis#live_methoddefs (var_rta) on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
4159 var289
= var_rta
->attrs
[COLOR_rapid_type_analysis__RapidTypeAnalysis___live_methoddefs
].val
; /* _live_methoddefs on <var_rta:nullable RapidTypeAnalysis(RapidTypeAnalysis)> */
4160 if (unlikely(var289
== NULL
)) {
4161 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _live_methoddefs");
4162 PRINT_ERROR(" (%s:%d)\n", "src/rapid_type_analysis.nit", 74);
4166 RET_LABEL288
:(void)0;
4170 var290
= hash_collection__HashSet__has(var287
, var_mpropdef
);
4179 var293
= varonce292
;
4181 var294
= "NULL, /* DEAD ";
4183 var296
= string__NativeString__to_s_with_length(var294
, var295
);
4185 varonce292
= var293
;
4188 { /* Inline model#MClass#intro_mmodule (var_mclass) on <var_mclass:MClass> */
4189 var299
= var_mclass
->attrs
[COLOR_model__MClass___intro_mmodule
].val
; /* _intro_mmodule on <var_mclass:MClass> */
4190 if (unlikely(var299
== NULL
)) {
4191 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
4192 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 335);
4196 RET_LABEL298
:(void)0;
4200 var301
= varonce300
;
4204 var304
= string__NativeString__to_s_with_length(var302
, var303
);
4206 varonce300
= var301
;
4209 var306
= varonce305
;
4213 var309
= string__NativeString__to_s_with_length(var307
, var308
);
4215 varonce305
= var306
;
4218 var311
= varonce310
;
4222 var314
= string__NativeString__to_s_with_length(var312
, var313
);
4224 varonce310
= var311
;
4226 var315
= NEW_array__Array(&type_array__Arraykernel__Object
);
4227 { /* var315 = array_instance Array[Object] */
4229 var317
= NEW_array__NativeArray(var316
, &type_array__NativeArraykernel__Object
);
4230 ((struct instance_array__NativeArray
*)var317
)->values
[0] = (val
*) var293
;
4231 ((struct instance_array__NativeArray
*)var317
)->values
[1] = (val
*) var297
;
4232 ((struct instance_array__NativeArray
*)var317
)->values
[2] = (val
*) var301
;
4233 ((struct instance_array__NativeArray
*)var317
)->values
[3] = (val
*) var_mclass
;
4234 ((struct instance_array__NativeArray
*)var317
)->values
[4] = (val
*) var306
;
4235 ((struct instance_array__NativeArray
*)var317
)->values
[5] = (val
*) var_mpropdef
;
4236 ((struct instance_array__NativeArray
*)var317
)->values
[6] = (val
*) var311
;
4238 ((void (*)(val
*, val
*, long))(var315
->class->vft
[COLOR_array__Array__with_native
]))(var315
, var317
, var316
) /* with_native on <var315:Array[Object]>*/;
4242 var318
= ((val
* (*)(val
*))(var315
->class->vft
[COLOR_string__Object__to_s
]))(var315
) /* to_s on <var315:Array[Object]>*/;
4245 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var318
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4247 goto CONTINUE_label
;
4256 { /* Inline model#MPropDef#mclassdef (var_mpropdef) on <var_mpropdef:nullable MPropDef(MMethodDef)> */
4257 var324
= var_mpropdef
->attrs
[COLOR_model__MPropDef___mclassdef
].val
; /* _mclassdef on <var_mpropdef:nullable MPropDef(MMethodDef)> */
4258 if (unlikely(var324
== NULL
)) {
4259 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclassdef");
4260 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1879);
4264 RET_LABEL323
:(void)0;
4268 { /* Inline model#MClassDef#bound_mtype (var322) on <var322:MClassDef> */
4269 var327
= var322
->attrs
[COLOR_model__MClassDef___bound_mtype
].val
; /* _bound_mtype on <var322:MClassDef> */
4270 if (unlikely(var327
== NULL
)) {
4271 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
4272 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
4276 RET_LABEL326
:(void)0;
4280 var328
= abstract_compiler__MClassType__ctype(var325
);
4283 var330
= varonce329
;
4287 var333
= string__NativeString__to_s_with_length(var331
, var332
);
4289 varonce329
= var330
;
4292 { /* Inline kernel#Object#!= (var328,var330) on <var328:String> */
4293 var_other53
= var330
;
4295 var338
= ((short int (*)(val
*, val
*))(var328
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var328
, var_other53
) /* == on <var328:String>*/;
4301 RET_LABEL336
:(void)0;
4309 var341
= varonce340
;
4311 var342
= "VIRTUAL_";
4313 var344
= string__NativeString__to_s_with_length(var342
, var343
);
4315 varonce340
= var341
;
4318 var345
= abstract_compiler__MPropDef__c_name(var_mpropdef
);
4320 var346
= NEW_array__Array(&type_array__Arraykernel__Object
);
4321 { /* var346 = array_instance Array[Object] */
4323 var348
= NEW_array__NativeArray(var347
, &type_array__NativeArraykernel__Object
);
4324 ((struct instance_array__NativeArray
*)var348
)->values
[0] = (val
*) var341
;
4325 ((struct instance_array__NativeArray
*)var348
)->values
[1] = (val
*) var345
;
4327 ((void (*)(val
*, val
*, long))(var346
->class->vft
[COLOR_array__Array__with_native
]))(var346
, var348
, var347
) /* with_native on <var346:Array[Object]>*/;
4331 var349
= ((val
* (*)(val
*))(var346
->class->vft
[COLOR_string__Object__to_s
]))(var346
) /* to_s on <var346:Array[Object]>*/;
4334 abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v
, var349
); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
4337 var351
= varonce350
;
4339 var352
= "(nitmethod_t)VIRTUAL_";
4341 var354
= string__NativeString__to_s_with_length(var352
, var353
);
4343 varonce350
= var351
;
4346 var355
= abstract_compiler__MPropDef__c_name(var_mpropdef
);
4349 var357
= varonce356
;
4351 var358
= ", /* pointer to ";
4353 var360
= string__NativeString__to_s_with_length(var358
, var359
);
4355 varonce356
= var357
;
4358 { /* Inline model#MClass#intro_mmodule (var_mclass) on <var_mclass:MClass> */
4359 var363
= var_mclass
->attrs
[COLOR_model__MClass___intro_mmodule
].val
; /* _intro_mmodule on <var_mclass:MClass> */
4360 if (unlikely(var363
== NULL
)) {
4361 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
4362 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 335);
4366 RET_LABEL362
:(void)0;
4370 var365
= varonce364
;
4374 var368
= string__NativeString__to_s_with_length(var366
, var367
);
4376 varonce364
= var365
;
4379 var370
= varonce369
;
4383 var373
= string__NativeString__to_s_with_length(var371
, var372
);
4385 varonce369
= var370
;
4388 var375
= varonce374
;
4392 var378
= string__NativeString__to_s_with_length(var376
, var377
);
4394 varonce374
= var375
;
4396 var379
= NEW_array__Array(&type_array__Arraykernel__Object
);
4397 { /* var379 = array_instance Array[Object] */
4399 var381
= NEW_array__NativeArray(var380
, &type_array__NativeArraykernel__Object
);
4400 ((struct instance_array__NativeArray
*)var381
)->values
[0] = (val
*) var351
;
4401 ((struct instance_array__NativeArray
*)var381
)->values
[1] = (val
*) var355
;
4402 ((struct instance_array__NativeArray
*)var381
)->values
[2] = (val
*) var357
;
4403 ((struct instance_array__NativeArray
*)var381
)->values
[3] = (val
*) var361
;
4404 ((struct instance_array__NativeArray
*)var381
)->values
[4] = (val
*) var365
;
4405 ((struct instance_array__NativeArray
*)var381
)->values
[5] = (val
*) var_mclass
;
4406 ((struct instance_array__NativeArray
*)var381
)->values
[6] = (val
*) var370
;
4407 ((struct instance_array__NativeArray
*)var381
)->values
[7] = (val
*) var_mpropdef
;
4408 ((struct instance_array__NativeArray
*)var381
)->values
[8] = (val
*) var375
;
4410 ((void (*)(val
*, val
*, long))(var379
->class->vft
[COLOR_array__Array__with_native
]))(var379
, var381
, var380
) /* with_native on <var379:Array[Object]>*/;
4414 var382
= ((val
* (*)(val
*))(var379
->class->vft
[COLOR_string__Object__to_s
]))(var379
) /* to_s on <var379:Array[Object]>*/;
4417 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var382
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4421 var383
= abstract_compiler__MPropDef__c_name(var_mpropdef
);
4423 var384
= NEW_array__Array(&type_array__Arraykernel__Object
);
4424 { /* var384 = array_instance Array[Object] */
4426 var386
= NEW_array__NativeArray(var385
, &type_array__NativeArraykernel__Object
);
4427 ((struct instance_array__NativeArray
*)var386
)->values
[0] = (val
*) var383
;
4429 ((void (*)(val
*, val
*, long))(var384
->class->vft
[COLOR_array__Array__with_native
]))(var384
, var386
, var385
) /* with_native on <var384:Array[Object]>*/;
4433 var387
= ((val
* (*)(val
*))(var384
->class->vft
[COLOR_string__Object__to_s
]))(var384
) /* to_s on <var384:Array[Object]>*/;
4436 abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v
, var387
); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
4439 var389
= varonce388
;
4441 var390
= "(nitmethod_t)";
4443 var392
= string__NativeString__to_s_with_length(var390
, var391
);
4445 varonce388
= var389
;
4448 var393
= abstract_compiler__MPropDef__c_name(var_mpropdef
);
4451 var395
= varonce394
;
4453 var396
= ", /* pointer to ";
4455 var398
= string__NativeString__to_s_with_length(var396
, var397
);
4457 varonce394
= var395
;
4460 { /* Inline model#MClass#intro_mmodule (var_mclass) on <var_mclass:MClass> */
4461 var401
= var_mclass
->attrs
[COLOR_model__MClass___intro_mmodule
].val
; /* _intro_mmodule on <var_mclass:MClass> */
4462 if (unlikely(var401
== NULL
)) {
4463 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _intro_mmodule");
4464 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 335);
4468 RET_LABEL400
:(void)0;
4472 var403
= varonce402
;
4476 var406
= string__NativeString__to_s_with_length(var404
, var405
);
4478 varonce402
= var403
;
4481 var408
= varonce407
;
4485 var411
= string__NativeString__to_s_with_length(var409
, var410
);
4487 varonce407
= var408
;
4490 var413
= varonce412
;
4494 var416
= string__NativeString__to_s_with_length(var414
, var415
);
4496 varonce412
= var413
;
4498 var417
= NEW_array__Array(&type_array__Arraykernel__Object
);
4499 { /* var417 = array_instance Array[Object] */
4501 var419
= NEW_array__NativeArray(var418
, &type_array__NativeArraykernel__Object
);
4502 ((struct instance_array__NativeArray
*)var419
)->values
[0] = (val
*) var389
;
4503 ((struct instance_array__NativeArray
*)var419
)->values
[1] = (val
*) var393
;
4504 ((struct instance_array__NativeArray
*)var419
)->values
[2] = (val
*) var395
;
4505 ((struct instance_array__NativeArray
*)var419
)->values
[3] = (val
*) var399
;
4506 ((struct instance_array__NativeArray
*)var419
)->values
[4] = (val
*) var403
;
4507 ((struct instance_array__NativeArray
*)var419
)->values
[5] = (val
*) var_mclass
;
4508 ((struct instance_array__NativeArray
*)var419
)->values
[6] = (val
*) var408
;
4509 ((struct instance_array__NativeArray
*)var419
)->values
[7] = (val
*) var_mpropdef
;
4510 ((struct instance_array__NativeArray
*)var419
)->values
[8] = (val
*) var413
;
4512 ((void (*)(val
*, val
*, long))(var417
->class->vft
[COLOR_array__Array__with_native
]))(var417
, var419
, var418
) /* with_native on <var417:Array[Object]>*/;
4516 var420
= ((val
* (*)(val
*))(var417
->class->vft
[COLOR_string__Object__to_s
]))(var417
) /* to_s on <var417:Array[Object]>*/;
4519 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var420
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4523 CONTINUE_label
: (void)0;
4525 ((void (*)(val
*))(var260
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var260
) /* next on <var260:Iterator[Discrete]>*/;
4528 BREAK_label
: (void)0;
4530 var422
= varonce421
;
4534 var425
= string__NativeString__to_s_with_length(var423
, var424
);
4536 varonce421
= var422
;
4539 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var422
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4544 var427
= varonce426
;
4548 var430
= string__NativeString__to_s_with_length(var428
, var429
);
4550 varonce426
= var427
;
4553 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var427
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4556 var432
= varonce431
;
4558 var433
= "const struct type_table type_table_";
4560 var435
= string__NativeString__to_s_with_length(var433
, var434
);
4562 varonce431
= var432
;
4565 var437
= varonce436
;
4569 var440
= string__NativeString__to_s_with_length(var438
, var439
);
4571 varonce436
= var437
;
4573 var441
= NEW_array__Array(&type_array__Arraykernel__Object
);
4574 { /* var441 = array_instance Array[Object] */
4576 var443
= NEW_array__NativeArray(var442
, &type_array__NativeArraykernel__Object
);
4577 ((struct instance_array__NativeArray
*)var443
)->values
[0] = (val
*) var432
;
4578 ((struct instance_array__NativeArray
*)var443
)->values
[1] = (val
*) var_c_name
;
4579 ((struct instance_array__NativeArray
*)var443
)->values
[2] = (val
*) var437
;
4581 ((void (*)(val
*, val
*, long))(var441
->class->vft
[COLOR_array__Array__with_native
]))(var441
, var443
, var442
) /* with_native on <var441:Array[Object]>*/;
4585 var444
= ((val
* (*)(val
*))(var441
->class->vft
[COLOR_string__Object__to_s
]))(var441
) /* to_s on <var441:Array[Object]>*/;
4588 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var444
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4591 var445
= array__AbstractArrayRead__length(var_class_table
);
4594 var447
= varonce446
;
4598 var450
= string__NativeString__to_s_with_length(var448
, var449
);
4600 varonce446
= var447
;
4602 var451
= NEW_array__Array(&type_array__Arraykernel__Object
);
4603 { /* var451 = array_instance Array[Object] */
4605 var453
= NEW_array__NativeArray(var452
, &type_array__NativeArraykernel__Object
);
4606 var454
= BOX_kernel__Int(var445
); /* autobox from Int to Object */
4607 ((struct instance_array__NativeArray
*)var453
)->values
[0] = (val
*) var454
;
4608 ((struct instance_array__NativeArray
*)var453
)->values
[1] = (val
*) var447
;
4610 ((void (*)(val
*, val
*, long))(var451
->class->vft
[COLOR_array__Array__with_native
]))(var451
, var453
, var452
) /* with_native on <var451:Array[Object]>*/;
4614 var455
= ((val
* (*)(val
*))(var451
->class->vft
[COLOR_string__Object__to_s
]))(var451
) /* to_s on <var451:Array[Object]>*/;
4617 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var455
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4620 var457
= varonce456
;
4624 var460
= string__NativeString__to_s_with_length(var458
, var459
);
4626 varonce456
= var457
;
4629 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var457
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4632 var461
= array__AbstractArrayRead__iterator(var_class_table
);
4636 var462
= array__ArrayIterator__is_ok(var461
);
4640 var463
= array__ArrayIterator__item(var461
);
4642 var_msuper
= var463
;
4644 if (var_msuper
== NULL
) {
4645 var465
= 1; /* is null */
4647 var465
= 0; /* arg is null but recv is not */
4650 { /* Inline kernel#Object#== (var_msuper,var464) on <var_msuper:nullable MClass> */
4653 { /* Inline kernel#Object#is_same_instance (var_msuper,var_other) on <var_msuper:nullable MClass(MClass)> */
4654 var470
= var_msuper
== var_other
;
4657 RET_LABEL469
:(void)0;
4662 RET_LABEL467
:(void)0;
4668 var472
= varonce471
;
4670 var473
= "-1, /* empty */";
4672 var475
= string__NativeString__to_s_with_length(var473
, var474
);
4674 varonce471
= var472
;
4677 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var472
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4681 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_ids (self) on <self:SeparateErasureCompiler> */
4682 var478
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_ids
].val
; /* _class_ids on <self:SeparateErasureCompiler> */
4683 if (unlikely(var478
== NULL
)) {
4684 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_ids");
4685 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 95);
4689 RET_LABEL477
:(void)0;
4693 var479
= ((val
* (*)(val
*, val
*))(var476
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var476
, var_msuper
) /* [] on <var476:Map[MClass, Int]>*/;
4696 var481
= varonce480
;
4700 var484
= string__NativeString__to_s_with_length(var482
, var483
);
4702 varonce480
= var481
;
4705 var486
= varonce485
;
4709 var489
= string__NativeString__to_s_with_length(var487
, var488
);
4711 varonce485
= var486
;
4713 var490
= NEW_array__Array(&type_array__Arraykernel__Object
);
4714 { /* var490 = array_instance Array[Object] */
4716 var492
= NEW_array__NativeArray(var491
, &type_array__NativeArraykernel__Object
);
4717 ((struct instance_array__NativeArray
*)var492
)->values
[0] = (val
*) var479
;
4718 ((struct instance_array__NativeArray
*)var492
)->values
[1] = (val
*) var481
;
4719 ((struct instance_array__NativeArray
*)var492
)->values
[2] = (val
*) var_msuper
;
4720 ((struct instance_array__NativeArray
*)var492
)->values
[3] = (val
*) var486
;
4722 ((void (*)(val
*, val
*, long))(var490
->class->vft
[COLOR_array__Array__with_native
]))(var490
, var492
, var491
) /* with_native on <var490:Array[Object]>*/;
4726 var493
= ((val
* (*)(val
*))(var490
->class->vft
[COLOR_string__Object__to_s
]))(var490
) /* to_s on <var490:Array[Object]>*/;
4729 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var493
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4732 CONTINUE_label494
: (void)0;
4734 array__ArrayIterator__next(var461
); /* Direct call array#ArrayIterator#next on <var461:ArrayIterator[nullable Object]>*/
4737 BREAK_label494
: (void)0;
4739 var496
= varonce495
;
4743 var499
= string__NativeString__to_s_with_length(var497
, var498
);
4745 varonce495
= var496
;
4748 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var496
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4751 var501
= varonce500
;
4755 var504
= string__NativeString__to_s_with_length(var502
, var503
);
4757 varonce500
= var501
;
4760 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var501
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
4763 var505
= abstract_compiler__MClassType__ctype(var_mtype
);
4766 var507
= varonce506
;
4770 var510
= string__NativeString__to_s_with_length(var508
, var509
);
4772 varonce506
= var507
;
4775 { /* Inline kernel#Object#!= (var505,var507) on <var505:String> */
4776 var_other53
= var507
;
4778 var515
= ((short int (*)(val
*, val
*))(var505
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var505
, var_other53
) /* == on <var505:String>*/;
4784 RET_LABEL513
:(void)0;
4790 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
4791 var520
= var_mtype
->attrs
[COLOR_model__MClassType___mclass
].val
; /* _mclass on <var_mtype:MClassType> */
4792 if (unlikely(var520
== NULL
)) {
4793 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4794 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
4798 RET_LABEL519
:(void)0;
4802 { /* Inline model#MClass#name (var518) on <var518:MClass> */
4803 var523
= var518
->attrs
[COLOR_model__MClass___name
].val
; /* _name on <var518:MClass> */
4804 if (unlikely(var523
== NULL
)) {
4805 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
4806 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 340);
4810 RET_LABEL522
:(void)0;
4814 var525
= varonce524
;
4818 var528
= string__NativeString__to_s_with_length(var526
, var527
);
4820 varonce524
= var525
;
4823 var530
= string__FlatString___61d_61d(var521
, var525
);
4831 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
4832 var534
= var_mtype
->attrs
[COLOR_model__MClassType___mclass
].val
; /* _mclass on <var_mtype:MClassType> */
4833 if (unlikely(var534
== NULL
)) {
4834 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
4835 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
4839 RET_LABEL533
:(void)0;
4843 { /* Inline model#MClass#kind (var532) on <var532:MClass> */
4844 var537
= var532
->attrs
[COLOR_model__MClass___kind
].val
; /* _kind on <var532:MClass> */
4845 if (unlikely(var537
== NULL
)) {
4846 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _kind");
4847 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 355);
4851 RET_LABEL536
:(void)0;
4855 var538
= model__Object__extern_kind(self
);
4858 { /* Inline kernel#Object#!= (var535,var538) on <var535:MClassKind> */
4859 var_other53
= var538
;
4861 var543
= ((short int (*)(val
*, val
*))(var535
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var535
, var_other53
) /* == on <var535:MClassKind>*/;
4867 RET_LABEL541
:(void)0;
4875 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
4876 var547
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
4877 if (unlikely(var547
== NULL
)) {
4878 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
4879 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
4883 RET_LABEL546
:(void)0;
4887 var549
= varonce548
;
4889 var550
= "struct instance_";
4891 var552
= string__NativeString__to_s_with_length(var550
, var551
);
4893 varonce548
= var549
;
4896 var554
= varonce553
;
4900 var557
= string__NativeString__to_s_with_length(var555
, var556
);
4902 varonce553
= var554
;
4904 var558
= NEW_array__Array(&type_array__Arraykernel__Object
);
4905 { /* var558 = array_instance Array[Object] */
4907 var560
= NEW_array__NativeArray(var559
, &type_array__NativeArraykernel__Object
);
4908 ((struct instance_array__NativeArray
*)var560
)->values
[0] = (val
*) var549
;
4909 ((struct instance_array__NativeArray
*)var560
)->values
[1] = (val
*) var_c_instance_name
;
4910 ((struct instance_array__NativeArray
*)var560
)->values
[2] = (val
*) var554
;
4912 ((void (*)(val
*, val
*, long))(var558
->class->vft
[COLOR_array__Array__with_native
]))(var558
, var560
, var559
) /* with_native on <var558:Array[Object]>*/;
4916 var561
= ((val
* (*)(val
*))(var558
->class->vft
[COLOR_string__Object__to_s
]))(var558
) /* to_s on <var558:Array[Object]>*/;
4919 abstract_compiler__CodeWriter__add_decl(var545
, var561
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var545:CodeWriter>*/
4922 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
4923 var564
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
4924 if (unlikely(var564
== NULL
)) {
4925 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
4926 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
4930 RET_LABEL563
:(void)0;
4934 var566
= varonce565
;
4936 var567
= "const struct class *class;";
4938 var569
= string__NativeString__to_s_with_length(var567
, var568
);
4940 varonce565
= var566
;
4943 abstract_compiler__CodeWriter__add_decl(var562
, var566
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var562:CodeWriter>*/
4946 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
4947 var572
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
4948 if (unlikely(var572
== NULL
)) {
4949 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
4950 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
4954 RET_LABEL571
:(void)0;
4958 var573
= abstract_compiler__MClassType__ctype(var_mtype
);
4961 var575
= varonce574
;
4965 var578
= string__NativeString__to_s_with_length(var576
, var577
);
4967 varonce574
= var575
;
4969 var579
= NEW_array__Array(&type_array__Arraykernel__Object
);
4970 { /* var579 = array_instance Array[Object] */
4972 var581
= NEW_array__NativeArray(var580
, &type_array__NativeArraykernel__Object
);
4973 ((struct instance_array__NativeArray
*)var581
)->values
[0] = (val
*) var573
;
4974 ((struct instance_array__NativeArray
*)var581
)->values
[1] = (val
*) var575
;
4976 ((void (*)(val
*, val
*, long))(var579
->class->vft
[COLOR_array__Array__with_native
]))(var579
, var581
, var580
) /* with_native on <var579:Array[Object]>*/;
4980 var582
= ((val
* (*)(val
*))(var579
->class->vft
[COLOR_string__Object__to_s
]))(var579
) /* to_s on <var579:Array[Object]>*/;
4983 abstract_compiler__CodeWriter__add_decl(var570
, var582
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var570:CodeWriter>*/
4986 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
4987 var585
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
4988 if (unlikely(var585
== NULL
)) {
4989 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
4990 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
4994 RET_LABEL584
:(void)0;
4998 var587
= varonce586
;
5002 var590
= string__NativeString__to_s_with_length(var588
, var589
);
5004 varonce586
= var587
;
5007 abstract_compiler__CodeWriter__add_decl(var583
, var587
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var583:CodeWriter>*/
5012 var592
= varonce591
;
5016 var595
= string__NativeString__to_s_with_length(var593
, var594
);
5018 varonce591
= var592
;
5020 var596
= NEW_array__Array(&type_array__Arraykernel__Object
);
5021 { /* var596 = array_instance Array[Object] */
5023 var598
= NEW_array__NativeArray(var597
, &type_array__NativeArraykernel__Object
);
5024 ((struct instance_array__NativeArray
*)var598
)->values
[0] = (val
*) var592
;
5025 ((struct instance_array__NativeArray
*)var598
)->values
[1] = (val
*) var_c_name
;
5027 ((void (*)(val
*, val
*, long))(var596
->class->vft
[COLOR_array__Array__with_native
]))(var596
, var598
, var597
) /* with_native on <var596:Array[Object]>*/;
5031 var599
= ((val
* (*)(val
*))(var596
->class->vft
[COLOR_string__Object__to_s
]))(var596
) /* to_s on <var596:Array[Object]>*/;
5034 var601
= varonce600
;
5036 var602
= "val* BOX_";
5038 var604
= string__NativeString__to_s_with_length(var602
, var603
);
5040 varonce600
= var601
;
5043 var606
= varonce605
;
5047 var609
= string__NativeString__to_s_with_length(var607
, var608
);
5049 varonce605
= var606
;
5052 var610
= abstract_compiler__MClassType__ctype(var_mtype
);
5055 var612
= varonce611
;
5059 var615
= string__NativeString__to_s_with_length(var613
, var614
);
5061 varonce611
= var612
;
5063 var616
= NEW_array__Array(&type_array__Arraykernel__Object
);
5064 { /* var616 = array_instance Array[Object] */
5066 var618
= NEW_array__NativeArray(var617
, &type_array__NativeArraykernel__Object
);
5067 ((struct instance_array__NativeArray
*)var618
)->values
[0] = (val
*) var601
;
5068 ((struct instance_array__NativeArray
*)var618
)->values
[1] = (val
*) var_c_name
;
5069 ((struct instance_array__NativeArray
*)var618
)->values
[2] = (val
*) var606
;
5070 ((struct instance_array__NativeArray
*)var618
)->values
[3] = (val
*) var610
;
5071 ((struct instance_array__NativeArray
*)var618
)->values
[4] = (val
*) var612
;
5073 ((void (*)(val
*, val
*, long))(var616
->class->vft
[COLOR_array__Array__with_native
]))(var616
, var618
, var617
) /* with_native on <var616:Array[Object]>*/;
5077 var619
= ((val
* (*)(val
*))(var616
->class->vft
[COLOR_string__Object__to_s
]))(var616
) /* to_s on <var616:Array[Object]>*/;
5080 abstract_compiler__AbstractCompiler__provide_declaration(self
, var599
, var619
); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateErasureCompiler>*/
5083 var621
= varonce620
;
5085 var622
= "/* allocate ";
5087 var624
= string__NativeString__to_s_with_length(var622
, var623
);
5089 varonce620
= var621
;
5092 var626
= varonce625
;
5096 var629
= string__NativeString__to_s_with_length(var627
, var628
);
5098 varonce625
= var626
;
5100 var630
= NEW_array__Array(&type_array__Arraykernel__Object
);
5101 { /* var630 = array_instance Array[Object] */
5103 var632
= NEW_array__NativeArray(var631
, &type_array__NativeArraykernel__Object
);
5104 ((struct instance_array__NativeArray
*)var632
)->values
[0] = (val
*) var621
;
5105 ((struct instance_array__NativeArray
*)var632
)->values
[1] = (val
*) var_mtype
;
5106 ((struct instance_array__NativeArray
*)var632
)->values
[2] = (val
*) var626
;
5108 ((void (*)(val
*, val
*, long))(var630
->class->vft
[COLOR_array__Array__with_native
]))(var630
, var632
, var631
) /* with_native on <var630:Array[Object]>*/;
5112 var633
= ((val
* (*)(val
*))(var630
->class->vft
[COLOR_string__Object__to_s
]))(var630
) /* to_s on <var630:Array[Object]>*/;
5115 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var633
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5118 var635
= varonce634
;
5120 var636
= "val* BOX_";
5122 var638
= string__NativeString__to_s_with_length(var636
, var637
);
5124 varonce634
= var635
;
5127 var639
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_abstract_compiler__MType__c_name
]))(var_mtype
) /* c_name on <var_mtype:MClassType>*/;
5130 var641
= varonce640
;
5134 var644
= string__NativeString__to_s_with_length(var642
, var643
);
5136 varonce640
= var641
;
5139 var645
= abstract_compiler__MClassType__ctype(var_mtype
);
5142 var647
= varonce646
;
5144 var648
= " value) {";
5146 var650
= string__NativeString__to_s_with_length(var648
, var649
);
5148 varonce646
= var647
;
5150 var651
= NEW_array__Array(&type_array__Arraykernel__Object
);
5151 { /* var651 = array_instance Array[Object] */
5153 var653
= NEW_array__NativeArray(var652
, &type_array__NativeArraykernel__Object
);
5154 ((struct instance_array__NativeArray
*)var653
)->values
[0] = (val
*) var635
;
5155 ((struct instance_array__NativeArray
*)var653
)->values
[1] = (val
*) var639
;
5156 ((struct instance_array__NativeArray
*)var653
)->values
[2] = (val
*) var641
;
5157 ((struct instance_array__NativeArray
*)var653
)->values
[3] = (val
*) var645
;
5158 ((struct instance_array__NativeArray
*)var653
)->values
[4] = (val
*) var647
;
5160 ((void (*)(val
*, val
*, long))(var651
->class->vft
[COLOR_array__Array__with_native
]))(var651
, var653
, var652
) /* with_native on <var651:Array[Object]>*/;
5164 var654
= ((val
* (*)(val
*))(var651
->class->vft
[COLOR_string__Object__to_s
]))(var651
) /* to_s on <var651:Array[Object]>*/;
5167 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var654
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5170 var656
= varonce655
;
5172 var657
= "struct instance_";
5174 var659
= string__NativeString__to_s_with_length(var657
, var658
);
5176 varonce655
= var656
;
5179 var661
= varonce660
;
5181 var662
= "*res = nit_alloc(sizeof(struct instance_";
5183 var664
= string__NativeString__to_s_with_length(var662
, var663
);
5185 varonce660
= var661
;
5188 var666
= varonce665
;
5192 var669
= string__NativeString__to_s_with_length(var667
, var668
);
5194 varonce665
= var666
;
5196 var670
= NEW_array__Array(&type_array__Arraykernel__Object
);
5197 { /* var670 = array_instance Array[Object] */
5199 var672
= NEW_array__NativeArray(var671
, &type_array__NativeArraykernel__Object
);
5200 ((struct instance_array__NativeArray
*)var672
)->values
[0] = (val
*) var656
;
5201 ((struct instance_array__NativeArray
*)var672
)->values
[1] = (val
*) var_c_instance_name
;
5202 ((struct instance_array__NativeArray
*)var672
)->values
[2] = (val
*) var661
;
5203 ((struct instance_array__NativeArray
*)var672
)->values
[3] = (val
*) var_c_instance_name
;
5204 ((struct instance_array__NativeArray
*)var672
)->values
[4] = (val
*) var666
;
5206 ((void (*)(val
*, val
*, long))(var670
->class->vft
[COLOR_array__Array__with_native
]))(var670
, var672
, var671
) /* with_native on <var670:Array[Object]>*/;
5210 var673
= ((val
* (*)(val
*))(var670
->class->vft
[COLOR_string__Object__to_s
]))(var670
) /* to_s on <var670:Array[Object]>*/;
5213 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var673
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5216 var675
= varonce674
;
5220 var678
= string__NativeString__to_s_with_length(var676
, var677
);
5222 varonce674
= var675
;
5224 var679
= NEW_array__Array(&type_array__Arraykernel__Object
);
5225 { /* var679 = array_instance Array[Object] */
5227 var681
= NEW_array__NativeArray(var680
, &type_array__NativeArraykernel__Object
);
5228 ((struct instance_array__NativeArray
*)var681
)->values
[0] = (val
*) var675
;
5229 ((struct instance_array__NativeArray
*)var681
)->values
[1] = (val
*) var_c_name
;
5231 ((void (*)(val
*, val
*, long))(var679
->class->vft
[COLOR_array__Array__with_native
]))(var679
, var681
, var680
) /* with_native on <var679:Array[Object]>*/;
5235 var682
= ((val
* (*)(val
*))(var679
->class->vft
[COLOR_string__Object__to_s
]))(var679
) /* to_s on <var679:Array[Object]>*/;
5238 abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v
, var682
); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
5241 var684
= varonce683
;
5243 var685
= "res->class = &class_";
5245 var687
= string__NativeString__to_s_with_length(var685
, var686
);
5247 varonce683
= var684
;
5250 var689
= varonce688
;
5254 var692
= string__NativeString__to_s_with_length(var690
, var691
);
5256 varonce688
= var689
;
5258 var693
= NEW_array__Array(&type_array__Arraykernel__Object
);
5259 { /* var693 = array_instance Array[Object] */
5261 var695
= NEW_array__NativeArray(var694
, &type_array__NativeArraykernel__Object
);
5262 ((struct instance_array__NativeArray
*)var695
)->values
[0] = (val
*) var684
;
5263 ((struct instance_array__NativeArray
*)var695
)->values
[1] = (val
*) var_c_name
;
5264 ((struct instance_array__NativeArray
*)var695
)->values
[2] = (val
*) var689
;
5266 ((void (*)(val
*, val
*, long))(var693
->class->vft
[COLOR_array__Array__with_native
]))(var693
, var695
, var694
) /* with_native on <var693:Array[Object]>*/;
5270 var696
= ((val
* (*)(val
*))(var693
->class->vft
[COLOR_string__Object__to_s
]))(var693
) /* to_s on <var693:Array[Object]>*/;
5273 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var696
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5276 var698
= varonce697
;
5278 var699
= "res->value = value;";
5280 var701
= string__NativeString__to_s_with_length(var699
, var700
);
5282 varonce697
= var698
;
5285 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var698
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5288 var703
= varonce702
;
5290 var704
= "return (val*)res;";
5292 var706
= string__NativeString__to_s_with_length(var704
, var705
);
5294 varonce702
= var703
;
5297 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var703
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5300 var708
= varonce707
;
5304 var711
= string__NativeString__to_s_with_length(var709
, var710
);
5306 varonce707
= var708
;
5309 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var708
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5314 { /* Inline model#MClass#name (var_mclass) on <var_mclass:MClass> */
5315 var714
= var_mclass
->attrs
[COLOR_model__MClass___name
].val
; /* _name on <var_mclass:MClass> */
5316 if (unlikely(var714
== NULL
)) {
5317 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
5318 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 340);
5322 RET_LABEL713
:(void)0;
5326 var716
= varonce715
;
5328 var717
= "NativeArray";
5330 var719
= string__NativeString__to_s_with_length(var717
, var718
);
5332 varonce715
= var716
;
5335 var721
= string__FlatString___61d_61d(var712
, var716
);
5340 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
5341 var724
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
5342 if (unlikely(var724
== NULL
)) {
5343 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
5344 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
5348 RET_LABEL723
:(void)0;
5352 var726
= varonce725
;
5354 var727
= "struct instance_";
5356 var729
= string__NativeString__to_s_with_length(var727
, var728
);
5358 varonce725
= var726
;
5361 var731
= varonce730
;
5365 var734
= string__NativeString__to_s_with_length(var732
, var733
);
5367 varonce730
= var731
;
5369 var735
= NEW_array__Array(&type_array__Arraykernel__Object
);
5370 { /* var735 = array_instance Array[Object] */
5372 var737
= NEW_array__NativeArray(var736
, &type_array__NativeArraykernel__Object
);
5373 ((struct instance_array__NativeArray
*)var737
)->values
[0] = (val
*) var726
;
5374 ((struct instance_array__NativeArray
*)var737
)->values
[1] = (val
*) var_c_name
;
5375 ((struct instance_array__NativeArray
*)var737
)->values
[2] = (val
*) var731
;
5377 ((void (*)(val
*, val
*, long))(var735
->class->vft
[COLOR_array__Array__with_native
]))(var735
, var737
, var736
) /* with_native on <var735:Array[Object]>*/;
5381 var738
= ((val
* (*)(val
*))(var735
->class->vft
[COLOR_string__Object__to_s
]))(var735
) /* to_s on <var735:Array[Object]>*/;
5384 abstract_compiler__CodeWriter__add_decl(var722
, var738
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var722:CodeWriter>*/
5387 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
5388 var741
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
5389 if (unlikely(var741
== NULL
)) {
5390 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
5391 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
5395 RET_LABEL740
:(void)0;
5399 var743
= varonce742
;
5401 var744
= "const struct class *class;";
5403 var746
= string__NativeString__to_s_with_length(var744
, var745
);
5405 varonce742
= var743
;
5408 abstract_compiler__CodeWriter__add_decl(var739
, var743
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var739:CodeWriter>*/
5411 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
5412 var749
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
5413 if (unlikely(var749
== NULL
)) {
5414 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
5415 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
5419 RET_LABEL748
:(void)0;
5423 var751
= varonce750
;
5425 var752
= "int length;";
5427 var754
= string__NativeString__to_s_with_length(var752
, var753
);
5429 varonce750
= var751
;
5432 abstract_compiler__CodeWriter__add_decl(var747
, var751
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var747:CodeWriter>*/
5435 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
5436 var757
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
5437 if (unlikely(var757
== NULL
)) {
5438 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
5439 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
5443 RET_LABEL756
:(void)0;
5447 var759
= varonce758
;
5449 var760
= "val* values[];";
5451 var762
= string__NativeString__to_s_with_length(var760
, var761
);
5453 varonce758
= var759
;
5456 abstract_compiler__CodeWriter__add_decl(var755
, var759
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var755:CodeWriter>*/
5459 { /* Inline abstract_compiler#AbstractCompiler#header (self) on <self:SeparateErasureCompiler> */
5460 var765
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___header
].val
; /* _header on <self:SeparateErasureCompiler> */
5461 if (unlikely(var765
== NULL
)) {
5462 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _header");
5463 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 472);
5467 RET_LABEL764
:(void)0;
5471 var767
= varonce766
;
5475 var770
= string__NativeString__to_s_with_length(var768
, var769
);
5477 varonce766
= var767
;
5480 abstract_compiler__CodeWriter__add_decl(var763
, var767
); /* Direct call abstract_compiler#CodeWriter#add_decl on <var763:CodeWriter>*/
5483 var772
= varonce771
;
5487 var775
= string__NativeString__to_s_with_length(var773
, var774
);
5489 varonce771
= var772
;
5491 var776
= NEW_array__Array(&type_array__Arraykernel__Object
);
5492 { /* var776 = array_instance Array[Object] */
5494 var778
= NEW_array__NativeArray(var777
, &type_array__NativeArraykernel__Object
);
5495 ((struct instance_array__NativeArray
*)var778
)->values
[0] = (val
*) var772
;
5496 ((struct instance_array__NativeArray
*)var778
)->values
[1] = (val
*) var_c_name
;
5498 ((void (*)(val
*, val
*, long))(var776
->class->vft
[COLOR_array__Array__with_native
]))(var776
, var778
, var777
) /* with_native on <var776:Array[Object]>*/;
5502 var779
= ((val
* (*)(val
*))(var776
->class->vft
[COLOR_string__Object__to_s
]))(var776
) /* to_s on <var776:Array[Object]>*/;
5505 var780
= abstract_compiler__MClassType__ctype(var_mtype
);
5508 var782
= varonce781
;
5512 var785
= string__NativeString__to_s_with_length(var783
, var784
);
5514 varonce781
= var782
;
5517 var787
= varonce786
;
5519 var788
= "(int length);";
5521 var790
= string__NativeString__to_s_with_length(var788
, var789
);
5523 varonce786
= var787
;
5525 var791
= NEW_array__Array(&type_array__Arraykernel__Object
);
5526 { /* var791 = array_instance Array[Object] */
5528 var793
= NEW_array__NativeArray(var792
, &type_array__NativeArraykernel__Object
);
5529 ((struct instance_array__NativeArray
*)var793
)->values
[0] = (val
*) var780
;
5530 ((struct instance_array__NativeArray
*)var793
)->values
[1] = (val
*) var782
;
5531 ((struct instance_array__NativeArray
*)var793
)->values
[2] = (val
*) var_c_name
;
5532 ((struct instance_array__NativeArray
*)var793
)->values
[3] = (val
*) var787
;
5534 ((void (*)(val
*, val
*, long))(var791
->class->vft
[COLOR_array__Array__with_native
]))(var791
, var793
, var792
) /* with_native on <var791:Array[Object]>*/;
5538 var794
= ((val
* (*)(val
*))(var791
->class->vft
[COLOR_string__Object__to_s
]))(var791
) /* to_s on <var791:Array[Object]>*/;
5541 abstract_compiler__AbstractCompiler__provide_declaration(self
, var779
, var794
); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateErasureCompiler>*/
5544 var796
= varonce795
;
5546 var797
= "/* allocate ";
5548 var799
= string__NativeString__to_s_with_length(var797
, var798
);
5550 varonce795
= var796
;
5553 var801
= varonce800
;
5557 var804
= string__NativeString__to_s_with_length(var802
, var803
);
5559 varonce800
= var801
;
5561 var805
= NEW_array__Array(&type_array__Arraykernel__Object
);
5562 { /* var805 = array_instance Array[Object] */
5564 var807
= NEW_array__NativeArray(var806
, &type_array__NativeArraykernel__Object
);
5565 ((struct instance_array__NativeArray
*)var807
)->values
[0] = (val
*) var796
;
5566 ((struct instance_array__NativeArray
*)var807
)->values
[1] = (val
*) var_mtype
;
5567 ((struct instance_array__NativeArray
*)var807
)->values
[2] = (val
*) var801
;
5569 ((void (*)(val
*, val
*, long))(var805
->class->vft
[COLOR_array__Array__with_native
]))(var805
, var807
, var806
) /* with_native on <var805:Array[Object]>*/;
5573 var808
= ((val
* (*)(val
*))(var805
->class->vft
[COLOR_string__Object__to_s
]))(var805
) /* to_s on <var805:Array[Object]>*/;
5576 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var808
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5579 var809
= abstract_compiler__MClassType__ctype(var_mtype
);
5582 var811
= varonce810
;
5586 var814
= string__NativeString__to_s_with_length(var812
, var813
);
5588 varonce810
= var811
;
5591 var816
= varonce815
;
5593 var817
= "(int length) {";
5595 var819
= string__NativeString__to_s_with_length(var817
, var818
);
5597 varonce815
= var816
;
5599 var820
= NEW_array__Array(&type_array__Arraykernel__Object
);
5600 { /* var820 = array_instance Array[Object] */
5602 var822
= NEW_array__NativeArray(var821
, &type_array__NativeArraykernel__Object
);
5603 ((struct instance_array__NativeArray
*)var822
)->values
[0] = (val
*) var809
;
5604 ((struct instance_array__NativeArray
*)var822
)->values
[1] = (val
*) var811
;
5605 ((struct instance_array__NativeArray
*)var822
)->values
[2] = (val
*) var_c_name
;
5606 ((struct instance_array__NativeArray
*)var822
)->values
[3] = (val
*) var816
;
5608 ((void (*)(val
*, val
*, long))(var820
->class->vft
[COLOR_array__Array__with_native
]))(var820
, var822
, var821
) /* with_native on <var820:Array[Object]>*/;
5612 var823
= ((val
* (*)(val
*))(var820
->class->vft
[COLOR_string__Object__to_s
]))(var820
) /* to_s on <var820:Array[Object]>*/;
5615 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var823
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5618 var825
= varonce824
;
5622 var828
= string__NativeString__to_s_with_length(var826
, var827
);
5624 varonce824
= var825
;
5627 var829
= abstract_compiler__AbstractCompilerVisitor__get_name(var_v
, var825
);
5631 var831
= varonce830
;
5633 var832
= "struct instance_";
5635 var834
= string__NativeString__to_s_with_length(var832
, var833
);
5637 varonce830
= var831
;
5640 var836
= varonce835
;
5644 var839
= string__NativeString__to_s_with_length(var837
, var838
);
5646 varonce835
= var836
;
5649 var841
= varonce840
;
5653 var844
= string__NativeString__to_s_with_length(var842
, var843
);
5655 varonce840
= var841
;
5657 var845
= NEW_array__Array(&type_array__Arraykernel__Object
);
5658 { /* var845 = array_instance Array[Object] */
5660 var847
= NEW_array__NativeArray(var846
, &type_array__NativeArraykernel__Object
);
5661 ((struct instance_array__NativeArray
*)var847
)->values
[0] = (val
*) var831
;
5662 ((struct instance_array__NativeArray
*)var847
)->values
[1] = (val
*) var_c_name
;
5663 ((struct instance_array__NativeArray
*)var847
)->values
[2] = (val
*) var836
;
5664 ((struct instance_array__NativeArray
*)var847
)->values
[3] = (val
*) var_res
;
5665 ((struct instance_array__NativeArray
*)var847
)->values
[4] = (val
*) var841
;
5667 ((void (*)(val
*, val
*, long))(var845
->class->vft
[COLOR_array__Array__with_native
]))(var845
, var847
, var846
) /* with_native on <var845:Array[Object]>*/;
5671 var848
= ((val
* (*)(val
*))(var845
->class->vft
[COLOR_string__Object__to_s
]))(var845
) /* to_s on <var845:Array[Object]>*/;
5674 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var848
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5677 { /* Inline model#MClassType#arguments (var_mtype) on <var_mtype:MClassType> */
5678 var851
= var_mtype
->attrs
[COLOR_model__MClassType___arguments
].val
; /* _arguments on <var_mtype:MClassType> */
5679 if (unlikely(var851
== NULL
)) {
5680 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _arguments");
5681 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 979);
5685 RET_LABEL850
:(void)0;
5689 var852
= abstract_collection__SequenceRead__first(var849
);
5691 var_mtype_elt
= var852
;
5693 var854
= varonce853
;
5695 var855
= " = nit_alloc(sizeof(struct instance_";
5697 var857
= string__NativeString__to_s_with_length(var855
, var856
);
5699 varonce853
= var854
;
5702 var859
= varonce858
;
5704 var860
= ") + length*sizeof(";
5706 var862
= string__NativeString__to_s_with_length(var860
, var861
);
5708 varonce858
= var859
;
5711 var863
= ((val
* (*)(val
*))(var_mtype_elt
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var_mtype_elt
) /* ctype on <var_mtype_elt:MType>*/;
5714 var865
= varonce864
;
5718 var868
= string__NativeString__to_s_with_length(var866
, var867
);
5720 varonce864
= var865
;
5722 var869
= NEW_array__Array(&type_array__Arraykernel__Object
);
5723 { /* var869 = array_instance Array[Object] */
5725 var871
= NEW_array__NativeArray(var870
, &type_array__NativeArraykernel__Object
);
5726 ((struct instance_array__NativeArray
*)var871
)->values
[0] = (val
*) var_res
;
5727 ((struct instance_array__NativeArray
*)var871
)->values
[1] = (val
*) var854
;
5728 ((struct instance_array__NativeArray
*)var871
)->values
[2] = (val
*) var_c_name
;
5729 ((struct instance_array__NativeArray
*)var871
)->values
[3] = (val
*) var859
;
5730 ((struct instance_array__NativeArray
*)var871
)->values
[4] = (val
*) var863
;
5731 ((struct instance_array__NativeArray
*)var871
)->values
[5] = (val
*) var865
;
5733 ((void (*)(val
*, val
*, long))(var869
->class->vft
[COLOR_array__Array__with_native
]))(var869
, var871
, var870
) /* with_native on <var869:Array[Object]>*/;
5737 var872
= ((val
* (*)(val
*))(var869
->class->vft
[COLOR_string__Object__to_s
]))(var869
) /* to_s on <var869:Array[Object]>*/;
5740 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var872
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5743 var874
= varonce873
;
5747 var877
= string__NativeString__to_s_with_length(var875
, var876
);
5749 varonce873
= var874
;
5751 var878
= NEW_array__Array(&type_array__Arraykernel__Object
);
5752 { /* var878 = array_instance Array[Object] */
5754 var880
= NEW_array__NativeArray(var879
, &type_array__NativeArraykernel__Object
);
5755 ((struct instance_array__NativeArray
*)var880
)->values
[0] = (val
*) var874
;
5756 ((struct instance_array__NativeArray
*)var880
)->values
[1] = (val
*) var_c_name
;
5758 ((void (*)(val
*, val
*, long))(var878
->class->vft
[COLOR_array__Array__with_native
]))(var878
, var880
, var879
) /* with_native on <var878:Array[Object]>*/;
5762 var881
= ((val
* (*)(val
*))(var878
->class->vft
[COLOR_string__Object__to_s
]))(var878
) /* to_s on <var878:Array[Object]>*/;
5765 abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v
, var881
); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
5768 var883
= varonce882
;
5770 var884
= "->class = &class_";
5772 var886
= string__NativeString__to_s_with_length(var884
, var885
);
5774 varonce882
= var883
;
5777 var888
= varonce887
;
5781 var891
= string__NativeString__to_s_with_length(var889
, var890
);
5783 varonce887
= var888
;
5785 var892
= NEW_array__Array(&type_array__Arraykernel__Object
);
5786 { /* var892 = array_instance Array[Object] */
5788 var894
= NEW_array__NativeArray(var893
, &type_array__NativeArraykernel__Object
);
5789 ((struct instance_array__NativeArray
*)var894
)->values
[0] = (val
*) var_res
;
5790 ((struct instance_array__NativeArray
*)var894
)->values
[1] = (val
*) var883
;
5791 ((struct instance_array__NativeArray
*)var894
)->values
[2] = (val
*) var_c_name
;
5792 ((struct instance_array__NativeArray
*)var894
)->values
[3] = (val
*) var888
;
5794 ((void (*)(val
*, val
*, long))(var892
->class->vft
[COLOR_array__Array__with_native
]))(var892
, var894
, var893
) /* with_native on <var892:Array[Object]>*/;
5798 var895
= ((val
* (*)(val
*))(var892
->class->vft
[COLOR_string__Object__to_s
]))(var892
) /* to_s on <var892:Array[Object]>*/;
5801 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var895
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5804 var897
= varonce896
;
5806 var898
= "->length = length;";
5808 var900
= string__NativeString__to_s_with_length(var898
, var899
);
5810 varonce896
= var897
;
5812 var901
= NEW_array__Array(&type_array__Arraykernel__Object
);
5813 { /* var901 = array_instance Array[Object] */
5815 var903
= NEW_array__NativeArray(var902
, &type_array__NativeArraykernel__Object
);
5816 ((struct instance_array__NativeArray
*)var903
)->values
[0] = (val
*) var_res
;
5817 ((struct instance_array__NativeArray
*)var903
)->values
[1] = (val
*) var897
;
5819 ((void (*)(val
*, val
*, long))(var901
->class->vft
[COLOR_array__Array__with_native
]))(var901
, var903
, var902
) /* with_native on <var901:Array[Object]>*/;
5823 var904
= ((val
* (*)(val
*))(var901
->class->vft
[COLOR_string__Object__to_s
]))(var901
) /* to_s on <var901:Array[Object]>*/;
5826 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var904
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5829 var906
= varonce905
;
5831 var907
= "return (val*)";
5833 var909
= string__NativeString__to_s_with_length(var907
, var908
);
5835 varonce905
= var906
;
5838 var911
= varonce910
;
5842 var914
= string__NativeString__to_s_with_length(var912
, var913
);
5844 varonce910
= var911
;
5846 var915
= NEW_array__Array(&type_array__Arraykernel__Object
);
5847 { /* var915 = array_instance Array[Object] */
5849 var917
= NEW_array__NativeArray(var916
, &type_array__NativeArraykernel__Object
);
5850 ((struct instance_array__NativeArray
*)var917
)->values
[0] = (val
*) var906
;
5851 ((struct instance_array__NativeArray
*)var917
)->values
[1] = (val
*) var_res
;
5852 ((struct instance_array__NativeArray
*)var917
)->values
[2] = (val
*) var911
;
5854 ((void (*)(val
*, val
*, long))(var915
->class->vft
[COLOR_array__Array__with_native
]))(var915
, var917
, var916
) /* with_native on <var915:Array[Object]>*/;
5858 var918
= ((val
* (*)(val
*))(var915
->class->vft
[COLOR_string__Object__to_s
]))(var915
) /* to_s on <var915:Array[Object]>*/;
5861 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var918
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5864 var920
= varonce919
;
5868 var923
= string__NativeString__to_s_with_length(var921
, var922
);
5870 varonce919
= var920
;
5873 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var920
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
5880 var925
= varonce924
;
5884 var928
= string__NativeString__to_s_with_length(var926
, var927
);
5886 varonce924
= var925
;
5888 var929
= NEW_array__Array(&type_array__Arraykernel__Object
);
5889 { /* var929 = array_instance Array[Object] */
5891 var931
= NEW_array__NativeArray(var930
, &type_array__NativeArraykernel__Object
);
5892 ((struct instance_array__NativeArray
*)var931
)->values
[0] = (val
*) var925
;
5893 ((struct instance_array__NativeArray
*)var931
)->values
[1] = (val
*) var_c_name
;
5895 ((void (*)(val
*, val
*, long))(var929
->class->vft
[COLOR_array__Array__with_native
]))(var929
, var931
, var930
) /* with_native on <var929:Array[Object]>*/;
5899 var932
= ((val
* (*)(val
*))(var929
->class->vft
[COLOR_string__Object__to_s
]))(var929
) /* to_s on <var929:Array[Object]>*/;
5902 var933
= abstract_compiler__MClassType__ctype(var_mtype
);
5905 var935
= varonce934
;
5909 var938
= string__NativeString__to_s_with_length(var936
, var937
);
5911 varonce934
= var935
;
5914 var940
= varonce939
;
5918 var943
= string__NativeString__to_s_with_length(var941
, var942
);
5920 varonce939
= var940
;
5922 var944
= NEW_array__Array(&type_array__Arraykernel__Object
);
5923 { /* var944 = array_instance Array[Object] */
5925 var946
= NEW_array__NativeArray(var945
, &type_array__NativeArraykernel__Object
);
5926 ((struct instance_array__NativeArray
*)var946
)->values
[0] = (val
*) var933
;
5927 ((struct instance_array__NativeArray
*)var946
)->values
[1] = (val
*) var935
;
5928 ((struct instance_array__NativeArray
*)var946
)->values
[2] = (val
*) var_c_name
;
5929 ((struct instance_array__NativeArray
*)var946
)->values
[3] = (val
*) var940
;
5931 ((void (*)(val
*, val
*, long))(var944
->class->vft
[COLOR_array__Array__with_native
]))(var944
, var946
, var945
) /* with_native on <var944:Array[Object]>*/;
5935 var947
= ((val
* (*)(val
*))(var944
->class->vft
[COLOR_string__Object__to_s
]))(var944
) /* to_s on <var944:Array[Object]>*/;
5938 abstract_compiler__AbstractCompiler__provide_declaration(self
, var932
, var947
); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateErasureCompiler>*/
5941 var949
= varonce948
;
5943 var950
= "/* allocate ";
5945 var952
= string__NativeString__to_s_with_length(var950
, var951
);
5947 varonce948
= var949
;
5950 var954
= varonce953
;
5954 var957
= string__NativeString__to_s_with_length(var955
, var956
);
5956 varonce953
= var954
;
5958 var958
= NEW_array__Array(&type_array__Arraykernel__Object
);
5959 { /* var958 = array_instance Array[Object] */
5961 var960
= NEW_array__NativeArray(var959
, &type_array__NativeArraykernel__Object
);
5962 ((struct instance_array__NativeArray
*)var960
)->values
[0] = (val
*) var949
;
5963 ((struct instance_array__NativeArray
*)var960
)->values
[1] = (val
*) var_mtype
;
5964 ((struct instance_array__NativeArray
*)var960
)->values
[2] = (val
*) var954
;
5966 ((void (*)(val
*, val
*, long))(var958
->class->vft
[COLOR_array__Array__with_native
]))(var958
, var960
, var959
) /* with_native on <var958:Array[Object]>*/;
5970 var961
= ((val
* (*)(val
*))(var958
->class->vft
[COLOR_string__Object__to_s
]))(var958
) /* to_s on <var958:Array[Object]>*/;
5973 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var961
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
5976 var962
= abstract_compiler__MClassType__ctype(var_mtype
);
5979 var964
= varonce963
;
5983 var967
= string__NativeString__to_s_with_length(var965
, var966
);
5985 varonce963
= var964
;
5988 var969
= varonce968
;
5990 var970
= "(void) {";
5992 var972
= string__NativeString__to_s_with_length(var970
, var971
);
5994 varonce968
= var969
;
5996 var973
= NEW_array__Array(&type_array__Arraykernel__Object
);
5997 { /* var973 = array_instance Array[Object] */
5999 var975
= NEW_array__NativeArray(var974
, &type_array__NativeArraykernel__Object
);
6000 ((struct instance_array__NativeArray
*)var975
)->values
[0] = (val
*) var962
;
6001 ((struct instance_array__NativeArray
*)var975
)->values
[1] = (val
*) var964
;
6002 ((struct instance_array__NativeArray
*)var975
)->values
[2] = (val
*) var_c_name
;
6003 ((struct instance_array__NativeArray
*)var975
)->values
[3] = (val
*) var969
;
6005 ((void (*)(val
*, val
*, long))(var973
->class->vft
[COLOR_array__Array__with_native
]))(var973
, var975
, var974
) /* with_native on <var973:Array[Object]>*/;
6009 var976
= ((val
* (*)(val
*))(var973
->class->vft
[COLOR_string__Object__to_s
]))(var973
) /* to_s on <var973:Array[Object]>*/;
6012 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var976
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
6016 var978
= varonce977
;
6018 var979
= " is DEAD";
6020 var981
= string__NativeString__to_s_with_length(var979
, var980
);
6022 varonce977
= var978
;
6024 var982
= NEW_array__Array(&type_array__Arraykernel__Object
);
6025 { /* var982 = array_instance Array[Object] */
6027 var984
= NEW_array__NativeArray(var983
, &type_array__NativeArraykernel__Object
);
6028 ((struct instance_array__NativeArray
*)var984
)->values
[0] = (val
*) var_mclass
;
6029 ((struct instance_array__NativeArray
*)var984
)->values
[1] = (val
*) var978
;
6031 ((void (*)(val
*, val
*, long))(var982
->class->vft
[COLOR_array__Array__with_native
]))(var982
, var984
, var983
) /* with_native on <var982:Array[Object]>*/;
6035 var985
= ((val
* (*)(val
*))(var982
->class->vft
[COLOR_string__Object__to_s
]))(var982
) /* to_s on <var982:Array[Object]>*/;
6038 abstract_compiler__AbstractCompilerVisitor__add_abort(var_v
, var985
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <var_v:SeparateCompilerVisitor>*/
6042 var987
= varonce986
;
6046 var990
= string__NativeString__to_s_with_length(var988
, var989
);
6048 varonce986
= var987
;
6051 var991
= abstract_compiler__AbstractCompilerVisitor__new_named_var(var_v
, var_mtype
, var987
);
6053 var_res992
= var991
;
6056 { /* Inline abstract_compiler#RuntimeVariable#is_exact= (var_res992,var993) on <var_res992:RuntimeVariable> */
6057 var_res992
->attrs
[COLOR_abstract_compiler__RuntimeVariable___is_exact
].s
= var993
; /* _is_exact on <var_res992:RuntimeVariable> */
6058 RET_LABEL994
:(void)0;
6062 var996
= varonce995
;
6064 var997
= " = nit_alloc(sizeof(struct instance) + ";
6066 var999
= string__NativeString__to_s_with_length(var997
, var998
);
6068 varonce995
= var996
;
6071 var1000
= array__AbstractArrayRead__length(var_attrs
);
6074 var1002
= varonce1001
;
6076 var1003
= "*sizeof(nitattribute_t));";
6078 var1005
= string__NativeString__to_s_with_length(var1003
, var1004
);
6080 varonce1001
= var1002
;
6082 var1006
= NEW_array__Array(&type_array__Arraykernel__Object
);
6083 { /* var1006 = array_instance Array[Object] */
6085 var1008
= NEW_array__NativeArray(var1007
, &type_array__NativeArraykernel__Object
);
6086 ((struct instance_array__NativeArray
*)var1008
)->values
[0] = (val
*) var_res992
;
6087 ((struct instance_array__NativeArray
*)var1008
)->values
[1] = (val
*) var996
;
6088 var1009
= BOX_kernel__Int(var1000
); /* autobox from Int to Object */
6089 ((struct instance_array__NativeArray
*)var1008
)->values
[2] = (val
*) var1009
;
6090 ((struct instance_array__NativeArray
*)var1008
)->values
[3] = (val
*) var1002
;
6092 ((void (*)(val
*, val
*, long))(var1006
->class->vft
[COLOR_array__Array__with_native
]))(var1006
, var1008
, var1007
) /* with_native on <var1006:Array[Object]>*/;
6096 var1010
= ((val
* (*)(val
*))(var1006
->class->vft
[COLOR_string__Object__to_s
]))(var1006
) /* to_s on <var1006:Array[Object]>*/;
6099 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var1010
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
6102 var1012
= varonce1011
;
6106 var1015
= string__NativeString__to_s_with_length(var1013
, var1014
);
6108 varonce1011
= var1012
;
6110 var1016
= NEW_array__Array(&type_array__Arraykernel__Object
);
6111 { /* var1016 = array_instance Array[Object] */
6113 var1018
= NEW_array__NativeArray(var1017
, &type_array__NativeArraykernel__Object
);
6114 ((struct instance_array__NativeArray
*)var1018
)->values
[0] = (val
*) var1012
;
6115 ((struct instance_array__NativeArray
*)var1018
)->values
[1] = (val
*) var_c_name
;
6117 ((void (*)(val
*, val
*, long))(var1016
->class->vft
[COLOR_array__Array__with_native
]))(var1016
, var1018
, var1017
) /* with_native on <var1016:Array[Object]>*/;
6121 var1019
= ((val
* (*)(val
*))(var1016
->class->vft
[COLOR_string__Object__to_s
]))(var1016
) /* to_s on <var1016:Array[Object]>*/;
6124 abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v
, var1019
); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
6127 var1021
= varonce1020
;
6129 var1022
= "->class = &class_";
6131 var1024
= string__NativeString__to_s_with_length(var1022
, var1023
);
6133 varonce1020
= var1021
;
6136 var1026
= varonce1025
;
6140 var1029
= string__NativeString__to_s_with_length(var1027
, var1028
);
6142 varonce1025
= var1026
;
6144 var1030
= NEW_array__Array(&type_array__Arraykernel__Object
);
6145 { /* var1030 = array_instance Array[Object] */
6147 var1032
= NEW_array__NativeArray(var1031
, &type_array__NativeArraykernel__Object
);
6148 ((struct instance_array__NativeArray
*)var1032
)->values
[0] = (val
*) var_res992
;
6149 ((struct instance_array__NativeArray
*)var1032
)->values
[1] = (val
*) var1021
;
6150 ((struct instance_array__NativeArray
*)var1032
)->values
[2] = (val
*) var_c_name
;
6151 ((struct instance_array__NativeArray
*)var1032
)->values
[3] = (val
*) var1026
;
6153 ((void (*)(val
*, val
*, long))(var1030
->class->vft
[COLOR_array__Array__with_native
]))(var1030
, var1032
, var1031
) /* with_native on <var1030:Array[Object]>*/;
6157 var1033
= ((val
* (*)(val
*))(var1030
->class->vft
[COLOR_string__Object__to_s
]))(var1030
) /* to_s on <var1030:Array[Object]>*/;
6160 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var1033
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
6163 abstract_compiler__AbstractCompiler__generate_init_attr(self
, var_v
, var_res992
, var_mtype
); /* Direct call abstract_compiler#AbstractCompiler#generate_init_attr on <self:SeparateErasureCompiler>*/
6166 var1035
= varonce1034
;
6168 var1036
= "return ";
6170 var1038
= string__NativeString__to_s_with_length(var1036
, var1037
);
6172 varonce1034
= var1035
;
6175 var1040
= varonce1039
;
6179 var1043
= string__NativeString__to_s_with_length(var1041
, var1042
);
6181 varonce1039
= var1040
;
6183 var1044
= NEW_array__Array(&type_array__Arraykernel__Object
);
6184 { /* var1044 = array_instance Array[Object] */
6186 var1046
= NEW_array__NativeArray(var1045
, &type_array__NativeArraykernel__Object
);
6187 ((struct instance_array__NativeArray
*)var1046
)->values
[0] = (val
*) var1035
;
6188 ((struct instance_array__NativeArray
*)var1046
)->values
[1] = (val
*) var_res992
;
6189 ((struct instance_array__NativeArray
*)var1046
)->values
[2] = (val
*) var1040
;
6191 ((void (*)(val
*, val
*, long))(var1044
->class->vft
[COLOR_array__Array__with_native
]))(var1044
, var1046
, var1045
) /* with_native on <var1044:Array[Object]>*/;
6195 var1047
= ((val
* (*)(val
*))(var1044
->class->vft
[COLOR_string__Object__to_s
]))(var1044
) /* to_s on <var1044:Array[Object]>*/;
6198 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var1047
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
6202 var1049
= varonce1048
;
6206 var1052
= string__NativeString__to_s_with_length(var1050
, var1051
);
6208 varonce1048
= var1049
;
6211 abstract_compiler__AbstractCompilerVisitor__add(var_v
, var1049
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <var_v:SeparateCompilerVisitor>*/
6215 /* method separate_erasure_compiler#SeparateErasureCompiler#compile_class_to_c for (self: Object, MClass) */
6216 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__compile_class_to_c(val
* self
, val
* p0
) {
6217 separate_erasure_compiler__SeparateErasureCompiler__compile_class_to_c(self
, p0
); /* Direct call separate_erasure_compiler#SeparateErasureCompiler#compile_class_to_c on <self:Object(SeparateErasureCompiler)>*/
6220 /* method separate_erasure_compiler#SeparateErasureCompiler#build_class_vts_table for (self: SeparateErasureCompiler, MClass): Bool */
6221 short int separate_erasure_compiler__SeparateErasureCompiler__build_class_vts_table(val
* self
, val
* p0
) {
6222 short int var
/* : Bool */;
6223 val
* var_mclass
/* var mclass: MClass */;
6224 val
* var1
/* : Map[MClass, Array[nullable MPropDef]] */;
6225 val
* var3
/* : Map[MClass, Array[nullable MPropDef]] */;
6226 val
* var4
/* : nullable Object */;
6227 short int var5
/* : Bool */;
6228 short int var6
/* : Bool */;
6229 static val
* varonce
;
6230 val
* var7
/* : String */;
6231 char* var8
/* : NativeString */;
6232 long var9
/* : Int */;
6233 val
* var10
/* : FlatString */;
6234 val
* var11
/* : String */;
6235 val
* var12
/* : Array[Object] */;
6236 long var13
/* : Int */;
6237 val
* var14
/* : NativeArray[Object] */;
6238 val
* var15
/* : String */;
6239 static val
* varonce16
;
6240 val
* var17
/* : String */;
6241 char* var18
/* : NativeString */;
6242 long var19
/* : Int */;
6243 val
* var20
/* : FlatString */;
6244 val
* var21
/* : String */;
6245 static val
* varonce22
;
6246 val
* var23
/* : String */;
6247 char* var24
/* : NativeString */;
6248 long var25
/* : Int */;
6249 val
* var26
/* : FlatString */;
6250 val
* var27
/* : Array[Object] */;
6251 long var28
/* : Int */;
6252 val
* var29
/* : NativeArray[Object] */;
6253 val
* var30
/* : String */;
6254 val
* var31
/* : SeparateCompilerVisitor */;
6255 val
* var_v
/* var v: SeparateCompilerVisitor */;
6256 static val
* varonce32
;
6257 val
* var33
/* : String */;
6258 char* var34
/* : NativeString */;
6259 long var35
/* : Int */;
6260 val
* var36
/* : FlatString */;
6261 val
* var37
/* : String */;
6262 static val
* varonce38
;
6263 val
* var39
/* : String */;
6264 char* var40
/* : NativeString */;
6265 long var41
/* : Int */;
6266 val
* var42
/* : FlatString */;
6267 val
* var43
/* : Array[Object] */;
6268 long var44
/* : Int */;
6269 val
* var45
/* : NativeArray[Object] */;
6270 val
* var46
/* : String */;
6271 static val
* varonce47
;
6272 val
* var48
/* : String */;
6273 char* var49
/* : NativeString */;
6274 long var50
/* : Int */;
6275 val
* var51
/* : FlatString */;
6276 static val
* varonce52
;
6277 val
* var53
/* : String */;
6278 char* var54
/* : NativeString */;
6279 long var55
/* : Int */;
6280 val
* var56
/* : FlatString */;
6281 val
* var57
/* : Map[MClass, Array[nullable MPropDef]] */;
6282 val
* var59
/* : Map[MClass, Array[nullable MPropDef]] */;
6283 val
* var60
/* : nullable Object */;
6284 val
* var61
/* : ArrayIterator[nullable Object] */;
6285 short int var62
/* : Bool */;
6286 val
* var63
/* : nullable Object */;
6287 val
* var_vt
/* var vt: nullable MPropDef */;
6288 val
* var64
/* : null */;
6289 short int var65
/* : Bool */;
6290 short int var66
/* : Bool */;
6291 val
* var_other
/* var other: nullable Object */;
6292 short int var68
/* : Bool */;
6293 short int var70
/* : Bool */;
6294 static val
* varonce71
;
6295 val
* var72
/* : String */;
6296 char* var73
/* : NativeString */;
6297 long var74
/* : Int */;
6298 val
* var75
/* : FlatString */;
6299 long var76
/* : Int */;
6300 long var_is_null
/* var is_null: Int */;
6301 val
* var77
/* : MClassDef */;
6302 val
* var78
/* : MClassType */;
6303 val
* var80
/* : MClassType */;
6304 short int var81
/* : Bool */;
6307 const char* var_class_name
;
6308 val
* var82
/* : nullable MType */;
6309 val
* var84
/* : nullable MType */;
6310 val
* var85
/* : MType */;
6311 val
* var_bound
/* var bound: MType */;
6312 short int var86
/* : Bool */;
6315 val
* var89
/* : MClassDef */;
6316 val
* var90
/* : MClassType */;
6317 val
* var92
/* : MClassType */;
6318 val
* var93
/* : MType */;
6319 val
* var95
/* : MType */;
6320 val
* var96
/* : MType */;
6321 long var97
/* : Int */;
6322 short int var98
/* : Bool */;
6325 const char* var_class_name101
;
6326 val
* var102
/* : MClass */;
6327 val
* var104
/* : MClass */;
6328 val
* var_vtclass
/* var vtclass: MClass */;
6329 static val
* varonce105
;
6330 val
* var106
/* : String */;
6331 char* var107
/* : NativeString */;
6332 long var108
/* : Int */;
6333 val
* var109
/* : FlatString */;
6334 val
* var110
/* : String */;
6335 val
* var111
/* : Array[Object] */;
6336 long var112
/* : Int */;
6337 val
* var113
/* : NativeArray[Object] */;
6338 val
* var114
/* : String */;
6339 static val
* varonce115
;
6340 val
* var116
/* : String */;
6341 char* var117
/* : NativeString */;
6342 long var118
/* : Int */;
6343 val
* var119
/* : FlatString */;
6344 static val
* varonce120
;
6345 val
* var121
/* : String */;
6346 char* var122
/* : NativeString */;
6347 long var123
/* : Int */;
6348 val
* var124
/* : FlatString */;
6349 val
* var125
/* : String */;
6350 static val
* varonce126
;
6351 val
* var127
/* : String */;
6352 char* var128
/* : NativeString */;
6353 long var129
/* : Int */;
6354 val
* var130
/* : FlatString */;
6355 static val
* varonce131
;
6356 val
* var132
/* : String */;
6357 char* var133
/* : NativeString */;
6358 long var134
/* : Int */;
6359 val
* var135
/* : FlatString */;
6360 val
* var136
/* : Array[Object] */;
6361 long var137
/* : Int */;
6362 val
* var138
/* : NativeArray[Object] */;
6363 val
* var139
/* : Object */;
6364 val
* var140
/* : String */;
6365 static val
* varonce142
;
6366 val
* var143
/* : String */;
6367 char* var144
/* : NativeString */;
6368 long var145
/* : Int */;
6369 val
* var146
/* : FlatString */;
6370 static val
* varonce147
;
6371 val
* var148
/* : String */;
6372 char* var149
/* : NativeString */;
6373 long var150
/* : Int */;
6374 val
* var151
/* : FlatString */;
6375 short int var152
/* : Bool */;
6378 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_tables (self) on <self:SeparateErasureCompiler> */
6379 var3
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_tables
].val
; /* _vt_tables on <self:SeparateErasureCompiler> */
6380 if (unlikely(var3
== NULL
)) {
6381 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_tables");
6382 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 396);
6390 var4
= ((val
* (*)(val
*, val
*))(var1
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var1
, var_mclass
) /* [] on <var1:Map[MClass, Array[nullable MPropDef]]>*/;
6393 var5
= array__AbstractArrayRead__is_empty(var4
);
6404 var8
= "vts_table_";
6406 var10
= string__NativeString__to_s_with_length(var8
, var9
);
6411 var11
= abstract_compiler__MClass__c_name(var_mclass
);
6413 var12
= NEW_array__Array(&type_array__Arraykernel__Object
);
6414 { /* var12 = array_instance Array[Object] */
6416 var14
= NEW_array__NativeArray(var13
, &type_array__NativeArraykernel__Object
);
6417 ((struct instance_array__NativeArray
*)var14
)->values
[0] = (val
*) var7
;
6418 ((struct instance_array__NativeArray
*)var14
)->values
[1] = (val
*) var11
;
6420 ((void (*)(val
*, val
*, long))(var12
->class->vft
[COLOR_array__Array__with_native
]))(var12
, var14
, var13
) /* with_native on <var12:Array[Object]>*/;
6424 var15
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_string__Object__to_s
]))(var12
) /* to_s on <var12:Array[Object]>*/;
6429 var18
= "extern const struct vts_table vts_table_";
6431 var20
= string__NativeString__to_s_with_length(var18
, var19
);
6436 var21
= abstract_compiler__MClass__c_name(var_mclass
);
6443 var26
= string__NativeString__to_s_with_length(var24
, var25
);
6447 var27
= NEW_array__Array(&type_array__Arraykernel__Object
);
6448 { /* var27 = array_instance Array[Object] */
6450 var29
= NEW_array__NativeArray(var28
, &type_array__NativeArraykernel__Object
);
6451 ((struct instance_array__NativeArray
*)var29
)->values
[0] = (val
*) var17
;
6452 ((struct instance_array__NativeArray
*)var29
)->values
[1] = (val
*) var21
;
6453 ((struct instance_array__NativeArray
*)var29
)->values
[2] = (val
*) var23
;
6455 ((void (*)(val
*, val
*, long))(var27
->class->vft
[COLOR_array__Array__with_native
]))(var27
, var29
, var28
) /* with_native on <var27:Array[Object]>*/;
6459 var30
= ((val
* (*)(val
*))(var27
->class->vft
[COLOR_string__Object__to_s
]))(var27
) /* to_s on <var27:Array[Object]>*/;
6462 abstract_compiler__AbstractCompiler__provide_declaration(self
, var15
, var30
); /* Direct call abstract_compiler#AbstractCompiler#provide_declaration on <self:SeparateErasureCompiler>*/
6465 var31
= separate_erasure_compiler__SeparateErasureCompiler__new_visitor(self
);
6471 var34
= "const struct vts_table vts_table_";
6473 var36
= string__NativeString__to_s_with_length(var34
, var35
);
6478 var37
= abstract_compiler__MClass__c_name(var_mclass
);
6485 var42
= string__NativeString__to_s_with_length(var40
, var41
);
6489 var43
= NEW_array__Array(&type_array__Arraykernel__Object
);
6490 { /* var43 = array_instance Array[Object] */
6492 var45
= NEW_array__NativeArray(var44
, &type_array__NativeArraykernel__Object
);
6493 ((struct instance_array__NativeArray
*)var45
)->values
[0] = (val
*) var33
;
6494 ((struct instance_array__NativeArray
*)var45
)->values
[1] = (val
*) var37
;
6495 ((struct instance_array__NativeArray
*)var45
)->values
[2] = (val
*) var39
;
6497 ((void (*)(val
*, val
*, long))(var43
->class->vft
[COLOR_array__Array__with_native
]))(var43
, var45
, var44
) /* with_native on <var43:Array[Object]>*/;
6501 var46
= ((val
* (*)(val
*))(var43
->class->vft
[COLOR_string__Object__to_s
]))(var43
) /* to_s on <var43:Array[Object]>*/;
6504 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var46
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
6509 var49
= "0, /* dummy */";
6511 var51
= string__NativeString__to_s_with_length(var49
, var50
);
6516 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var48
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
6523 var56
= string__NativeString__to_s_with_length(var54
, var55
);
6528 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var53
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
6531 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_tables (self) on <self:SeparateErasureCompiler> */
6532 var59
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_tables
].val
; /* _vt_tables on <self:SeparateErasureCompiler> */
6533 if (unlikely(var59
== NULL
)) {
6534 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_tables");
6535 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 396);
6539 RET_LABEL58
:(void)0;
6543 var60
= ((val
* (*)(val
*, val
*))(var57
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var57
, var_mclass
) /* [] on <var57:Map[MClass, Array[nullable MPropDef]]>*/;
6546 var61
= array__AbstractArrayRead__iterator(var60
);
6550 var62
= array__ArrayIterator__is_ok(var61
);
6554 var63
= array__ArrayIterator__item(var61
);
6558 if (var_vt
== NULL
) {
6559 var65
= 1; /* is null */
6561 var65
= 0; /* arg is null but recv is not */
6564 { /* Inline kernel#Object#== (var_vt,var64) on <var_vt:nullable MPropDef> */
6567 { /* Inline kernel#Object#is_same_instance (var_vt,var_other) on <var_vt:nullable MPropDef(MPropDef)> */
6568 var70
= var_vt
== var_other
;
6571 RET_LABEL69
:(void)0;
6576 RET_LABEL67
:(void)0;
6584 var73
= "{-1, NULL}, /* empty */";
6586 var75
= string__NativeString__to_s_with_length(var73
, var74
);
6591 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var72
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
6595 var_is_null
= var76
;
6597 var77
= model__MClass__intro(var_mclass
);
6600 { /* Inline model#MClassDef#bound_mtype (var77) on <var77:MClassDef> */
6601 var80
= var77
->attrs
[COLOR_model__MClassDef___bound_mtype
].val
; /* _bound_mtype on <var77:MClassDef> */
6602 if (unlikely(var80
== NULL
)) {
6603 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
6604 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
6608 RET_LABEL79
:(void)0;
6611 /* <var_vt:nullable MPropDef(MPropDef)> isa MVirtualTypeDef */
6612 cltype
= type_model__MVirtualTypeDef
.color
;
6613 idtype
= type_model__MVirtualTypeDef
.id
;
6614 if(cltype
>= var_vt
->type
->table_size
) {
6617 var81
= var_vt
->type
->type_table
[cltype
] == idtype
;
6619 if (unlikely(!var81
)) {
6620 var_class_name
= var_vt
== NULL ?
"null" : var_vt
->type
->name
;
6621 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MVirtualTypeDef", var_class_name
);
6622 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 362);
6626 { /* Inline model#MVirtualTypeDef#bound (var_vt) on <var_vt:MPropDef(MVirtualTypeDef)> */
6627 var84
= var_vt
->attrs
[COLOR_model__MVirtualTypeDef___bound
].val
; /* _bound on <var_vt:MPropDef(MVirtualTypeDef)> */
6629 RET_LABEL83
:(void)0;
6633 var85
= separate_erasure_compiler__SeparateErasureCompiler__retrieve_vt_bound(self
, var78
, var82
);
6637 /* <var_bound:MType> isa MNullableType */
6638 cltype87
= type_model__MNullableType
.color
;
6639 idtype88
= type_model__MNullableType
.id
;
6640 if(cltype87
>= var_bound
->type
->table_size
) {
6643 var86
= var_bound
->type
->type_table
[cltype87
] == idtype88
;
6647 var89
= model__MClass__intro(var_mclass
);
6650 { /* Inline model#MClassDef#bound_mtype (var89) on <var89:MClassDef> */
6651 var92
= var89
->attrs
[COLOR_model__MClassDef___bound_mtype
].val
; /* _bound_mtype on <var89:MClassDef> */
6652 if (unlikely(var92
== NULL
)) {
6653 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _bound_mtype");
6654 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 477);
6658 RET_LABEL91
:(void)0;
6662 { /* Inline model#MNullableType#mtype (var_bound) on <var_bound:MType(MNullableType)> */
6663 var95
= var_bound
->attrs
[COLOR_model__MNullableType___mtype
].val
; /* _mtype on <var_bound:MType(MNullableType)> */
6664 if (unlikely(var95
== NULL
)) {
6665 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mtype");
6666 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1375);
6670 RET_LABEL94
:(void)0;
6674 var96
= separate_erasure_compiler__SeparateErasureCompiler__retrieve_vt_bound(self
, var90
, var93
);
6678 var_is_null
= var97
;
6679 CONTINUE_label
: (void)0;
6681 BREAK_label
: (void)0;
6682 /* <var_bound:MType> isa MClassType */
6683 cltype99
= type_model__MClassType
.color
;
6684 idtype100
= type_model__MClassType
.id
;
6685 if(cltype99
>= var_bound
->type
->table_size
) {
6688 var98
= var_bound
->type
->type_table
[cltype99
] == idtype100
;
6690 if (unlikely(!var98
)) {
6691 var_class_name101
= var_bound
== NULL ?
"null" : var_bound
->type
->name
;
6692 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name101
);
6693 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 367);
6697 { /* Inline model#MClassType#mclass (var_bound) on <var_bound:MType(MClassType)> */
6698 var104
= var_bound
->attrs
[COLOR_model__MClassType___mclass
].val
; /* _mclass on <var_bound:MType(MClassType)> */
6699 if (unlikely(var104
== NULL
)) {
6700 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
6701 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
6705 RET_LABEL103
:(void)0;
6708 var_vtclass
= var102
;
6710 var106
= varonce105
;
6714 var109
= string__NativeString__to_s_with_length(var107
, var108
);
6716 varonce105
= var106
;
6719 var110
= abstract_compiler__MClass__c_name(var_vtclass
);
6721 var111
= NEW_array__Array(&type_array__Arraykernel__Object
);
6722 { /* var111 = array_instance Array[Object] */
6724 var113
= NEW_array__NativeArray(var112
, &type_array__NativeArraykernel__Object
);
6725 ((struct instance_array__NativeArray
*)var113
)->values
[0] = (val
*) var106
;
6726 ((struct instance_array__NativeArray
*)var113
)->values
[1] = (val
*) var110
;
6728 ((void (*)(val
*, val
*, long))(var111
->class->vft
[COLOR_array__Array__with_native
]))(var111
, var113
, var112
) /* with_native on <var111:Array[Object]>*/;
6732 var114
= ((val
* (*)(val
*))(var111
->class->vft
[COLOR_string__Object__to_s
]))(var111
) /* to_s on <var111:Array[Object]>*/;
6735 abstract_compiler__AbstractCompilerVisitor__require_declaration(var_v
, var114
); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <var_v:SeparateCompilerVisitor>*/
6738 var116
= varonce115
;
6742 var119
= string__NativeString__to_s_with_length(var117
, var118
);
6744 varonce115
= var116
;
6747 var121
= varonce120
;
6749 var122
= ", &class_";
6751 var124
= string__NativeString__to_s_with_length(var122
, var123
);
6753 varonce120
= var121
;
6756 var125
= abstract_compiler__MClass__c_name(var_vtclass
);
6759 var127
= varonce126
;
6763 var130
= string__NativeString__to_s_with_length(var128
, var129
);
6765 varonce126
= var127
;
6768 var132
= varonce131
;
6772 var135
= string__NativeString__to_s_with_length(var133
, var134
);
6774 varonce131
= var132
;
6776 var136
= NEW_array__Array(&type_array__Arraykernel__Object
);
6777 { /* var136 = array_instance Array[Object] */
6779 var138
= NEW_array__NativeArray(var137
, &type_array__NativeArraykernel__Object
);
6780 ((struct instance_array__NativeArray
*)var138
)->values
[0] = (val
*) var116
;
6781 var139
= BOX_kernel__Int(var_is_null
); /* autobox from Int to Object */
6782 ((struct instance_array__NativeArray
*)var138
)->values
[1] = (val
*) var139
;
6783 ((struct instance_array__NativeArray
*)var138
)->values
[2] = (val
*) var121
;
6784 ((struct instance_array__NativeArray
*)var138
)->values
[3] = (val
*) var125
;
6785 ((struct instance_array__NativeArray
*)var138
)->values
[4] = (val
*) var127
;
6786 ((struct instance_array__NativeArray
*)var138
)->values
[5] = (val
*) var_vt
;
6787 ((struct instance_array__NativeArray
*)var138
)->values
[6] = (val
*) var132
;
6789 ((void (*)(val
*, val
*, long))(var136
->class->vft
[COLOR_array__Array__with_native
]))(var136
, var138
, var137
) /* with_native on <var136:Array[Object]>*/;
6793 var140
= ((val
* (*)(val
*))(var136
->class->vft
[COLOR_string__Object__to_s
]))(var136
) /* to_s on <var136:Array[Object]>*/;
6796 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var140
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
6799 CONTINUE_label141
: (void)0;
6801 array__ArrayIterator__next(var61
); /* Direct call array#ArrayIterator#next on <var61:ArrayIterator[nullable Object]>*/
6804 BREAK_label141
: (void)0;
6806 var143
= varonce142
;
6810 var146
= string__NativeString__to_s_with_length(var144
, var145
);
6812 varonce142
= var143
;
6815 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var143
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
6818 var148
= varonce147
;
6822 var151
= string__NativeString__to_s_with_length(var149
, var150
);
6824 varonce147
= var148
;
6827 abstract_compiler__AbstractCompilerVisitor__add_decl(var_v
, var148
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_decl on <var_v:SeparateCompilerVisitor>*/
6835 /* method separate_erasure_compiler#SeparateErasureCompiler#build_class_vts_table for (self: Object, MClass): Bool */
6836 short int VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__build_class_vts_table(val
* self
, val
* p0
) {
6837 short int var
/* : Bool */;
6838 short int var1
/* : Bool */;
6839 var1
= separate_erasure_compiler__SeparateErasureCompiler__build_class_vts_table(self
, p0
);
6844 /* method separate_erasure_compiler#SeparateErasureCompiler#retrieve_vt_bound for (self: SeparateErasureCompiler, MClassType, nullable MType): MType */
6845 val
* separate_erasure_compiler__SeparateErasureCompiler__retrieve_vt_bound(val
* self
, val
* p0
, val
* p1
) {
6846 val
* var
/* : MType */;
6847 val
* var_anchor
/* var anchor: MClassType */;
6848 val
* var_mtype
/* var mtype: nullable MType */;
6849 val
* var1
/* : null */;
6850 short int var2
/* : Bool */;
6851 short int var3
/* : Bool */;
6852 val
* var_other
/* var other: nullable Object */;
6853 short int var5
/* : Bool */;
6854 short int var7
/* : Bool */;
6855 static val
* varonce
;
6856 val
* var8
/* : String */;
6857 char* var9
/* : NativeString */;
6858 long var10
/* : Int */;
6859 val
* var11
/* : FlatString */;
6860 short int var12
/* : Bool */;
6863 val
* var13
/* : MModule */;
6864 val
* var15
/* : MModule */;
6865 val
* var16
/* : MType */;
6866 short int var17
/* : Bool */;
6869 val
* var20
/* : MModule */;
6870 val
* var22
/* : MModule */;
6871 val
* var23
/* : MType */;
6875 if (var_mtype
== NULL
) {
6876 var2
= 1; /* is null */
6878 var2
= 0; /* arg is null but recv is not */
6881 { /* Inline kernel#Object#== (var_mtype,var1) on <var_mtype:nullable MType> */
6884 { /* Inline kernel#Object#is_same_instance (var_mtype,var_other) on <var_mtype:nullable MType(MType)> */
6885 var7
= var_mtype
== var_other
;
6901 var9
= "NOT YET IMPLEMENTED: retrieve_vt_bound on null";
6903 var11
= string__NativeString__to_s_with_length(var9
, var10
);
6908 file__Object__print(self
, var8
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
6910 PRINT_ERROR("Runtime error: %s", "Aborted");
6911 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 380);
6915 /* <var_mtype:nullable MType(MType)> isa MVirtualType */
6916 cltype
= type_model__MVirtualType
.color
;
6917 idtype
= type_model__MVirtualType
.id
;
6918 if(cltype
>= var_mtype
->type
->table_size
) {
6921 var12
= var_mtype
->type
->type_table
[cltype
] == idtype
;
6925 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
6926 var15
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___mainmodule
].val
; /* _mainmodule on <self:SeparateErasureCompiler> */
6927 if (unlikely(var15
== NULL
)) {
6928 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
6929 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
6933 RET_LABEL14
:(void)0;
6937 var16
= model__MType__anchor_to(var_mtype
, var13
, var_anchor
);
6942 /* <var_mtype:nullable MType(MType)> isa MParameterType */
6943 cltype18
= type_model__MParameterType
.color
;
6944 idtype19
= type_model__MParameterType
.id
;
6945 if(cltype18
>= var_mtype
->type
->table_size
) {
6948 var17
= var_mtype
->type
->type_table
[cltype18
] == idtype19
;
6952 { /* Inline abstract_compiler#AbstractCompiler#mainmodule (self) on <self:SeparateErasureCompiler> */
6953 var22
= self
->attrs
[COLOR_abstract_compiler__AbstractCompiler___mainmodule
].val
; /* _mainmodule on <self:SeparateErasureCompiler> */
6954 if (unlikely(var22
== NULL
)) {
6955 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mainmodule");
6956 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 436);
6960 RET_LABEL21
:(void)0;
6964 var23
= model__MType__anchor_to(var_mtype
, var20
, var_anchor
);
6976 /* method separate_erasure_compiler#SeparateErasureCompiler#retrieve_vt_bound for (self: Object, MClassType, nullable MType): MType */
6977 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__retrieve_vt_bound(val
* self
, val
* p0
, val
* p1
) {
6978 val
* var
/* : MType */;
6979 val
* var1
/* : MType */;
6980 var1
= separate_erasure_compiler__SeparateErasureCompiler__retrieve_vt_bound(self
, p0
, p1
);
6985 /* method separate_erasure_compiler#SeparateErasureCompiler#new_visitor for (self: SeparateErasureCompiler): SeparateCompilerVisitor */
6986 val
* separate_erasure_compiler__SeparateErasureCompiler__new_visitor(val
* self
) {
6987 val
* var
/* : SeparateCompilerVisitor */;
6988 val
* var1
/* : SeparateErasureCompilerVisitor */;
6989 short int var2
/* : Bool */;
6992 const struct type
* type_struct
;
6993 const char* var_class_name
;
6994 var1
= NEW_separate_erasure_compiler__SeparateErasureCompilerVisitor(&type_separate_erasure_compiler__SeparateErasureCompilerVisitor
);
6996 abstract_compiler__AbstractCompilerVisitor__init(var1
, self
); /* Direct call abstract_compiler#AbstractCompilerVisitor#init on <var1:SeparateErasureCompilerVisitor>*/
6998 /* <var1:SeparateErasureCompilerVisitor> isa VISITOR */
6999 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR
];
7000 cltype
= type_struct
->color
;
7001 idtype
= type_struct
->id
;
7002 if(cltype
>= var1
->type
->table_size
) {
7005 var2
= var1
->type
->type_table
[cltype
] == idtype
;
7007 if (unlikely(!var2
)) {
7008 var_class_name
= var1
== NULL ?
"null" : var1
->type
->name
;
7009 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name
);
7010 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 391);
7018 /* method separate_erasure_compiler#SeparateErasureCompiler#new_visitor for (self: Object): AbstractCompilerVisitor */
7019 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__new_visitor(val
* self
) {
7020 val
* var
/* : AbstractCompilerVisitor */;
7021 val
* var1
/* : SeparateCompilerVisitor */;
7022 var1
= separate_erasure_compiler__SeparateErasureCompiler__new_visitor(self
);
7027 /* method separate_erasure_compiler#SeparateErasureCompiler#class_tables for (self: SeparateErasureCompiler): Map[MClass, Array[nullable MClass]] */
7028 val
* separate_erasure_compiler__SeparateErasureCompiler__class_tables(val
* self
) {
7029 val
* var
/* : Map[MClass, Array[nullable MClass]] */;
7030 val
* var1
/* : Map[MClass, Array[nullable MClass]] */;
7031 var1
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_tables
].val
; /* _class_tables on <self:SeparateErasureCompiler> */
7032 if (unlikely(var1
== NULL
)) {
7033 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_tables");
7034 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 395);
7041 /* method separate_erasure_compiler#SeparateErasureCompiler#class_tables for (self: Object): Map[MClass, Array[nullable MClass]] */
7042 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_tables(val
* self
) {
7043 val
* var
/* : Map[MClass, Array[nullable MClass]] */;
7044 val
* var1
/* : Map[MClass, Array[nullable MClass]] */;
7045 val
* var3
/* : Map[MClass, Array[nullable MClass]] */;
7046 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_tables (self) on <self:Object(SeparateErasureCompiler)> */
7047 var3
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_tables
].val
; /* _class_tables on <self:Object(SeparateErasureCompiler)> */
7048 if (unlikely(var3
== NULL
)) {
7049 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_tables");
7050 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 395);
7060 /* method separate_erasure_compiler#SeparateErasureCompiler#class_tables= for (self: SeparateErasureCompiler, Map[MClass, Array[nullable MClass]]) */
7061 void separate_erasure_compiler__SeparateErasureCompiler__class_tables_61d(val
* self
, val
* p0
) {
7062 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_tables
].val
= p0
; /* _class_tables on <self:SeparateErasureCompiler> */
7065 /* method separate_erasure_compiler#SeparateErasureCompiler#class_tables= for (self: Object, Map[MClass, Array[nullable MClass]]) */
7066 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_tables_61d(val
* self
, val
* p0
) {
7067 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_tables= (self,p0) on <self:Object(SeparateErasureCompiler)> */
7068 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_tables
].val
= p0
; /* _class_tables on <self:Object(SeparateErasureCompiler)> */
7073 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_tables for (self: SeparateErasureCompiler): Map[MClass, Array[nullable MPropDef]] */
7074 val
* separate_erasure_compiler__SeparateErasureCompiler__vt_tables(val
* self
) {
7075 val
* var
/* : Map[MClass, Array[nullable MPropDef]] */;
7076 val
* var1
/* : Map[MClass, Array[nullable MPropDef]] */;
7077 var1
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_tables
].val
; /* _vt_tables on <self:SeparateErasureCompiler> */
7078 if (unlikely(var1
== NULL
)) {
7079 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_tables");
7080 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 396);
7087 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_tables for (self: Object): Map[MClass, Array[nullable MPropDef]] */
7088 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__vt_tables(val
* self
) {
7089 val
* var
/* : Map[MClass, Array[nullable MPropDef]] */;
7090 val
* var1
/* : Map[MClass, Array[nullable MPropDef]] */;
7091 val
* var3
/* : Map[MClass, Array[nullable MPropDef]] */;
7092 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_tables (self) on <self:Object(SeparateErasureCompiler)> */
7093 var3
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_tables
].val
; /* _vt_tables on <self:Object(SeparateErasureCompiler)> */
7094 if (unlikely(var3
== NULL
)) {
7095 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_tables");
7096 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 396);
7106 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_tables= for (self: SeparateErasureCompiler, Map[MClass, Array[nullable MPropDef]]) */
7107 void separate_erasure_compiler__SeparateErasureCompiler__vt_tables_61d(val
* self
, val
* p0
) {
7108 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_tables
].val
= p0
; /* _vt_tables on <self:SeparateErasureCompiler> */
7111 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_tables= for (self: Object, Map[MClass, Array[nullable MPropDef]]) */
7112 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__vt_tables_61d(val
* self
, val
* p0
) {
7113 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_tables= (self,p0) on <self:Object(SeparateErasureCompiler)> */
7114 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_tables
].val
= p0
; /* _vt_tables on <self:Object(SeparateErasureCompiler)> */
7119 /* method separate_erasure_compiler#SeparateErasureCompiler#display_sizes for (self: SeparateErasureCompiler) */
7120 void separate_erasure_compiler__SeparateErasureCompiler__display_sizes(val
* self
) {
7121 static val
* varonce
;
7122 val
* var
/* : String */;
7123 char* var1
/* : NativeString */;
7124 long var2
/* : Int */;
7125 val
* var3
/* : FlatString */;
7126 static val
* varonce4
;
7127 val
* var5
/* : String */;
7128 char* var6
/* : NativeString */;
7129 long var7
/* : Int */;
7130 val
* var8
/* : FlatString */;
7131 long var9
/* : Int */;
7132 long var_total
/* var total: Int */;
7133 long var10
/* : Int */;
7134 long var_holes
/* var holes: Int */;
7135 val
* var11
/* : Map[MClass, Array[nullable MClass]] */;
7136 val
* var13
/* : Map[MClass, Array[nullable MClass]] */;
7137 val
* var14
/* : MapIterator[Object, nullable Object] */;
7138 short int var15
/* : Bool */;
7139 val
* var16
/* : Object */;
7140 val
* var_t
/* var t: MClass */;
7141 val
* var17
/* : nullable Object */;
7142 val
* var_table
/* var table: Array[nullable MClass] */;
7143 long var18
/* : Int */;
7144 long var19
/* : Int */;
7145 short int var21
/* : Bool */;
7148 const char* var_class_name
;
7149 long var22
/* : Int */;
7150 val
* var23
/* : ArrayIterator[nullable Object] */;
7151 short int var24
/* : Bool */;
7152 val
* var25
/* : nullable Object */;
7153 val
* var_e
/* var e: nullable MClass */;
7154 val
* var26
/* : null */;
7155 short int var27
/* : Bool */;
7156 short int var28
/* : Bool */;
7157 val
* var_other
/* var other: nullable Object */;
7158 short int var30
/* : Bool */;
7159 short int var32
/* : Bool */;
7160 long var33
/* : Int */;
7161 long var34
/* : Int */;
7162 short int var36
/* : Bool */;
7165 const char* var_class_name39
;
7166 long var40
/* : Int */;
7167 static val
* varonce42
;
7168 val
* var43
/* : String */;
7169 char* var44
/* : NativeString */;
7170 long var45
/* : Int */;
7171 val
* var46
/* : FlatString */;
7172 static val
* varonce47
;
7173 val
* var48
/* : String */;
7174 char* var49
/* : NativeString */;
7175 long var50
/* : Int */;
7176 val
* var51
/* : FlatString */;
7177 val
* var52
/* : Array[Object] */;
7178 long var53
/* : Int */;
7179 val
* var54
/* : NativeArray[Object] */;
7180 val
* var55
/* : Object */;
7181 val
* var56
/* : Object */;
7182 val
* var57
/* : String */;
7183 static val
* varonce58
;
7184 val
* var59
/* : String */;
7185 char* var60
/* : NativeString */;
7186 long var61
/* : Int */;
7187 val
* var62
/* : FlatString */;
7188 static val
* varonce63
;
7189 val
* var64
/* : String */;
7190 char* var65
/* : NativeString */;
7191 long var66
/* : Int */;
7192 val
* var67
/* : FlatString */;
7193 long var68
/* : Int */;
7194 long var69
/* : Int */;
7195 val
* var70
/* : Map[MClass, Array[nullable MPropDef]] */;
7196 val
* var72
/* : Map[MClass, Array[nullable MPropDef]] */;
7197 val
* var73
/* : MapIterator[Object, nullable Object] */;
7198 short int var74
/* : Bool */;
7199 val
* var75
/* : Object */;
7200 val
* var_t76
/* var t: MClass */;
7201 val
* var77
/* : nullable Object */;
7202 val
* var_table78
/* var table: Array[nullable MPropDef] */;
7203 long var79
/* : Int */;
7204 long var80
/* : Int */;
7205 short int var82
/* : Bool */;
7208 const char* var_class_name85
;
7209 long var86
/* : Int */;
7210 val
* var87
/* : ArrayIterator[nullable Object] */;
7211 short int var88
/* : Bool */;
7212 val
* var89
/* : nullable Object */;
7213 val
* var_e90
/* var e: nullable MPropDef */;
7214 val
* var91
/* : null */;
7215 short int var92
/* : Bool */;
7216 short int var93
/* : Bool */;
7217 short int var95
/* : Bool */;
7218 short int var97
/* : Bool */;
7219 long var98
/* : Int */;
7220 long var99
/* : Int */;
7221 short int var101
/* : Bool */;
7224 const char* var_class_name104
;
7225 long var105
/* : Int */;
7226 static val
* varonce108
;
7227 val
* var109
/* : String */;
7228 char* var110
/* : NativeString */;
7229 long var111
/* : Int */;
7230 val
* var112
/* : FlatString */;
7231 static val
* varonce113
;
7232 val
* var114
/* : String */;
7233 char* var115
/* : NativeString */;
7234 long var116
/* : Int */;
7235 val
* var117
/* : FlatString */;
7236 val
* var118
/* : Array[Object] */;
7237 long var119
/* : Int */;
7238 val
* var120
/* : NativeArray[Object] */;
7239 val
* var121
/* : Object */;
7240 val
* var122
/* : Object */;
7241 val
* var123
/* : String */;
7242 static val
* varonce124
;
7243 val
* var125
/* : String */;
7244 char* var126
/* : NativeString */;
7245 long var127
/* : Int */;
7246 val
* var128
/* : FlatString */;
7247 static val
* varonce129
;
7248 val
* var130
/* : String */;
7249 char* var131
/* : NativeString */;
7250 long var132
/* : Int */;
7251 val
* var133
/* : FlatString */;
7252 long var134
/* : Int */;
7253 long var135
/* : Int */;
7254 val
* var136
/* : Map[MClass, Array[nullable MPropDef]] */;
7255 val
* var138
/* : Map[MClass, Array[nullable MPropDef]] */;
7256 val
* var139
/* : MapIterator[Object, nullable Object] */;
7257 short int var140
/* : Bool */;
7258 val
* var141
/* : Object */;
7259 val
* var_t142
/* var t: MClass */;
7260 val
* var143
/* : nullable Object */;
7261 val
* var_table144
/* var table: Array[nullable MPropDef] */;
7262 long var145
/* : Int */;
7263 long var146
/* : Int */;
7264 short int var148
/* : Bool */;
7267 const char* var_class_name151
;
7268 long var152
/* : Int */;
7269 val
* var153
/* : ArrayIterator[nullable Object] */;
7270 short int var154
/* : Bool */;
7271 val
* var155
/* : nullable Object */;
7272 val
* var_e156
/* var e: nullable MPropDef */;
7273 val
* var157
/* : null */;
7274 short int var158
/* : Bool */;
7275 short int var159
/* : Bool */;
7276 short int var161
/* : Bool */;
7277 short int var163
/* : Bool */;
7278 long var164
/* : Int */;
7279 long var165
/* : Int */;
7280 short int var167
/* : Bool */;
7283 const char* var_class_name170
;
7284 long var171
/* : Int */;
7285 static val
* varonce174
;
7286 val
* var175
/* : String */;
7287 char* var176
/* : NativeString */;
7288 long var177
/* : Int */;
7289 val
* var178
/* : FlatString */;
7290 static val
* varonce179
;
7291 val
* var180
/* : String */;
7292 char* var181
/* : NativeString */;
7293 long var182
/* : Int */;
7294 val
* var183
/* : FlatString */;
7295 val
* var184
/* : Array[Object] */;
7296 long var185
/* : Int */;
7297 val
* var186
/* : NativeArray[Object] */;
7298 val
* var187
/* : Object */;
7299 val
* var188
/* : Object */;
7300 val
* var189
/* : String */;
7301 static val
* varonce190
;
7302 val
* var191
/* : String */;
7303 char* var192
/* : NativeString */;
7304 long var193
/* : Int */;
7305 val
* var194
/* : FlatString */;
7306 static val
* varonce195
;
7307 val
* var196
/* : String */;
7308 char* var197
/* : NativeString */;
7309 long var198
/* : Int */;
7310 val
* var199
/* : FlatString */;
7311 long var200
/* : Int */;
7312 long var201
/* : Int */;
7313 val
* var202
/* : Map[MClass, Array[nullable MPropDef]] */;
7314 val
* var204
/* : Map[MClass, Array[nullable MPropDef]] */;
7315 val
* var205
/* : MapIterator[Object, nullable Object] */;
7316 short int var206
/* : Bool */;
7317 val
* var207
/* : Object */;
7318 val
* var_t208
/* var t: MClass */;
7319 val
* var209
/* : nullable Object */;
7320 val
* var_table210
/* var table: Array[nullable MPropDef] */;
7321 long var211
/* : Int */;
7322 long var212
/* : Int */;
7323 short int var214
/* : Bool */;
7326 const char* var_class_name217
;
7327 long var218
/* : Int */;
7328 val
* var219
/* : ArrayIterator[nullable Object] */;
7329 short int var220
/* : Bool */;
7330 val
* var221
/* : nullable Object */;
7331 val
* var_e222
/* var e: nullable MPropDef */;
7332 val
* var223
/* : null */;
7333 short int var224
/* : Bool */;
7334 short int var225
/* : Bool */;
7335 short int var227
/* : Bool */;
7336 short int var229
/* : Bool */;
7337 long var230
/* : Int */;
7338 long var231
/* : Int */;
7339 short int var233
/* : Bool */;
7342 const char* var_class_name236
;
7343 long var237
/* : Int */;
7344 static val
* varonce240
;
7345 val
* var241
/* : String */;
7346 char* var242
/* : NativeString */;
7347 long var243
/* : Int */;
7348 val
* var244
/* : FlatString */;
7349 static val
* varonce245
;
7350 val
* var246
/* : String */;
7351 char* var247
/* : NativeString */;
7352 long var248
/* : Int */;
7353 val
* var249
/* : FlatString */;
7354 val
* var250
/* : Array[Object] */;
7355 long var251
/* : Int */;
7356 val
* var252
/* : NativeArray[Object] */;
7357 val
* var253
/* : Object */;
7358 val
* var254
/* : Object */;
7359 val
* var255
/* : String */;
7363 var1
= "# size of subtyping tables";
7365 var3
= string__NativeString__to_s_with_length(var1
, var2
);
7370 file__Object__print(self
, var
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7375 var6
= "\11total \11holes";
7377 var8
= string__NativeString__to_s_with_length(var6
, var7
);
7382 file__Object__print(self
, var5
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7389 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#class_tables (self) on <self:SeparateErasureCompiler> */
7390 var13
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___class_tables
].val
; /* _class_tables on <self:SeparateErasureCompiler> */
7391 if (unlikely(var13
== NULL
)) {
7392 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _class_tables");
7393 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 395);
7397 RET_LABEL12
:(void)0;
7401 var14
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var11
) /* iterator on <var11:Map[MClass, Array[nullable MClass]]>*/;
7405 var15
= ((short int (*)(val
*))(var14
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var14
) /* is_ok on <var14:MapIterator[Object, nullable Object]>*/;
7409 var16
= ((val
* (*)(val
*))(var14
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var14
) /* key on <var14:MapIterator[Object, nullable Object]>*/;
7413 var17
= ((val
* (*)(val
*))(var14
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var14
) /* item on <var14:MapIterator[Object, nullable Object]>*/;
7417 var18
= array__AbstractArrayRead__length(var_table
);
7420 { /* Inline kernel#Int#+ (var_total,var18) on <var_total:Int> */
7421 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
7422 /* <var18:Int> isa OTHER */
7423 var21
= 1; /* easy <var18:Int> isa OTHER*/
7424 if (unlikely(!var21
)) {
7425 var_class_name
= type_kernel__Int
.name
;
7426 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name
);
7427 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
7430 var22
= var_total
+ var18
;
7433 RET_LABEL20
:(void)0;
7438 var23
= array__AbstractArrayRead__iterator(var_table
);
7442 var24
= array__ArrayIterator__is_ok(var23
);
7446 var25
= array__ArrayIterator__item(var23
);
7450 if (var_e
== NULL
) {
7451 var27
= 1; /* is null */
7453 var27
= 0; /* arg is null but recv is not */
7456 { /* Inline kernel#Object#== (var_e,var26) on <var_e:nullable MClass> */
7459 { /* Inline kernel#Object#is_same_instance (var_e,var_other) on <var_e:nullable MClass(MClass)> */
7460 var32
= var_e
== var_other
;
7463 RET_LABEL31
:(void)0;
7468 RET_LABEL29
:(void)0;
7475 { /* Inline kernel#Int#+ (var_holes,var33) on <var_holes:Int> */
7476 /* Covariant cast for argument 0 (i) <var33:Int> isa OTHER */
7477 /* <var33:Int> isa OTHER */
7478 var36
= 1; /* easy <var33:Int> isa OTHER*/
7479 if (unlikely(!var36
)) {
7480 var_class_name39
= type_kernel__Int
.name
;
7481 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name39
);
7482 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
7485 var40
= var_holes
+ var33
;
7488 RET_LABEL35
:(void)0;
7494 CONTINUE_label
: (void)0;
7496 array__ArrayIterator__next(var23
); /* Direct call array#ArrayIterator#next on <var23:ArrayIterator[nullable Object]>*/
7499 BREAK_label
: (void)0;
7500 CONTINUE_label41
: (void)0;
7502 ((void (*)(val
*))(var14
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var14
) /* next on <var14:MapIterator[Object, nullable Object]>*/;
7505 BREAK_label41
: (void)0;
7511 var46
= string__NativeString__to_s_with_length(var44
, var45
);
7520 var51
= string__NativeString__to_s_with_length(var49
, var50
);
7524 var52
= NEW_array__Array(&type_array__Arraykernel__Object
);
7525 { /* var52 = array_instance Array[Object] */
7527 var54
= NEW_array__NativeArray(var53
, &type_array__NativeArraykernel__Object
);
7528 ((struct instance_array__NativeArray
*)var54
)->values
[0] = (val
*) var43
;
7529 var55
= BOX_kernel__Int(var_total
); /* autobox from Int to Object */
7530 ((struct instance_array__NativeArray
*)var54
)->values
[1] = (val
*) var55
;
7531 ((struct instance_array__NativeArray
*)var54
)->values
[2] = (val
*) var48
;
7532 var56
= BOX_kernel__Int(var_holes
); /* autobox from Int to Object */
7533 ((struct instance_array__NativeArray
*)var54
)->values
[3] = (val
*) var56
;
7535 ((void (*)(val
*, val
*, long))(var52
->class->vft
[COLOR_array__Array__with_native
]))(var52
, var54
, var53
) /* with_native on <var52:Array[Object]>*/;
7539 var57
= ((val
* (*)(val
*))(var52
->class->vft
[COLOR_string__Object__to_s
]))(var52
) /* to_s on <var52:Array[Object]>*/;
7542 file__Object__print(self
, var57
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7547 var60
= "# size of resolution tables";
7549 var62
= string__NativeString__to_s_with_length(var60
, var61
);
7554 file__Object__print(self
, var59
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7559 var65
= "\11total \11holes";
7561 var67
= string__NativeString__to_s_with_length(var65
, var66
);
7566 file__Object__print(self
, var64
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7573 { /* Inline separate_erasure_compiler#SeparateErasureCompiler#vt_tables (self) on <self:SeparateErasureCompiler> */
7574 var72
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___vt_tables
].val
; /* _vt_tables on <self:SeparateErasureCompiler> */
7575 if (unlikely(var72
== NULL
)) {
7576 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vt_tables");
7577 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 396);
7581 RET_LABEL71
:(void)0;
7585 var73
= ((val
* (*)(val
*))(var70
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var70
) /* iterator on <var70:Map[MClass, Array[nullable MPropDef]]>*/;
7589 var74
= ((short int (*)(val
*))(var73
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var73
) /* is_ok on <var73:MapIterator[Object, nullable Object]>*/;
7593 var75
= ((val
* (*)(val
*))(var73
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var73
) /* key on <var73:MapIterator[Object, nullable Object]>*/;
7597 var77
= ((val
* (*)(val
*))(var73
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var73
) /* item on <var73:MapIterator[Object, nullable Object]>*/;
7599 var_table78
= var77
;
7601 var79
= array__AbstractArrayRead__length(var_table78
);
7604 { /* Inline kernel#Int#+ (var_total,var79) on <var_total:Int> */
7605 /* Covariant cast for argument 0 (i) <var79:Int> isa OTHER */
7606 /* <var79:Int> isa OTHER */
7607 var82
= 1; /* easy <var79:Int> isa OTHER*/
7608 if (unlikely(!var82
)) {
7609 var_class_name85
= type_kernel__Int
.name
;
7610 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name85
);
7611 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
7614 var86
= var_total
+ var79
;
7617 RET_LABEL81
:(void)0;
7622 var87
= array__AbstractArrayRead__iterator(var_table78
);
7626 var88
= array__ArrayIterator__is_ok(var87
);
7630 var89
= array__ArrayIterator__item(var87
);
7634 if (var_e90
== NULL
) {
7635 var92
= 1; /* is null */
7637 var92
= 0; /* arg is null but recv is not */
7640 { /* Inline kernel#Object#== (var_e90,var91) on <var_e90:nullable MPropDef> */
7643 { /* Inline kernel#Object#is_same_instance (var_e90,var_other) on <var_e90:nullable MPropDef(MPropDef)> */
7644 var97
= var_e90
== var_other
;
7647 RET_LABEL96
:(void)0;
7652 RET_LABEL94
:(void)0;
7659 { /* Inline kernel#Int#+ (var_holes,var98) on <var_holes:Int> */
7660 /* Covariant cast for argument 0 (i) <var98:Int> isa OTHER */
7661 /* <var98:Int> isa OTHER */
7662 var101
= 1; /* easy <var98:Int> isa OTHER*/
7663 if (unlikely(!var101
)) {
7664 var_class_name104
= type_kernel__Int
.name
;
7665 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name104
);
7666 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
7669 var105
= var_holes
+ var98
;
7672 RET_LABEL100
:(void)0;
7678 CONTINUE_label106
: (void)0;
7680 array__ArrayIterator__next(var87
); /* Direct call array#ArrayIterator#next on <var87:ArrayIterator[nullable Object]>*/
7683 BREAK_label106
: (void)0;
7684 CONTINUE_label107
: (void)0;
7686 ((void (*)(val
*))(var73
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var73
) /* next on <var73:MapIterator[Object, nullable Object]>*/;
7689 BREAK_label107
: (void)0;
7691 var109
= varonce108
;
7695 var112
= string__NativeString__to_s_with_length(var110
, var111
);
7697 varonce108
= var109
;
7700 var114
= varonce113
;
7704 var117
= string__NativeString__to_s_with_length(var115
, var116
);
7706 varonce113
= var114
;
7708 var118
= NEW_array__Array(&type_array__Arraykernel__Object
);
7709 { /* var118 = array_instance Array[Object] */
7711 var120
= NEW_array__NativeArray(var119
, &type_array__NativeArraykernel__Object
);
7712 ((struct instance_array__NativeArray
*)var120
)->values
[0] = (val
*) var109
;
7713 var121
= BOX_kernel__Int(var_total
); /* autobox from Int to Object */
7714 ((struct instance_array__NativeArray
*)var120
)->values
[1] = (val
*) var121
;
7715 ((struct instance_array__NativeArray
*)var120
)->values
[2] = (val
*) var114
;
7716 var122
= BOX_kernel__Int(var_holes
); /* autobox from Int to Object */
7717 ((struct instance_array__NativeArray
*)var120
)->values
[3] = (val
*) var122
;
7719 ((void (*)(val
*, val
*, long))(var118
->class->vft
[COLOR_array__Array__with_native
]))(var118
, var120
, var119
) /* with_native on <var118:Array[Object]>*/;
7723 var123
= ((val
* (*)(val
*))(var118
->class->vft
[COLOR_string__Object__to_s
]))(var118
) /* to_s on <var118:Array[Object]>*/;
7726 file__Object__print(self
, var123
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7729 var125
= varonce124
;
7731 var126
= "# size of methods tables";
7733 var128
= string__NativeString__to_s_with_length(var126
, var127
);
7735 varonce124
= var125
;
7738 file__Object__print(self
, var125
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7741 var130
= varonce129
;
7743 var131
= "\11total \11holes";
7745 var133
= string__NativeString__to_s_with_length(var131
, var132
);
7747 varonce129
= var130
;
7750 file__Object__print(self
, var130
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7757 { /* Inline separate_compiler#SeparateCompiler#method_tables (self) on <self:SeparateErasureCompiler> */
7758 var138
= self
->attrs
[COLOR_separate_compiler__SeparateCompiler___method_tables
].val
; /* _method_tables on <self:SeparateErasureCompiler> */
7759 if (unlikely(var138
== NULL
)) {
7760 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _method_tables");
7761 PRINT_ERROR(" (%s:%d)\n", "src/separate_compiler.nit", 792);
7765 RET_LABEL137
:(void)0;
7769 var139
= ((val
* (*)(val
*))(var136
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var136
) /* iterator on <var136:Map[MClass, Array[nullable MPropDef]]>*/;
7773 var140
= ((short int (*)(val
*))(var139
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var139
) /* is_ok on <var139:MapIterator[Object, nullable Object]>*/;
7777 var141
= ((val
* (*)(val
*))(var139
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var139
) /* key on <var139:MapIterator[Object, nullable Object]>*/;
7781 var143
= ((val
* (*)(val
*))(var139
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var139
) /* item on <var139:MapIterator[Object, nullable Object]>*/;
7783 var_table144
= var143
;
7785 var145
= array__AbstractArrayRead__length(var_table144
);
7788 { /* Inline kernel#Int#+ (var_total,var145) on <var_total:Int> */
7789 /* Covariant cast for argument 0 (i) <var145:Int> isa OTHER */
7790 /* <var145:Int> isa OTHER */
7791 var148
= 1; /* easy <var145:Int> isa OTHER*/
7792 if (unlikely(!var148
)) {
7793 var_class_name151
= type_kernel__Int
.name
;
7794 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name151
);
7795 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
7798 var152
= var_total
+ var145
;
7801 RET_LABEL147
:(void)0;
7806 var153
= array__AbstractArrayRead__iterator(var_table144
);
7810 var154
= array__ArrayIterator__is_ok(var153
);
7814 var155
= array__ArrayIterator__item(var153
);
7818 if (var_e156
== NULL
) {
7819 var158
= 1; /* is null */
7821 var158
= 0; /* arg is null but recv is not */
7824 { /* Inline kernel#Object#== (var_e156,var157) on <var_e156:nullable MPropDef> */
7827 { /* Inline kernel#Object#is_same_instance (var_e156,var_other) on <var_e156:nullable MPropDef(MPropDef)> */
7828 var163
= var_e156
== var_other
;
7831 RET_LABEL162
:(void)0;
7836 RET_LABEL160
:(void)0;
7843 { /* Inline kernel#Int#+ (var_holes,var164) on <var_holes:Int> */
7844 /* Covariant cast for argument 0 (i) <var164:Int> isa OTHER */
7845 /* <var164:Int> isa OTHER */
7846 var167
= 1; /* easy <var164:Int> isa OTHER*/
7847 if (unlikely(!var167
)) {
7848 var_class_name170
= type_kernel__Int
.name
;
7849 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name170
);
7850 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
7853 var171
= var_holes
+ var164
;
7856 RET_LABEL166
:(void)0;
7862 CONTINUE_label172
: (void)0;
7864 array__ArrayIterator__next(var153
); /* Direct call array#ArrayIterator#next on <var153:ArrayIterator[nullable Object]>*/
7867 BREAK_label172
: (void)0;
7868 CONTINUE_label173
: (void)0;
7870 ((void (*)(val
*))(var139
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var139
) /* next on <var139:MapIterator[Object, nullable Object]>*/;
7873 BREAK_label173
: (void)0;
7875 var175
= varonce174
;
7879 var178
= string__NativeString__to_s_with_length(var176
, var177
);
7881 varonce174
= var175
;
7884 var180
= varonce179
;
7888 var183
= string__NativeString__to_s_with_length(var181
, var182
);
7890 varonce179
= var180
;
7892 var184
= NEW_array__Array(&type_array__Arraykernel__Object
);
7893 { /* var184 = array_instance Array[Object] */
7895 var186
= NEW_array__NativeArray(var185
, &type_array__NativeArraykernel__Object
);
7896 ((struct instance_array__NativeArray
*)var186
)->values
[0] = (val
*) var175
;
7897 var187
= BOX_kernel__Int(var_total
); /* autobox from Int to Object */
7898 ((struct instance_array__NativeArray
*)var186
)->values
[1] = (val
*) var187
;
7899 ((struct instance_array__NativeArray
*)var186
)->values
[2] = (val
*) var180
;
7900 var188
= BOX_kernel__Int(var_holes
); /* autobox from Int to Object */
7901 ((struct instance_array__NativeArray
*)var186
)->values
[3] = (val
*) var188
;
7903 ((void (*)(val
*, val
*, long))(var184
->class->vft
[COLOR_array__Array__with_native
]))(var184
, var186
, var185
) /* with_native on <var184:Array[Object]>*/;
7907 var189
= ((val
* (*)(val
*))(var184
->class->vft
[COLOR_string__Object__to_s
]))(var184
) /* to_s on <var184:Array[Object]>*/;
7910 file__Object__print(self
, var189
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7913 var191
= varonce190
;
7915 var192
= "# size of attributes tables";
7917 var194
= string__NativeString__to_s_with_length(var192
, var193
);
7919 varonce190
= var191
;
7922 file__Object__print(self
, var191
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7925 var196
= varonce195
;
7927 var197
= "\11total \11holes";
7929 var199
= string__NativeString__to_s_with_length(var197
, var198
);
7931 varonce195
= var196
;
7934 file__Object__print(self
, var196
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
7941 { /* Inline separate_compiler#SeparateCompiler#attr_tables (self) on <self:SeparateErasureCompiler> */
7942 var204
= self
->attrs
[COLOR_separate_compiler__SeparateCompiler___attr_tables
].val
; /* _attr_tables on <self:SeparateErasureCompiler> */
7943 if (unlikely(var204
== NULL
)) {
7944 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _attr_tables");
7945 PRINT_ERROR(" (%s:%d)\n", "src/separate_compiler.nit", 793);
7949 RET_LABEL203
:(void)0;
7953 var205
= ((val
* (*)(val
*))(var202
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var202
) /* iterator on <var202:Map[MClass, Array[nullable MPropDef]]>*/;
7957 var206
= ((short int (*)(val
*))(var205
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var205
) /* is_ok on <var205:MapIterator[Object, nullable Object]>*/;
7961 var207
= ((val
* (*)(val
*))(var205
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var205
) /* key on <var205:MapIterator[Object, nullable Object]>*/;
7965 var209
= ((val
* (*)(val
*))(var205
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var205
) /* item on <var205:MapIterator[Object, nullable Object]>*/;
7967 var_table210
= var209
;
7969 var211
= array__AbstractArrayRead__length(var_table210
);
7972 { /* Inline kernel#Int#+ (var_total,var211) on <var_total:Int> */
7973 /* Covariant cast for argument 0 (i) <var211:Int> isa OTHER */
7974 /* <var211:Int> isa OTHER */
7975 var214
= 1; /* easy <var211:Int> isa OTHER*/
7976 if (unlikely(!var214
)) {
7977 var_class_name217
= type_kernel__Int
.name
;
7978 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name217
);
7979 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
7982 var218
= var_total
+ var211
;
7985 RET_LABEL213
:(void)0;
7990 var219
= array__AbstractArrayRead__iterator(var_table210
);
7994 var220
= array__ArrayIterator__is_ok(var219
);
7998 var221
= array__ArrayIterator__item(var219
);
8002 if (var_e222
== NULL
) {
8003 var224
= 1; /* is null */
8005 var224
= 0; /* arg is null but recv is not */
8008 { /* Inline kernel#Object#== (var_e222,var223) on <var_e222:nullable MPropDef> */
8011 { /* Inline kernel#Object#is_same_instance (var_e222,var_other) on <var_e222:nullable MPropDef(MPropDef)> */
8012 var229
= var_e222
== var_other
;
8015 RET_LABEL228
:(void)0;
8020 RET_LABEL226
:(void)0;
8027 { /* Inline kernel#Int#+ (var_holes,var230) on <var_holes:Int> */
8028 /* Covariant cast for argument 0 (i) <var230:Int> isa OTHER */
8029 /* <var230:Int> isa OTHER */
8030 var233
= 1; /* easy <var230:Int> isa OTHER*/
8031 if (unlikely(!var233
)) {
8032 var_class_name236
= type_kernel__Int
.name
;
8033 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name236
);
8034 PRINT_ERROR(" (%s:%d)\n", "lib/standard/kernel.nit", 328);
8037 var237
= var_holes
+ var230
;
8040 RET_LABEL232
:(void)0;
8046 CONTINUE_label238
: (void)0;
8048 array__ArrayIterator__next(var219
); /* Direct call array#ArrayIterator#next on <var219:ArrayIterator[nullable Object]>*/
8051 BREAK_label238
: (void)0;
8052 CONTINUE_label239
: (void)0;
8054 ((void (*)(val
*))(var205
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var205
) /* next on <var205:MapIterator[Object, nullable Object]>*/;
8057 BREAK_label239
: (void)0;
8059 var241
= varonce240
;
8063 var244
= string__NativeString__to_s_with_length(var242
, var243
);
8065 varonce240
= var241
;
8068 var246
= varonce245
;
8072 var249
= string__NativeString__to_s_with_length(var247
, var248
);
8074 varonce245
= var246
;
8076 var250
= NEW_array__Array(&type_array__Arraykernel__Object
);
8077 { /* var250 = array_instance Array[Object] */
8079 var252
= NEW_array__NativeArray(var251
, &type_array__NativeArraykernel__Object
);
8080 ((struct instance_array__NativeArray
*)var252
)->values
[0] = (val
*) var241
;
8081 var253
= BOX_kernel__Int(var_total
); /* autobox from Int to Object */
8082 ((struct instance_array__NativeArray
*)var252
)->values
[1] = (val
*) var253
;
8083 ((struct instance_array__NativeArray
*)var252
)->values
[2] = (val
*) var246
;
8084 var254
= BOX_kernel__Int(var_holes
); /* autobox from Int to Object */
8085 ((struct instance_array__NativeArray
*)var252
)->values
[3] = (val
*) var254
;
8087 ((void (*)(val
*, val
*, long))(var250
->class->vft
[COLOR_array__Array__with_native
]))(var250
, var252
, var251
) /* with_native on <var250:Array[Object]>*/;
8091 var255
= ((val
* (*)(val
*))(var250
->class->vft
[COLOR_string__Object__to_s
]))(var250
) /* to_s on <var250:Array[Object]>*/;
8094 file__Object__print(self
, var255
); /* Direct call file#Object#print on <self:SeparateErasureCompiler>*/
8098 /* method separate_erasure_compiler#SeparateErasureCompiler#display_sizes for (self: Object) */
8099 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__display_sizes(val
* self
) {
8100 separate_erasure_compiler__SeparateErasureCompiler__display_sizes(self
); /* Direct call separate_erasure_compiler#SeparateErasureCompiler#display_sizes on <self:Object(SeparateErasureCompiler)>*/
8103 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#compile_callsite for (self: SeparateErasureCompilerVisitor, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
8104 val
* separate_erasure_compiler__SeparateErasureCompilerVisitor__compile_callsite(val
* self
, val
* p0
, val
* p1
) {
8105 val
* var
/* : nullable RuntimeVariable */;
8106 val
* var_callsite
/* var callsite: CallSite */;
8107 val
* var_arguments
/* var arguments: Array[RuntimeVariable] */;
8108 val
* var1
/* : nullable RuntimeVariable */;
8109 val
* var_res
/* var res: nullable RuntimeVariable */;
8110 short int var2
/* : Bool */;
8111 short int var3
/* : Bool */;
8112 short int var5
/* : Bool */;
8113 short int var_
/* var : Bool */;
8114 val
* var6
/* : AbstractCompiler */;
8115 val
* var8
/* : AbstractCompiler */;
8116 short int var9
/* : Bool */;
8119 const char* var_class_name
;
8120 val
* var10
/* : ModelBuilder */;
8121 val
* var12
/* : ModelBuilder */;
8122 val
* var13
/* : ToolContext */;
8123 val
* var15
/* : ToolContext */;
8124 val
* var16
/* : OptionBool */;
8125 val
* var18
/* : OptionBool */;
8126 val
* var19
/* : nullable Object */;
8127 val
* var21
/* : nullable Object */;
8128 short int var22
/* : Bool */;
8129 short int var23
/* : Bool */;
8130 val
* var24
/* : null */;
8131 short int var25
/* : Bool */;
8132 short int var26
/* : Bool */;
8133 val
* var_other
/* var other: nullable Object */;
8134 short int var28
/* : Bool */;
8135 short int var29
/* : Bool */;
8136 short int var30
/* : Bool */;
8137 val
* var31
/* : MSignature */;
8138 val
* var33
/* : MSignature */;
8139 val
* var34
/* : nullable MType */;
8140 val
* var36
/* : nullable MType */;
8141 val
* var_mtype
/* var mtype: nullable MType */;
8142 val
* var37
/* : null */;
8143 short int var38
/* : Bool */;
8144 short int var39
/* : Bool */;
8145 short int var41
/* : Bool */;
8146 short int var42
/* : Bool */;
8147 short int var43
/* : Bool */;
8148 static val
* varonce
;
8149 val
* var44
/* : String */;
8150 char* var45
/* : NativeString */;
8151 long var46
/* : Int */;
8152 val
* var47
/* : FlatString */;
8153 static val
* varonce48
;
8154 val
* var49
/* : String */;
8155 char* var50
/* : NativeString */;
8156 long var51
/* : Int */;
8157 val
* var52
/* : FlatString */;
8158 static val
* varonce53
;
8159 val
* var54
/* : String */;
8160 char* var55
/* : NativeString */;
8161 long var56
/* : Int */;
8162 val
* var57
/* : FlatString */;
8163 val
* var58
/* : Array[Object] */;
8164 long var59
/* : Int */;
8165 val
* var60
/* : NativeArray[Object] */;
8166 val
* var61
/* : String */;
8167 static val
* varonce62
;
8168 val
* var63
/* : String */;
8169 char* var64
/* : NativeString */;
8170 long var65
/* : Int */;
8171 val
* var66
/* : FlatString */;
8172 val
* var67
/* : RuntimeVariable */;
8173 val
* var_cond
/* var cond: RuntimeVariable */;
8174 static val
* varonce68
;
8175 val
* var69
/* : String */;
8176 char* var70
/* : NativeString */;
8177 long var71
/* : Int */;
8178 val
* var72
/* : FlatString */;
8179 static val
* varonce73
;
8180 val
* var74
/* : String */;
8181 char* var75
/* : NativeString */;
8182 long var76
/* : Int */;
8183 val
* var77
/* : FlatString */;
8184 val
* var78
/* : Array[Object] */;
8185 long var79
/* : Int */;
8186 val
* var80
/* : NativeArray[Object] */;
8187 val
* var81
/* : String */;
8188 static val
* varonce82
;
8189 val
* var83
/* : String */;
8190 char* var84
/* : NativeString */;
8191 long var85
/* : Int */;
8192 val
* var86
/* : FlatString */;
8193 static val
* varonce87
;
8194 val
* var88
/* : String */;
8195 char* var89
/* : NativeString */;
8196 long var90
/* : Int */;
8197 val
* var91
/* : FlatString */;
8201 var1
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompilerVisitor__compile_callsite
]))(self
, p0
, p1
) /* compile_callsite on <self:SeparateErasureCompilerVisitor>*/;
8205 { /* Inline typing#CallSite#erasure_cast (var_callsite) on <var_callsite:CallSite> */
8206 var5
= var_callsite
->attrs
[COLOR_typing__CallSite___erasure_cast
].s
; /* _erasure_cast on <var_callsite:CallSite> */
8214 { /* Inline abstract_compiler#AbstractCompilerVisitor#compiler (self) on <self:SeparateErasureCompilerVisitor> */
8215 var8
= self
->attrs
[COLOR_abstract_compiler__AbstractCompilerVisitor___compiler
].val
; /* _compiler on <self:SeparateErasureCompilerVisitor> */
8216 if (unlikely(var8
== NULL
)) {
8217 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _compiler");
8218 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 984);
8225 /* <var6:AbstractCompiler(SeparateCompiler)> isa SeparateErasureCompiler */
8226 cltype
= type_separate_erasure_compiler__SeparateErasureCompiler
.color
;
8227 idtype
= type_separate_erasure_compiler__SeparateErasureCompiler
.id
;
8228 if(cltype
>= var6
->type
->table_size
) {
8231 var9
= var6
->type
->type_table
[cltype
] == idtype
;
8233 if (unlikely(!var9
)) {
8234 var_class_name
= var6
== NULL ?
"null" : var6
->type
->name
;
8235 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "SeparateErasureCompiler", var_class_name
);
8236 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 448);
8240 { /* Inline abstract_compiler#AbstractCompiler#modelbuilder (var6) on <var6:SeparateCompiler(SeparateErasureCompiler)> */
8241 var12
= var6
->attrs
[COLOR_abstract_compiler__AbstractCompiler___modelbuilder
].val
; /* _modelbuilder on <var6:SeparateCompiler(SeparateErasureCompiler)> */
8242 if (unlikely(var12
== NULL
)) {
8243 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _modelbuilder");
8244 PRINT_ERROR(" (%s:%d)\n", "src/abstract_compiler.nit", 443);
8248 RET_LABEL11
:(void)0;
8252 { /* Inline modelbuilder#ModelBuilder#toolcontext (var10) on <var10:ModelBuilder> */
8253 var15
= var10
->attrs
[COLOR_modelbuilder__ModelBuilder___toolcontext
].val
; /* _toolcontext on <var10:ModelBuilder> */
8254 if (unlikely(var15
== NULL
)) {
8255 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
8256 PRINT_ERROR(" (%s:%d)\n", "src/modelbuilder.nit", 101);
8260 RET_LABEL14
:(void)0;
8264 { /* Inline separate_erasure_compiler#ToolContext#opt_no_check_erasure_cast (var13) on <var13:ToolContext> */
8265 var18
= var13
->attrs
[COLOR_separate_erasure_compiler__ToolContext___opt_no_check_erasure_cast
].val
; /* _opt_no_check_erasure_cast on <var13:ToolContext> */
8266 if (unlikely(var18
== NULL
)) {
8267 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_no_check_erasure_cast");
8268 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 26);
8272 RET_LABEL17
:(void)0;
8276 { /* Inline opts#Option#value (var16) on <var16:OptionBool> */
8277 var21
= var16
->attrs
[COLOR_opts__Option___value
].val
; /* _value on <var16:OptionBool> */
8279 RET_LABEL20
:(void)0;
8282 var22
= ((struct instance_kernel__Bool
*)var19
)->value
; /* autounbox from nullable Object to Bool */;
8290 if (var_res
== NULL
) {
8291 var25
= 0; /* is null */
8293 var25
= 1; /* arg is null and recv is not */
8296 { /* Inline kernel#Object#!= (var_res,var24) on <var_res:nullable RuntimeVariable> */
8299 var29
= ((short int (*)(val
*, val
*))(var_res
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_res
, var_other
) /* == on <var_res:nullable RuntimeVariable(RuntimeVariable)>*/;
8305 RET_LABEL27
:(void)0;
8309 if (unlikely(!var25
)) {
8310 PRINT_ERROR("Runtime error: %s", "Assert failed");
8311 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 449);
8315 { /* Inline typing#CallSite#msignature (var_callsite) on <var_callsite:CallSite> */
8316 var33
= var_callsite
->attrs
[COLOR_typing__CallSite___msignature
].val
; /* _msignature on <var_callsite:CallSite> */
8317 if (unlikely(var33
== NULL
)) {
8318 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
8319 PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 429);
8323 RET_LABEL32
:(void)0;
8327 { /* Inline model#MSignature#return_mtype (var31) on <var31:MSignature> */
8328 var36
= var31
->attrs
[COLOR_model__MSignature___return_mtype
].val
; /* _return_mtype on <var31:MSignature> */
8330 RET_LABEL35
:(void)0;
8335 if (var_mtype
== NULL
) {
8336 var38
= 0; /* is null */
8338 var38
= 1; /* arg is null and recv is not */
8341 { /* Inline kernel#Object#!= (var_mtype,var37) on <var_mtype:nullable MType> */
8344 var42
= ((short int (*)(val
*, val
*))(var_mtype
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_mtype
, var_other
) /* == on <var_mtype:nullable MType(MType)>*/;
8350 RET_LABEL40
:(void)0;
8354 if (unlikely(!var38
)) {
8355 PRINT_ERROR("Runtime error: %s", "Assert failed");
8356 PRINT_ERROR(" (%s:%d)\n", "src/separate_erasure_compiler.nit", 451);
8362 var45
= "/* Erasure cast for return ";
8364 var47
= string__NativeString__to_s_with_length(var45
, var46
);
8373 var52
= string__NativeString__to_s_with_length(var50
, var51
);
8382 var57
= string__NativeString__to_s_with_length(var55
, var56
);
8386 var58
= NEW_array__Array(&type_array__Arraykernel__Object
);
8387 { /* var58 = array_instance Array[Object] */
8389 var60
= NEW_array__NativeArray(var59
, &type_array__NativeArraykernel__Object
);
8390 ((struct instance_array__NativeArray
*)var60
)->values
[0] = (val
*) var44
;
8391 ((struct instance_array__NativeArray
*)var60
)->values
[1] = (val
*) var_res
;
8392 ((struct instance_array__NativeArray
*)var60
)->values
[2] = (val
*) var49
;
8393 ((struct instance_array__NativeArray
*)var60
)->values
[3] = (val
*) var_mtype
;
8394 ((struct instance_array__NativeArray
*)var60
)->values
[4] = (val
*) var54
;
8396 ((void (*)(val
*, val
*, long))(var58
->class->vft
[COLOR_array__Array__with_native
]))(var58
, var60
, var59
) /* with_native on <var58:Array[Object]>*/;
8400 var61
= ((val
* (*)(val
*))(var58
->class->vft
[COLOR_string__Object__to_s
]))(var58
) /* to_s on <var58:Array[Object]>*/;
8403 abstract_compiler__AbstractCompilerVisitor__add(self
, var61
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
8410 var66
= string__NativeString__to_s_with_length(var64
, var65
);
8415 var67
= separate_erasure_compiler__SeparateErasureCompilerVisitor__type_test(self
, var_res
, var_mtype
, var63
);
8423 var72
= string__NativeString__to_s_with_length(var70
, var71
);
8432 var77
= string__NativeString__to_s_with_length(var75
, var76
);
8436 var78
= NEW_array__Array(&type_array__Arraykernel__Object
);
8437 { /* var78 = array_instance Array[Object] */
8439 var80
= NEW_array__NativeArray(var79
, &type_array__NativeArraykernel__Object
);
8440 ((struct instance_array__NativeArray
*)var80
)->values
[0] = (val
*) var69
;
8441 ((struct instance_array__NativeArray
*)var80
)->values
[1] = (val
*) var_cond
;
8442 ((struct instance_array__NativeArray
*)var80
)->values
[2] = (val
*) var74
;
8444 ((void (*)(val
*, val
*, long))(var78
->class->vft
[COLOR_array__Array__with_native
]))(var78
, var80
, var79
) /* with_native on <var78:Array[Object]>*/;
8448 var81
= ((val
* (*)(val
*))(var78
->class->vft
[COLOR_string__Object__to_s
]))(var78
) /* to_s on <var78:Array[Object]>*/;
8451 abstract_compiler__AbstractCompilerVisitor__add(self
, var81
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
8456 var84
= "Cast failed";
8458 var86
= string__NativeString__to_s_with_length(var84
, var85
);
8463 abstract_compiler__AbstractCompilerVisitor__add_abort(self
, var83
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add_abort on <self:SeparateErasureCompilerVisitor>*/
8470 var91
= string__NativeString__to_s_with_length(var89
, var90
);
8475 abstract_compiler__AbstractCompilerVisitor__add(self
, var88
); /* Direct call abstract_compiler#AbstractCompilerVisitor#add on <self:SeparateErasureCompilerVisitor>*/
8484 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#compile_callsite for (self: Object, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
8485 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompilerVisitor__compile_callsite(val
* self
, val
* p0
, val
* p1
) {
8486 val
* var
/* : nullable RuntimeVariable */;
8487 val
* var1
/* : nullable RuntimeVariable */;
8488 var1
= separate_erasure_compiler__SeparateErasureCompilerVisitor__compile_callsite(self
, p0
, p1
);
8493 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#init_instance for (self: SeparateErasureCompilerVisitor, MClassType): RuntimeVariable */
8494 val
* separate_erasure_compiler__SeparateErasureCompilerVisitor__init_instance(val
* self
, val
* p0
) {
8495 val
* var
/* : RuntimeVariable */;
8496 val
* var_mtype
/* var mtype: MClassType */;
8497 static val
* varonce
;
8498 val
* var1
/* : String */;
8499 char* var2
/* : NativeString */;
8500 long var3
/* : Int */;
8501 val
* var4
/* : FlatString */;
8502 val
* var5
/* : MClass */;
8503 val
* var7
/* : MClass */;
8504 val
* var8
/* : String */;
8505 val
* var9
/* : Array[Object] */;
8506 long var10
/* : Int */;
8507 val
* var11
/* : NativeArray[Object] */;
8508 val
* var12
/* : String */;
8509 static val
* varonce13
;
8510 val
* var14
/* : String */;
8511 char* var15
/* : NativeString */;
8512 long var16
/* : Int */;
8513 val
* var17
/* : FlatString */;
8514 val
* var18
/* : MClass */;
8515 val
* var20
/* : MClass */;
8516 val
* var21
/* : String */;
8517 static val
* varonce22
;
8518 val
* var23
/* : String */;
8519 char* var24
/* : NativeString */;
8520 long var25
/* : Int */;
8521 val
* var26
/* : FlatString */;
8522 val
* var27
/* : Array[Object] */;
8523 long var28
/* : Int */;
8524 val
* var29
/* : NativeArray[Object] */;
8525 val
* var30
/* : String */;
8526 val
* var31
/* : RuntimeVariable */;
8533 var4
= string__NativeString__to_s_with_length(var2
, var3
);
8538 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
8539 var7
= var_mtype
->attrs
[COLOR_model__MClassType___mclass
].val
; /* _mclass on <var_mtype:MClassType> */
8540 if (unlikely(var7
== NULL
)) {
8541 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
8542 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
8550 var8
= abstract_compiler__MClass__c_name(var5
);
8552 var9
= NEW_array__Array(&type_array__Arraykernel__Object
);
8553 { /* var9 = array_instance Array[Object] */
8555 var11
= NEW_array__NativeArray(var10
, &type_array__NativeArraykernel__Object
);
8556 ((struct instance_array__NativeArray
*)var11
)->values
[0] = (val
*) var1
;
8557 ((struct instance_array__NativeArray
*)var11
)->values
[1] = (val
*) var8
;
8559 ((void (*)(val
*, val
*, long))(var9
->class->vft
[COLOR_array__Array__with_native
]))(var9
, var11
, var10
) /* with_native on <var9:Array[Object]>*/;
8563 var12
= ((val
* (*)(val
*))(var9
->class->vft
[COLOR_string__Object__to_s
]))(var9
) /* to_s on <var9:Array[Object]>*/;
8566 abstract_compiler__AbstractCompilerVisitor__require_declaration(self
, var12
); /* Direct call abstract_compiler#AbstractCompilerVisitor#require_declaration on <self:SeparateErasureCompilerVisitor>*/
8573 var17
= string__NativeString__to_s_with_length(var15
, var16
);
8578 { /* Inline model#MClassType#mclass (var_mtype) on <var_mtype:MClassType> */
8579 var20
= var_mtype
->attrs
[COLOR_model__MClassType___mclass
].val
; /* _mclass on <var_mtype:MClassType> */
8580 if (unlikely(var20
== NULL
)) {
8581 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mclass");
8582 PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 969);
8586 RET_LABEL19
:(void)0;
8590 var21
= abstract_compiler__MClass__c_name(var18
);
8597 var26
= string__NativeString__to_s_with_length(var24
, var25
);
8601 var27
= NEW_array__Array(&type_array__Arraykernel__Object
);
8602 { /* var27 = array_instance Array[Object] */
8604 var29
= NEW_array__NativeArray(var28
, &type_array__NativeArraykernel__Object
);
8605 ((struct instance_array__NativeArray
*)var29
)->values
[0] = (val
*) var14
;
8606 ((struct instance_array__NativeArray
*)var29
)->values
[1] = (val
*) var21
;
8607 ((struct instance_array__NativeArray
*)var29
)->values
[2] = (val
*) var23
;
8609 ((void (*)(val
*, val
*, long))(var27
->class->vft
[COLOR_array__Array__with_native
]))(var27
, var29
, var28
) /* with_native on <var27:Array[Object]>*/;
8613 var30
= ((val
* (*)(val
*))(var27
->class->vft
[COLOR_string__Object__to_s
]))(var27
) /* to_s on <var27:Array[Object]>*/;
8616 var31
= abstract_compiler__AbstractCompilerVisitor__new_expr(self
, var30
, var_mtype
);
8623 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#init_instance for (self: Object, MClassType): RuntimeVariable */
8624 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompilerVisitor__init_instance(val
* self
, val
* p0
) {
8625 val
* var
/* : RuntimeVariable */;
8626 val
* var1
/* : RuntimeVariable */;
8627 var1
= separate_erasure_compiler__SeparateErasureCompilerVisitor__init_instance(self
, p0
);