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___64dopt_erasure
].val
; /* @opt_erasure on <self:ToolContext> */
8 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @opt_erasure");
9 fprintf(stderr
, " (%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 var1
= separate_erasure_compiler__ToolContext__opt_erasure(self
);
25 /* method separate_erasure_compiler#ToolContext#opt_erasure= for (self: ToolContext, OptionBool) */
26 void separate_erasure_compiler__ToolContext__opt_erasure_61d(val
* self
, val
* p0
) {
27 self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___64dopt_erasure
].val
= p0
; /* @opt_erasure on <self:ToolContext> */
30 /* method separate_erasure_compiler#ToolContext#opt_erasure= for (self: Object, OptionBool) */
31 void VIRTUAL_separate_erasure_compiler__ToolContext__opt_erasure_61d(val
* self
, val
* p0
) {
32 separate_erasure_compiler__ToolContext__opt_erasure_61d(self
, p0
);
35 /* method separate_erasure_compiler#ToolContext#opt_no_check_erasure_cast for (self: ToolContext): OptionBool */
36 val
* separate_erasure_compiler__ToolContext__opt_no_check_erasure_cast(val
* self
) {
37 val
* var
/* : OptionBool */;
38 val
* var1
/* : OptionBool */;
39 var1
= self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___64dopt_no_check_erasure_cast
].val
; /* @opt_no_check_erasure_cast on <self:ToolContext> */
41 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @opt_no_check_erasure_cast");
42 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 24);
49 /* method separate_erasure_compiler#ToolContext#opt_no_check_erasure_cast for (self: Object): OptionBool */
50 val
* VIRTUAL_separate_erasure_compiler__ToolContext__opt_no_check_erasure_cast(val
* self
) {
51 val
* var
/* : OptionBool */;
52 val
* var1
/* : OptionBool */;
53 var1
= separate_erasure_compiler__ToolContext__opt_no_check_erasure_cast(self
);
58 /* method separate_erasure_compiler#ToolContext#opt_no_check_erasure_cast= for (self: ToolContext, OptionBool) */
59 void separate_erasure_compiler__ToolContext__opt_no_check_erasure_cast_61d(val
* self
, val
* p0
) {
60 self
->attrs
[COLOR_separate_erasure_compiler__ToolContext___64dopt_no_check_erasure_cast
].val
= p0
; /* @opt_no_check_erasure_cast on <self:ToolContext> */
63 /* method separate_erasure_compiler#ToolContext#opt_no_check_erasure_cast= for (self: Object, OptionBool) */
64 void VIRTUAL_separate_erasure_compiler__ToolContext__opt_no_check_erasure_cast_61d(val
* self
, val
* p0
) {
65 separate_erasure_compiler__ToolContext__opt_no_check_erasure_cast_61d(self
, p0
);
68 /* method separate_erasure_compiler#ToolContext#init for (self: ToolContext) */
69 void separate_erasure_compiler__ToolContext__init(val
* self
) {
70 val
* var
/* : OptionContext */;
71 val
* var1
/* : OptionBool */;
72 val
* var2
/* : OptionBool */;
73 val
* var3
/* : Array[Option] */;
74 long var4
/* : Int */;
75 val
* var5
/* : NativeArray[Option] */;
76 ((void (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__ToolContext__init
]))(self
) /* init on <self:ToolContext>*/;
77 var
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_toolcontext__ToolContext__option_context
]))(self
) /* option_context on <self:ToolContext>*/;
78 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__ToolContext__opt_erasure
]))(self
) /* opt_erasure on <self:ToolContext>*/;
79 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__ToolContext__opt_no_check_erasure_cast
]))(self
) /* opt_no_check_erasure_cast on <self:ToolContext>*/;
80 var3
= NEW_array__Array(&type_array__Arrayopts__Option
);
81 { /* var3 = array_instance Array[Option] */
83 var5
= NEW_array__NativeArray(var4
, &type_array__NativeArrayopts__Option
);
84 ((struct instance_array__NativeArray
*)var5
)->values
[0] = (val
*) var1
;
85 ((struct instance_array__NativeArray
*)var5
)->values
[1] = (val
*) var2
;
86 ((void (*)(val
*, val
*, long))(var3
->class->vft
[COLOR_array__Array__with_native
]))(var3
, var5
, var4
) /* with_native on <var3:Array[Option]>*/;
87 CHECK_NEW_array__Array(var3
);
89 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_opts__OptionContext__add_option
]))(var
, var3
) /* add_option on <var:OptionContext>*/;
92 /* method separate_erasure_compiler#ToolContext#init for (self: Object) */
93 void VIRTUAL_separate_erasure_compiler__ToolContext__init(val
* self
) {
94 separate_erasure_compiler__ToolContext__init(self
);
97 /* method separate_erasure_compiler#ModelBuilder#run_separate_erasure_compiler for (self: ModelBuilder, MModule, RapidTypeAnalysis) */
98 void separate_erasure_compiler__ModelBuilder__run_separate_erasure_compiler(val
* self
, val
* p0
, val
* p1
) {
99 val
* var_mainmodule
/* var mainmodule: MModule */;
100 val
* var_runtime_type_analysis
/* var runtime_type_analysis: RapidTypeAnalysis */;
101 long var
/* : Int */;
102 long var_time0
/* var time0: Int */;
103 val
* var1
/* : ToolContext */;
105 val
* var2
/* : String */;
106 char* var3
/* : NativeString */;
107 long var4
/* : Int */;
108 val
* var5
/* : String */;
109 long var6
/* : Int */;
110 val
* var7
/* : SeparateErasureCompiler */;
111 val
* var_compiler
/* var compiler: SeparateErasureCompiler */;
112 val
* var8
/* : ToolContext */;
113 static val
* varonce9
;
114 val
* var10
/* : String */;
115 char* var11
/* : NativeString */;
116 long var12
/* : Int */;
117 val
* var13
/* : String */;
118 long var14
/* : Int */;
119 val
* var15
/* : String */;
120 static val
* varonce16
;
121 val
* var17
/* : String */;
122 char* var18
/* : NativeString */;
123 long var19
/* : Int */;
124 val
* var20
/* : String */;
125 val
* var21
/* : Array[Object] */;
126 long var22
/* : Int */;
127 val
* var23
/* : NativeArray[Object] */;
128 val
* var24
/* : String */;
129 val
* var25
/* : CodeFile */;
130 val
* var26
/* : POSetElement[MModule] */;
131 val
* var27
/* : Collection[Object] */;
132 val
* var28
/* : Iterator[nullable Object] */;
133 short int var29
/* : Bool */;
134 val
* var30
/* : nullable Object */;
135 val
* var_m
/* var m: MModule */;
136 val
* var31
/* : Array[MClass] */;
137 val
* var32
/* : Iterator[nullable Object] */;
138 short int var33
/* : Bool */;
139 val
* var34
/* : nullable Object */;
140 val
* var_mclass
/* var mclass: MClass */;
141 val
* var36
/* : nullable Layout[MVirtualTypeProp] */;
142 val
* var37
/* : Map[Object, Int] */;
143 val
* var38
/* : String */;
144 static val
* varonce39
;
145 val
* var40
/* : String */;
146 char* var41
/* : NativeString */;
147 long var42
/* : Int */;
148 val
* var43
/* : String */;
149 val
* var44
/* : Array[Object] */;
150 long var45
/* : Int */;
151 val
* var46
/* : NativeArray[Object] */;
152 val
* var47
/* : String */;
153 val
* var48
/* : CodeFile */;
154 val
* var49
/* : POSetElement[MModule] */;
155 val
* var50
/* : Collection[Object] */;
156 val
* var51
/* : Iterator[nullable Object] */;
157 short int var52
/* : Bool */;
158 val
* var53
/* : nullable Object */;
159 val
* var_m54
/* var m: MModule */;
160 val
* var55
/* : ToolContext */;
161 static val
* varonce56
;
162 val
* var57
/* : String */;
163 char* var58
/* : NativeString */;
164 long var59
/* : Int */;
165 val
* var60
/* : String */;
166 val
* var61
/* : Array[Object] */;
167 long var62
/* : Int */;
168 val
* var63
/* : NativeArray[Object] */;
169 val
* var64
/* : String */;
170 long var65
/* : Int */;
171 val
* var66
/* : String */;
172 static val
* varonce67
;
173 val
* var68
/* : String */;
174 char* var69
/* : NativeString */;
175 long var70
/* : Int */;
176 val
* var71
/* : String */;
177 val
* var72
/* : Array[Object] */;
178 long var73
/* : Int */;
179 val
* var74
/* : NativeArray[Object] */;
180 val
* var75
/* : String */;
181 val
* var76
/* : CodeFile */;
182 long var78
/* : Int */;
183 long var_time1
/* var time1: Int */;
184 val
* var79
/* : ToolContext */;
185 static val
* varonce80
;
186 val
* var81
/* : String */;
187 char* var82
/* : NativeString */;
188 long var83
/* : Int */;
189 val
* var84
/* : String */;
190 long var85
/* : Int */;
191 long var87
/* : Int */;
192 static val
* varonce88
;
193 val
* var89
/* : String */;
194 char* var90
/* : NativeString */;
195 long var91
/* : Int */;
196 val
* var92
/* : String */;
197 val
* var93
/* : Array[Object] */;
198 long var94
/* : Int */;
199 val
* var95
/* : NativeArray[Object] */;
200 val
* var96
/* : Object */;
201 val
* var97
/* : String */;
202 long var98
/* : Int */;
204 var_runtime_type_analysis
= p1
;
205 var
= ((long (*)(val
*))(self
->class->vft
[COLOR_time__Object__get_time
]))(self
) /* get_time on <self:ModelBuilder>*/;
207 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(self
) /* toolcontext on <self:ModelBuilder>*/;
211 var3
= "*** GENERATING C ***";
213 var5
= string__NativeString__to_s_with_length(var3
, var4
);
218 ((void (*)(val
*, val
*, long))(var1
->class->vft
[COLOR_toolcontext__ToolContext__info
]))(var1
, var2
, var6
) /* info on <var1:ToolContext>*/;
219 var7
= NEW_separate_erasure_compiler__SeparateErasureCompiler(&type_separate_erasure_compiler__SeparateErasureCompiler
);
220 ((void (*)(val
*, val
*, val
*, val
*))(var7
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__init
]))(var7
, var_mainmodule
, self
, var_runtime_type_analysis
) /* init on <var7:SeparateErasureCompiler>*/;
221 CHECK_NEW_separate_erasure_compiler__SeparateErasureCompiler(var7
);
223 ((void (*)(val
*))(var_compiler
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__compile_header
]))(var_compiler
) /* compile_header on <var_compiler:SeparateErasureCompiler>*/;
224 var8
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(self
) /* toolcontext on <self:ModelBuilder>*/;
228 var11
= "Property coloring";
230 var13
= string__NativeString__to_s_with_length(var11
, var12
);
235 ((void (*)(val
*, val
*, long))(var8
->class->vft
[COLOR_toolcontext__ToolContext__info
]))(var8
, var10
, var14
) /* info on <var8:ToolContext>*/;
236 var15
= ((val
* (*)(val
*))(var_mainmodule
->class->vft
[COLOR_model_base__MModule__name
]))(var_mainmodule
) /* name on <var_mainmodule:MModule>*/;
242 var20
= string__NativeString__to_s_with_length(var18
, var19
);
246 var21
= NEW_array__Array(&type_array__Arraykernel__Object
);
247 { /* var21 = array_instance Array[Object] */
249 var23
= NEW_array__NativeArray(var22
, &type_array__NativeArraykernel__Object
);
250 ((struct instance_array__NativeArray
*)var23
)->values
[0] = (val
*) var15
;
251 ((struct instance_array__NativeArray
*)var23
)->values
[1] = (val
*) var17
;
252 ((void (*)(val
*, val
*, long))(var21
->class->vft
[COLOR_array__Array__with_native
]))(var21
, var23
, var22
) /* with_native on <var21:Array[Object]>*/;
253 CHECK_NEW_array__Array(var21
);
255 var24
= ((val
* (*)(val
*))(var21
->class->vft
[COLOR_string__Object__to_s
]))(var21
) /* to_s on <var21:Array[Object]>*/;
256 var25
= ((val
* (*)(val
*, val
*))(var_compiler
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__new_file
]))(var_compiler
, var24
) /* new_file on <var_compiler:SeparateErasureCompiler>*/;
258 ((void (*)(val
*))(var_compiler
->class->vft
[COLOR_separate_compiler__SeparateCompiler__do_property_coloring
]))(var_compiler
) /* do_property_coloring on <var_compiler:SeparateErasureCompiler>*/;
259 var26
= ((val
* (*)(val
*))(var_mainmodule
->class->vft
[COLOR_model_base__MModule__in_importation
]))(var_mainmodule
) /* in_importation on <var_mainmodule:MModule>*/;
260 var27
= ((val
* (*)(val
*))(var26
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var26
) /* greaters on <var26:POSetElement[MModule]>*/;
261 var28
= ((val
* (*)(val
*))(var27
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var27
) /* iterator on <var27:Collection[Object](Collection[MModule])>*/;
263 var29
= ((short int (*)(val
*))(var28
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var28
) /* is_ok on <var28:Iterator[nullable Object]>*/;
265 var30
= ((val
* (*)(val
*))(var28
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var28
) /* item on <var28:Iterator[nullable Object]>*/;
267 var31
= ((val
* (*)(val
*))(var_m
->class->vft
[COLOR_model__MModule__intro_mclasses
]))(var_m
) /* intro_mclasses on <var_m:MModule>*/;
268 var32
= ((val
* (*)(val
*))(var31
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var31
) /* iterator on <var31:Array[MClass]>*/;
270 var33
= ((short int (*)(val
*))(var32
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var32
) /* is_ok on <var32:Iterator[nullable Object]>*/;
272 var34
= ((val
* (*)(val
*))(var32
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var32
) /* item on <var32:Iterator[nullable Object]>*/;
274 ((void (*)(val
*, val
*))(var_compiler
->class->vft
[COLOR_separate_compiler__SeparateCompiler__compile_class_to_c
]))(var_compiler
, var_mclass
) /* compile_class_to_c on <var_compiler:SeparateErasureCompiler>*/;
275 CONTINUE_label
: (void)0;
276 ((void (*)(val
*))(var32
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var32
) /* next on <var32:Iterator[nullable Object]>*/;
278 BREAK_label
: (void)0;
279 CONTINUE_label35
: (void)0;
280 ((void (*)(val
*))(var28
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var28
) /* next on <var28:Iterator[nullable Object]>*/;
282 BREAK_label35
: (void)0;
283 var36
= ((val
* (*)(val
*))(var_compiler
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__vt_layout
]))(var_compiler
) /* vt_layout on <var_compiler:SeparateErasureCompiler>*/;
285 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
286 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 52);
289 var37
= ((val
* (*)(val
*))(var36
->class->vft
[COLOR_layout_builders__Layout__pos
]))(var36
) /* pos on <var36:nullable Layout[MVirtualTypeProp]>*/;
291 ((void (*)(val
*, val
*))(var_compiler
->class->vft
[COLOR_separate_compiler__SeparateCompiler__compile_color_consts
]))(var_compiler
, var37
) /* compile_color_consts on <var_compiler:SeparateErasureCompiler>*/;
292 var38
= ((val
* (*)(val
*))(var_mainmodule
->class->vft
[COLOR_model_base__MModule__name
]))(var_mainmodule
) /* name on <var_mainmodule:MModule>*/;
298 var43
= string__NativeString__to_s_with_length(var41
, var42
);
302 var44
= NEW_array__Array(&type_array__Arraykernel__Object
);
303 { /* var44 = array_instance Array[Object] */
305 var46
= NEW_array__NativeArray(var45
, &type_array__NativeArraykernel__Object
);
306 ((struct instance_array__NativeArray
*)var46
)->values
[0] = (val
*) var38
;
307 ((struct instance_array__NativeArray
*)var46
)->values
[1] = (val
*) var40
;
308 ((void (*)(val
*, val
*, long))(var44
->class->vft
[COLOR_array__Array__with_native
]))(var44
, var46
, var45
) /* with_native on <var44:Array[Object]>*/;
309 CHECK_NEW_array__Array(var44
);
311 var47
= ((val
* (*)(val
*))(var44
->class->vft
[COLOR_string__Object__to_s
]))(var44
) /* to_s on <var44:Array[Object]>*/;
312 var48
= ((val
* (*)(val
*, val
*))(var_compiler
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__new_file
]))(var_compiler
, var47
) /* new_file on <var_compiler:SeparateErasureCompiler>*/;
314 ((void (*)(val
*))(var_compiler
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__compile_main_function
]))(var_compiler
) /* compile_main_function on <var_compiler:SeparateErasureCompiler>*/;
315 var49
= ((val
* (*)(val
*))(var_mainmodule
->class->vft
[COLOR_model_base__MModule__in_importation
]))(var_mainmodule
) /* in_importation on <var_mainmodule:MModule>*/;
316 var50
= ((val
* (*)(val
*))(var49
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var49
) /* greaters on <var49:POSetElement[MModule]>*/;
317 var51
= ((val
* (*)(val
*))(var50
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var50
) /* iterator on <var50:Collection[Object](Collection[MModule])>*/;
319 var52
= ((short int (*)(val
*))(var51
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var51
) /* is_ok on <var51:Iterator[nullable Object]>*/;
321 var53
= ((val
* (*)(val
*))(var51
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var51
) /* item on <var51:Iterator[nullable Object]>*/;
323 var55
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(self
) /* toolcontext on <self:ModelBuilder>*/;
327 var58
= "Generate C for module ";
329 var60
= string__NativeString__to_s_with_length(var58
, var59
);
333 var61
= NEW_array__Array(&type_array__Arraykernel__Object
);
334 { /* var61 = array_instance Array[Object] */
336 var63
= NEW_array__NativeArray(var62
, &type_array__NativeArraykernel__Object
);
337 ((struct instance_array__NativeArray
*)var63
)->values
[0] = (val
*) var57
;
338 ((struct instance_array__NativeArray
*)var63
)->values
[1] = (val
*) var_m54
;
339 ((void (*)(val
*, val
*, long))(var61
->class->vft
[COLOR_array__Array__with_native
]))(var61
, var63
, var62
) /* with_native on <var61:Array[Object]>*/;
340 CHECK_NEW_array__Array(var61
);
342 var64
= ((val
* (*)(val
*))(var61
->class->vft
[COLOR_string__Object__to_s
]))(var61
) /* to_s on <var61:Array[Object]>*/;
344 ((void (*)(val
*, val
*, long))(var55
->class->vft
[COLOR_toolcontext__ToolContext__info
]))(var55
, var64
, var65
) /* info on <var55:ToolContext>*/;
345 var66
= ((val
* (*)(val
*))(var_m54
->class->vft
[COLOR_model_base__MModule__name
]))(var_m54
) /* name on <var_m54:MModule>*/;
351 var71
= string__NativeString__to_s_with_length(var69
, var70
);
355 var72
= NEW_array__Array(&type_array__Arraykernel__Object
);
356 { /* var72 = array_instance Array[Object] */
358 var74
= NEW_array__NativeArray(var73
, &type_array__NativeArraykernel__Object
);
359 ((struct instance_array__NativeArray
*)var74
)->values
[0] = (val
*) var66
;
360 ((struct instance_array__NativeArray
*)var74
)->values
[1] = (val
*) var68
;
361 ((void (*)(val
*, val
*, long))(var72
->class->vft
[COLOR_array__Array__with_native
]))(var72
, var74
, var73
) /* with_native on <var72:Array[Object]>*/;
362 CHECK_NEW_array__Array(var72
);
364 var75
= ((val
* (*)(val
*))(var72
->class->vft
[COLOR_string__Object__to_s
]))(var72
) /* to_s on <var72:Array[Object]>*/;
365 var76
= ((val
* (*)(val
*, val
*))(var_compiler
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__new_file
]))(var_compiler
, var75
) /* new_file on <var_compiler:SeparateErasureCompiler>*/;
367 ((void (*)(val
*, val
*))(var_compiler
->class->vft
[COLOR_separate_compiler__SeparateCompiler__compile_module_to_c
]))(var_compiler
, var_m54
) /* compile_module_to_c on <var_compiler:SeparateErasureCompiler>*/;
368 CONTINUE_label77
: (void)0;
369 ((void (*)(val
*))(var51
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var51
) /* next on <var51:Iterator[nullable Object]>*/;
371 BREAK_label77
: (void)0;
372 ((void (*)(val
*))(var_compiler
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__display_stats
]))(var_compiler
) /* display_stats on <var_compiler:SeparateErasureCompiler>*/;
373 var78
= ((long (*)(val
*))(self
->class->vft
[COLOR_time__Object__get_time
]))(self
) /* get_time on <self:ModelBuilder>*/;
375 var79
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(self
) /* toolcontext on <self:ModelBuilder>*/;
379 var82
= "*** END GENERATING C: ";
381 var84
= string__NativeString__to_s_with_length(var82
, var83
);
385 { /* Inline kernel#Int#- (var_time1,var_time0) */
386 var87
= var_time1
- var_time0
;
396 var92
= string__NativeString__to_s_with_length(var90
, var91
);
400 var93
= NEW_array__Array(&type_array__Arraykernel__Object
);
401 { /* var93 = array_instance Array[Object] */
403 var95
= NEW_array__NativeArray(var94
, &type_array__NativeArraykernel__Object
);
404 ((struct instance_array__NativeArray
*)var95
)->values
[0] = (val
*) var81
;
405 var96
= BOX_kernel__Int(var85
); /* autobox from Int to Object */
406 ((struct instance_array__NativeArray
*)var95
)->values
[1] = (val
*) var96
;
407 ((struct instance_array__NativeArray
*)var95
)->values
[2] = (val
*) var89
;
408 ((void (*)(val
*, val
*, long))(var93
->class->vft
[COLOR_array__Array__with_native
]))(var93
, var95
, var94
) /* with_native on <var93:Array[Object]>*/;
409 CHECK_NEW_array__Array(var93
);
411 var97
= ((val
* (*)(val
*))(var93
->class->vft
[COLOR_string__Object__to_s
]))(var93
) /* to_s on <var93:Array[Object]>*/;
413 ((void (*)(val
*, val
*, long))(var79
->class->vft
[COLOR_toolcontext__ToolContext__info
]))(var79
, var97
, var98
) /* info on <var79:ToolContext>*/;
414 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__ModelBuilder__write_and_make
]))(self
, var_compiler
) /* write_and_make on <self:ModelBuilder>*/;
417 /* method separate_erasure_compiler#ModelBuilder#run_separate_erasure_compiler for (self: Object, MModule, RapidTypeAnalysis) */
418 void VIRTUAL_separate_erasure_compiler__ModelBuilder__run_separate_erasure_compiler(val
* self
, val
* p0
, val
* p1
) {
419 separate_erasure_compiler__ModelBuilder__run_separate_erasure_compiler(self
, p0
, p1
);
422 /* method separate_erasure_compiler#SeparateErasureCompiler#class_layout for (self: SeparateErasureCompiler): nullable Layout[MClass] */
423 val
* separate_erasure_compiler__SeparateErasureCompiler__class_layout(val
* self
) {
424 val
* var
/* : nullable Layout[MClass] */;
425 val
* var1
/* : nullable Layout[MClass] */;
426 var1
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___64dclass_layout
].val
; /* @class_layout on <self:SeparateErasureCompiler> */
431 /* method separate_erasure_compiler#SeparateErasureCompiler#class_layout for (self: Object): nullable Layout[MClass] */
432 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_layout(val
* self
) {
433 val
* var
/* : nullable Layout[MClass] */;
434 val
* var1
/* : nullable Layout[MClass] */;
435 var1
= separate_erasure_compiler__SeparateErasureCompiler__class_layout(self
);
440 /* method separate_erasure_compiler#SeparateErasureCompiler#class_layout= for (self: SeparateErasureCompiler, nullable Layout[MClass]) */
441 void separate_erasure_compiler__SeparateErasureCompiler__class_layout_61d(val
* self
, val
* p0
) {
442 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___64dclass_layout
].val
= p0
; /* @class_layout on <self:SeparateErasureCompiler> */
445 /* method separate_erasure_compiler#SeparateErasureCompiler#class_layout= for (self: Object, nullable Layout[MClass]) */
446 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_layout_61d(val
* self
, val
* p0
) {
447 separate_erasure_compiler__SeparateErasureCompiler__class_layout_61d(self
, p0
);
450 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_layout for (self: SeparateErasureCompiler): nullable Layout[MVirtualTypeProp] */
451 val
* separate_erasure_compiler__SeparateErasureCompiler__vt_layout(val
* self
) {
452 val
* var
/* : nullable Layout[MVirtualTypeProp] */;
453 val
* var1
/* : nullable Layout[MVirtualTypeProp] */;
454 var1
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___64dvt_layout
].val
; /* @vt_layout on <self:SeparateErasureCompiler> */
459 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_layout for (self: Object): nullable Layout[MVirtualTypeProp] */
460 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__vt_layout(val
* self
) {
461 val
* var
/* : nullable Layout[MVirtualTypeProp] */;
462 val
* var1
/* : nullable Layout[MVirtualTypeProp] */;
463 var1
= separate_erasure_compiler__SeparateErasureCompiler__vt_layout(self
);
468 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_layout= for (self: SeparateErasureCompiler, nullable Layout[MVirtualTypeProp]) */
469 void separate_erasure_compiler__SeparateErasureCompiler__vt_layout_61d(val
* self
, val
* p0
) {
470 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___64dvt_layout
].val
= p0
; /* @vt_layout on <self:SeparateErasureCompiler> */
473 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_layout= for (self: Object, nullable Layout[MVirtualTypeProp]) */
474 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__vt_layout_61d(val
* self
, val
* p0
) {
475 separate_erasure_compiler__SeparateErasureCompiler__vt_layout_61d(self
, p0
);
478 /* method separate_erasure_compiler#SeparateErasureCompiler#init for (self: SeparateErasureCompiler, MModule, ModelBuilder, RapidTypeAnalysis) */
479 void separate_erasure_compiler__SeparateErasureCompiler__init(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
480 val
* var_mainmodule
/* var mainmodule: MModule */;
481 val
* var_mmbuilder
/* var mmbuilder: ModelBuilder */;
482 val
* var_runtime_type_analysis
/* var runtime_type_analysis: RapidTypeAnalysis */;
483 val
* var
/* : HashSet[MClass] */;
484 val
* var1
/* : Model */;
485 val
* var2
/* : Array[MClass] */;
486 val
* var_mclasses
/* var mclasses: HashSet[MClass] */;
487 val
* var3
/* : MClassColorer */;
488 val
* var_class_colorer
/* var class_colorer: MClassColorer */;
489 val
* var4
/* : ModelBuilder */;
490 val
* var5
/* : ToolContext */;
491 val
* var6
/* : OptionBool */;
492 val
* var7
/* : nullable Object */;
493 short int var8
/* : Bool */;
494 val
* var9
/* : MClassHasher */;
495 val
* var10
/* : PHModOperator */;
496 val
* var_layout_builder
/* var layout_builder: TypingLayoutBuilder[MClass] */;
497 val
* var11
/* : Layout[Object] */;
498 val
* var12
/* : ModelBuilder */;
499 val
* var13
/* : ToolContext */;
500 val
* var14
/* : OptionBool */;
501 val
* var15
/* : nullable Object */;
502 short int var16
/* : Bool */;
503 val
* var17
/* : MClassHasher */;
504 val
* var18
/* : PHAndOperator */;
505 val
* var19
/* : Layout[Object] */;
506 val
* var20
/* : ModelBuilder */;
507 val
* var21
/* : ToolContext */;
508 val
* var22
/* : OptionBool */;
509 val
* var23
/* : nullable Object */;
510 short int var24
/* : Bool */;
511 val
* var25
/* : MClassBMizer */;
512 val
* var26
/* : Layout[Object] */;
513 val
* var27
/* : Layout[Object] */;
514 val
* var28
/* : Map[MClass, Array[nullable MClass]] */;
515 val
* var29
/* : HashMap[MClass, Set[MVirtualTypeProp]] */;
516 val
* var_vts
/* var vts: HashMap[MClass, Set[MVirtualTypeProp]] */;
517 val
* var30
/* : Iterator[nullable Object] */;
518 short int var31
/* : Bool */;
519 val
* var32
/* : nullable Object */;
520 val
* var_mclass
/* var mclass: MClass */;
521 val
* var33
/* : HashSet[MVirtualTypeProp] */;
522 val
* var34
/* : MModule */;
523 val
* var35
/* : Set[MProperty] */;
524 val
* var36
/* : Iterator[nullable Object] */;
525 short int var37
/* : Bool */;
526 val
* var38
/* : nullable Object */;
527 val
* var_mprop
/* var mprop: MProperty */;
528 short int var39
/* : Bool */;
531 val
* var40
/* : nullable Object */;
532 val
* var42
/* : MPropertyColorer[MVirtualTypeProp] */;
533 val
* var_vt_coloring
/* var vt_coloring: MPropertyColorer[MVirtualTypeProp] */;
534 val
* var43
/* : Layout[PropertyLayoutElement] */;
535 val
* var_vt_layout
/* var vt_layout: Layout[MVirtualTypeProp] */;
536 val
* var44
/* : Map[MClass, Array[nullable MPropDef]] */;
539 var_runtime_type_analysis
= p2
;
540 ((void (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_separate_compiler__SeparateCompiler__init
]))(self
, p0
, p1
, p2
) /* init on <self:SeparateErasureCompiler>*/;
541 var
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MClass
);
542 var1
= ((val
* (*)(val
*))(var_mmbuilder
->class->vft
[COLOR_modelbuilder__ModelBuilder__model
]))(var_mmbuilder
) /* model on <var_mmbuilder:ModelBuilder>*/;
543 var2
= ((val
* (*)(val
*))(var1
->class->vft
[COLOR_model__Model__mclasses
]))(var1
) /* mclasses on <var1:Model>*/;
544 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_hash_collection__HashSet__from
]))(var
, var2
) /* from on <var:HashSet[MClass]>*/;
545 CHECK_NEW_hash_collection__HashSet(var
);
547 var3
= NEW_layout_builders__MClassColorer(&type_layout_builders__MClassColorer
);
548 ((void (*)(val
*, val
*))(var3
->class->vft
[COLOR_layout_builders__MClassColorer__init
]))(var3
, var_mainmodule
) /* init on <var3:MClassColorer>*/;
549 CHECK_NEW_layout_builders__MClassColorer(var3
);
550 var_class_colorer
= var3
;
551 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__modelbuilder
]))(self
) /* modelbuilder on <self:SeparateErasureCompiler>*/;
552 var5
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(var4
) /* toolcontext on <var4:ModelBuilder>*/;
553 var6
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_separate_compiler__ToolContext__opt_phmod_typing
]))(var5
) /* opt_phmod_typing on <var5:ToolContext>*/;
554 var7
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_opts__Option__value
]))(var6
) /* value on <var6:OptionBool>*/;
555 var8
= ((struct instance_kernel__Bool
*)var7
)->value
; /* autounbox from nullable Object to Bool */;
557 var9
= NEW_layout_builders__MClassHasher(&type_layout_builders__MClassHasher
);
558 var10
= NEW_layout_builders__PHModOperator(&type_layout_builders__PHModOperator
);
559 ((void (*)(val
*))(var10
->class->vft
[COLOR_layout_builders__PHModOperator__init
]))(var10
) /* init on <var10:PHModOperator>*/;
560 CHECK_NEW_layout_builders__PHModOperator(var10
);
561 ((void (*)(val
*, val
*, val
*))(var9
->class->vft
[COLOR_layout_builders__MClassHasher__init
]))(var9
, var10
, var_mainmodule
) /* init on <var9:MClassHasher>*/;
562 CHECK_NEW_layout_builders__MClassHasher(var9
);
563 var_layout_builder
= var9
;
564 var11
= ((val
* (*)(val
*, val
*))(var_class_colorer
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__build_layout
]))(var_class_colorer
, var_mclasses
) /* build_layout on <var_class_colorer:MClassColorer>*/;
567 var12
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__modelbuilder
]))(self
) /* modelbuilder on <self:SeparateErasureCompiler>*/;
568 var13
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(var12
) /* toolcontext on <var12:ModelBuilder>*/;
569 var14
= ((val
* (*)(val
*))(var13
->class->vft
[COLOR_separate_compiler__ToolContext__opt_phand_typing
]))(var13
) /* opt_phand_typing on <var13:ToolContext>*/;
570 var15
= ((val
* (*)(val
*))(var14
->class->vft
[COLOR_opts__Option__value
]))(var14
) /* value on <var14:OptionBool>*/;
571 var16
= ((struct instance_kernel__Bool
*)var15
)->value
; /* autounbox from nullable Object to Bool */;
573 var17
= NEW_layout_builders__MClassHasher(&type_layout_builders__MClassHasher
);
574 var18
= NEW_layout_builders__PHAndOperator(&type_layout_builders__PHAndOperator
);
575 ((void (*)(val
*))(var18
->class->vft
[COLOR_layout_builders__PHAndOperator__init
]))(var18
) /* init on <var18:PHAndOperator>*/;
576 CHECK_NEW_layout_builders__PHAndOperator(var18
);
577 ((void (*)(val
*, val
*, val
*))(var17
->class->vft
[COLOR_layout_builders__MClassHasher__init
]))(var17
, var18
, var_mainmodule
) /* init on <var17:MClassHasher>*/;
578 CHECK_NEW_layout_builders__MClassHasher(var17
);
579 var_layout_builder
= var17
;
580 var19
= ((val
* (*)(val
*, val
*))(var_class_colorer
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__build_layout
]))(var_class_colorer
, var_mclasses
) /* build_layout on <var_class_colorer:MClassColorer>*/;
583 var20
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__modelbuilder
]))(self
) /* modelbuilder on <self:SeparateErasureCompiler>*/;
584 var21
= ((val
* (*)(val
*))(var20
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(var20
) /* toolcontext on <var20:ModelBuilder>*/;
585 var22
= ((val
* (*)(val
*))(var21
->class->vft
[COLOR_separate_compiler__ToolContext__opt_bm_typing
]))(var21
) /* opt_bm_typing on <var21:ToolContext>*/;
586 var23
= ((val
* (*)(val
*))(var22
->class->vft
[COLOR_opts__Option__value
]))(var22
) /* value on <var22:OptionBool>*/;
587 var24
= ((struct instance_kernel__Bool
*)var23
)->value
; /* autounbox from nullable Object to Bool */;
589 var25
= NEW_layout_builders__MClassBMizer(&type_layout_builders__MClassBMizer
);
590 ((void (*)(val
*, val
*))(var25
->class->vft
[COLOR_layout_builders__MClassBMizer__init
]))(var25
, var_mainmodule
) /* init on <var25:MClassBMizer>*/;
591 CHECK_NEW_layout_builders__MClassBMizer(var25
);
592 var_layout_builder
= var25
;
593 var26
= ((val
* (*)(val
*, val
*))(var_class_colorer
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__build_layout
]))(var_class_colorer
, var_mclasses
) /* build_layout on <var_class_colorer:MClassColorer>*/;
596 var_layout_builder
= var_class_colorer
;
600 var27
= ((val
* (*)(val
*, val
*))(var_layout_builder
->class->vft
[COLOR_layout_builders__TypingLayoutBuilder__build_layout
]))(var_layout_builder
, var_mclasses
) /* build_layout on <var_layout_builder:TypingLayoutBuilder[MClass]>*/;
601 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__class_layout_61d
]))(self
, var27
) /* class_layout= on <self:SeparateErasureCompiler>*/;
602 var28
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables
]))(self
, var_mclasses
) /* build_class_typing_tables on <self:SeparateErasureCompiler>*/;
603 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__class_tables_61d
]))(self
, var28
) /* class_tables= on <self:SeparateErasureCompiler>*/;
604 var29
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassabstract_collection__Setmodel__MVirtualTypeProp
);
605 ((void (*)(val
*))(var29
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var29
) /* init on <var29:HashMap[MClass, Set[MVirtualTypeProp]]>*/;
606 CHECK_NEW_hash_collection__HashMap(var29
);
608 var30
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:HashSet[MClass]>*/;
610 var31
= ((short int (*)(val
*))(var30
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var30
) /* is_ok on <var30:Iterator[nullable Object]>*/;
612 var32
= ((val
* (*)(val
*))(var30
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var30
) /* item on <var30:Iterator[nullable Object]>*/;
614 var33
= NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MVirtualTypeProp
);
615 ((void (*)(val
*))(var33
->class->vft
[COLOR_hash_collection__HashSet__init
]))(var33
) /* init on <var33:HashSet[MVirtualTypeProp]>*/;
616 CHECK_NEW_hash_collection__HashSet(var33
);
617 ((void (*)(val
*, val
*, val
*))(var_vts
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_vts
, var_mclass
, var33
) /* []= on <var_vts:HashMap[MClass, Set[MVirtualTypeProp]]>*/;
618 var34
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__mainmodule
]))(self
) /* mainmodule on <self:SeparateErasureCompiler>*/;
619 var35
= ((val
* (*)(val
*, val
*))(var34
->class->vft
[COLOR_abstract_compiler__MModule__properties
]))(var34
, var_mclass
) /* properties on <var34:MModule>*/;
620 var36
= ((val
* (*)(val
*))(var35
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var35
) /* iterator on <var35:Set[MProperty]>*/;
622 var37
= ((short int (*)(val
*))(var36
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var36
) /* is_ok on <var36:Iterator[nullable Object]>*/;
624 var38
= ((val
* (*)(val
*))(var36
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var36
) /* item on <var36:Iterator[nullable Object]>*/;
626 /* <var_mprop:MProperty> isa MVirtualTypeProp */
627 cltype
= type_model__MVirtualTypeProp
.color
;
628 idtype
= type_model__MVirtualTypeProp
.id
;
629 if(cltype
>= var_mprop
->type
->table_size
) {
632 var39
= var_mprop
->type
->type_table
[cltype
] == idtype
;
635 var40
= ((val
* (*)(val
*, val
*))(var_vts
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_vts
, var_mclass
) /* [] on <var_vts:HashMap[MClass, Set[MVirtualTypeProp]]>*/;
636 ((void (*)(val
*, val
*))(var40
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var40
, var_mprop
) /* add on <var40:nullable Object(Set[MVirtualTypeProp])>*/;
639 CONTINUE_label
: (void)0;
640 ((void (*)(val
*))(var36
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var36
) /* next on <var36:Iterator[nullable Object]>*/;
642 BREAK_label
: (void)0;
643 CONTINUE_label41
: (void)0;
644 ((void (*)(val
*))(var30
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var30
) /* next on <var30:Iterator[nullable Object]>*/;
646 BREAK_label41
: (void)0;
647 var42
= NEW_layout_builders__MPropertyColorer(&type_layout_builders__MPropertyColorermodel__MVirtualTypeProp
);
648 ((void (*)(val
*, val
*, val
*))(var42
->class->vft
[COLOR_layout_builders__MPropertyColorer__init
]))(var42
, var_mainmodule
, var_class_colorer
) /* init on <var42:MPropertyColorer[MVirtualTypeProp]>*/;
649 CHECK_NEW_layout_builders__MPropertyColorer(var42
);
650 var_vt_coloring
= var42
;
651 var43
= ((val
* (*)(val
*, val
*))(var_vt_coloring
->class->vft
[COLOR_layout_builders__PropertyLayoutBuilder__build_layout
]))(var_vt_coloring
, var_vts
) /* build_layout on <var_vt_coloring:MPropertyColorer[MVirtualTypeProp]>*/;
652 var_vt_layout
= var43
;
653 var44
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables
]))(self
, var_mclasses
, var_vt_layout
) /* build_vt_tables on <self:SeparateErasureCompiler>*/;
654 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__vt_tables_61d
]))(self
, var44
) /* vt_tables= on <self:SeparateErasureCompiler>*/;
655 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__vt_layout_61d
]))(self
, var_vt_layout
) /* vt_layout= on <self:SeparateErasureCompiler>*/;
658 /* method separate_erasure_compiler#SeparateErasureCompiler#init for (self: Object, MModule, ModelBuilder, RapidTypeAnalysis) */
659 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__init(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
660 separate_erasure_compiler__SeparateErasureCompiler__init(self
, p0
, p1
, p2
);
663 /* method separate_erasure_compiler#SeparateErasureCompiler#build_vt_tables for (self: SeparateErasureCompiler, Set[MClass], Layout[MProperty]): Map[MClass, Array[nullable MPropDef]] */
664 val
* separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(val
* self
, val
* p0
, val
* p1
) {
665 val
* var
/* : Map[MClass, Array[nullable MPropDef]] */;
666 val
* var_mclasses
/* var mclasses: Set[MClass] */;
667 val
* var_layout
/* var layout: Layout[MProperty] */;
668 val
* var1
/* : HashMap[MClass, Array[nullable MPropDef]] */;
669 val
* var_tables
/* var tables: HashMap[MClass, Array[nullable MPropDef]] */;
670 val
* var2
/* : Iterator[nullable Object] */;
671 short int var3
/* : Bool */;
672 val
* var4
/* : nullable Object */;
673 val
* var_mclass
/* var mclass: MClass */;
674 val
* var5
/* : Array[nullable MPropDef] */;
675 val
* var_table
/* var table: Array[nullable MPropDef] */;
676 val
* var6
/* : Array[MClass] */;
677 val
* var_parents
/* var parents: Array[MClass] */;
678 val
* var7
/* : MModule */;
679 val
* var8
/* : POSet[MClass] */;
680 short int var9
/* : Bool */;
681 val
* var10
/* : MModule */;
682 val
* var11
/* : POSetElement[MClass] */;
683 val
* var12
/* : Collection[Object] */;
684 val
* var13
/* : Array[nullable Object] */;
685 val
* var14
/* : MModule */;
686 val
* var15
/* : Iterator[nullable Object] */;
687 short int var16
/* : Bool */;
688 val
* var17
/* : nullable Object */;
689 val
* var_parent
/* var parent: MClass */;
690 short int var18
/* : Bool */;
691 val
* var19
/* : MModule */;
692 val
* var20
/* : Set[MProperty] */;
693 val
* var21
/* : Iterator[nullable Object] */;
694 short int var22
/* : Bool */;
695 val
* var23
/* : nullable Object */;
696 val
* var_mproperty
/* var mproperty: MProperty */;
697 short int var24
/* : Bool */;
700 short int var25
/* : Bool */;
701 val
* var27
/* : Map[Object, Int] */;
702 val
* var28
/* : nullable Object */;
703 long var29
/* : Int */;
704 long var_color
/* var color: Int */;
705 long var30
/* : Int */;
706 short int var31
/* : Bool */;
707 short int var33
/* : Bool */;
710 const char* var_class_name
;
711 short int var36
/* : Bool */;
712 val
* var37
/* : Range[Int] */;
713 long var38
/* : Int */;
714 val
* var39
/* : Discrete */;
715 val
* var40
/* : Discrete */;
716 val
* var41
/* : Iterator[nullable Object] */;
717 short int var42
/* : Bool */;
718 val
* var43
/* : nullable Object */;
719 long var_i
/* var i: Int */;
720 long var44
/* : Int */;
721 val
* var45
/* : null */;
722 val
* var47
/* : Array[MPropDef] */;
723 val
* var48
/* : Iterator[nullable Object] */;
724 short int var49
/* : Bool */;
725 val
* var50
/* : nullable Object */;
726 val
* var_mpropdef
/* var mpropdef: MVirtualTypeDef */;
727 val
* var51
/* : MClassDef */;
728 val
* var52
/* : MClass */;
729 short int var53
/* : Bool */;
730 val
* var55
/* : MModule */;
731 val
* var56
/* : Set[MProperty] */;
732 val
* var57
/* : Iterator[nullable Object] */;
733 short int var58
/* : Bool */;
734 val
* var59
/* : nullable Object */;
735 val
* var_mproperty60
/* var mproperty: MProperty */;
736 short int var61
/* : Bool */;
739 short int var64
/* : Bool */;
740 val
* var66
/* : Map[Object, Int] */;
741 val
* var67
/* : nullable Object */;
742 long var68
/* : Int */;
743 long var_color69
/* var color: Int */;
744 long var70
/* : Int */;
745 short int var71
/* : Bool */;
746 short int var73
/* : Bool */;
749 const char* var_class_name76
;
750 short int var77
/* : Bool */;
751 val
* var78
/* : Range[Int] */;
752 long var79
/* : Int */;
753 val
* var80
/* : Discrete */;
754 val
* var81
/* : Discrete */;
755 val
* var82
/* : Iterator[nullable Object] */;
756 short int var83
/* : Bool */;
757 val
* var84
/* : nullable Object */;
758 long var_i85
/* var i: Int */;
759 long var86
/* : Int */;
760 val
* var87
/* : null */;
761 val
* var89
/* : Array[MPropDef] */;
762 val
* var90
/* : Iterator[nullable Object] */;
763 short int var91
/* : Bool */;
764 val
* var92
/* : nullable Object */;
765 val
* var_mpropdef93
/* var mpropdef: MVirtualTypeDef */;
766 val
* var94
/* : MClassDef */;
767 val
* var95
/* : MClass */;
768 short int var96
/* : Bool */;
771 var1
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassarray__Arraynullable_model__MPropDef
);
772 ((void (*)(val
*))(var1
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var1
) /* init on <var1:HashMap[MClass, Array[nullable MPropDef]]>*/;
773 CHECK_NEW_hash_collection__HashMap(var1
);
775 var2
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:Set[MClass]>*/;
777 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var2
) /* is_ok on <var2:Iterator[nullable Object]>*/;
779 var4
= ((val
* (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var2
) /* item on <var2:Iterator[nullable Object]>*/;
781 var5
= NEW_array__Array(&type_array__Arraynullable_model__MPropDef
);
782 ((void (*)(val
*))(var5
->class->vft
[COLOR_array__Array__init
]))(var5
) /* init on <var5:Array[nullable MPropDef]>*/;
783 CHECK_NEW_array__Array(var5
);
785 var6
= NEW_array__Array(&type_array__Arraymodel__MClass
);
786 ((void (*)(val
*))(var6
->class->vft
[COLOR_array__Array__init
]))(var6
) /* init on <var6:Array[MClass]>*/;
787 CHECK_NEW_array__Array(var6
);
789 var7
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__mainmodule
]))(self
) /* mainmodule on <self:SeparateErasureCompiler>*/;
790 var8
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_model__MModule__flatten_mclass_hierarchy
]))(var7
) /* flatten_mclass_hierarchy on <var7:MModule>*/;
791 var9
= ((short int (*)(val
*, val
*))(var8
->class->vft
[COLOR_abstract_collection__Collection__has
]))(var8
, var_mclass
) /* has on <var8:POSet[MClass]>*/;
793 var10
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__mainmodule
]))(self
) /* mainmodule on <self:SeparateErasureCompiler>*/;
794 var11
= ((val
* (*)(val
*, val
*))(var_mclass
->class->vft
[COLOR_model__MClass__in_hierarchy
]))(var_mclass
, var10
) /* in_hierarchy on <var_mclass:MClass>*/;
795 var12
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var11
) /* greaters on <var11:POSetElement[MClass]>*/;
796 var13
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_array__Collection__to_a
]))(var12
) /* to_a on <var12:Collection[Object](Collection[MClass])>*/;
798 var14
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__mainmodule
]))(self
) /* mainmodule on <self:SeparateErasureCompiler>*/;
799 ((void (*)(val
*, val
*))(var14
->class->vft
[COLOR_model__MModule__linearize_mclasses
]))(var14
, var_parents
) /* linearize_mclasses on <var14:MModule>*/;
802 var15
= ((val
* (*)(val
*))(var_parents
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_parents
) /* iterator on <var_parents:Array[MClass]>*/;
804 var16
= ((short int (*)(val
*))(var15
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var15
) /* is_ok on <var15:Iterator[nullable Object]>*/;
806 var17
= ((val
* (*)(val
*))(var15
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var15
) /* item on <var15:Iterator[nullable Object]>*/;
808 var18
= ((short int (*)(val
*, val
*))(var_parent
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_parent
, var_mclass
) /* == on <var_parent:MClass>*/;
813 var19
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__mainmodule
]))(self
) /* mainmodule on <self:SeparateErasureCompiler>*/;
814 var20
= ((val
* (*)(val
*, val
*))(var19
->class->vft
[COLOR_abstract_compiler__MModule__properties
]))(var19
, var_parent
) /* properties on <var19:MModule>*/;
815 var21
= ((val
* (*)(val
*))(var20
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var20
) /* iterator on <var20:Set[MProperty]>*/;
817 var22
= ((short int (*)(val
*))(var21
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var21
) /* is_ok on <var21:Iterator[nullable Object]>*/;
819 var23
= ((val
* (*)(val
*))(var21
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var21
) /* item on <var21:Iterator[nullable Object]>*/;
820 var_mproperty
= var23
;
821 /* <var_mproperty:MProperty> isa MVirtualTypeProp */
822 cltype
= type_model__MVirtualTypeProp
.color
;
823 idtype
= type_model__MVirtualTypeProp
.id
;
824 if(cltype
>= var_mproperty
->type
->table_size
) {
827 var24
= var_mproperty
->type
->type_table
[cltype
] == idtype
;
831 goto CONTINUE_label26
;
834 var27
= ((val
* (*)(val
*))(var_layout
->class->vft
[COLOR_layout_builders__Layout__pos
]))(var_layout
) /* pos on <var_layout:Layout[MProperty]>*/;
835 var28
= ((val
* (*)(val
*, val
*))(var27
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var27
, var_mproperty
) /* [] on <var27:Map[Object, Int](Map[MProperty, Int])>*/;
836 var29
= ((struct instance_kernel__Int
*)var28
)->value
; /* autounbox from nullable Object to Int */;
838 var30
= ((long (*)(val
*))(var_table
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_table
) /* length on <var_table:Array[nullable MPropDef]>*/;
839 { /* Inline kernel#Int#<= (var30,var_color) */
840 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
841 /* <var_color:Int> isa OTHER */
842 var33
= 1; /* easy <var_color:Int> isa OTHER*/
844 var_class_name
= type_kernel__Int
.name
;
845 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name
);
846 fprintf(stderr
, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
849 var36
= var30
<= var_color
;
855 var37
= NEW_range__Range(&type_range__Rangekernel__Int
);
856 var38
= ((long (*)(val
*))(var_table
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_table
) /* length on <var_table:Array[nullable MPropDef]>*/;
857 var39
= BOX_kernel__Int(var38
); /* autobox from Int to Discrete */
858 var40
= BOX_kernel__Int(var_color
); /* autobox from Int to Discrete */
859 ((void (*)(val
*, val
*, val
*))(var37
->class->vft
[COLOR_range__Range__without_last
]))(var37
, var39
, var40
) /* without_last on <var37:Range[Int]>*/;
860 CHECK_NEW_range__Range(var37
);
861 var41
= ((val
* (*)(val
*))(var37
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var37
) /* iterator on <var37:Range[Int]>*/;
863 var42
= ((short int (*)(val
*))(var41
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var41
) /* is_ok on <var41:Iterator[nullable Object]>*/;
865 var43
= ((val
* (*)(val
*))(var41
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var41
) /* item on <var41:Iterator[nullable Object]>*/;
866 var44
= ((struct instance_kernel__Int
*)var43
)->value
; /* autounbox from nullable Object to Int */;
869 ((void (*)(val
*, long, val
*))(var_table
->class->vft
[COLOR_abstract_collection__Sequence___91d_93d_61d
]))(var_table
, var_i
, var45
) /* []= on <var_table:Array[nullable MPropDef]>*/;
870 CONTINUE_label46
: (void)0;
871 ((void (*)(val
*))(var41
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var41
) /* next on <var41:Iterator[nullable Object]>*/;
873 BREAK_label46
: (void)0;
876 var47
= ((val
* (*)(val
*))(var_mproperty
->class->vft
[COLOR_model__MProperty__mpropdefs
]))(var_mproperty
) /* mpropdefs on <var_mproperty:MProperty(MVirtualTypeProp)>*/;
877 var48
= ((val
* (*)(val
*))(var47
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var47
) /* iterator on <var47:Array[MPropDef](Array[MVirtualTypeDef])>*/;
879 var49
= ((short int (*)(val
*))(var48
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var48
) /* is_ok on <var48:Iterator[nullable Object]>*/;
881 var50
= ((val
* (*)(val
*))(var48
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var48
) /* item on <var48:Iterator[nullable Object]>*/;
882 var_mpropdef
= var50
;
883 var51
= ((val
* (*)(val
*))(var_mpropdef
->class->vft
[COLOR_model__MPropDef__mclassdef
]))(var_mpropdef
) /* mclassdef on <var_mpropdef:MVirtualTypeDef>*/;
884 var52
= ((val
* (*)(val
*))(var51
->class->vft
[COLOR_model__MClassDef__mclass
]))(var51
) /* mclass on <var51:MClassDef>*/;
885 var53
= ((short int (*)(val
*, val
*))(var52
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var52
, var_parent
) /* == on <var52:MClass>*/;
887 ((void (*)(val
*, long, val
*))(var_table
->class->vft
[COLOR_abstract_collection__Sequence___91d_93d_61d
]))(var_table
, var_color
, var_mpropdef
) /* []= on <var_table:Array[nullable MPropDef]>*/;
890 CONTINUE_label54
: (void)0;
891 ((void (*)(val
*))(var48
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var48
) /* next on <var48:Iterator[nullable Object]>*/;
893 BREAK_label54
: (void)0;
894 CONTINUE_label26
: (void)0;
895 ((void (*)(val
*))(var21
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var21
) /* next on <var21:Iterator[nullable Object]>*/;
897 BREAK_label26
: (void)0;
898 CONTINUE_label
: (void)0;
899 ((void (*)(val
*))(var15
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var15
) /* next on <var15:Iterator[nullable Object]>*/;
901 BREAK_label
: (void)0;
902 var55
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__mainmodule
]))(self
) /* mainmodule on <self:SeparateErasureCompiler>*/;
903 var56
= ((val
* (*)(val
*, val
*))(var55
->class->vft
[COLOR_abstract_compiler__MModule__properties
]))(var55
, var_mclass
) /* properties on <var55:MModule>*/;
904 var57
= ((val
* (*)(val
*))(var56
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var56
) /* iterator on <var56:Set[MProperty]>*/;
906 var58
= ((short int (*)(val
*))(var57
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var57
) /* is_ok on <var57:Iterator[nullable Object]>*/;
908 var59
= ((val
* (*)(val
*))(var57
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var57
) /* item on <var57:Iterator[nullable Object]>*/;
909 var_mproperty60
= var59
;
910 /* <var_mproperty60:MProperty> isa MVirtualTypeProp */
911 cltype62
= type_model__MVirtualTypeProp
.color
;
912 idtype63
= type_model__MVirtualTypeProp
.id
;
913 if(cltype62
>= var_mproperty60
->type
->table_size
) {
916 var61
= var_mproperty60
->type
->type_table
[cltype62
] == idtype63
;
920 goto CONTINUE_label65
;
923 var66
= ((val
* (*)(val
*))(var_layout
->class->vft
[COLOR_layout_builders__Layout__pos
]))(var_layout
) /* pos on <var_layout:Layout[MProperty]>*/;
924 var67
= ((val
* (*)(val
*, val
*))(var66
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var66
, var_mproperty60
) /* [] on <var66:Map[Object, Int](Map[MProperty, Int])>*/;
925 var68
= ((struct instance_kernel__Int
*)var67
)->value
; /* autounbox from nullable Object to Int */;
927 var70
= ((long (*)(val
*))(var_table
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_table
) /* length on <var_table:Array[nullable MPropDef]>*/;
928 { /* Inline kernel#Int#<= (var70,var_color69) */
929 /* Covariant cast for argument 0 (i) <var_color69:Int> isa OTHER */
930 /* <var_color69:Int> isa OTHER */
931 var73
= 1; /* easy <var_color69:Int> isa OTHER*/
933 var_class_name76
= type_kernel__Int
.name
;
934 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name76
);
935 fprintf(stderr
, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
938 var77
= var70
<= var_color69
;
944 var78
= NEW_range__Range(&type_range__Rangekernel__Int
);
945 var79
= ((long (*)(val
*))(var_table
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_table
) /* length on <var_table:Array[nullable MPropDef]>*/;
946 var80
= BOX_kernel__Int(var79
); /* autobox from Int to Discrete */
947 var81
= BOX_kernel__Int(var_color69
); /* autobox from Int to Discrete */
948 ((void (*)(val
*, val
*, val
*))(var78
->class->vft
[COLOR_range__Range__without_last
]))(var78
, var80
, var81
) /* without_last on <var78:Range[Int]>*/;
949 CHECK_NEW_range__Range(var78
);
950 var82
= ((val
* (*)(val
*))(var78
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var78
) /* iterator on <var78:Range[Int]>*/;
952 var83
= ((short int (*)(val
*))(var82
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var82
) /* is_ok on <var82:Iterator[nullable Object]>*/;
954 var84
= ((val
* (*)(val
*))(var82
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var82
) /* item on <var82:Iterator[nullable Object]>*/;
955 var86
= ((struct instance_kernel__Int
*)var84
)->value
; /* autounbox from nullable Object to Int */;
958 ((void (*)(val
*, long, val
*))(var_table
->class->vft
[COLOR_abstract_collection__Sequence___91d_93d_61d
]))(var_table
, var_i85
, var87
) /* []= on <var_table:Array[nullable MPropDef]>*/;
959 CONTINUE_label88
: (void)0;
960 ((void (*)(val
*))(var82
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var82
) /* next on <var82:Iterator[nullable Object]>*/;
962 BREAK_label88
: (void)0;
965 var89
= ((val
* (*)(val
*))(var_mproperty60
->class->vft
[COLOR_model__MProperty__mpropdefs
]))(var_mproperty60
) /* mpropdefs on <var_mproperty60:MProperty(MVirtualTypeProp)>*/;
966 var90
= ((val
* (*)(val
*))(var89
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var89
) /* iterator on <var89:Array[MPropDef](Array[MVirtualTypeDef])>*/;
968 var91
= ((short int (*)(val
*))(var90
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var90
) /* is_ok on <var90:Iterator[nullable Object]>*/;
970 var92
= ((val
* (*)(val
*))(var90
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var90
) /* item on <var90:Iterator[nullable Object]>*/;
971 var_mpropdef93
= var92
;
972 var94
= ((val
* (*)(val
*))(var_mpropdef93
->class->vft
[COLOR_model__MPropDef__mclassdef
]))(var_mpropdef93
) /* mclassdef on <var_mpropdef93:MVirtualTypeDef>*/;
973 var95
= ((val
* (*)(val
*))(var94
->class->vft
[COLOR_model__MClassDef__mclass
]))(var94
) /* mclass on <var94:MClassDef>*/;
974 var96
= ((short int (*)(val
*, val
*))(var95
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var95
, var_mclass
) /* == on <var95:MClass>*/;
976 ((void (*)(val
*, long, val
*))(var_table
->class->vft
[COLOR_abstract_collection__Sequence___91d_93d_61d
]))(var_table
, var_color69
, var_mpropdef93
) /* []= on <var_table:Array[nullable MPropDef]>*/;
979 CONTINUE_label97
: (void)0;
980 ((void (*)(val
*))(var90
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var90
) /* next on <var90:Iterator[nullable Object]>*/;
982 BREAK_label97
: (void)0;
983 CONTINUE_label65
: (void)0;
984 ((void (*)(val
*))(var57
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var57
) /* next on <var57:Iterator[nullable Object]>*/;
986 BREAK_label65
: (void)0;
987 ((void (*)(val
*, val
*, val
*))(var_tables
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_tables
, var_mclass
, var_table
) /* []= on <var_tables:HashMap[MClass, Array[nullable MPropDef]]>*/;
988 CONTINUE_label98
: (void)0;
989 ((void (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var2
) /* next on <var2:Iterator[nullable Object]>*/;
991 BREAK_label98
: (void)0;
997 /* method separate_erasure_compiler#SeparateErasureCompiler#build_vt_tables for (self: Object, Set[MClass], Layout[MProperty]): Map[MClass, Array[nullable MPropDef]] */
998 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(val
* self
, val
* p0
, val
* p1
) {
999 val
* var
/* : Map[MClass, Array[nullable MPropDef]] */;
1000 val
* var1
/* : Map[MClass, Array[nullable MPropDef]] */;
1001 var1
= separate_erasure_compiler__SeparateErasureCompiler__build_vt_tables(self
, p0
, p1
);
1006 /* method separate_erasure_compiler#SeparateErasureCompiler#build_class_typing_tables for (self: SeparateErasureCompiler, Set[MClass]): Map[MClass, Array[nullable MClass]] */
1007 val
* separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(val
* self
, val
* p0
) {
1008 val
* var
/* : Map[MClass, Array[nullable MClass]] */;
1009 val
* var_mclasses
/* var mclasses: Set[MClass] */;
1010 val
* var1
/* : HashMap[MClass, Array[nullable MClass]] */;
1011 val
* var_tables
/* var tables: HashMap[MClass, Array[nullable MClass]] */;
1012 val
* var2
/* : nullable Layout[MClass] */;
1013 val
* var_layout
/* var layout: nullable Layout[MClass] */;
1014 val
* var3
/* : Iterator[nullable Object] */;
1015 short int var4
/* : Bool */;
1016 val
* var5
/* : nullable Object */;
1017 val
* var_mclass
/* var mclass: MClass */;
1018 val
* var6
/* : Array[nullable MClass] */;
1019 val
* var_table
/* var table: Array[nullable MClass] */;
1020 val
* var7
/* : Array[MClass] */;
1021 val
* var_supers
/* var supers: Array[MClass] */;
1022 val
* var8
/* : MModule */;
1023 val
* var9
/* : POSet[MClass] */;
1024 short int var10
/* : Bool */;
1025 val
* var11
/* : MModule */;
1026 val
* var12
/* : POSetElement[MClass] */;
1027 val
* var13
/* : Collection[Object] */;
1028 val
* var14
/* : Array[nullable Object] */;
1029 val
* var15
/* : Iterator[nullable Object] */;
1030 short int var16
/* : Bool */;
1031 val
* var17
/* : nullable Object */;
1032 val
* var_sup
/* var sup: MClass */;
1033 short int var18
/* : Bool */;
1036 val
* var19
/* : Map[Object, Map[Object, Int]] */;
1037 val
* var20
/* : nullable Object */;
1038 val
* var21
/* : nullable Object */;
1039 long var22
/* : Int */;
1040 long var_color
/* var color: Int */;
1041 val
* var23
/* : Map[Object, Int] */;
1042 val
* var24
/* : nullable Object */;
1043 long var25
/* : Int */;
1044 long var26
/* : Int */;
1045 short int var27
/* : Bool */;
1046 short int var29
/* : Bool */;
1049 const char* var_class_name
;
1050 short int var32
/* : Bool */;
1051 val
* var33
/* : Range[Int] */;
1052 long var34
/* : Int */;
1053 val
* var35
/* : Discrete */;
1054 val
* var36
/* : Discrete */;
1055 val
* var37
/* : Iterator[nullable Object] */;
1056 short int var38
/* : Bool */;
1057 val
* var39
/* : nullable Object */;
1058 long var_i
/* var i: Int */;
1059 long var40
/* : Int */;
1060 val
* var41
/* : null */;
1062 var1
= NEW_hash_collection__HashMap(&type_hash_collection__HashMapmodel__MClassarray__Arraynullable_model__MClass
);
1063 ((void (*)(val
*))(var1
->class->vft
[COLOR_hash_collection__HashMap__init
]))(var1
) /* init on <var1:HashMap[MClass, Array[nullable MClass]]>*/;
1064 CHECK_NEW_hash_collection__HashMap(var1
);
1066 var2
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__class_layout
]))(self
) /* class_layout on <self:SeparateErasureCompiler>*/;
1068 var3
= ((val
* (*)(val
*))(var_mclasses
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_mclasses
) /* iterator on <var_mclasses:Set[MClass]>*/;
1070 var4
= ((short int (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var3
) /* is_ok on <var3:Iterator[nullable Object]>*/;
1072 var5
= ((val
* (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var3
) /* item on <var3:Iterator[nullable Object]>*/;
1074 var6
= NEW_array__Array(&type_array__Arraynullable_model__MClass
);
1075 ((void (*)(val
*))(var6
->class->vft
[COLOR_array__Array__init
]))(var6
) /* init on <var6:Array[nullable MClass]>*/;
1076 CHECK_NEW_array__Array(var6
);
1078 var7
= NEW_array__Array(&type_array__Arraymodel__MClass
);
1079 ((void (*)(val
*))(var7
->class->vft
[COLOR_array__Array__init
]))(var7
) /* init on <var7:Array[MClass]>*/;
1080 CHECK_NEW_array__Array(var7
);
1082 var8
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__mainmodule
]))(self
) /* mainmodule on <self:SeparateErasureCompiler>*/;
1083 var9
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_model__MModule__flatten_mclass_hierarchy
]))(var8
) /* flatten_mclass_hierarchy on <var8:MModule>*/;
1084 var10
= ((short int (*)(val
*, val
*))(var9
->class->vft
[COLOR_abstract_collection__Collection__has
]))(var9
, var_mclass
) /* has on <var9:POSet[MClass]>*/;
1086 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__mainmodule
]))(self
) /* mainmodule on <self:SeparateErasureCompiler>*/;
1087 var12
= ((val
* (*)(val
*, val
*))(var_mclass
->class->vft
[COLOR_model__MClass__in_hierarchy
]))(var_mclass
, var11
) /* in_hierarchy on <var_mclass:MClass>*/;
1088 var13
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_poset__POSetElement__greaters
]))(var12
) /* greaters on <var12:POSetElement[MClass]>*/;
1089 var14
= ((val
* (*)(val
*))(var13
->class->vft
[COLOR_array__Collection__to_a
]))(var13
) /* to_a on <var13:Collection[Object](Collection[MClass])>*/;
1093 var15
= ((val
* (*)(val
*))(var_supers
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_supers
) /* iterator on <var_supers:Array[MClass]>*/;
1095 var16
= ((short int (*)(val
*))(var15
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var15
) /* is_ok on <var15:Iterator[nullable Object]>*/;
1097 var17
= ((val
* (*)(val
*))(var15
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var15
) /* item on <var15:Iterator[nullable Object]>*/;
1099 /* <var_layout:nullable Layout[MClass]> isa PHLayout[MClass, MClass] */
1100 cltype
= type_layout_builders__PHLayoutmodel__MClassmodel__MClass
.color
;
1101 idtype
= type_layout_builders__PHLayoutmodel__MClassmodel__MClass
.id
;
1102 if(var_layout
== NULL
) {
1105 if(cltype
>= var_layout
->type
->table_size
) {
1108 var18
= var_layout
->type
->type_table
[cltype
] == idtype
;
1112 var19
= ((val
* (*)(val
*))(var_layout
->class->vft
[COLOR_layout_builders__PHLayout__hashes
]))(var_layout
) /* hashes on <var_layout:nullable Layout[MClass](PHLayout[MClass, MClass])>*/;
1113 var20
= ((val
* (*)(val
*, val
*))(var19
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var19
, var_mclass
) /* [] on <var19:Map[Object, Map[Object, Int]](Map[MClass, Map[MClass, Int]])>*/;
1114 var21
= ((val
* (*)(val
*, val
*))(var20
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var20
, var_sup
) /* [] on <var20:nullable Object(Map[MClass, Int])>*/;
1115 var22
= ((struct instance_kernel__Int
*)var21
)->value
; /* autounbox from nullable Object to Int */;
1118 if (var_layout
== NULL
) {
1119 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
1120 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 182);
1123 var23
= ((val
* (*)(val
*))(var_layout
->class->vft
[COLOR_layout_builders__Layout__pos
]))(var_layout
) /* pos on <var_layout:nullable Layout[MClass]>*/;
1125 var24
= ((val
* (*)(val
*, val
*))(var23
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var23
, var_sup
) /* [] on <var23:Map[Object, Int](Map[MClass, Int])>*/;
1126 var25
= ((struct instance_kernel__Int
*)var24
)->value
; /* autounbox from nullable Object to Int */;
1129 var26
= ((long (*)(val
*))(var_table
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_table
) /* length on <var_table:Array[nullable MClass]>*/;
1130 { /* Inline kernel#Int#<= (var26,var_color) */
1131 /* Covariant cast for argument 0 (i) <var_color:Int> isa OTHER */
1132 /* <var_color:Int> isa OTHER */
1133 var29
= 1; /* easy <var_color:Int> isa OTHER*/
1135 var_class_name
= type_kernel__Int
.name
;
1136 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name
);
1137 fprintf(stderr
, " (%s:%d)\n", "lib/standard/kernel.nit", 260);
1140 var32
= var26
<= var_color
;
1143 RET_LABEL28
:(void)0;
1146 var33
= NEW_range__Range(&type_range__Rangekernel__Int
);
1147 var34
= ((long (*)(val
*))(var_table
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_table
) /* length on <var_table:Array[nullable MClass]>*/;
1148 var35
= BOX_kernel__Int(var34
); /* autobox from Int to Discrete */
1149 var36
= BOX_kernel__Int(var_color
); /* autobox from Int to Discrete */
1150 ((void (*)(val
*, val
*, val
*))(var33
->class->vft
[COLOR_range__Range__without_last
]))(var33
, var35
, var36
) /* without_last on <var33:Range[Int]>*/;
1151 CHECK_NEW_range__Range(var33
);
1152 var37
= ((val
* (*)(val
*))(var33
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var33
) /* iterator on <var33:Range[Int]>*/;
1154 var38
= ((short int (*)(val
*))(var37
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var37
) /* is_ok on <var37:Iterator[nullable Object]>*/;
1156 var39
= ((val
* (*)(val
*))(var37
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var37
) /* item on <var37:Iterator[nullable Object]>*/;
1157 var40
= ((struct instance_kernel__Int
*)var39
)->value
; /* autounbox from nullable Object to Int */;
1160 ((void (*)(val
*, long, val
*))(var_table
->class->vft
[COLOR_abstract_collection__Sequence___91d_93d_61d
]))(var_table
, var_i
, var41
) /* []= on <var_table:Array[nullable MClass]>*/;
1161 CONTINUE_label
: (void)0;
1162 ((void (*)(val
*))(var37
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var37
) /* next on <var37:Iterator[nullable Object]>*/;
1164 BREAK_label
: (void)0;
1167 ((void (*)(val
*, long, val
*))(var_table
->class->vft
[COLOR_abstract_collection__Sequence___91d_93d_61d
]))(var_table
, var_color
, var_sup
) /* []= on <var_table:Array[nullable MClass]>*/;
1168 CONTINUE_label42
: (void)0;
1169 ((void (*)(val
*))(var15
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var15
) /* next on <var15:Iterator[nullable Object]>*/;
1171 BREAK_label42
: (void)0;
1172 ((void (*)(val
*, val
*, val
*))(var_tables
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_tables
, var_mclass
, var_table
) /* []= on <var_tables:HashMap[MClass, Array[nullable MClass]]>*/;
1173 CONTINUE_label43
: (void)0;
1174 ((void (*)(val
*))(var3
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var3
) /* next on <var3:Iterator[nullable Object]>*/;
1176 BREAK_label43
: (void)0;
1182 /* method separate_erasure_compiler#SeparateErasureCompiler#build_class_typing_tables for (self: Object, Set[MClass]): Map[MClass, Array[nullable MClass]] */
1183 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(val
* self
, val
* p0
) {
1184 val
* var
/* : Map[MClass, Array[nullable MClass]] */;
1185 val
* var1
/* : Map[MClass, Array[nullable MClass]] */;
1186 var1
= separate_erasure_compiler__SeparateErasureCompiler__build_class_typing_tables(self
, p0
);
1191 /* method separate_erasure_compiler#SeparateErasureCompiler#compile_header_structs for (self: SeparateErasureCompiler) */
1192 void separate_erasure_compiler__SeparateErasureCompiler__compile_header_structs(val
* self
) {
1193 val
* var
/* : CodeWriter */;
1194 static val
* varonce
;
1195 val
* var1
/* : String */;
1196 char* var2
/* : NativeString */;
1197 long var3
/* : Int */;
1198 val
* var4
/* : String */;
1199 val
* var5
/* : CodeWriter */;
1200 static val
* varonce6
;
1201 val
* var7
/* : String */;
1202 char* var8
/* : NativeString */;
1203 long var9
/* : Int */;
1204 val
* var10
/* : String */;
1205 val
* var11
/* : CodeWriter */;
1206 static val
* varonce12
;
1207 val
* var13
/* : String */;
1208 char* var14
/* : NativeString */;
1209 long var15
/* : Int */;
1210 val
* var16
/* : String */;
1211 val
* var17
/* : CodeWriter */;
1212 static val
* varonce18
;
1213 val
* var19
/* : String */;
1214 char* var20
/* : NativeString */;
1215 long var21
/* : Int */;
1216 val
* var22
/* : String */;
1217 val
* var23
/* : nullable Layout[MVirtualTypeProp] */;
1218 short int var24
/* : Bool */;
1221 val
* var25
/* : CodeWriter */;
1222 static val
* varonce26
;
1223 val
* var27
/* : String */;
1224 char* var28
/* : NativeString */;
1225 long var29
/* : Int */;
1226 val
* var30
/* : String */;
1227 val
* var31
/* : CodeWriter */;
1228 static val
* varonce32
;
1229 val
* var33
/* : String */;
1230 char* var34
/* : NativeString */;
1231 long var35
/* : Int */;
1232 val
* var36
/* : String */;
1233 val
* var37
/* : ModelBuilder */;
1234 val
* var38
/* : ToolContext */;
1235 val
* var39
/* : OptionBool */;
1236 val
* var40
/* : nullable Object */;
1237 short int var41
/* : Bool */;
1238 val
* var42
/* : CodeWriter */;
1239 static val
* varonce43
;
1240 val
* var44
/* : String */;
1241 char* var45
/* : NativeString */;
1242 long var46
/* : Int */;
1243 val
* var47
/* : String */;
1244 val
* var48
/* : ModelBuilder */;
1245 val
* var49
/* : ToolContext */;
1246 val
* var50
/* : OptionBool */;
1247 val
* var51
/* : nullable Object */;
1248 short int var52
/* : Bool */;
1249 val
* var53
/* : CodeWriter */;
1250 static val
* varonce54
;
1251 val
* var55
/* : String */;
1252 char* var56
/* : NativeString */;
1253 long var57
/* : Int */;
1254 val
* var58
/* : String */;
1255 val
* var59
/* : CodeWriter */;
1256 static val
* varonce60
;
1257 val
* var61
/* : String */;
1258 char* var62
/* : NativeString */;
1259 long var63
/* : Int */;
1260 val
* var64
/* : String */;
1261 var
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
1265 var2
= "typedef void(*nitmethod_t)(void); /* general C type representing a Nit method. */";
1267 var4
= string__NativeString__to_s_with_length(var2
, var3
);
1271 ((void (*)(val
*, val
*))(var
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var
, var1
) /* add_decl on <var:CodeWriter>*/;
1272 ((void (*)(val
*))(self
->class->vft
[COLOR_separate_compiler__SeparateCompiler__compile_header_attribute_structs
]))(self
) /* compile_header_attribute_structs on <self:SeparateErasureCompiler>*/;
1273 var5
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
1277 var8
= "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. */";
1279 var10
= string__NativeString__to_s_with_length(var8
, var9
);
1283 ((void (*)(val
*, val
*))(var5
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var5
, var7
) /* add_decl on <var5:CodeWriter>*/;
1284 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
1288 var14
= "struct type_table { int size; int table[]; }; /* colorized type table. */";
1290 var16
= string__NativeString__to_s_with_length(var14
, var15
);
1294 ((void (*)(val
*, val
*))(var11
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var11
, var13
) /* add_decl on <var11:CodeWriter>*/;
1295 var17
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
1299 var20
= "struct vts_entry { short int is_nullable; const struct class *class; }; /* link (nullable or not) between the vts and is bound. */";
1301 var22
= string__NativeString__to_s_with_length(var20
, var21
);
1305 ((void (*)(val
*, val
*))(var17
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var17
, var19
) /* add_decl on <var17:CodeWriter>*/;
1306 var23
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__vt_layout
]))(self
) /* vt_layout on <self:SeparateErasureCompiler>*/;
1307 /* <var23:nullable Layout[MVirtualTypeProp]> isa PHLayout[MClass, MVirtualTypeProp] */
1308 cltype
= type_layout_builders__PHLayoutmodel__MClassmodel__MVirtualTypeProp
.color
;
1309 idtype
= type_layout_builders__PHLayoutmodel__MClassmodel__MVirtualTypeProp
.id
;
1313 if(cltype
>= var23
->type
->table_size
) {
1316 var24
= var23
->type
->type_table
[cltype
] == idtype
;
1320 var25
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
1324 var28
= "struct vts_table { int mask; const struct vts_entry vts[]; }; /* vts list of a C type representation. */";
1326 var30
= string__NativeString__to_s_with_length(var28
, var29
);
1330 ((void (*)(val
*, val
*))(var25
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var25
, var27
) /* add_decl on <var25:CodeWriter>*/;
1332 var31
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
1336 var34
= "struct vts_table { int dummy; const struct vts_entry vts[]; }; /* vts list of a C type representation. */";
1338 var36
= string__NativeString__to_s_with_length(var34
, var35
);
1342 ((void (*)(val
*, val
*))(var31
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var31
, var33
) /* add_decl on <var31:CodeWriter>*/;
1344 var37
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__modelbuilder
]))(self
) /* modelbuilder on <self:SeparateErasureCompiler>*/;
1345 var38
= ((val
* (*)(val
*))(var37
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(var37
) /* toolcontext on <var37:ModelBuilder>*/;
1346 var39
= ((val
* (*)(val
*))(var38
->class->vft
[COLOR_separate_compiler__ToolContext__opt_phmod_typing
]))(var38
) /* opt_phmod_typing on <var38:ToolContext>*/;
1347 var40
= ((val
* (*)(val
*))(var39
->class->vft
[COLOR_opts__Option__value
]))(var39
) /* value on <var39:OptionBool>*/;
1348 var41
= ((struct instance_kernel__Bool
*)var40
)->value
; /* autounbox from nullable Object to Bool */;
1350 var42
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
1354 var45
= "#define HASH(mask, id) ((mask)%(id))";
1356 var47
= string__NativeString__to_s_with_length(var45
, var46
);
1360 ((void (*)(val
*, val
*))(var42
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var42
, var44
) /* add_decl on <var42:CodeWriter>*/;
1362 var48
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__modelbuilder
]))(self
) /* modelbuilder on <self:SeparateErasureCompiler>*/;
1363 var49
= ((val
* (*)(val
*))(var48
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(var48
) /* toolcontext on <var48:ModelBuilder>*/;
1364 var50
= ((val
* (*)(val
*))(var49
->class->vft
[COLOR_separate_compiler__ToolContext__opt_phand_typing
]))(var49
) /* opt_phand_typing on <var49:ToolContext>*/;
1365 var51
= ((val
* (*)(val
*))(var50
->class->vft
[COLOR_opts__Option__value
]))(var50
) /* value on <var50:OptionBool>*/;
1366 var52
= ((struct instance_kernel__Bool
*)var51
)->value
; /* autounbox from nullable Object to Bool */;
1368 var53
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
1372 var56
= "#define HASH(mask, id) ((mask)&(id))";
1374 var58
= string__NativeString__to_s_with_length(var56
, var57
);
1378 ((void (*)(val
*, val
*))(var53
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var53
, var55
) /* add_decl on <var53:CodeWriter>*/;
1382 var59
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
1386 var62
= "typedef struct instance { const struct class *class; nitattribute_t attrs[1]; } val; /* general C type representing a Nit instance. */";
1388 var64
= string__NativeString__to_s_with_length(var62
, var63
);
1392 ((void (*)(val
*, val
*))(var59
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var59
, var61
) /* add_decl on <var59:CodeWriter>*/;
1395 /* method separate_erasure_compiler#SeparateErasureCompiler#compile_header_structs for (self: Object) */
1396 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__compile_header_structs(val
* self
) {
1397 separate_erasure_compiler__SeparateErasureCompiler__compile_header_structs(self
);
1400 /* method separate_erasure_compiler#SeparateErasureCompiler#compile_class_to_c for (self: SeparateErasureCompiler, MClass) */
1401 void separate_erasure_compiler__SeparateErasureCompiler__compile_class_to_c(val
* self
, val
* p0
) {
1402 val
* var_mclass
/* var mclass: MClass */;
1403 val
* var
/* : MClassDef */;
1404 val
* var1
/* : MClassType */;
1405 val
* var_mtype
/* var mtype: MClassType */;
1406 val
* var2
/* : String */;
1407 val
* var_c_name
/* var c_name: String */;
1408 val
* var3
/* : Map[MClass, Array[nullable MPropDef]] */;
1409 val
* var4
/* : nullable Object */;
1410 val
* var_vft
/* var vft: Array[nullable MPropDef] */;
1411 val
* var5
/* : Map[MClass, Array[nullable MPropDef]] */;
1412 val
* var6
/* : nullable Object */;
1413 val
* var_attrs
/* var attrs: Array[nullable MPropDef] */;
1414 val
* var7
/* : Map[MClass, Array[nullable MClass]] */;
1415 val
* var8
/* : nullable Object */;
1416 val
* var_class_table
/* var class_table: Array[nullable MClass] */;
1417 val
* var9
/* : AbstractCompilerVisitor */;
1418 val
* var_v
/* var v: SeparateCompilerVisitor */;
1419 static val
* varonce
;
1420 val
* var10
/* : String */;
1421 char* var11
/* : NativeString */;
1422 long var12
/* : Int */;
1423 val
* var13
/* : String */;
1424 static val
* varonce14
;
1425 val
* var15
/* : String */;
1426 char* var16
/* : NativeString */;
1427 long var17
/* : Int */;
1428 val
* var18
/* : String */;
1429 val
* var19
/* : Array[Object] */;
1430 long var20
/* : Int */;
1431 val
* var21
/* : NativeArray[Object] */;
1432 val
* var22
/* : String */;
1433 static val
* varonce23
;
1434 val
* var24
/* : String */;
1435 char* var25
/* : NativeString */;
1436 long var26
/* : Int */;
1437 val
* var27
/* : String */;
1438 val
* var28
/* : Array[Object] */;
1439 long var29
/* : Int */;
1440 val
* var30
/* : NativeArray[Object] */;
1441 val
* var31
/* : String */;
1442 static val
* varonce32
;
1443 val
* var33
/* : String */;
1444 char* var34
/* : NativeString */;
1445 long var35
/* : Int */;
1446 val
* var36
/* : String */;
1447 static val
* varonce37
;
1448 val
* var38
/* : String */;
1449 char* var39
/* : NativeString */;
1450 long var40
/* : Int */;
1451 val
* var41
/* : String */;
1452 val
* var42
/* : Array[Object] */;
1453 long var43
/* : Int */;
1454 val
* var44
/* : NativeArray[Object] */;
1455 val
* var45
/* : String */;
1456 static val
* varonce46
;
1457 val
* var47
/* : String */;
1458 char* var48
/* : NativeString */;
1459 long var49
/* : Int */;
1460 val
* var50
/* : String */;
1461 static val
* varonce51
;
1462 val
* var52
/* : String */;
1463 char* var53
/* : NativeString */;
1464 long var54
/* : Int */;
1465 val
* var55
/* : String */;
1466 val
* var56
/* : Array[Object] */;
1467 long var57
/* : Int */;
1468 val
* var58
/* : NativeArray[Object] */;
1469 val
* var59
/* : String */;
1470 static val
* varonce60
;
1471 val
* var61
/* : String */;
1472 char* var62
/* : NativeString */;
1473 long var63
/* : Int */;
1474 val
* var64
/* : String */;
1475 static val
* varonce65
;
1476 val
* var66
/* : String */;
1477 char* var67
/* : NativeString */;
1478 long var68
/* : Int */;
1479 val
* var69
/* : String */;
1480 val
* var70
/* : Array[Object] */;
1481 long var71
/* : Int */;
1482 val
* var72
/* : NativeArray[Object] */;
1483 val
* var73
/* : String */;
1484 val
* var74
/* : nullable Layout[MClass] */;
1485 val
* var75
/* : Map[Object, Int] */;
1486 val
* var76
/* : nullable Object */;
1487 static val
* varonce77
;
1488 val
* var78
/* : String */;
1489 char* var79
/* : NativeString */;
1490 long var80
/* : Int */;
1491 val
* var81
/* : String */;
1492 val
* var82
/* : Array[Object] */;
1493 long var83
/* : Int */;
1494 val
* var84
/* : NativeArray[Object] */;
1495 val
* var85
/* : String */;
1496 static val
* varonce86
;
1497 val
* var87
/* : String */;
1498 char* var88
/* : NativeString */;
1499 long var89
/* : Int */;
1500 val
* var90
/* : String */;
1501 val
* var91
/* : String */;
1502 static val
* varonce92
;
1503 val
* var93
/* : String */;
1504 char* var94
/* : NativeString */;
1505 long var95
/* : Int */;
1506 val
* var96
/* : String */;
1507 val
* var97
/* : Array[Object] */;
1508 long var98
/* : Int */;
1509 val
* var99
/* : NativeArray[Object] */;
1510 val
* var100
/* : String */;
1511 long var101
/* : Int */;
1512 static val
* varonce102
;
1513 val
* var103
/* : String */;
1514 char* var104
/* : NativeString */;
1515 long var105
/* : Int */;
1516 val
* var106
/* : String */;
1517 val
* var107
/* : Array[Object] */;
1518 long var108
/* : Int */;
1519 val
* var109
/* : NativeArray[Object] */;
1520 val
* var110
/* : Object */;
1521 val
* var111
/* : String */;
1522 val
* var112
/* : nullable Layout[MClass] */;
1523 val
* var_layout
/* var layout: nullable Layout[MClass] */;
1524 short int var113
/* : Bool */;
1527 val
* var114
/* : Map[Object, Int] */;
1528 val
* var115
/* : nullable Object */;
1529 static val
* varonce116
;
1530 val
* var117
/* : String */;
1531 char* var118
/* : NativeString */;
1532 long var119
/* : Int */;
1533 val
* var120
/* : String */;
1534 val
* var121
/* : Array[Object] */;
1535 long var122
/* : Int */;
1536 val
* var123
/* : NativeArray[Object] */;
1537 val
* var124
/* : String */;
1538 val
* var125
/* : Map[Object, Int] */;
1539 val
* var126
/* : nullable Object */;
1540 static val
* varonce127
;
1541 val
* var128
/* : String */;
1542 char* var129
/* : NativeString */;
1543 long var130
/* : Int */;
1544 val
* var131
/* : String */;
1545 val
* var132
/* : Array[Object] */;
1546 long var133
/* : Int */;
1547 val
* var134
/* : NativeArray[Object] */;
1548 val
* var135
/* : String */;
1549 short int var136
/* : Bool */;
1550 static val
* varonce137
;
1551 val
* var138
/* : String */;
1552 char* var139
/* : NativeString */;
1553 long var140
/* : Int */;
1554 val
* var141
/* : String */;
1555 val
* var142
/* : Array[Object] */;
1556 long var143
/* : Int */;
1557 val
* var144
/* : NativeArray[Object] */;
1558 val
* var145
/* : String */;
1559 static val
* varonce146
;
1560 val
* var147
/* : String */;
1561 char* var148
/* : NativeString */;
1562 long var149
/* : Int */;
1563 val
* var150
/* : String */;
1564 static val
* varonce151
;
1565 val
* var152
/* : String */;
1566 char* var153
/* : NativeString */;
1567 long var154
/* : Int */;
1568 val
* var155
/* : String */;
1569 val
* var156
/* : Array[Object] */;
1570 long var157
/* : Int */;
1571 val
* var158
/* : NativeArray[Object] */;
1572 val
* var159
/* : String */;
1573 static val
* varonce160
;
1574 val
* var161
/* : String */;
1575 char* var162
/* : NativeString */;
1576 long var163
/* : Int */;
1577 val
* var164
/* : String */;
1578 static val
* varonce165
;
1579 val
* var166
/* : String */;
1580 char* var167
/* : NativeString */;
1581 long var168
/* : Int */;
1582 val
* var169
/* : String */;
1583 static val
* varonce170
;
1584 val
* var171
/* : String */;
1585 char* var172
/* : NativeString */;
1586 long var173
/* : Int */;
1587 val
* var174
/* : String */;
1588 val
* var175
/* : Array[Object] */;
1589 long var176
/* : Int */;
1590 val
* var177
/* : NativeArray[Object] */;
1591 val
* var178
/* : String */;
1592 static val
* varonce179
;
1593 val
* var180
/* : String */;
1594 char* var181
/* : NativeString */;
1595 long var182
/* : Int */;
1596 val
* var183
/* : String */;
1597 val
* var184
/* : Range[Int] */;
1598 long var185
/* : Int */;
1599 long var186
/* : Int */;
1600 val
* var187
/* : Discrete */;
1601 val
* var188
/* : Discrete */;
1602 val
* var189
/* : Iterator[nullable Object] */;
1603 short int var190
/* : Bool */;
1604 val
* var191
/* : nullable Object */;
1605 long var_i
/* var i: Int */;
1606 long var192
/* : Int */;
1607 val
* var193
/* : nullable Object */;
1608 val
* var_mpropdef
/* var mpropdef: nullable MPropDef */;
1609 val
* var194
/* : null */;
1610 short int var195
/* : Bool */;
1611 static val
* varonce196
;
1612 val
* var197
/* : String */;
1613 char* var198
/* : NativeString */;
1614 long var199
/* : Int */;
1615 val
* var200
/* : String */;
1616 short int var201
/* : Bool */;
1617 short int var202
/* : Bool */;
1618 short int var_
/* var : Bool */;
1619 val
* var203
/* : MClassDef */;
1620 val
* var204
/* : MClassType */;
1621 val
* var205
/* : String */;
1622 static val
* varonce206
;
1623 val
* var207
/* : String */;
1624 char* var208
/* : NativeString */;
1625 long var209
/* : Int */;
1626 val
* var210
/* : String */;
1627 short int var211
/* : Bool */;
1628 static val
* varonce212
;
1629 val
* var213
/* : String */;
1630 char* var214
/* : NativeString */;
1631 long var215
/* : Int */;
1632 val
* var216
/* : String */;
1633 val
* var217
/* : String */;
1634 val
* var218
/* : Array[Object] */;
1635 long var219
/* : Int */;
1636 val
* var220
/* : NativeArray[Object] */;
1637 val
* var221
/* : String */;
1638 static val
* varonce222
;
1639 val
* var223
/* : String */;
1640 char* var224
/* : NativeString */;
1641 long var225
/* : Int */;
1642 val
* var226
/* : String */;
1643 val
* var227
/* : String */;
1644 static val
* varonce228
;
1645 val
* var229
/* : String */;
1646 char* var230
/* : NativeString */;
1647 long var231
/* : Int */;
1648 val
* var232
/* : String */;
1649 val
* var233
/* : MModule */;
1650 static val
* varonce234
;
1651 val
* var235
/* : String */;
1652 char* var236
/* : NativeString */;
1653 long var237
/* : Int */;
1654 val
* var238
/* : String */;
1655 static val
* varonce239
;
1656 val
* var240
/* : String */;
1657 char* var241
/* : NativeString */;
1658 long var242
/* : Int */;
1659 val
* var243
/* : String */;
1660 static val
* varonce244
;
1661 val
* var245
/* : String */;
1662 char* var246
/* : NativeString */;
1663 long var247
/* : Int */;
1664 val
* var248
/* : String */;
1665 val
* var249
/* : Array[Object] */;
1666 long var250
/* : Int */;
1667 val
* var251
/* : NativeArray[Object] */;
1668 val
* var252
/* : String */;
1669 val
* var253
/* : String */;
1670 val
* var254
/* : Array[Object] */;
1671 long var255
/* : Int */;
1672 val
* var256
/* : NativeArray[Object] */;
1673 val
* var257
/* : String */;
1674 static val
* varonce258
;
1675 val
* var259
/* : String */;
1676 char* var260
/* : NativeString */;
1677 long var261
/* : Int */;
1678 val
* var262
/* : String */;
1679 val
* var263
/* : String */;
1680 static val
* varonce264
;
1681 val
* var265
/* : String */;
1682 char* var266
/* : NativeString */;
1683 long var267
/* : Int */;
1684 val
* var268
/* : String */;
1685 val
* var269
/* : MModule */;
1686 static val
* varonce270
;
1687 val
* var271
/* : String */;
1688 char* var272
/* : NativeString */;
1689 long var273
/* : Int */;
1690 val
* var274
/* : String */;
1691 static val
* varonce275
;
1692 val
* var276
/* : String */;
1693 char* var277
/* : NativeString */;
1694 long var278
/* : Int */;
1695 val
* var279
/* : String */;
1696 static val
* varonce280
;
1697 val
* var281
/* : String */;
1698 char* var282
/* : NativeString */;
1699 long var283
/* : Int */;
1700 val
* var284
/* : String */;
1701 val
* var285
/* : Array[Object] */;
1702 long var286
/* : Int */;
1703 val
* var287
/* : NativeArray[Object] */;
1704 val
* var288
/* : String */;
1705 static val
* varonce289
;
1706 val
* var290
/* : String */;
1707 char* var291
/* : NativeString */;
1708 long var292
/* : Int */;
1709 val
* var293
/* : String */;
1710 static val
* varonce294
;
1711 val
* var295
/* : String */;
1712 char* var296
/* : NativeString */;
1713 long var297
/* : Int */;
1714 val
* var298
/* : String */;
1715 static val
* varonce299
;
1716 val
* var300
/* : String */;
1717 char* var301
/* : NativeString */;
1718 long var302
/* : Int */;
1719 val
* var303
/* : String */;
1720 static val
* varonce304
;
1721 val
* var305
/* : String */;
1722 char* var306
/* : NativeString */;
1723 long var307
/* : Int */;
1724 val
* var308
/* : String */;
1725 val
* var309
/* : Array[Object] */;
1726 long var310
/* : Int */;
1727 val
* var311
/* : NativeArray[Object] */;
1728 val
* var312
/* : String */;
1729 long var313
/* : Int */;
1730 static val
* varonce314
;
1731 val
* var315
/* : String */;
1732 char* var316
/* : NativeString */;
1733 long var317
/* : Int */;
1734 val
* var318
/* : String */;
1735 val
* var319
/* : Array[Object] */;
1736 long var320
/* : Int */;
1737 val
* var321
/* : NativeArray[Object] */;
1738 val
* var322
/* : Object */;
1739 val
* var323
/* : String */;
1740 static val
* varonce324
;
1741 val
* var325
/* : String */;
1742 char* var326
/* : NativeString */;
1743 long var327
/* : Int */;
1744 val
* var328
/* : String */;
1745 val
* var329
/* : Iterator[nullable Object] */;
1746 short int var330
/* : Bool */;
1747 val
* var331
/* : nullable Object */;
1748 val
* var_msuper
/* var msuper: nullable MClass */;
1749 val
* var332
/* : null */;
1750 short int var333
/* : Bool */;
1751 static val
* varonce334
;
1752 val
* var335
/* : String */;
1753 char* var336
/* : NativeString */;
1754 long var337
/* : Int */;
1755 val
* var338
/* : String */;
1756 val
* var339
/* : nullable Layout[MClass] */;
1757 val
* var340
/* : Map[Object, Int] */;
1758 val
* var341
/* : nullable Object */;
1759 static val
* varonce342
;
1760 val
* var343
/* : String */;
1761 char* var344
/* : NativeString */;
1762 long var345
/* : Int */;
1763 val
* var346
/* : String */;
1764 static val
* varonce347
;
1765 val
* var348
/* : String */;
1766 char* var349
/* : NativeString */;
1767 long var350
/* : Int */;
1768 val
* var351
/* : String */;
1769 val
* var352
/* : Array[Object] */;
1770 long var353
/* : Int */;
1771 val
* var354
/* : NativeArray[Object] */;
1772 val
* var355
/* : String */;
1773 static val
* varonce357
;
1774 val
* var358
/* : String */;
1775 char* var359
/* : NativeString */;
1776 long var360
/* : Int */;
1777 val
* var361
/* : String */;
1778 static val
* varonce362
;
1779 val
* var363
/* : String */;
1780 char* var364
/* : NativeString */;
1781 long var365
/* : Int */;
1782 val
* var366
/* : String */;
1783 val
* var367
/* : String */;
1784 static val
* varonce368
;
1785 val
* var369
/* : String */;
1786 char* var370
/* : NativeString */;
1787 long var371
/* : Int */;
1788 val
* var372
/* : String */;
1789 short int var373
/* : Bool */;
1790 val
* var374
/* : CodeWriter */;
1791 static val
* varonce375
;
1792 val
* var376
/* : String */;
1793 char* var377
/* : NativeString */;
1794 long var378
/* : Int */;
1795 val
* var379
/* : String */;
1796 static val
* varonce380
;
1797 val
* var381
/* : String */;
1798 char* var382
/* : NativeString */;
1799 long var383
/* : Int */;
1800 val
* var384
/* : String */;
1801 val
* var385
/* : Array[Object] */;
1802 long var386
/* : Int */;
1803 val
* var387
/* : NativeArray[Object] */;
1804 val
* var388
/* : String */;
1805 val
* var389
/* : CodeWriter */;
1806 static val
* varonce390
;
1807 val
* var391
/* : String */;
1808 char* var392
/* : NativeString */;
1809 long var393
/* : Int */;
1810 val
* var394
/* : String */;
1811 val
* var395
/* : CodeWriter */;
1812 val
* var396
/* : String */;
1813 static val
* varonce397
;
1814 val
* var398
/* : String */;
1815 char* var399
/* : NativeString */;
1816 long var400
/* : Int */;
1817 val
* var401
/* : String */;
1818 val
* var402
/* : Array[Object] */;
1819 long var403
/* : Int */;
1820 val
* var404
/* : NativeArray[Object] */;
1821 val
* var405
/* : String */;
1822 val
* var406
/* : CodeWriter */;
1823 static val
* varonce407
;
1824 val
* var408
/* : String */;
1825 char* var409
/* : NativeString */;
1826 long var410
/* : Int */;
1827 val
* var411
/* : String */;
1828 val
* var412
/* : CodeWriter */;
1829 static val
* varonce413
;
1830 val
* var414
/* : String */;
1831 char* var415
/* : NativeString */;
1832 long var416
/* : Int */;
1833 val
* var417
/* : String */;
1834 static val
* varonce418
;
1835 val
* var419
/* : String */;
1836 char* var420
/* : NativeString */;
1837 long var421
/* : Int */;
1838 val
* var422
/* : String */;
1839 val
* var423
/* : String */;
1840 static val
* varonce424
;
1841 val
* var425
/* : String */;
1842 char* var426
/* : NativeString */;
1843 long var427
/* : Int */;
1844 val
* var428
/* : String */;
1845 val
* var429
/* : Array[Object] */;
1846 long var430
/* : Int */;
1847 val
* var431
/* : NativeArray[Object] */;
1848 val
* var432
/* : String */;
1849 static val
* varonce433
;
1850 val
* var434
/* : String */;
1851 char* var435
/* : NativeString */;
1852 long var436
/* : Int */;
1853 val
* var437
/* : String */;
1854 static val
* varonce438
;
1855 val
* var439
/* : String */;
1856 char* var440
/* : NativeString */;
1857 long var441
/* : Int */;
1858 val
* var442
/* : String */;
1859 val
* var443
/* : Array[Object] */;
1860 long var444
/* : Int */;
1861 val
* var445
/* : NativeArray[Object] */;
1862 val
* var446
/* : String */;
1863 static val
* varonce447
;
1864 val
* var448
/* : String */;
1865 char* var449
/* : NativeString */;
1866 long var450
/* : Int */;
1867 val
* var451
/* : String */;
1868 val
* var452
/* : String */;
1869 static val
* varonce453
;
1870 val
* var454
/* : String */;
1871 char* var455
/* : NativeString */;
1872 long var456
/* : Int */;
1873 val
* var457
/* : String */;
1874 val
* var458
/* : String */;
1875 static val
* varonce459
;
1876 val
* var460
/* : String */;
1877 char* var461
/* : NativeString */;
1878 long var462
/* : Int */;
1879 val
* var463
/* : String */;
1880 val
* var464
/* : Array[Object] */;
1881 long var465
/* : Int */;
1882 val
* var466
/* : NativeArray[Object] */;
1883 val
* var467
/* : String */;
1884 static val
* varonce468
;
1885 val
* var469
/* : String */;
1886 char* var470
/* : NativeString */;
1887 long var471
/* : Int */;
1888 val
* var472
/* : String */;
1889 static val
* varonce473
;
1890 val
* var474
/* : String */;
1891 char* var475
/* : NativeString */;
1892 long var476
/* : Int */;
1893 val
* var477
/* : String */;
1894 static val
* varonce478
;
1895 val
* var479
/* : String */;
1896 char* var480
/* : NativeString */;
1897 long var481
/* : Int */;
1898 val
* var482
/* : String */;
1899 val
* var483
/* : Array[Object] */;
1900 long var484
/* : Int */;
1901 val
* var485
/* : NativeArray[Object] */;
1902 val
* var486
/* : String */;
1903 static val
* varonce487
;
1904 val
* var488
/* : String */;
1905 char* var489
/* : NativeString */;
1906 long var490
/* : Int */;
1907 val
* var491
/* : String */;
1908 val
* var492
/* : Array[Object] */;
1909 long var493
/* : Int */;
1910 val
* var494
/* : NativeArray[Object] */;
1911 val
* var495
/* : String */;
1912 static val
* varonce496
;
1913 val
* var497
/* : String */;
1914 char* var498
/* : NativeString */;
1915 long var499
/* : Int */;
1916 val
* var500
/* : String */;
1917 static val
* varonce501
;
1918 val
* var502
/* : String */;
1919 char* var503
/* : NativeString */;
1920 long var504
/* : Int */;
1921 val
* var505
/* : String */;
1922 val
* var506
/* : Array[Object] */;
1923 long var507
/* : Int */;
1924 val
* var508
/* : NativeArray[Object] */;
1925 val
* var509
/* : String */;
1926 static val
* varonce510
;
1927 val
* var511
/* : String */;
1928 char* var512
/* : NativeString */;
1929 long var513
/* : Int */;
1930 val
* var514
/* : String */;
1931 static val
* varonce515
;
1932 val
* var516
/* : String */;
1933 char* var517
/* : NativeString */;
1934 long var518
/* : Int */;
1935 val
* var519
/* : String */;
1936 static val
* varonce520
;
1937 val
* var521
/* : String */;
1938 char* var522
/* : NativeString */;
1939 long var523
/* : Int */;
1940 val
* var524
/* : String */;
1941 val
* var525
/* : String */;
1942 static val
* varonce526
;
1943 val
* var527
/* : String */;
1944 char* var528
/* : NativeString */;
1945 long var529
/* : Int */;
1946 val
* var530
/* : String */;
1947 short int var531
/* : Bool */;
1948 val
* var532
/* : CodeWriter */;
1949 static val
* varonce533
;
1950 val
* var534
/* : String */;
1951 char* var535
/* : NativeString */;
1952 long var536
/* : Int */;
1953 val
* var537
/* : String */;
1954 static val
* varonce538
;
1955 val
* var539
/* : String */;
1956 char* var540
/* : NativeString */;
1957 long var541
/* : Int */;
1958 val
* var542
/* : String */;
1959 val
* var543
/* : Array[Object] */;
1960 long var544
/* : Int */;
1961 val
* var545
/* : NativeArray[Object] */;
1962 val
* var546
/* : String */;
1963 val
* var547
/* : CodeWriter */;
1964 static val
* varonce548
;
1965 val
* var549
/* : String */;
1966 char* var550
/* : NativeString */;
1967 long var551
/* : Int */;
1968 val
* var552
/* : String */;
1969 val
* var553
/* : CodeWriter */;
1970 static val
* varonce554
;
1971 val
* var555
/* : String */;
1972 char* var556
/* : NativeString */;
1973 long var557
/* : Int */;
1974 val
* var558
/* : String */;
1975 val
* var559
/* : CodeWriter */;
1976 static val
* varonce560
;
1977 val
* var561
/* : String */;
1978 char* var562
/* : NativeString */;
1979 long var563
/* : Int */;
1980 val
* var564
/* : String */;
1981 static val
* varonce565
;
1982 val
* var566
/* : String */;
1983 char* var567
/* : NativeString */;
1984 long var568
/* : Int */;
1985 val
* var569
/* : String */;
1986 val
* var570
/* : Array[Object] */;
1987 long var571
/* : Int */;
1988 val
* var572
/* : NativeArray[Object] */;
1989 val
* var573
/* : String */;
1990 val
* var574
/* : String */;
1991 static val
* varonce575
;
1992 val
* var576
/* : String */;
1993 char* var577
/* : NativeString */;
1994 long var578
/* : Int */;
1995 val
* var579
/* : String */;
1996 static val
* varonce580
;
1997 val
* var581
/* : String */;
1998 char* var582
/* : NativeString */;
1999 long var583
/* : Int */;
2000 val
* var584
/* : String */;
2001 val
* var585
/* : Array[Object] */;
2002 long var586
/* : Int */;
2003 val
* var587
/* : NativeArray[Object] */;
2004 val
* var588
/* : String */;
2005 static val
* varonce589
;
2006 val
* var590
/* : String */;
2007 char* var591
/* : NativeString */;
2008 long var592
/* : Int */;
2009 val
* var593
/* : String */;
2010 static val
* varonce594
;
2011 val
* var595
/* : String */;
2012 char* var596
/* : NativeString */;
2013 long var597
/* : Int */;
2014 val
* var598
/* : String */;
2015 val
* var599
/* : Array[Object] */;
2016 long var600
/* : Int */;
2017 val
* var601
/* : NativeArray[Object] */;
2018 val
* var602
/* : String */;
2019 val
* var603
/* : String */;
2020 static val
* varonce604
;
2021 val
* var605
/* : String */;
2022 char* var606
/* : NativeString */;
2023 long var607
/* : Int */;
2024 val
* var608
/* : String */;
2025 static val
* varonce609
;
2026 val
* var610
/* : String */;
2027 char* var611
/* : NativeString */;
2028 long var612
/* : Int */;
2029 val
* var613
/* : String */;
2030 val
* var614
/* : Array[Object] */;
2031 long var615
/* : Int */;
2032 val
* var616
/* : NativeArray[Object] */;
2033 val
* var617
/* : String */;
2034 static val
* varonce618
;
2035 val
* var619
/* : String */;
2036 char* var620
/* : NativeString */;
2037 long var621
/* : Int */;
2038 val
* var622
/* : String */;
2039 val
* var623
/* : RuntimeVariable */;
2040 val
* var_res
/* var res: RuntimeVariable */;
2041 short int var624
/* : Bool */;
2042 val
* var625
/* : Array[MType] */;
2043 val
* var626
/* : nullable Object */;
2044 val
* var_mtype_elt
/* var mtype_elt: MType */;
2045 static val
* varonce627
;
2046 val
* var628
/* : String */;
2047 char* var629
/* : NativeString */;
2048 long var630
/* : Int */;
2049 val
* var631
/* : String */;
2050 static val
* varonce632
;
2051 val
* var633
/* : String */;
2052 char* var634
/* : NativeString */;
2053 long var635
/* : Int */;
2054 val
* var636
/* : String */;
2055 val
* var637
/* : String */;
2056 static val
* varonce638
;
2057 val
* var639
/* : String */;
2058 char* var640
/* : NativeString */;
2059 long var641
/* : Int */;
2060 val
* var642
/* : String */;
2061 val
* var643
/* : Array[Object] */;
2062 long var644
/* : Int */;
2063 val
* var645
/* : NativeArray[Object] */;
2064 val
* var646
/* : String */;
2065 static val
* varonce647
;
2066 val
* var648
/* : String */;
2067 char* var649
/* : NativeString */;
2068 long var650
/* : Int */;
2069 val
* var651
/* : String */;
2070 val
* var652
/* : Array[Object] */;
2071 long var653
/* : Int */;
2072 val
* var654
/* : NativeArray[Object] */;
2073 val
* var655
/* : String */;
2074 static val
* varonce656
;
2075 val
* var657
/* : String */;
2076 char* var658
/* : NativeString */;
2077 long var659
/* : Int */;
2078 val
* var660
/* : String */;
2079 static val
* varonce661
;
2080 val
* var662
/* : String */;
2081 char* var663
/* : NativeString */;
2082 long var664
/* : Int */;
2083 val
* var665
/* : String */;
2084 val
* var666
/* : Array[Object] */;
2085 long var667
/* : Int */;
2086 val
* var668
/* : NativeArray[Object] */;
2087 val
* var669
/* : String */;
2088 static val
* varonce670
;
2089 val
* var671
/* : String */;
2090 char* var672
/* : NativeString */;
2091 long var673
/* : Int */;
2092 val
* var674
/* : String */;
2093 static val
* varonce675
;
2094 val
* var676
/* : String */;
2095 char* var677
/* : NativeString */;
2096 long var678
/* : Int */;
2097 val
* var679
/* : String */;
2098 val
* var680
/* : Array[Object] */;
2099 long var681
/* : Int */;
2100 val
* var682
/* : NativeArray[Object] */;
2101 val
* var683
/* : String */;
2102 static val
* varonce684
;
2103 val
* var685
/* : String */;
2104 char* var686
/* : NativeString */;
2105 long var687
/* : Int */;
2106 val
* var688
/* : String */;
2107 static val
* varonce689
;
2108 val
* var690
/* : String */;
2109 char* var691
/* : NativeString */;
2110 long var692
/* : Int */;
2111 val
* var693
/* : String */;
2112 val
* var694
/* : Array[Object] */;
2113 long var695
/* : Int */;
2114 val
* var696
/* : NativeArray[Object] */;
2115 val
* var697
/* : String */;
2116 val
* var698
/* : String */;
2117 static val
* varonce699
;
2118 val
* var700
/* : String */;
2119 char* var701
/* : NativeString */;
2120 long var702
/* : Int */;
2121 val
* var703
/* : String */;
2122 static val
* varonce704
;
2123 val
* var705
/* : String */;
2124 char* var706
/* : NativeString */;
2125 long var707
/* : Int */;
2126 val
* var708
/* : String */;
2127 val
* var709
/* : Array[Object] */;
2128 long var710
/* : Int */;
2129 val
* var711
/* : NativeArray[Object] */;
2130 val
* var712
/* : String */;
2131 static val
* varonce713
;
2132 val
* var714
/* : String */;
2133 char* var715
/* : NativeString */;
2134 long var716
/* : Int */;
2135 val
* var717
/* : String */;
2136 static val
* varonce718
;
2137 val
* var719
/* : String */;
2138 char* var720
/* : NativeString */;
2139 long var721
/* : Int */;
2140 val
* var722
/* : String */;
2141 val
* var723
/* : Array[Object] */;
2142 long var724
/* : Int */;
2143 val
* var725
/* : NativeArray[Object] */;
2144 val
* var726
/* : String */;
2145 val
* var727
/* : String */;
2146 static val
* varonce728
;
2147 val
* var729
/* : String */;
2148 char* var730
/* : NativeString */;
2149 long var731
/* : Int */;
2150 val
* var732
/* : String */;
2151 static val
* varonce733
;
2152 val
* var734
/* : String */;
2153 char* var735
/* : NativeString */;
2154 long var736
/* : Int */;
2155 val
* var737
/* : String */;
2156 val
* var738
/* : Array[Object] */;
2157 long var739
/* : Int */;
2158 val
* var740
/* : NativeArray[Object] */;
2159 val
* var741
/* : String */;
2160 static val
* varonce742
;
2161 val
* var743
/* : String */;
2162 char* var744
/* : NativeString */;
2163 long var745
/* : Int */;
2164 val
* var746
/* : String */;
2165 val
* var747
/* : RuntimeVariable */;
2166 val
* var_res748
/* var res: RuntimeVariable */;
2167 short int var749
/* : Bool */;
2168 static val
* varonce750
;
2169 val
* var751
/* : String */;
2170 char* var752
/* : NativeString */;
2171 long var753
/* : Int */;
2172 val
* var754
/* : String */;
2173 long var755
/* : Int */;
2174 static val
* varonce756
;
2175 val
* var757
/* : String */;
2176 char* var758
/* : NativeString */;
2177 long var759
/* : Int */;
2178 val
* var760
/* : String */;
2179 val
* var761
/* : Array[Object] */;
2180 long var762
/* : Int */;
2181 val
* var763
/* : NativeArray[Object] */;
2182 val
* var764
/* : Object */;
2183 val
* var765
/* : String */;
2184 static val
* varonce766
;
2185 val
* var767
/* : String */;
2186 char* var768
/* : NativeString */;
2187 long var769
/* : Int */;
2188 val
* var770
/* : String */;
2189 val
* var771
/* : Array[Object] */;
2190 long var772
/* : Int */;
2191 val
* var773
/* : NativeArray[Object] */;
2192 val
* var774
/* : String */;
2193 static val
* varonce775
;
2194 val
* var776
/* : String */;
2195 char* var777
/* : NativeString */;
2196 long var778
/* : Int */;
2197 val
* var779
/* : String */;
2198 static val
* varonce780
;
2199 val
* var781
/* : String */;
2200 char* var782
/* : NativeString */;
2201 long var783
/* : Int */;
2202 val
* var784
/* : String */;
2203 val
* var785
/* : Array[Object] */;
2204 long var786
/* : Int */;
2205 val
* var787
/* : NativeArray[Object] */;
2206 val
* var788
/* : String */;
2207 static val
* varonce789
;
2208 val
* var790
/* : String */;
2209 char* var791
/* : NativeString */;
2210 long var792
/* : Int */;
2211 val
* var793
/* : String */;
2212 static val
* varonce794
;
2213 val
* var795
/* : String */;
2214 char* var796
/* : NativeString */;
2215 long var797
/* : Int */;
2216 val
* var798
/* : String */;
2217 val
* var799
/* : Array[Object] */;
2218 long var800
/* : Int */;
2219 val
* var801
/* : NativeArray[Object] */;
2220 val
* var802
/* : String */;
2221 static val
* varonce803
;
2222 val
* var804
/* : String */;
2223 char* var805
/* : NativeString */;
2224 long var806
/* : Int */;
2225 val
* var807
/* : String */;
2227 var
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_model__MClass__intro
]))(var_mclass
) /* intro on <var_mclass:MClass>*/;
2228 var1
= ((val
* (*)(val
*))(var
->class->vft
[COLOR_model__MClassDef__bound_mtype
]))(var
) /* bound_mtype on <var:MClassDef>*/;
2230 var2
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_mclass
) /* c_name on <var_mclass:MClass>*/;
2232 var3
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_compiler__SeparateCompiler__method_tables
]))(self
) /* method_tables on <self:SeparateErasureCompiler>*/;
2233 var4
= ((val
* (*)(val
*, val
*))(var3
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var3
, var_mclass
) /* [] on <var3:Map[MClass, Array[nullable MPropDef]]>*/;
2235 var5
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_compiler__SeparateCompiler__attr_tables
]))(self
) /* attr_tables on <self:SeparateErasureCompiler>*/;
2236 var6
= ((val
* (*)(val
*, val
*))(var5
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var5
, var_mclass
) /* [] on <var5:Map[MClass, Array[nullable MPropDef]]>*/;
2238 var7
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__class_tables
]))(self
) /* class_tables on <self:SeparateErasureCompiler>*/;
2239 var8
= ((val
* (*)(val
*, val
*))(var7
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var7
, var_mclass
) /* [] on <var7:Map[MClass, Array[nullable MClass]]>*/;
2240 var_class_table
= var8
;
2241 var9
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__new_visitor
]))(self
) /* new_visitor on <self:SeparateErasureCompiler>*/;
2246 var11
= "/* runtime class ";
2248 var13
= string__NativeString__to_s_with_length(var11
, var12
);
2257 var18
= string__NativeString__to_s_with_length(var16
, var17
);
2261 var19
= NEW_array__Array(&type_array__Arraykernel__Object
);
2262 { /* var19 = array_instance Array[Object] */
2264 var21
= NEW_array__NativeArray(var20
, &type_array__NativeArraykernel__Object
);
2265 ((struct instance_array__NativeArray
*)var21
)->values
[0] = (val
*) var10
;
2266 ((struct instance_array__NativeArray
*)var21
)->values
[1] = (val
*) var_c_name
;
2267 ((struct instance_array__NativeArray
*)var21
)->values
[2] = (val
*) var15
;
2268 ((void (*)(val
*, val
*, long))(var19
->class->vft
[COLOR_array__Array__with_native
]))(var19
, var21
, var20
) /* with_native on <var19:Array[Object]>*/;
2269 CHECK_NEW_array__Array(var19
);
2271 var22
= ((val
* (*)(val
*))(var19
->class->vft
[COLOR_string__Object__to_s
]))(var19
) /* to_s on <var19:Array[Object]>*/;
2272 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var22
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2278 var27
= string__NativeString__to_s_with_length(var25
, var26
);
2282 var28
= NEW_array__Array(&type_array__Arraykernel__Object
);
2283 { /* var28 = array_instance Array[Object] */
2285 var30
= NEW_array__NativeArray(var29
, &type_array__NativeArraykernel__Object
);
2286 ((struct instance_array__NativeArray
*)var30
)->values
[0] = (val
*) var24
;
2287 ((struct instance_array__NativeArray
*)var30
)->values
[1] = (val
*) var_c_name
;
2288 ((void (*)(val
*, val
*, long))(var28
->class->vft
[COLOR_array__Array__with_native
]))(var28
, var30
, var29
) /* with_native on <var28:Array[Object]>*/;
2289 CHECK_NEW_array__Array(var28
);
2291 var31
= ((val
* (*)(val
*))(var28
->class->vft
[COLOR_string__Object__to_s
]))(var28
) /* to_s on <var28:Array[Object]>*/;
2295 var34
= "extern const struct class class_";
2297 var36
= string__NativeString__to_s_with_length(var34
, var35
);
2306 var41
= string__NativeString__to_s_with_length(var39
, var40
);
2310 var42
= NEW_array__Array(&type_array__Arraykernel__Object
);
2311 { /* var42 = array_instance Array[Object] */
2313 var44
= NEW_array__NativeArray(var43
, &type_array__NativeArraykernel__Object
);
2314 ((struct instance_array__NativeArray
*)var44
)->values
[0] = (val
*) var33
;
2315 ((struct instance_array__NativeArray
*)var44
)->values
[1] = (val
*) var_c_name
;
2316 ((struct instance_array__NativeArray
*)var44
)->values
[2] = (val
*) var38
;
2317 ((void (*)(val
*, val
*, long))(var42
->class->vft
[COLOR_array__Array__with_native
]))(var42
, var44
, var43
) /* with_native on <var42:Array[Object]>*/;
2318 CHECK_NEW_array__Array(var42
);
2320 var45
= ((val
* (*)(val
*))(var42
->class->vft
[COLOR_string__Object__to_s
]))(var42
) /* to_s on <var42:Array[Object]>*/;
2321 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__provide_declaration
]))(self
, var31
, var45
) /* provide_declaration on <self:SeparateErasureCompiler>*/;
2325 var48
= "extern const struct type_table type_table_";
2327 var50
= string__NativeString__to_s_with_length(var48
, var49
);
2336 var55
= string__NativeString__to_s_with_length(var53
, var54
);
2340 var56
= NEW_array__Array(&type_array__Arraykernel__Object
);
2341 { /* var56 = array_instance Array[Object] */
2343 var58
= NEW_array__NativeArray(var57
, &type_array__NativeArraykernel__Object
);
2344 ((struct instance_array__NativeArray
*)var58
)->values
[0] = (val
*) var47
;
2345 ((struct instance_array__NativeArray
*)var58
)->values
[1] = (val
*) var_c_name
;
2346 ((struct instance_array__NativeArray
*)var58
)->values
[2] = (val
*) var52
;
2347 ((void (*)(val
*, val
*, long))(var56
->class->vft
[COLOR_array__Array__with_native
]))(var56
, var58
, var57
) /* with_native on <var56:Array[Object]>*/;
2348 CHECK_NEW_array__Array(var56
);
2350 var59
= ((val
* (*)(val
*))(var56
->class->vft
[COLOR_string__Object__to_s
]))(var56
) /* to_s on <var56:Array[Object]>*/;
2351 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var59
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2355 var62
= "const struct class class_";
2357 var64
= string__NativeString__to_s_with_length(var62
, var63
);
2366 var69
= string__NativeString__to_s_with_length(var67
, var68
);
2370 var70
= NEW_array__Array(&type_array__Arraykernel__Object
);
2371 { /* var70 = array_instance Array[Object] */
2373 var72
= NEW_array__NativeArray(var71
, &type_array__NativeArraykernel__Object
);
2374 ((struct instance_array__NativeArray
*)var72
)->values
[0] = (val
*) var61
;
2375 ((struct instance_array__NativeArray
*)var72
)->values
[1] = (val
*) var_c_name
;
2376 ((struct instance_array__NativeArray
*)var72
)->values
[2] = (val
*) var66
;
2377 ((void (*)(val
*, val
*, long))(var70
->class->vft
[COLOR_array__Array__with_native
]))(var70
, var72
, var71
) /* with_native on <var70:Array[Object]>*/;
2378 CHECK_NEW_array__Array(var70
);
2380 var73
= ((val
* (*)(val
*))(var70
->class->vft
[COLOR_string__Object__to_s
]))(var70
) /* to_s on <var70:Array[Object]>*/;
2381 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var73
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2382 var74
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__class_layout
]))(self
) /* class_layout on <self:SeparateErasureCompiler>*/;
2383 if (var74
== NULL
) {
2384 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
2385 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 235);
2388 var75
= ((val
* (*)(val
*))(var74
->class->vft
[COLOR_layout_builders__Layout__ids
]))(var74
) /* ids on <var74:nullable Layout[MClass]>*/;
2390 var76
= ((val
* (*)(val
*, val
*))(var75
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var75
, var_mclass
) /* [] on <var75:Map[Object, Int](Map[MClass, Int])>*/;
2396 var81
= string__NativeString__to_s_with_length(var79
, var80
);
2400 var82
= NEW_array__Array(&type_array__Arraykernel__Object
);
2401 { /* var82 = array_instance Array[Object] */
2403 var84
= NEW_array__NativeArray(var83
, &type_array__NativeArraykernel__Object
);
2404 ((struct instance_array__NativeArray
*)var84
)->values
[0] = (val
*) var76
;
2405 ((struct instance_array__NativeArray
*)var84
)->values
[1] = (val
*) var78
;
2406 ((void (*)(val
*, val
*, long))(var82
->class->vft
[COLOR_array__Array__with_native
]))(var82
, var84
, var83
) /* with_native on <var82:Array[Object]>*/;
2407 CHECK_NEW_array__Array(var82
);
2409 var85
= ((val
* (*)(val
*))(var82
->class->vft
[COLOR_string__Object__to_s
]))(var82
) /* to_s on <var82:Array[Object]>*/;
2410 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var85
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2416 var90
= string__NativeString__to_s_with_length(var88
, var89
);
2420 var91
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_model__MClass__name
]))(var_mclass
) /* name on <var_mclass:MClass>*/;
2424 var94
= "\", /* class_name_string */";
2426 var96
= string__NativeString__to_s_with_length(var94
, var95
);
2430 var97
= NEW_array__Array(&type_array__Arraykernel__Object
);
2431 { /* var97 = array_instance Array[Object] */
2433 var99
= NEW_array__NativeArray(var98
, &type_array__NativeArraykernel__Object
);
2434 ((struct instance_array__NativeArray
*)var99
)->values
[0] = (val
*) var87
;
2435 ((struct instance_array__NativeArray
*)var99
)->values
[1] = (val
*) var91
;
2436 ((struct instance_array__NativeArray
*)var99
)->values
[2] = (val
*) var93
;
2437 ((void (*)(val
*, val
*, long))(var97
->class->vft
[COLOR_array__Array__with_native
]))(var97
, var99
, var98
) /* with_native on <var97:Array[Object]>*/;
2438 CHECK_NEW_array__Array(var97
);
2440 var100
= ((val
* (*)(val
*))(var97
->class->vft
[COLOR_string__Object__to_s
]))(var97
) /* to_s on <var97:Array[Object]>*/;
2441 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var100
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2442 var101
= ((long (*)(val
*, val
*))(self
->class->vft
[COLOR_separate_compiler__SeparateCompiler__box_kind_of
]))(self
, var_mclass
) /* box_kind_of on <self:SeparateErasureCompiler>*/;
2444 var103
= varonce102
;
2446 var104
= ", /* box_kind */";
2448 var106
= string__NativeString__to_s_with_length(var104
, var105
);
2450 varonce102
= var103
;
2452 var107
= NEW_array__Array(&type_array__Arraykernel__Object
);
2453 { /* var107 = array_instance Array[Object] */
2455 var109
= NEW_array__NativeArray(var108
, &type_array__NativeArraykernel__Object
);
2456 var110
= BOX_kernel__Int(var101
); /* autobox from Int to Object */
2457 ((struct instance_array__NativeArray
*)var109
)->values
[0] = (val
*) var110
;
2458 ((struct instance_array__NativeArray
*)var109
)->values
[1] = (val
*) var103
;
2459 ((void (*)(val
*, val
*, long))(var107
->class->vft
[COLOR_array__Array__with_native
]))(var107
, var109
, var108
) /* with_native on <var107:Array[Object]>*/;
2460 CHECK_NEW_array__Array(var107
);
2462 var111
= ((val
* (*)(val
*))(var107
->class->vft
[COLOR_string__Object__to_s
]))(var107
) /* to_s on <var107:Array[Object]>*/;
2463 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var111
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2464 var112
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__class_layout
]))(self
) /* class_layout on <self:SeparateErasureCompiler>*/;
2465 var_layout
= var112
;
2466 /* <var_layout:nullable Layout[MClass]> isa PHLayout[MClass, MClass] */
2467 cltype
= type_layout_builders__PHLayoutmodel__MClassmodel__MClass
.color
;
2468 idtype
= type_layout_builders__PHLayoutmodel__MClassmodel__MClass
.id
;
2469 if(var_layout
== NULL
) {
2472 if(cltype
>= var_layout
->type
->table_size
) {
2475 var113
= var_layout
->type
->type_table
[cltype
] == idtype
;
2479 var114
= ((val
* (*)(val
*))(var_layout
->class->vft
[COLOR_layout_builders__PHLayout__masks
]))(var_layout
) /* masks on <var_layout:nullable Layout[MClass](PHLayout[MClass, MClass])>*/;
2480 var115
= ((val
* (*)(val
*, val
*))(var114
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var114
, var_mclass
) /* [] on <var114:Map[Object, Int](Map[MClass, Int])>*/;
2482 var117
= varonce116
;
2486 var120
= string__NativeString__to_s_with_length(var118
, var119
);
2488 varonce116
= var117
;
2490 var121
= NEW_array__Array(&type_array__Arraykernel__Object
);
2491 { /* var121 = array_instance Array[Object] */
2493 var123
= NEW_array__NativeArray(var122
, &type_array__NativeArraykernel__Object
);
2494 ((struct instance_array__NativeArray
*)var123
)->values
[0] = (val
*) var115
;
2495 ((struct instance_array__NativeArray
*)var123
)->values
[1] = (val
*) var117
;
2496 ((void (*)(val
*, val
*, long))(var121
->class->vft
[COLOR_array__Array__with_native
]))(var121
, var123
, var122
) /* with_native on <var121:Array[Object]>*/;
2497 CHECK_NEW_array__Array(var121
);
2499 var124
= ((val
* (*)(val
*))(var121
->class->vft
[COLOR_string__Object__to_s
]))(var121
) /* to_s on <var121:Array[Object]>*/;
2500 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var124
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2502 if (var_layout
== NULL
) {
2503 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
2504 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 242);
2507 var125
= ((val
* (*)(val
*))(var_layout
->class->vft
[COLOR_layout_builders__Layout__pos
]))(var_layout
) /* pos on <var_layout:nullable Layout[MClass]>*/;
2509 var126
= ((val
* (*)(val
*, val
*))(var125
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var125
, var_mclass
) /* [] on <var125:Map[Object, Int](Map[MClass, Int])>*/;
2511 var128
= varonce127
;
2515 var131
= string__NativeString__to_s_with_length(var129
, var130
);
2517 varonce127
= var128
;
2519 var132
= NEW_array__Array(&type_array__Arraykernel__Object
);
2520 { /* var132 = array_instance Array[Object] */
2522 var134
= NEW_array__NativeArray(var133
, &type_array__NativeArraykernel__Object
);
2523 ((struct instance_array__NativeArray
*)var134
)->values
[0] = (val
*) var126
;
2524 ((struct instance_array__NativeArray
*)var134
)->values
[1] = (val
*) var128
;
2525 ((void (*)(val
*, val
*, long))(var132
->class->vft
[COLOR_array__Array__with_native
]))(var132
, var134
, var133
) /* with_native on <var132:Array[Object]>*/;
2526 CHECK_NEW_array__Array(var132
);
2528 var135
= ((val
* (*)(val
*))(var132
->class->vft
[COLOR_string__Object__to_s
]))(var132
) /* to_s on <var132:Array[Object]>*/;
2529 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var135
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2531 var136
= ((short int (*)(val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__build_class_vts_table
]))(self
, var_mclass
) /* build_class_vts_table on <self:SeparateErasureCompiler>*/;
2534 var138
= varonce137
;
2536 var139
= "vts_table_";
2538 var141
= string__NativeString__to_s_with_length(var139
, var140
);
2540 varonce137
= var138
;
2542 var142
= NEW_array__Array(&type_array__Arraykernel__Object
);
2543 { /* var142 = array_instance Array[Object] */
2545 var144
= NEW_array__NativeArray(var143
, &type_array__NativeArraykernel__Object
);
2546 ((struct instance_array__NativeArray
*)var144
)->values
[0] = (val
*) var138
;
2547 ((struct instance_array__NativeArray
*)var144
)->values
[1] = (val
*) var_c_name
;
2548 ((void (*)(val
*, val
*, long))(var142
->class->vft
[COLOR_array__Array__with_native
]))(var142
, var144
, var143
) /* with_native on <var142:Array[Object]>*/;
2549 CHECK_NEW_array__Array(var142
);
2551 var145
= ((val
* (*)(val
*))(var142
->class->vft
[COLOR_string__Object__to_s
]))(var142
) /* to_s on <var142:Array[Object]>*/;
2552 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(var_v
, var145
) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
2554 var147
= varonce146
;
2556 var148
= "&vts_table_";
2558 var150
= string__NativeString__to_s_with_length(var148
, var149
);
2560 varonce146
= var147
;
2563 var152
= varonce151
;
2567 var155
= string__NativeString__to_s_with_length(var153
, var154
);
2569 varonce151
= var152
;
2571 var156
= NEW_array__Array(&type_array__Arraykernel__Object
);
2572 { /* var156 = array_instance Array[Object] */
2574 var158
= NEW_array__NativeArray(var157
, &type_array__NativeArraykernel__Object
);
2575 ((struct instance_array__NativeArray
*)var158
)->values
[0] = (val
*) var147
;
2576 ((struct instance_array__NativeArray
*)var158
)->values
[1] = (val
*) var_c_name
;
2577 ((struct instance_array__NativeArray
*)var158
)->values
[2] = (val
*) var152
;
2578 ((void (*)(val
*, val
*, long))(var156
->class->vft
[COLOR_array__Array__with_native
]))(var156
, var158
, var157
) /* with_native on <var156:Array[Object]>*/;
2579 CHECK_NEW_array__Array(var156
);
2581 var159
= ((val
* (*)(val
*))(var156
->class->vft
[COLOR_string__Object__to_s
]))(var156
) /* to_s on <var156:Array[Object]>*/;
2582 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var159
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2585 var161
= varonce160
;
2589 var164
= string__NativeString__to_s_with_length(var162
, var163
);
2591 varonce160
= var161
;
2593 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var161
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2596 var166
= varonce165
;
2598 var167
= "&type_table_";
2600 var169
= string__NativeString__to_s_with_length(var167
, var168
);
2602 varonce165
= var166
;
2605 var171
= varonce170
;
2609 var174
= string__NativeString__to_s_with_length(var172
, var173
);
2611 varonce170
= var171
;
2613 var175
= NEW_array__Array(&type_array__Arraykernel__Object
);
2614 { /* var175 = array_instance Array[Object] */
2616 var177
= NEW_array__NativeArray(var176
, &type_array__NativeArraykernel__Object
);
2617 ((struct instance_array__NativeArray
*)var177
)->values
[0] = (val
*) var166
;
2618 ((struct instance_array__NativeArray
*)var177
)->values
[1] = (val
*) var_c_name
;
2619 ((struct instance_array__NativeArray
*)var177
)->values
[2] = (val
*) var171
;
2620 ((void (*)(val
*, val
*, long))(var175
->class->vft
[COLOR_array__Array__with_native
]))(var175
, var177
, var176
) /* with_native on <var175:Array[Object]>*/;
2621 CHECK_NEW_array__Array(var175
);
2623 var178
= ((val
* (*)(val
*))(var175
->class->vft
[COLOR_string__Object__to_s
]))(var175
) /* to_s on <var175:Array[Object]>*/;
2624 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var178
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2626 var180
= varonce179
;
2630 var183
= string__NativeString__to_s_with_length(var181
, var182
);
2632 varonce179
= var180
;
2634 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var180
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2635 var184
= NEW_range__Range(&type_range__Rangekernel__Int
);
2637 var186
= ((long (*)(val
*))(var_vft
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_vft
) /* length on <var_vft:Array[nullable MPropDef]>*/;
2638 var187
= BOX_kernel__Int(var185
); /* autobox from Int to Discrete */
2639 var188
= BOX_kernel__Int(var186
); /* autobox from Int to Discrete */
2640 ((void (*)(val
*, val
*, val
*))(var184
->class->vft
[COLOR_range__Range__without_last
]))(var184
, var187
, var188
) /* without_last on <var184:Range[Int]>*/;
2641 CHECK_NEW_range__Range(var184
);
2642 var189
= ((val
* (*)(val
*))(var184
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var184
) /* iterator on <var184:Range[Int]>*/;
2644 var190
= ((short int (*)(val
*))(var189
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var189
) /* is_ok on <var189:Iterator[nullable Object]>*/;
2646 var191
= ((val
* (*)(val
*))(var189
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var189
) /* item on <var189:Iterator[nullable Object]>*/;
2647 var192
= ((struct instance_kernel__Int
*)var191
)->value
; /* autounbox from nullable Object to Int */;
2649 var193
= ((val
* (*)(val
*, long))(var_vft
->class->vft
[COLOR_abstract_collection__SequenceRead___91d_93d
]))(var_vft
, var_i
) /* [] on <var_vft:Array[nullable MPropDef]>*/;
2650 var_mpropdef
= var193
;
2652 if (var_mpropdef
== NULL
) {
2653 var195
= 1; /* is null */
2655 var195
= 0; /* arg is null but recv is not */
2659 var197
= varonce196
;
2661 var198
= "NULL, /* empty */";
2663 var200
= string__NativeString__to_s_with_length(var198
, var199
);
2665 varonce196
= var197
;
2667 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var197
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2674 var203
= ((val
* (*)(val
*))(var_mpropdef
->class->vft
[COLOR_model__MPropDef__mclassdef
]))(var_mpropdef
) /* mclassdef on <var_mpropdef:nullable MPropDef(MPropDef)>*/;
2675 var204
= ((val
* (*)(val
*))(var203
->class->vft
[COLOR_model__MClassDef__bound_mtype
]))(var203
) /* bound_mtype on <var203:MClassDef>*/;
2676 var205
= ((val
* (*)(val
*))(var204
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var204
) /* ctype on <var204:MClassType>*/;
2678 var207
= varonce206
;
2682 var210
= string__NativeString__to_s_with_length(var208
, var209
);
2684 varonce206
= var207
;
2686 var211
= ((short int (*)(val
*, val
*))(var205
->class->vft
[COLOR_kernel__Object___33d_61d
]))(var205
, var207
) /* != on <var205:String>*/;
2691 var213
= varonce212
;
2693 var214
= "VIRTUAL_";
2695 var216
= string__NativeString__to_s_with_length(var214
, var215
);
2697 varonce212
= var213
;
2699 var217
= ((val
* (*)(val
*))(var_mpropdef
->class->vft
[COLOR_abstract_compiler__MPropDef__c_name
]))(var_mpropdef
) /* c_name on <var_mpropdef:nullable MPropDef(MPropDef)>*/;
2700 var218
= NEW_array__Array(&type_array__Arraykernel__Object
);
2701 { /* var218 = array_instance Array[Object] */
2703 var220
= NEW_array__NativeArray(var219
, &type_array__NativeArraykernel__Object
);
2704 ((struct instance_array__NativeArray
*)var220
)->values
[0] = (val
*) var213
;
2705 ((struct instance_array__NativeArray
*)var220
)->values
[1] = (val
*) var217
;
2706 ((void (*)(val
*, val
*, long))(var218
->class->vft
[COLOR_array__Array__with_native
]))(var218
, var220
, var219
) /* with_native on <var218:Array[Object]>*/;
2707 CHECK_NEW_array__Array(var218
);
2709 var221
= ((val
* (*)(val
*))(var218
->class->vft
[COLOR_string__Object__to_s
]))(var218
) /* to_s on <var218:Array[Object]>*/;
2710 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(var_v
, var221
) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
2712 var223
= varonce222
;
2714 var224
= "(nitmethod_t)VIRTUAL_";
2716 var226
= string__NativeString__to_s_with_length(var224
, var225
);
2718 varonce222
= var223
;
2720 var227
= ((val
* (*)(val
*))(var_mpropdef
->class->vft
[COLOR_abstract_compiler__MPropDef__c_name
]))(var_mpropdef
) /* c_name on <var_mpropdef:nullable MPropDef(MPropDef)>*/;
2722 var229
= varonce228
;
2724 var230
= ", /* pointer to ";
2726 var232
= string__NativeString__to_s_with_length(var230
, var231
);
2728 varonce228
= var229
;
2730 var233
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_model__MClass__intro_mmodule
]))(var_mclass
) /* intro_mmodule on <var_mclass:MClass>*/;
2732 var235
= varonce234
;
2736 var238
= string__NativeString__to_s_with_length(var236
, var237
);
2738 varonce234
= var235
;
2741 var240
= varonce239
;
2745 var243
= string__NativeString__to_s_with_length(var241
, var242
);
2747 varonce239
= var240
;
2750 var245
= varonce244
;
2754 var248
= string__NativeString__to_s_with_length(var246
, var247
);
2756 varonce244
= var245
;
2758 var249
= NEW_array__Array(&type_array__Arraykernel__Object
);
2759 { /* var249 = array_instance Array[Object] */
2761 var251
= NEW_array__NativeArray(var250
, &type_array__NativeArraykernel__Object
);
2762 ((struct instance_array__NativeArray
*)var251
)->values
[0] = (val
*) var223
;
2763 ((struct instance_array__NativeArray
*)var251
)->values
[1] = (val
*) var227
;
2764 ((struct instance_array__NativeArray
*)var251
)->values
[2] = (val
*) var229
;
2765 ((struct instance_array__NativeArray
*)var251
)->values
[3] = (val
*) var233
;
2766 ((struct instance_array__NativeArray
*)var251
)->values
[4] = (val
*) var235
;
2767 ((struct instance_array__NativeArray
*)var251
)->values
[5] = (val
*) var_mclass
;
2768 ((struct instance_array__NativeArray
*)var251
)->values
[6] = (val
*) var240
;
2769 ((struct instance_array__NativeArray
*)var251
)->values
[7] = (val
*) var_mpropdef
;
2770 ((struct instance_array__NativeArray
*)var251
)->values
[8] = (val
*) var245
;
2771 ((void (*)(val
*, val
*, long))(var249
->class->vft
[COLOR_array__Array__with_native
]))(var249
, var251
, var250
) /* with_native on <var249:Array[Object]>*/;
2772 CHECK_NEW_array__Array(var249
);
2774 var252
= ((val
* (*)(val
*))(var249
->class->vft
[COLOR_string__Object__to_s
]))(var249
) /* to_s on <var249:Array[Object]>*/;
2775 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var252
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2777 var253
= ((val
* (*)(val
*))(var_mpropdef
->class->vft
[COLOR_abstract_compiler__MPropDef__c_name
]))(var_mpropdef
) /* c_name on <var_mpropdef:nullable MPropDef(MPropDef)>*/;
2778 var254
= NEW_array__Array(&type_array__Arraykernel__Object
);
2779 { /* var254 = array_instance Array[Object] */
2781 var256
= NEW_array__NativeArray(var255
, &type_array__NativeArraykernel__Object
);
2782 ((struct instance_array__NativeArray
*)var256
)->values
[0] = (val
*) var253
;
2783 ((void (*)(val
*, val
*, long))(var254
->class->vft
[COLOR_array__Array__with_native
]))(var254
, var256
, var255
) /* with_native on <var254:Array[Object]>*/;
2784 CHECK_NEW_array__Array(var254
);
2786 var257
= ((val
* (*)(val
*))(var254
->class->vft
[COLOR_string__Object__to_s
]))(var254
) /* to_s on <var254:Array[Object]>*/;
2787 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(var_v
, var257
) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
2789 var259
= varonce258
;
2791 var260
= "(nitmethod_t)";
2793 var262
= string__NativeString__to_s_with_length(var260
, var261
);
2795 varonce258
= var259
;
2797 var263
= ((val
* (*)(val
*))(var_mpropdef
->class->vft
[COLOR_abstract_compiler__MPropDef__c_name
]))(var_mpropdef
) /* c_name on <var_mpropdef:nullable MPropDef(MPropDef)>*/;
2799 var265
= varonce264
;
2801 var266
= ", /* pointer to ";
2803 var268
= string__NativeString__to_s_with_length(var266
, var267
);
2805 varonce264
= var265
;
2807 var269
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_model__MClass__intro_mmodule
]))(var_mclass
) /* intro_mmodule on <var_mclass:MClass>*/;
2809 var271
= varonce270
;
2813 var274
= string__NativeString__to_s_with_length(var272
, var273
);
2815 varonce270
= var271
;
2818 var276
= varonce275
;
2822 var279
= string__NativeString__to_s_with_length(var277
, var278
);
2824 varonce275
= var276
;
2827 var281
= varonce280
;
2831 var284
= string__NativeString__to_s_with_length(var282
, var283
);
2833 varonce280
= var281
;
2835 var285
= NEW_array__Array(&type_array__Arraykernel__Object
);
2836 { /* var285 = array_instance Array[Object] */
2838 var287
= NEW_array__NativeArray(var286
, &type_array__NativeArraykernel__Object
);
2839 ((struct instance_array__NativeArray
*)var287
)->values
[0] = (val
*) var259
;
2840 ((struct instance_array__NativeArray
*)var287
)->values
[1] = (val
*) var263
;
2841 ((struct instance_array__NativeArray
*)var287
)->values
[2] = (val
*) var265
;
2842 ((struct instance_array__NativeArray
*)var287
)->values
[3] = (val
*) var269
;
2843 ((struct instance_array__NativeArray
*)var287
)->values
[4] = (val
*) var271
;
2844 ((struct instance_array__NativeArray
*)var287
)->values
[5] = (val
*) var_mclass
;
2845 ((struct instance_array__NativeArray
*)var287
)->values
[6] = (val
*) var276
;
2846 ((struct instance_array__NativeArray
*)var287
)->values
[7] = (val
*) var_mpropdef
;
2847 ((struct instance_array__NativeArray
*)var287
)->values
[8] = (val
*) var281
;
2848 ((void (*)(val
*, val
*, long))(var285
->class->vft
[COLOR_array__Array__with_native
]))(var285
, var287
, var286
) /* with_native on <var285:Array[Object]>*/;
2849 CHECK_NEW_array__Array(var285
);
2851 var288
= ((val
* (*)(val
*))(var285
->class->vft
[COLOR_string__Object__to_s
]))(var285
) /* to_s on <var285:Array[Object]>*/;
2852 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var288
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2855 CONTINUE_label
: (void)0;
2856 ((void (*)(val
*))(var189
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var189
) /* next on <var189:Iterator[nullable Object]>*/;
2858 BREAK_label
: (void)0;
2860 var290
= varonce289
;
2864 var293
= string__NativeString__to_s_with_length(var291
, var292
);
2866 varonce289
= var290
;
2868 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var290
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2870 var295
= varonce294
;
2874 var298
= string__NativeString__to_s_with_length(var296
, var297
);
2876 varonce294
= var295
;
2878 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var295
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2880 var300
= varonce299
;
2882 var301
= "const struct type_table type_table_";
2884 var303
= string__NativeString__to_s_with_length(var301
, var302
);
2886 varonce299
= var300
;
2889 var305
= varonce304
;
2893 var308
= string__NativeString__to_s_with_length(var306
, var307
);
2895 varonce304
= var305
;
2897 var309
= NEW_array__Array(&type_array__Arraykernel__Object
);
2898 { /* var309 = array_instance Array[Object] */
2900 var311
= NEW_array__NativeArray(var310
, &type_array__NativeArraykernel__Object
);
2901 ((struct instance_array__NativeArray
*)var311
)->values
[0] = (val
*) var300
;
2902 ((struct instance_array__NativeArray
*)var311
)->values
[1] = (val
*) var_c_name
;
2903 ((struct instance_array__NativeArray
*)var311
)->values
[2] = (val
*) var305
;
2904 ((void (*)(val
*, val
*, long))(var309
->class->vft
[COLOR_array__Array__with_native
]))(var309
, var311
, var310
) /* with_native on <var309:Array[Object]>*/;
2905 CHECK_NEW_array__Array(var309
);
2907 var312
= ((val
* (*)(val
*))(var309
->class->vft
[COLOR_string__Object__to_s
]))(var309
) /* to_s on <var309:Array[Object]>*/;
2908 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var312
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2909 var313
= ((long (*)(val
*))(var_class_table
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_class_table
) /* length on <var_class_table:Array[nullable MClass]>*/;
2911 var315
= varonce314
;
2915 var318
= string__NativeString__to_s_with_length(var316
, var317
);
2917 varonce314
= var315
;
2919 var319
= NEW_array__Array(&type_array__Arraykernel__Object
);
2920 { /* var319 = array_instance Array[Object] */
2922 var321
= NEW_array__NativeArray(var320
, &type_array__NativeArraykernel__Object
);
2923 var322
= BOX_kernel__Int(var313
); /* autobox from Int to Object */
2924 ((struct instance_array__NativeArray
*)var321
)->values
[0] = (val
*) var322
;
2925 ((struct instance_array__NativeArray
*)var321
)->values
[1] = (val
*) var315
;
2926 ((void (*)(val
*, val
*, long))(var319
->class->vft
[COLOR_array__Array__with_native
]))(var319
, var321
, var320
) /* with_native on <var319:Array[Object]>*/;
2927 CHECK_NEW_array__Array(var319
);
2929 var323
= ((val
* (*)(val
*))(var319
->class->vft
[COLOR_string__Object__to_s
]))(var319
) /* to_s on <var319:Array[Object]>*/;
2930 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var323
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2932 var325
= varonce324
;
2936 var328
= string__NativeString__to_s_with_length(var326
, var327
);
2938 varonce324
= var325
;
2940 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var325
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2941 var329
= ((val
* (*)(val
*))(var_class_table
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_class_table
) /* iterator on <var_class_table:Array[nullable MClass]>*/;
2943 var330
= ((short int (*)(val
*))(var329
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var329
) /* is_ok on <var329:Iterator[nullable Object]>*/;
2945 var331
= ((val
* (*)(val
*))(var329
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var329
) /* item on <var329:Iterator[nullable Object]>*/;
2946 var_msuper
= var331
;
2948 if (var_msuper
== NULL
) {
2949 var333
= 1; /* is null */
2951 var333
= 0; /* arg is null but recv is not */
2955 var335
= varonce334
;
2957 var336
= "-1, /* empty */";
2959 var338
= string__NativeString__to_s_with_length(var336
, var337
);
2961 varonce334
= var335
;
2963 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var335
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
2965 var339
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__class_layout
]))(self
) /* class_layout on <self:SeparateErasureCompiler>*/;
2966 if (var339
== NULL
) {
2967 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
2968 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 278);
2971 var340
= ((val
* (*)(val
*))(var339
->class->vft
[COLOR_layout_builders__Layout__ids
]))(var339
) /* ids on <var339:nullable Layout[MClass]>*/;
2973 var341
= ((val
* (*)(val
*, val
*))(var340
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var340
, var_msuper
) /* [] on <var340:Map[Object, Int](Map[MClass, Int])>*/;
2975 var343
= varonce342
;
2979 var346
= string__NativeString__to_s_with_length(var344
, var345
);
2981 varonce342
= var343
;
2984 var348
= varonce347
;
2988 var351
= string__NativeString__to_s_with_length(var349
, var350
);
2990 varonce347
= var348
;
2992 var352
= NEW_array__Array(&type_array__Arraykernel__Object
);
2993 { /* var352 = array_instance Array[Object] */
2995 var354
= NEW_array__NativeArray(var353
, &type_array__NativeArraykernel__Object
);
2996 ((struct instance_array__NativeArray
*)var354
)->values
[0] = (val
*) var341
;
2997 ((struct instance_array__NativeArray
*)var354
)->values
[1] = (val
*) var343
;
2998 ((struct instance_array__NativeArray
*)var354
)->values
[2] = (val
*) var_msuper
;
2999 ((struct instance_array__NativeArray
*)var354
)->values
[3] = (val
*) var348
;
3000 ((void (*)(val
*, val
*, long))(var352
->class->vft
[COLOR_array__Array__with_native
]))(var352
, var354
, var353
) /* with_native on <var352:Array[Object]>*/;
3001 CHECK_NEW_array__Array(var352
);
3003 var355
= ((val
* (*)(val
*))(var352
->class->vft
[COLOR_string__Object__to_s
]))(var352
) /* to_s on <var352:Array[Object]>*/;
3004 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var355
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
3006 CONTINUE_label356
: (void)0;
3007 ((void (*)(val
*))(var329
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var329
) /* next on <var329:Iterator[nullable Object]>*/;
3009 BREAK_label356
: (void)0;
3011 var358
= varonce357
;
3015 var361
= string__NativeString__to_s_with_length(var359
, var360
);
3017 varonce357
= var358
;
3019 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var358
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
3021 var363
= varonce362
;
3025 var366
= string__NativeString__to_s_with_length(var364
, var365
);
3027 varonce362
= var363
;
3029 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var363
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
3030 var367
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var_mtype
) /* ctype on <var_mtype:MClassType>*/;
3032 var369
= varonce368
;
3036 var372
= string__NativeString__to_s_with_length(var370
, var371
);
3038 varonce368
= var369
;
3040 var373
= ((short int (*)(val
*, val
*))(var367
->class->vft
[COLOR_kernel__Object___33d_61d
]))(var367
, var369
) /* != on <var367:String>*/;
3042 var374
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
3044 var376
= varonce375
;
3046 var377
= "struct instance_";
3048 var379
= string__NativeString__to_s_with_length(var377
, var378
);
3050 varonce375
= var376
;
3053 var381
= varonce380
;
3057 var384
= string__NativeString__to_s_with_length(var382
, var383
);
3059 varonce380
= var381
;
3061 var385
= NEW_array__Array(&type_array__Arraykernel__Object
);
3062 { /* var385 = array_instance Array[Object] */
3064 var387
= NEW_array__NativeArray(var386
, &type_array__NativeArraykernel__Object
);
3065 ((struct instance_array__NativeArray
*)var387
)->values
[0] = (val
*) var376
;
3066 ((struct instance_array__NativeArray
*)var387
)->values
[1] = (val
*) var_c_name
;
3067 ((struct instance_array__NativeArray
*)var387
)->values
[2] = (val
*) var381
;
3068 ((void (*)(val
*, val
*, long))(var385
->class->vft
[COLOR_array__Array__with_native
]))(var385
, var387
, var386
) /* with_native on <var385:Array[Object]>*/;
3069 CHECK_NEW_array__Array(var385
);
3071 var388
= ((val
* (*)(val
*))(var385
->class->vft
[COLOR_string__Object__to_s
]))(var385
) /* to_s on <var385:Array[Object]>*/;
3072 ((void (*)(val
*, val
*))(var374
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var374
, var388
) /* add_decl on <var374:CodeWriter>*/;
3073 var389
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
3075 var391
= varonce390
;
3077 var392
= "const struct class *class;";
3079 var394
= string__NativeString__to_s_with_length(var392
, var393
);
3081 varonce390
= var391
;
3083 ((void (*)(val
*, val
*))(var389
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var389
, var391
) /* add_decl on <var389:CodeWriter>*/;
3084 var395
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
3085 var396
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var_mtype
) /* ctype on <var_mtype:MClassType>*/;
3087 var398
= varonce397
;
3091 var401
= string__NativeString__to_s_with_length(var399
, var400
);
3093 varonce397
= var398
;
3095 var402
= NEW_array__Array(&type_array__Arraykernel__Object
);
3096 { /* var402 = array_instance Array[Object] */
3098 var404
= NEW_array__NativeArray(var403
, &type_array__NativeArraykernel__Object
);
3099 ((struct instance_array__NativeArray
*)var404
)->values
[0] = (val
*) var396
;
3100 ((struct instance_array__NativeArray
*)var404
)->values
[1] = (val
*) var398
;
3101 ((void (*)(val
*, val
*, long))(var402
->class->vft
[COLOR_array__Array__with_native
]))(var402
, var404
, var403
) /* with_native on <var402:Array[Object]>*/;
3102 CHECK_NEW_array__Array(var402
);
3104 var405
= ((val
* (*)(val
*))(var402
->class->vft
[COLOR_string__Object__to_s
]))(var402
) /* to_s on <var402:Array[Object]>*/;
3105 ((void (*)(val
*, val
*))(var395
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var395
, var405
) /* add_decl on <var395:CodeWriter>*/;
3106 var406
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
3108 var408
= varonce407
;
3112 var411
= string__NativeString__to_s_with_length(var409
, var410
);
3114 varonce407
= var408
;
3116 ((void (*)(val
*, val
*))(var406
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var406
, var408
) /* add_decl on <var406:CodeWriter>*/;
3117 var412
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
3119 var414
= varonce413
;
3121 var415
= "val* BOX_";
3123 var417
= string__NativeString__to_s_with_length(var415
, var416
);
3125 varonce413
= var414
;
3128 var419
= varonce418
;
3132 var422
= string__NativeString__to_s_with_length(var420
, var421
);
3134 varonce418
= var419
;
3136 var423
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var_mtype
) /* ctype on <var_mtype:MClassType>*/;
3138 var425
= varonce424
;
3142 var428
= string__NativeString__to_s_with_length(var426
, var427
);
3144 varonce424
= var425
;
3146 var429
= NEW_array__Array(&type_array__Arraykernel__Object
);
3147 { /* var429 = array_instance Array[Object] */
3149 var431
= NEW_array__NativeArray(var430
, &type_array__NativeArraykernel__Object
);
3150 ((struct instance_array__NativeArray
*)var431
)->values
[0] = (val
*) var414
;
3151 ((struct instance_array__NativeArray
*)var431
)->values
[1] = (val
*) var_c_name
;
3152 ((struct instance_array__NativeArray
*)var431
)->values
[2] = (val
*) var419
;
3153 ((struct instance_array__NativeArray
*)var431
)->values
[3] = (val
*) var423
;
3154 ((struct instance_array__NativeArray
*)var431
)->values
[4] = (val
*) var425
;
3155 ((void (*)(val
*, val
*, long))(var429
->class->vft
[COLOR_array__Array__with_native
]))(var429
, var431
, var430
) /* with_native on <var429:Array[Object]>*/;
3156 CHECK_NEW_array__Array(var429
);
3158 var432
= ((val
* (*)(val
*))(var429
->class->vft
[COLOR_string__Object__to_s
]))(var429
) /* to_s on <var429:Array[Object]>*/;
3159 ((void (*)(val
*, val
*))(var412
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var412
, var432
) /* add_decl on <var412:CodeWriter>*/;
3161 var434
= varonce433
;
3163 var435
= "/* allocate ";
3165 var437
= string__NativeString__to_s_with_length(var435
, var436
);
3167 varonce433
= var434
;
3170 var439
= varonce438
;
3174 var442
= string__NativeString__to_s_with_length(var440
, var441
);
3176 varonce438
= var439
;
3178 var443
= NEW_array__Array(&type_array__Arraykernel__Object
);
3179 { /* var443 = array_instance Array[Object] */
3181 var445
= NEW_array__NativeArray(var444
, &type_array__NativeArraykernel__Object
);
3182 ((struct instance_array__NativeArray
*)var445
)->values
[0] = (val
*) var434
;
3183 ((struct instance_array__NativeArray
*)var445
)->values
[1] = (val
*) var_mtype
;
3184 ((struct instance_array__NativeArray
*)var445
)->values
[2] = (val
*) var439
;
3185 ((void (*)(val
*, val
*, long))(var443
->class->vft
[COLOR_array__Array__with_native
]))(var443
, var445
, var444
) /* with_native on <var443:Array[Object]>*/;
3186 CHECK_NEW_array__Array(var443
);
3188 var446
= ((val
* (*)(val
*))(var443
->class->vft
[COLOR_string__Object__to_s
]))(var443
) /* to_s on <var443:Array[Object]>*/;
3189 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var446
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
3191 var448
= varonce447
;
3193 var449
= "val* BOX_";
3195 var451
= string__NativeString__to_s_with_length(var449
, var450
);
3197 varonce447
= var448
;
3199 var452
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_abstract_compiler__MType__c_name
]))(var_mtype
) /* c_name on <var_mtype:MClassType>*/;
3201 var454
= varonce453
;
3205 var457
= string__NativeString__to_s_with_length(var455
, var456
);
3207 varonce453
= var454
;
3209 var458
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var_mtype
) /* ctype on <var_mtype:MClassType>*/;
3211 var460
= varonce459
;
3213 var461
= " value) {";
3215 var463
= string__NativeString__to_s_with_length(var461
, var462
);
3217 varonce459
= var460
;
3219 var464
= NEW_array__Array(&type_array__Arraykernel__Object
);
3220 { /* var464 = array_instance Array[Object] */
3222 var466
= NEW_array__NativeArray(var465
, &type_array__NativeArraykernel__Object
);
3223 ((struct instance_array__NativeArray
*)var466
)->values
[0] = (val
*) var448
;
3224 ((struct instance_array__NativeArray
*)var466
)->values
[1] = (val
*) var452
;
3225 ((struct instance_array__NativeArray
*)var466
)->values
[2] = (val
*) var454
;
3226 ((struct instance_array__NativeArray
*)var466
)->values
[3] = (val
*) var458
;
3227 ((struct instance_array__NativeArray
*)var466
)->values
[4] = (val
*) var460
;
3228 ((void (*)(val
*, val
*, long))(var464
->class->vft
[COLOR_array__Array__with_native
]))(var464
, var466
, var465
) /* with_native on <var464:Array[Object]>*/;
3229 CHECK_NEW_array__Array(var464
);
3231 var467
= ((val
* (*)(val
*))(var464
->class->vft
[COLOR_string__Object__to_s
]))(var464
) /* to_s on <var464:Array[Object]>*/;
3232 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var467
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
3234 var469
= varonce468
;
3236 var470
= "struct instance_";
3238 var472
= string__NativeString__to_s_with_length(var470
, var471
);
3240 varonce468
= var469
;
3243 var474
= varonce473
;
3245 var475
= "*res = nit_alloc(sizeof(struct instance_";
3247 var477
= string__NativeString__to_s_with_length(var475
, var476
);
3249 varonce473
= var474
;
3252 var479
= varonce478
;
3256 var482
= string__NativeString__to_s_with_length(var480
, var481
);
3258 varonce478
= var479
;
3260 var483
= NEW_array__Array(&type_array__Arraykernel__Object
);
3261 { /* var483 = array_instance Array[Object] */
3263 var485
= NEW_array__NativeArray(var484
, &type_array__NativeArraykernel__Object
);
3264 ((struct instance_array__NativeArray
*)var485
)->values
[0] = (val
*) var469
;
3265 ((struct instance_array__NativeArray
*)var485
)->values
[1] = (val
*) var_c_name
;
3266 ((struct instance_array__NativeArray
*)var485
)->values
[2] = (val
*) var474
;
3267 ((struct instance_array__NativeArray
*)var485
)->values
[3] = (val
*) var_c_name
;
3268 ((struct instance_array__NativeArray
*)var485
)->values
[4] = (val
*) var479
;
3269 ((void (*)(val
*, val
*, long))(var483
->class->vft
[COLOR_array__Array__with_native
]))(var483
, var485
, var484
) /* with_native on <var483:Array[Object]>*/;
3270 CHECK_NEW_array__Array(var483
);
3272 var486
= ((val
* (*)(val
*))(var483
->class->vft
[COLOR_string__Object__to_s
]))(var483
) /* to_s on <var483:Array[Object]>*/;
3273 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var486
) /* add on <var_v:SeparateCompilerVisitor>*/;
3275 var488
= varonce487
;
3279 var491
= string__NativeString__to_s_with_length(var489
, var490
);
3281 varonce487
= var488
;
3283 var492
= NEW_array__Array(&type_array__Arraykernel__Object
);
3284 { /* var492 = array_instance Array[Object] */
3286 var494
= NEW_array__NativeArray(var493
, &type_array__NativeArraykernel__Object
);
3287 ((struct instance_array__NativeArray
*)var494
)->values
[0] = (val
*) var488
;
3288 ((struct instance_array__NativeArray
*)var494
)->values
[1] = (val
*) var_c_name
;
3289 ((void (*)(val
*, val
*, long))(var492
->class->vft
[COLOR_array__Array__with_native
]))(var492
, var494
, var493
) /* with_native on <var492:Array[Object]>*/;
3290 CHECK_NEW_array__Array(var492
);
3292 var495
= ((val
* (*)(val
*))(var492
->class->vft
[COLOR_string__Object__to_s
]))(var492
) /* to_s on <var492:Array[Object]>*/;
3293 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(var_v
, var495
) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
3295 var497
= varonce496
;
3297 var498
= "res->class = &class_";
3299 var500
= string__NativeString__to_s_with_length(var498
, var499
);
3301 varonce496
= var497
;
3304 var502
= varonce501
;
3308 var505
= string__NativeString__to_s_with_length(var503
, var504
);
3310 varonce501
= var502
;
3312 var506
= NEW_array__Array(&type_array__Arraykernel__Object
);
3313 { /* var506 = array_instance Array[Object] */
3315 var508
= NEW_array__NativeArray(var507
, &type_array__NativeArraykernel__Object
);
3316 ((struct instance_array__NativeArray
*)var508
)->values
[0] = (val
*) var497
;
3317 ((struct instance_array__NativeArray
*)var508
)->values
[1] = (val
*) var_c_name
;
3318 ((struct instance_array__NativeArray
*)var508
)->values
[2] = (val
*) var502
;
3319 ((void (*)(val
*, val
*, long))(var506
->class->vft
[COLOR_array__Array__with_native
]))(var506
, var508
, var507
) /* with_native on <var506:Array[Object]>*/;
3320 CHECK_NEW_array__Array(var506
);
3322 var509
= ((val
* (*)(val
*))(var506
->class->vft
[COLOR_string__Object__to_s
]))(var506
) /* to_s on <var506:Array[Object]>*/;
3323 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var509
) /* add on <var_v:SeparateCompilerVisitor>*/;
3325 var511
= varonce510
;
3327 var512
= "res->value = value;";
3329 var514
= string__NativeString__to_s_with_length(var512
, var513
);
3331 varonce510
= var511
;
3333 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var511
) /* add on <var_v:SeparateCompilerVisitor>*/;
3335 var516
= varonce515
;
3337 var517
= "return (val*)res;";
3339 var519
= string__NativeString__to_s_with_length(var517
, var518
);
3341 varonce515
= var516
;
3343 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var516
) /* add on <var_v:SeparateCompilerVisitor>*/;
3345 var521
= varonce520
;
3349 var524
= string__NativeString__to_s_with_length(var522
, var523
);
3351 varonce520
= var521
;
3353 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var521
) /* add on <var_v:SeparateCompilerVisitor>*/;
3356 var525
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_model__MClass__name
]))(var_mclass
) /* name on <var_mclass:MClass>*/;
3358 var527
= varonce526
;
3360 var528
= "NativeArray";
3362 var530
= string__NativeString__to_s_with_length(var528
, var529
);
3364 varonce526
= var527
;
3366 var531
= ((short int (*)(val
*, val
*))(var525
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var525
, var527
) /* == on <var525:String>*/;
3368 var532
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
3370 var534
= varonce533
;
3372 var535
= "struct instance_";
3374 var537
= string__NativeString__to_s_with_length(var535
, var536
);
3376 varonce533
= var534
;
3379 var539
= varonce538
;
3383 var542
= string__NativeString__to_s_with_length(var540
, var541
);
3385 varonce538
= var539
;
3387 var543
= NEW_array__Array(&type_array__Arraykernel__Object
);
3388 { /* var543 = array_instance Array[Object] */
3390 var545
= NEW_array__NativeArray(var544
, &type_array__NativeArraykernel__Object
);
3391 ((struct instance_array__NativeArray
*)var545
)->values
[0] = (val
*) var534
;
3392 ((struct instance_array__NativeArray
*)var545
)->values
[1] = (val
*) var_c_name
;
3393 ((struct instance_array__NativeArray
*)var545
)->values
[2] = (val
*) var539
;
3394 ((void (*)(val
*, val
*, long))(var543
->class->vft
[COLOR_array__Array__with_native
]))(var543
, var545
, var544
) /* with_native on <var543:Array[Object]>*/;
3395 CHECK_NEW_array__Array(var543
);
3397 var546
= ((val
* (*)(val
*))(var543
->class->vft
[COLOR_string__Object__to_s
]))(var543
) /* to_s on <var543:Array[Object]>*/;
3398 ((void (*)(val
*, val
*))(var532
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var532
, var546
) /* add_decl on <var532:CodeWriter>*/;
3399 var547
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
3401 var549
= varonce548
;
3403 var550
= "const struct class *class;";
3405 var552
= string__NativeString__to_s_with_length(var550
, var551
);
3407 varonce548
= var549
;
3409 ((void (*)(val
*, val
*))(var547
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var547
, var549
) /* add_decl on <var547:CodeWriter>*/;
3410 var553
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
3412 var555
= varonce554
;
3414 var556
= "val* values[];";
3416 var558
= string__NativeString__to_s_with_length(var556
, var557
);
3418 varonce554
= var555
;
3420 ((void (*)(val
*, val
*))(var553
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var553
, var555
) /* add_decl on <var553:CodeWriter>*/;
3421 var559
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__header
]))(self
) /* header on <self:SeparateErasureCompiler>*/;
3423 var561
= varonce560
;
3427 var564
= string__NativeString__to_s_with_length(var562
, var563
);
3429 varonce560
= var561
;
3431 ((void (*)(val
*, val
*))(var559
->class->vft
[COLOR_abstract_compiler__CodeWriter__add_decl
]))(var559
, var561
) /* add_decl on <var559:CodeWriter>*/;
3433 var566
= varonce565
;
3437 var569
= string__NativeString__to_s_with_length(var567
, var568
);
3439 varonce565
= var566
;
3441 var570
= NEW_array__Array(&type_array__Arraykernel__Object
);
3442 { /* var570 = array_instance Array[Object] */
3444 var572
= NEW_array__NativeArray(var571
, &type_array__NativeArraykernel__Object
);
3445 ((struct instance_array__NativeArray
*)var572
)->values
[0] = (val
*) var566
;
3446 ((struct instance_array__NativeArray
*)var572
)->values
[1] = (val
*) var_c_name
;
3447 ((void (*)(val
*, val
*, long))(var570
->class->vft
[COLOR_array__Array__with_native
]))(var570
, var572
, var571
) /* with_native on <var570:Array[Object]>*/;
3448 CHECK_NEW_array__Array(var570
);
3450 var573
= ((val
* (*)(val
*))(var570
->class->vft
[COLOR_string__Object__to_s
]))(var570
) /* to_s on <var570:Array[Object]>*/;
3451 var574
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var_mtype
) /* ctype on <var_mtype:MClassType>*/;
3453 var576
= varonce575
;
3457 var579
= string__NativeString__to_s_with_length(var577
, var578
);
3459 varonce575
= var576
;
3462 var581
= varonce580
;
3464 var582
= "(int length);";
3466 var584
= string__NativeString__to_s_with_length(var582
, var583
);
3468 varonce580
= var581
;
3470 var585
= NEW_array__Array(&type_array__Arraykernel__Object
);
3471 { /* var585 = array_instance Array[Object] */
3473 var587
= NEW_array__NativeArray(var586
, &type_array__NativeArraykernel__Object
);
3474 ((struct instance_array__NativeArray
*)var587
)->values
[0] = (val
*) var574
;
3475 ((struct instance_array__NativeArray
*)var587
)->values
[1] = (val
*) var576
;
3476 ((struct instance_array__NativeArray
*)var587
)->values
[2] = (val
*) var_c_name
;
3477 ((struct instance_array__NativeArray
*)var587
)->values
[3] = (val
*) var581
;
3478 ((void (*)(val
*, val
*, long))(var585
->class->vft
[COLOR_array__Array__with_native
]))(var585
, var587
, var586
) /* with_native on <var585:Array[Object]>*/;
3479 CHECK_NEW_array__Array(var585
);
3481 var588
= ((val
* (*)(val
*))(var585
->class->vft
[COLOR_string__Object__to_s
]))(var585
) /* to_s on <var585:Array[Object]>*/;
3482 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__provide_declaration
]))(self
, var573
, var588
) /* provide_declaration on <self:SeparateErasureCompiler>*/;
3484 var590
= varonce589
;
3486 var591
= "/* allocate ";
3488 var593
= string__NativeString__to_s_with_length(var591
, var592
);
3490 varonce589
= var590
;
3493 var595
= varonce594
;
3497 var598
= string__NativeString__to_s_with_length(var596
, var597
);
3499 varonce594
= var595
;
3501 var599
= NEW_array__Array(&type_array__Arraykernel__Object
);
3502 { /* var599 = array_instance Array[Object] */
3504 var601
= NEW_array__NativeArray(var600
, &type_array__NativeArraykernel__Object
);
3505 ((struct instance_array__NativeArray
*)var601
)->values
[0] = (val
*) var590
;
3506 ((struct instance_array__NativeArray
*)var601
)->values
[1] = (val
*) var_mtype
;
3507 ((struct instance_array__NativeArray
*)var601
)->values
[2] = (val
*) var595
;
3508 ((void (*)(val
*, val
*, long))(var599
->class->vft
[COLOR_array__Array__with_native
]))(var599
, var601
, var600
) /* with_native on <var599:Array[Object]>*/;
3509 CHECK_NEW_array__Array(var599
);
3511 var602
= ((val
* (*)(val
*))(var599
->class->vft
[COLOR_string__Object__to_s
]))(var599
) /* to_s on <var599:Array[Object]>*/;
3512 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var602
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
3513 var603
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var_mtype
) /* ctype on <var_mtype:MClassType>*/;
3515 var605
= varonce604
;
3519 var608
= string__NativeString__to_s_with_length(var606
, var607
);
3521 varonce604
= var605
;
3524 var610
= varonce609
;
3526 var611
= "(int length) {";
3528 var613
= string__NativeString__to_s_with_length(var611
, var612
);
3530 varonce609
= var610
;
3532 var614
= NEW_array__Array(&type_array__Arraykernel__Object
);
3533 { /* var614 = array_instance Array[Object] */
3535 var616
= NEW_array__NativeArray(var615
, &type_array__NativeArraykernel__Object
);
3536 ((struct instance_array__NativeArray
*)var616
)->values
[0] = (val
*) var603
;
3537 ((struct instance_array__NativeArray
*)var616
)->values
[1] = (val
*) var605
;
3538 ((struct instance_array__NativeArray
*)var616
)->values
[2] = (val
*) var_c_name
;
3539 ((struct instance_array__NativeArray
*)var616
)->values
[3] = (val
*) var610
;
3540 ((void (*)(val
*, val
*, long))(var614
->class->vft
[COLOR_array__Array__with_native
]))(var614
, var616
, var615
) /* with_native on <var614:Array[Object]>*/;
3541 CHECK_NEW_array__Array(var614
);
3543 var617
= ((val
* (*)(val
*))(var614
->class->vft
[COLOR_string__Object__to_s
]))(var614
) /* to_s on <var614:Array[Object]>*/;
3544 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var617
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
3546 var619
= varonce618
;
3550 var622
= string__NativeString__to_s_with_length(var620
, var621
);
3552 varonce618
= var619
;
3554 var623
= ((val
* (*)(val
*, val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__new_named_var
]))(var_v
, var_mtype
, var619
) /* new_named_var on <var_v:SeparateCompilerVisitor>*/;
3557 ((void (*)(val
*, short int))(var_res
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__is_exact_61d
]))(var_res
, var624
) /* is_exact= on <var_res:RuntimeVariable>*/;
3558 var625
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MClassType__arguments
]))(var_mtype
) /* arguments on <var_mtype:MClassType>*/;
3559 var626
= ((val
* (*)(val
*))(var625
->class->vft
[COLOR_abstract_collection__Collection__first
]))(var625
) /* first on <var625:Array[MType]>*/;
3560 var_mtype_elt
= var626
;
3562 var628
= varonce627
;
3564 var629
= " = nit_alloc(sizeof(struct instance_";
3566 var631
= string__NativeString__to_s_with_length(var629
, var630
);
3568 varonce627
= var628
;
3571 var633
= varonce632
;
3573 var634
= ") + length*sizeof(";
3575 var636
= string__NativeString__to_s_with_length(var634
, var635
);
3577 varonce632
= var633
;
3579 var637
= ((val
* (*)(val
*))(var_mtype_elt
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var_mtype_elt
) /* ctype on <var_mtype_elt:MType>*/;
3581 var639
= varonce638
;
3585 var642
= string__NativeString__to_s_with_length(var640
, var641
);
3587 varonce638
= var639
;
3589 var643
= NEW_array__Array(&type_array__Arraykernel__Object
);
3590 { /* var643 = array_instance Array[Object] */
3592 var645
= NEW_array__NativeArray(var644
, &type_array__NativeArraykernel__Object
);
3593 ((struct instance_array__NativeArray
*)var645
)->values
[0] = (val
*) var_res
;
3594 ((struct instance_array__NativeArray
*)var645
)->values
[1] = (val
*) var628
;
3595 ((struct instance_array__NativeArray
*)var645
)->values
[2] = (val
*) var_c_name
;
3596 ((struct instance_array__NativeArray
*)var645
)->values
[3] = (val
*) var633
;
3597 ((struct instance_array__NativeArray
*)var645
)->values
[4] = (val
*) var637
;
3598 ((struct instance_array__NativeArray
*)var645
)->values
[5] = (val
*) var639
;
3599 ((void (*)(val
*, val
*, long))(var643
->class->vft
[COLOR_array__Array__with_native
]))(var643
, var645
, var644
) /* with_native on <var643:Array[Object]>*/;
3600 CHECK_NEW_array__Array(var643
);
3602 var646
= ((val
* (*)(val
*))(var643
->class->vft
[COLOR_string__Object__to_s
]))(var643
) /* to_s on <var643:Array[Object]>*/;
3603 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var646
) /* add on <var_v:SeparateCompilerVisitor>*/;
3605 var648
= varonce647
;
3609 var651
= string__NativeString__to_s_with_length(var649
, var650
);
3611 varonce647
= var648
;
3613 var652
= NEW_array__Array(&type_array__Arraykernel__Object
);
3614 { /* var652 = array_instance Array[Object] */
3616 var654
= NEW_array__NativeArray(var653
, &type_array__NativeArraykernel__Object
);
3617 ((struct instance_array__NativeArray
*)var654
)->values
[0] = (val
*) var648
;
3618 ((struct instance_array__NativeArray
*)var654
)->values
[1] = (val
*) var_c_name
;
3619 ((void (*)(val
*, val
*, long))(var652
->class->vft
[COLOR_array__Array__with_native
]))(var652
, var654
, var653
) /* with_native on <var652:Array[Object]>*/;
3620 CHECK_NEW_array__Array(var652
);
3622 var655
= ((val
* (*)(val
*))(var652
->class->vft
[COLOR_string__Object__to_s
]))(var652
) /* to_s on <var652:Array[Object]>*/;
3623 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(var_v
, var655
) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
3625 var657
= varonce656
;
3627 var658
= "->class = &class_";
3629 var660
= string__NativeString__to_s_with_length(var658
, var659
);
3631 varonce656
= var657
;
3634 var662
= varonce661
;
3638 var665
= string__NativeString__to_s_with_length(var663
, var664
);
3640 varonce661
= var662
;
3642 var666
= NEW_array__Array(&type_array__Arraykernel__Object
);
3643 { /* var666 = array_instance Array[Object] */
3645 var668
= NEW_array__NativeArray(var667
, &type_array__NativeArraykernel__Object
);
3646 ((struct instance_array__NativeArray
*)var668
)->values
[0] = (val
*) var_res
;
3647 ((struct instance_array__NativeArray
*)var668
)->values
[1] = (val
*) var657
;
3648 ((struct instance_array__NativeArray
*)var668
)->values
[2] = (val
*) var_c_name
;
3649 ((struct instance_array__NativeArray
*)var668
)->values
[3] = (val
*) var662
;
3650 ((void (*)(val
*, val
*, long))(var666
->class->vft
[COLOR_array__Array__with_native
]))(var666
, var668
, var667
) /* with_native on <var666:Array[Object]>*/;
3651 CHECK_NEW_array__Array(var666
);
3653 var669
= ((val
* (*)(val
*))(var666
->class->vft
[COLOR_string__Object__to_s
]))(var666
) /* to_s on <var666:Array[Object]>*/;
3654 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var669
) /* add on <var_v:SeparateCompilerVisitor>*/;
3656 var671
= varonce670
;
3660 var674
= string__NativeString__to_s_with_length(var672
, var673
);
3662 varonce670
= var671
;
3665 var676
= varonce675
;
3669 var679
= string__NativeString__to_s_with_length(var677
, var678
);
3671 varonce675
= var676
;
3673 var680
= NEW_array__Array(&type_array__Arraykernel__Object
);
3674 { /* var680 = array_instance Array[Object] */
3676 var682
= NEW_array__NativeArray(var681
, &type_array__NativeArraykernel__Object
);
3677 ((struct instance_array__NativeArray
*)var682
)->values
[0] = (val
*) var671
;
3678 ((struct instance_array__NativeArray
*)var682
)->values
[1] = (val
*) var_res
;
3679 ((struct instance_array__NativeArray
*)var682
)->values
[2] = (val
*) var676
;
3680 ((void (*)(val
*, val
*, long))(var680
->class->vft
[COLOR_array__Array__with_native
]))(var680
, var682
, var681
) /* with_native on <var680:Array[Object]>*/;
3681 CHECK_NEW_array__Array(var680
);
3683 var683
= ((val
* (*)(val
*))(var680
->class->vft
[COLOR_string__Object__to_s
]))(var680
) /* to_s on <var680:Array[Object]>*/;
3684 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var683
) /* add on <var_v:SeparateCompilerVisitor>*/;
3686 var685
= varonce684
;
3690 var688
= string__NativeString__to_s_with_length(var686
, var687
);
3692 varonce684
= var685
;
3694 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var685
) /* add on <var_v:SeparateCompilerVisitor>*/;
3700 var690
= varonce689
;
3704 var693
= string__NativeString__to_s_with_length(var691
, var692
);
3706 varonce689
= var690
;
3708 var694
= NEW_array__Array(&type_array__Arraykernel__Object
);
3709 { /* var694 = array_instance Array[Object] */
3711 var696
= NEW_array__NativeArray(var695
, &type_array__NativeArraykernel__Object
);
3712 ((struct instance_array__NativeArray
*)var696
)->values
[0] = (val
*) var690
;
3713 ((struct instance_array__NativeArray
*)var696
)->values
[1] = (val
*) var_c_name
;
3714 ((void (*)(val
*, val
*, long))(var694
->class->vft
[COLOR_array__Array__with_native
]))(var694
, var696
, var695
) /* with_native on <var694:Array[Object]>*/;
3715 CHECK_NEW_array__Array(var694
);
3717 var697
= ((val
* (*)(val
*))(var694
->class->vft
[COLOR_string__Object__to_s
]))(var694
) /* to_s on <var694:Array[Object]>*/;
3718 var698
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var_mtype
) /* ctype on <var_mtype:MClassType>*/;
3720 var700
= varonce699
;
3724 var703
= string__NativeString__to_s_with_length(var701
, var702
);
3726 varonce699
= var700
;
3729 var705
= varonce704
;
3733 var708
= string__NativeString__to_s_with_length(var706
, var707
);
3735 varonce704
= var705
;
3737 var709
= NEW_array__Array(&type_array__Arraykernel__Object
);
3738 { /* var709 = array_instance Array[Object] */
3740 var711
= NEW_array__NativeArray(var710
, &type_array__NativeArraykernel__Object
);
3741 ((struct instance_array__NativeArray
*)var711
)->values
[0] = (val
*) var698
;
3742 ((struct instance_array__NativeArray
*)var711
)->values
[1] = (val
*) var700
;
3743 ((struct instance_array__NativeArray
*)var711
)->values
[2] = (val
*) var_c_name
;
3744 ((struct instance_array__NativeArray
*)var711
)->values
[3] = (val
*) var705
;
3745 ((void (*)(val
*, val
*, long))(var709
->class->vft
[COLOR_array__Array__with_native
]))(var709
, var711
, var710
) /* with_native on <var709:Array[Object]>*/;
3746 CHECK_NEW_array__Array(var709
);
3748 var712
= ((val
* (*)(val
*))(var709
->class->vft
[COLOR_string__Object__to_s
]))(var709
) /* to_s on <var709:Array[Object]>*/;
3749 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__provide_declaration
]))(self
, var697
, var712
) /* provide_declaration on <self:SeparateErasureCompiler>*/;
3751 var714
= varonce713
;
3753 var715
= "/* allocate ";
3755 var717
= string__NativeString__to_s_with_length(var715
, var716
);
3757 varonce713
= var714
;
3760 var719
= varonce718
;
3764 var722
= string__NativeString__to_s_with_length(var720
, var721
);
3766 varonce718
= var719
;
3768 var723
= NEW_array__Array(&type_array__Arraykernel__Object
);
3769 { /* var723 = array_instance Array[Object] */
3771 var725
= NEW_array__NativeArray(var724
, &type_array__NativeArraykernel__Object
);
3772 ((struct instance_array__NativeArray
*)var725
)->values
[0] = (val
*) var714
;
3773 ((struct instance_array__NativeArray
*)var725
)->values
[1] = (val
*) var_mtype
;
3774 ((struct instance_array__NativeArray
*)var725
)->values
[2] = (val
*) var719
;
3775 ((void (*)(val
*, val
*, long))(var723
->class->vft
[COLOR_array__Array__with_native
]))(var723
, var725
, var724
) /* with_native on <var723:Array[Object]>*/;
3776 CHECK_NEW_array__Array(var723
);
3778 var726
= ((val
* (*)(val
*))(var723
->class->vft
[COLOR_string__Object__to_s
]))(var723
) /* to_s on <var723:Array[Object]>*/;
3779 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var726
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
3780 var727
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var_mtype
) /* ctype on <var_mtype:MClassType>*/;
3782 var729
= varonce728
;
3786 var732
= string__NativeString__to_s_with_length(var730
, var731
);
3788 varonce728
= var729
;
3791 var734
= varonce733
;
3793 var735
= "(void) {";
3795 var737
= string__NativeString__to_s_with_length(var735
, var736
);
3797 varonce733
= var734
;
3799 var738
= NEW_array__Array(&type_array__Arraykernel__Object
);
3800 { /* var738 = array_instance Array[Object] */
3802 var740
= NEW_array__NativeArray(var739
, &type_array__NativeArraykernel__Object
);
3803 ((struct instance_array__NativeArray
*)var740
)->values
[0] = (val
*) var727
;
3804 ((struct instance_array__NativeArray
*)var740
)->values
[1] = (val
*) var729
;
3805 ((struct instance_array__NativeArray
*)var740
)->values
[2] = (val
*) var_c_name
;
3806 ((struct instance_array__NativeArray
*)var740
)->values
[3] = (val
*) var734
;
3807 ((void (*)(val
*, val
*, long))(var738
->class->vft
[COLOR_array__Array__with_native
]))(var738
, var740
, var739
) /* with_native on <var738:Array[Object]>*/;
3808 CHECK_NEW_array__Array(var738
);
3810 var741
= ((val
* (*)(val
*))(var738
->class->vft
[COLOR_string__Object__to_s
]))(var738
) /* to_s on <var738:Array[Object]>*/;
3811 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var741
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
3813 var743
= varonce742
;
3817 var746
= string__NativeString__to_s_with_length(var744
, var745
);
3819 varonce742
= var743
;
3821 var747
= ((val
* (*)(val
*, val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__new_named_var
]))(var_v
, var_mtype
, var743
) /* new_named_var on <var_v:SeparateCompilerVisitor>*/;
3822 var_res748
= var747
;
3824 ((void (*)(val
*, short int))(var_res748
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__is_exact_61d
]))(var_res748
, var749
) /* is_exact= on <var_res748:RuntimeVariable>*/;
3826 var751
= varonce750
;
3828 var752
= " = nit_alloc(sizeof(struct instance) + ";
3830 var754
= string__NativeString__to_s_with_length(var752
, var753
);
3832 varonce750
= var751
;
3834 var755
= ((long (*)(val
*))(var_attrs
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_attrs
) /* length on <var_attrs:Array[nullable MPropDef]>*/;
3836 var757
= varonce756
;
3838 var758
= "*sizeof(nitattribute_t));";
3840 var760
= string__NativeString__to_s_with_length(var758
, var759
);
3842 varonce756
= var757
;
3844 var761
= NEW_array__Array(&type_array__Arraykernel__Object
);
3845 { /* var761 = array_instance Array[Object] */
3847 var763
= NEW_array__NativeArray(var762
, &type_array__NativeArraykernel__Object
);
3848 ((struct instance_array__NativeArray
*)var763
)->values
[0] = (val
*) var_res748
;
3849 ((struct instance_array__NativeArray
*)var763
)->values
[1] = (val
*) var751
;
3850 var764
= BOX_kernel__Int(var755
); /* autobox from Int to Object */
3851 ((struct instance_array__NativeArray
*)var763
)->values
[2] = (val
*) var764
;
3852 ((struct instance_array__NativeArray
*)var763
)->values
[3] = (val
*) var757
;
3853 ((void (*)(val
*, val
*, long))(var761
->class->vft
[COLOR_array__Array__with_native
]))(var761
, var763
, var762
) /* with_native on <var761:Array[Object]>*/;
3854 CHECK_NEW_array__Array(var761
);
3856 var765
= ((val
* (*)(val
*))(var761
->class->vft
[COLOR_string__Object__to_s
]))(var761
) /* to_s on <var761:Array[Object]>*/;
3857 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var765
) /* add on <var_v:SeparateCompilerVisitor>*/;
3859 var767
= varonce766
;
3863 var770
= string__NativeString__to_s_with_length(var768
, var769
);
3865 varonce766
= var767
;
3867 var771
= NEW_array__Array(&type_array__Arraykernel__Object
);
3868 { /* var771 = array_instance Array[Object] */
3870 var773
= NEW_array__NativeArray(var772
, &type_array__NativeArraykernel__Object
);
3871 ((struct instance_array__NativeArray
*)var773
)->values
[0] = (val
*) var767
;
3872 ((struct instance_array__NativeArray
*)var773
)->values
[1] = (val
*) var_c_name
;
3873 ((void (*)(val
*, val
*, long))(var771
->class->vft
[COLOR_array__Array__with_native
]))(var771
, var773
, var772
) /* with_native on <var771:Array[Object]>*/;
3874 CHECK_NEW_array__Array(var771
);
3876 var774
= ((val
* (*)(val
*))(var771
->class->vft
[COLOR_string__Object__to_s
]))(var771
) /* to_s on <var771:Array[Object]>*/;
3877 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(var_v
, var774
) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
3879 var776
= varonce775
;
3881 var777
= "->class = &class_";
3883 var779
= string__NativeString__to_s_with_length(var777
, var778
);
3885 varonce775
= var776
;
3888 var781
= varonce780
;
3892 var784
= string__NativeString__to_s_with_length(var782
, var783
);
3894 varonce780
= var781
;
3896 var785
= NEW_array__Array(&type_array__Arraykernel__Object
);
3897 { /* var785 = array_instance Array[Object] */
3899 var787
= NEW_array__NativeArray(var786
, &type_array__NativeArraykernel__Object
);
3900 ((struct instance_array__NativeArray
*)var787
)->values
[0] = (val
*) var_res748
;
3901 ((struct instance_array__NativeArray
*)var787
)->values
[1] = (val
*) var776
;
3902 ((struct instance_array__NativeArray
*)var787
)->values
[2] = (val
*) var_c_name
;
3903 ((struct instance_array__NativeArray
*)var787
)->values
[3] = (val
*) var781
;
3904 ((void (*)(val
*, val
*, long))(var785
->class->vft
[COLOR_array__Array__with_native
]))(var785
, var787
, var786
) /* with_native on <var785:Array[Object]>*/;
3905 CHECK_NEW_array__Array(var785
);
3907 var788
= ((val
* (*)(val
*))(var785
->class->vft
[COLOR_string__Object__to_s
]))(var785
) /* to_s on <var785:Array[Object]>*/;
3908 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var788
) /* add on <var_v:SeparateCompilerVisitor>*/;
3909 ((void (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__generate_init_attr
]))(self
, var_v
, var_res748
, var_mtype
) /* generate_init_attr on <self:SeparateErasureCompiler>*/;
3911 var790
= varonce789
;
3915 var793
= string__NativeString__to_s_with_length(var791
, var792
);
3917 varonce789
= var790
;
3920 var795
= varonce794
;
3924 var798
= string__NativeString__to_s_with_length(var796
, var797
);
3926 varonce794
= var795
;
3928 var799
= NEW_array__Array(&type_array__Arraykernel__Object
);
3929 { /* var799 = array_instance Array[Object] */
3931 var801
= NEW_array__NativeArray(var800
, &type_array__NativeArraykernel__Object
);
3932 ((struct instance_array__NativeArray
*)var801
)->values
[0] = (val
*) var790
;
3933 ((struct instance_array__NativeArray
*)var801
)->values
[1] = (val
*) var_res748
;
3934 ((struct instance_array__NativeArray
*)var801
)->values
[2] = (val
*) var795
;
3935 ((void (*)(val
*, val
*, long))(var799
->class->vft
[COLOR_array__Array__with_native
]))(var799
, var801
, var800
) /* with_native on <var799:Array[Object]>*/;
3936 CHECK_NEW_array__Array(var799
);
3938 var802
= ((val
* (*)(val
*))(var799
->class->vft
[COLOR_string__Object__to_s
]))(var799
) /* to_s on <var799:Array[Object]>*/;
3939 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var802
) /* add on <var_v:SeparateCompilerVisitor>*/;
3941 var804
= varonce803
;
3945 var807
= string__NativeString__to_s_with_length(var805
, var806
);
3947 varonce803
= var804
;
3949 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(var_v
, var804
) /* add on <var_v:SeparateCompilerVisitor>*/;
3950 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__generate_check_init_instance
]))(self
, var_mtype
) /* generate_check_init_instance on <self:SeparateErasureCompiler>*/;
3953 /* method separate_erasure_compiler#SeparateErasureCompiler#compile_class_to_c for (self: Object, MClass) */
3954 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__compile_class_to_c(val
* self
, val
* p0
) {
3955 separate_erasure_compiler__SeparateErasureCompiler__compile_class_to_c(self
, p0
);
3958 /* method separate_erasure_compiler#SeparateErasureCompiler#build_class_vts_table for (self: SeparateErasureCompiler, MClass): Bool */
3959 short int separate_erasure_compiler__SeparateErasureCompiler__build_class_vts_table(val
* self
, val
* p0
) {
3960 short int var
/* : Bool */;
3961 val
* var_mclass
/* var mclass: MClass */;
3962 val
* var1
/* : Map[MClass, Array[nullable MPropDef]] */;
3963 val
* var2
/* : nullable Object */;
3964 short int var3
/* : Bool */;
3965 short int var4
/* : Bool */;
3966 static val
* varonce
;
3967 val
* var5
/* : String */;
3968 char* var6
/* : NativeString */;
3969 long var7
/* : Int */;
3970 val
* var8
/* : String */;
3971 val
* var9
/* : String */;
3972 val
* var10
/* : Array[Object] */;
3973 long var11
/* : Int */;
3974 val
* var12
/* : NativeArray[Object] */;
3975 val
* var13
/* : String */;
3976 static val
* varonce14
;
3977 val
* var15
/* : String */;
3978 char* var16
/* : NativeString */;
3979 long var17
/* : Int */;
3980 val
* var18
/* : String */;
3981 val
* var19
/* : String */;
3982 static val
* varonce20
;
3983 val
* var21
/* : String */;
3984 char* var22
/* : NativeString */;
3985 long var23
/* : Int */;
3986 val
* var24
/* : String */;
3987 val
* var25
/* : Array[Object] */;
3988 long var26
/* : Int */;
3989 val
* var27
/* : NativeArray[Object] */;
3990 val
* var28
/* : String */;
3991 val
* var29
/* : AbstractCompilerVisitor */;
3992 val
* var_v
/* var v: SeparateCompilerVisitor */;
3993 static val
* varonce30
;
3994 val
* var31
/* : String */;
3995 char* var32
/* : NativeString */;
3996 long var33
/* : Int */;
3997 val
* var34
/* : String */;
3998 val
* var35
/* : String */;
3999 static val
* varonce36
;
4000 val
* var37
/* : String */;
4001 char* var38
/* : NativeString */;
4002 long var39
/* : Int */;
4003 val
* var40
/* : String */;
4004 val
* var41
/* : Array[Object] */;
4005 long var42
/* : Int */;
4006 val
* var43
/* : NativeArray[Object] */;
4007 val
* var44
/* : String */;
4008 val
* var45
/* : nullable Layout[MVirtualTypeProp] */;
4009 short int var46
/* : Bool */;
4012 static val
* varonce47
;
4013 val
* var48
/* : String */;
4014 char* var49
/* : NativeString */;
4015 long var50
/* : Int */;
4016 val
* var51
/* : String */;
4017 static val
* varonce52
;
4018 val
* var53
/* : String */;
4019 char* var54
/* : NativeString */;
4020 long var55
/* : Int */;
4021 val
* var56
/* : String */;
4022 val
* var57
/* : Map[MClass, Array[nullable MPropDef]] */;
4023 val
* var58
/* : nullable Object */;
4024 val
* var59
/* : Iterator[nullable Object] */;
4025 short int var60
/* : Bool */;
4026 val
* var61
/* : nullable Object */;
4027 val
* var_vt
/* var vt: nullable MPropDef */;
4028 val
* var62
/* : null */;
4029 short int var63
/* : Bool */;
4030 static val
* varonce64
;
4031 val
* var65
/* : String */;
4032 char* var66
/* : NativeString */;
4033 long var67
/* : Int */;
4034 val
* var68
/* : String */;
4035 long var69
/* : Int */;
4036 long var_is_null
/* var is_null: Int */;
4037 val
* var70
/* : MClassDef */;
4038 val
* var71
/* : MClassType */;
4039 short int var72
/* : Bool */;
4042 const char* var_class_name
;
4043 val
* var75
/* : nullable MType */;
4044 val
* var76
/* : MType */;
4045 val
* var_bound
/* var bound: MType */;
4046 short int var77
/* : Bool */;
4049 val
* var80
/* : MClassDef */;
4050 val
* var81
/* : MClassType */;
4051 val
* var82
/* : MType */;
4052 val
* var83
/* : MType */;
4053 long var84
/* : Int */;
4054 short int var85
/* : Bool */;
4057 const char* var_class_name88
;
4058 val
* var89
/* : MClass */;
4059 val
* var_vtclass
/* var vtclass: MClass */;
4060 static val
* varonce90
;
4061 val
* var91
/* : String */;
4062 char* var92
/* : NativeString */;
4063 long var93
/* : Int */;
4064 val
* var94
/* : String */;
4065 val
* var95
/* : String */;
4066 val
* var96
/* : Array[Object] */;
4067 long var97
/* : Int */;
4068 val
* var98
/* : NativeArray[Object] */;
4069 val
* var99
/* : String */;
4070 static val
* varonce100
;
4071 val
* var101
/* : String */;
4072 char* var102
/* : NativeString */;
4073 long var103
/* : Int */;
4074 val
* var104
/* : String */;
4075 static val
* varonce105
;
4076 val
* var106
/* : String */;
4077 char* var107
/* : NativeString */;
4078 long var108
/* : Int */;
4079 val
* var109
/* : String */;
4080 val
* var110
/* : String */;
4081 static val
* varonce111
;
4082 val
* var112
/* : String */;
4083 char* var113
/* : NativeString */;
4084 long var114
/* : Int */;
4085 val
* var115
/* : String */;
4086 static val
* varonce116
;
4087 val
* var117
/* : String */;
4088 char* var118
/* : NativeString */;
4089 long var119
/* : Int */;
4090 val
* var120
/* : String */;
4091 val
* var121
/* : Array[Object] */;
4092 long var122
/* : Int */;
4093 val
* var123
/* : NativeArray[Object] */;
4094 val
* var124
/* : Object */;
4095 val
* var125
/* : String */;
4096 static val
* varonce127
;
4097 val
* var128
/* : String */;
4098 char* var129
/* : NativeString */;
4099 long var130
/* : Int */;
4100 val
* var131
/* : String */;
4101 static val
* varonce132
;
4102 val
* var133
/* : String */;
4103 char* var134
/* : NativeString */;
4104 long var135
/* : Int */;
4105 val
* var136
/* : String */;
4106 short int var137
/* : Bool */;
4108 var1
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__vt_tables
]))(self
) /* vt_tables on <self:SeparateErasureCompiler>*/;
4109 var2
= ((val
* (*)(val
*, val
*))(var1
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var1
, var_mclass
) /* [] on <var1:Map[MClass, Array[nullable MPropDef]]>*/;
4110 var3
= ((short int (*)(val
*))(var2
->class->vft
[COLOR_abstract_collection__Collection__is_empty
]))(var2
) /* is_empty on <var2:nullable Object(Array[nullable MPropDef])>*/;
4120 var6
= "vts_table_";
4122 var8
= string__NativeString__to_s_with_length(var6
, var7
);
4126 var9
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_mclass
) /* c_name on <var_mclass:MClass>*/;
4127 var10
= NEW_array__Array(&type_array__Arraykernel__Object
);
4128 { /* var10 = array_instance Array[Object] */
4130 var12
= NEW_array__NativeArray(var11
, &type_array__NativeArraykernel__Object
);
4131 ((struct instance_array__NativeArray
*)var12
)->values
[0] = (val
*) var5
;
4132 ((struct instance_array__NativeArray
*)var12
)->values
[1] = (val
*) var9
;
4133 ((void (*)(val
*, val
*, long))(var10
->class->vft
[COLOR_array__Array__with_native
]))(var10
, var12
, var11
) /* with_native on <var10:Array[Object]>*/;
4134 CHECK_NEW_array__Array(var10
);
4136 var13
= ((val
* (*)(val
*))(var10
->class->vft
[COLOR_string__Object__to_s
]))(var10
) /* to_s on <var10:Array[Object]>*/;
4140 var16
= "extern const struct vts_table vts_table_";
4142 var18
= string__NativeString__to_s_with_length(var16
, var17
);
4146 var19
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_mclass
) /* c_name on <var_mclass:MClass>*/;
4152 var24
= string__NativeString__to_s_with_length(var22
, var23
);
4156 var25
= NEW_array__Array(&type_array__Arraykernel__Object
);
4157 { /* var25 = array_instance Array[Object] */
4159 var27
= NEW_array__NativeArray(var26
, &type_array__NativeArraykernel__Object
);
4160 ((struct instance_array__NativeArray
*)var27
)->values
[0] = (val
*) var15
;
4161 ((struct instance_array__NativeArray
*)var27
)->values
[1] = (val
*) var19
;
4162 ((struct instance_array__NativeArray
*)var27
)->values
[2] = (val
*) var21
;
4163 ((void (*)(val
*, val
*, long))(var25
->class->vft
[COLOR_array__Array__with_native
]))(var25
, var27
, var26
) /* with_native on <var25:Array[Object]>*/;
4164 CHECK_NEW_array__Array(var25
);
4166 var28
= ((val
* (*)(val
*))(var25
->class->vft
[COLOR_string__Object__to_s
]))(var25
) /* to_s on <var25:Array[Object]>*/;
4167 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__provide_declaration
]))(self
, var13
, var28
) /* provide_declaration on <self:SeparateErasureCompiler>*/;
4168 var29
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__new_visitor
]))(self
) /* new_visitor on <self:SeparateErasureCompiler>*/;
4173 var32
= "const struct vts_table vts_table_";
4175 var34
= string__NativeString__to_s_with_length(var32
, var33
);
4179 var35
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_mclass
) /* c_name on <var_mclass:MClass>*/;
4185 var40
= string__NativeString__to_s_with_length(var38
, var39
);
4189 var41
= NEW_array__Array(&type_array__Arraykernel__Object
);
4190 { /* var41 = array_instance Array[Object] */
4192 var43
= NEW_array__NativeArray(var42
, &type_array__NativeArraykernel__Object
);
4193 ((struct instance_array__NativeArray
*)var43
)->values
[0] = (val
*) var31
;
4194 ((struct instance_array__NativeArray
*)var43
)->values
[1] = (val
*) var35
;
4195 ((struct instance_array__NativeArray
*)var43
)->values
[2] = (val
*) var37
;
4196 ((void (*)(val
*, val
*, long))(var41
->class->vft
[COLOR_array__Array__with_native
]))(var41
, var43
, var42
) /* with_native on <var41:Array[Object]>*/;
4197 CHECK_NEW_array__Array(var41
);
4199 var44
= ((val
* (*)(val
*))(var41
->class->vft
[COLOR_string__Object__to_s
]))(var41
) /* to_s on <var41:Array[Object]>*/;
4200 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var44
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4201 var45
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__vt_layout
]))(self
) /* vt_layout on <self:SeparateErasureCompiler>*/;
4202 /* <var45:nullable Layout[MVirtualTypeProp]> isa PHLayout[MClass, MVirtualTypeProp] */
4203 cltype
= type_layout_builders__PHLayoutmodel__MClassmodel__MVirtualTypeProp
.color
;
4204 idtype
= type_layout_builders__PHLayoutmodel__MClassmodel__MVirtualTypeProp
.id
;
4208 if(cltype
>= var45
->type
->table_size
) {
4211 var46
= var45
->type
->type_table
[cltype
] == idtype
;
4219 var49
= "0, /* dummy */";
4221 var51
= string__NativeString__to_s_with_length(var49
, var50
);
4225 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var48
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4232 var56
= string__NativeString__to_s_with_length(var54
, var55
);
4236 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var53
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4237 var57
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__vt_tables
]))(self
) /* vt_tables on <self:SeparateErasureCompiler>*/;
4238 var58
= ((val
* (*)(val
*, val
*))(var57
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var57
, var_mclass
) /* [] on <var57:Map[MClass, Array[nullable MPropDef]]>*/;
4239 var59
= ((val
* (*)(val
*))(var58
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var58
) /* iterator on <var58:nullable Object(Array[nullable MPropDef])>*/;
4241 var60
= ((short int (*)(val
*))(var59
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var59
) /* is_ok on <var59:Iterator[nullable Object]>*/;
4243 var61
= ((val
* (*)(val
*))(var59
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var59
) /* item on <var59:Iterator[nullable Object]>*/;
4246 if (var_vt
== NULL
) {
4247 var63
= 1; /* is null */
4249 var63
= 0; /* arg is null but recv is not */
4255 var66
= "{-1, NULL}, /* empty */";
4257 var68
= string__NativeString__to_s_with_length(var66
, var67
);
4261 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var65
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4264 var_is_null
= var69
;
4265 var70
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_model__MClass__intro
]))(var_mclass
) /* intro on <var_mclass:MClass>*/;
4266 var71
= ((val
* (*)(val
*))(var70
->class->vft
[COLOR_model__MClassDef__bound_mtype
]))(var70
) /* bound_mtype on <var70:MClassDef>*/;
4267 /* <var_vt:nullable MPropDef(MPropDef)> isa MVirtualTypeDef */
4268 cltype73
= type_model__MVirtualTypeDef
.color
;
4269 idtype74
= type_model__MVirtualTypeDef
.id
;
4270 if(cltype73
>= var_vt
->type
->table_size
) {
4273 var72
= var_vt
->type
->type_table
[cltype73
] == idtype74
;
4276 var_class_name
= var_vt
== NULL ?
"null" : var_vt
->type
->name
;
4277 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MVirtualTypeDef", var_class_name
);
4278 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 360);
4281 var75
= ((val
* (*)(val
*))(var_vt
->class->vft
[COLOR_model__MVirtualTypeDef__bound
]))(var_vt
) /* bound on <var_vt:MPropDef(MVirtualTypeDef)>*/;
4282 var76
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__retrieve_vt_bound
]))(self
, var71
, var75
) /* retrieve_vt_bound on <self:SeparateErasureCompiler>*/;
4285 /* <var_bound:MType> isa MNullableType */
4286 cltype78
= type_model__MNullableType
.color
;
4287 idtype79
= type_model__MNullableType
.id
;
4288 if(cltype78
>= var_bound
->type
->table_size
) {
4291 var77
= var_bound
->type
->type_table
[cltype78
] == idtype79
;
4294 var80
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_model__MClass__intro
]))(var_mclass
) /* intro on <var_mclass:MClass>*/;
4295 var81
= ((val
* (*)(val
*))(var80
->class->vft
[COLOR_model__MClassDef__bound_mtype
]))(var80
) /* bound_mtype on <var80:MClassDef>*/;
4296 var82
= ((val
* (*)(val
*))(var_bound
->class->vft
[COLOR_model__MNullableType__mtype
]))(var_bound
) /* mtype on <var_bound:MType(MNullableType)>*/;
4297 var83
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__retrieve_vt_bound
]))(self
, var81
, var82
) /* retrieve_vt_bound on <self:SeparateErasureCompiler>*/;
4300 var_is_null
= var84
;
4301 CONTINUE_label
: (void)0;
4303 BREAK_label
: (void)0;
4304 /* <var_bound:MType> isa MClassType */
4305 cltype86
= type_model__MClassType
.color
;
4306 idtype87
= type_model__MClassType
.id
;
4307 if(cltype86
>= var_bound
->type
->table_size
) {
4310 var85
= var_bound
->type
->type_table
[cltype86
] == idtype87
;
4313 var_class_name88
= var_bound
== NULL ?
"null" : var_bound
->type
->name
;
4314 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name88
);
4315 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 365);
4318 var89
= ((val
* (*)(val
*))(var_bound
->class->vft
[COLOR_model__MClassType__mclass
]))(var_bound
) /* mclass on <var_bound:MType(MClassType)>*/;
4319 var_vtclass
= var89
;
4325 var94
= string__NativeString__to_s_with_length(var92
, var93
);
4329 var95
= ((val
* (*)(val
*))(var_vtclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_vtclass
) /* c_name on <var_vtclass:MClass>*/;
4330 var96
= NEW_array__Array(&type_array__Arraykernel__Object
);
4331 { /* var96 = array_instance Array[Object] */
4333 var98
= NEW_array__NativeArray(var97
, &type_array__NativeArraykernel__Object
);
4334 ((struct instance_array__NativeArray
*)var98
)->values
[0] = (val
*) var91
;
4335 ((struct instance_array__NativeArray
*)var98
)->values
[1] = (val
*) var95
;
4336 ((void (*)(val
*, val
*, long))(var96
->class->vft
[COLOR_array__Array__with_native
]))(var96
, var98
, var97
) /* with_native on <var96:Array[Object]>*/;
4337 CHECK_NEW_array__Array(var96
);
4339 var99
= ((val
* (*)(val
*))(var96
->class->vft
[COLOR_string__Object__to_s
]))(var96
) /* to_s on <var96:Array[Object]>*/;
4340 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(var_v
, var99
) /* require_declaration on <var_v:SeparateCompilerVisitor>*/;
4342 var101
= varonce100
;
4346 var104
= string__NativeString__to_s_with_length(var102
, var103
);
4348 varonce100
= var101
;
4351 var106
= varonce105
;
4353 var107
= ", &class_";
4355 var109
= string__NativeString__to_s_with_length(var107
, var108
);
4357 varonce105
= var106
;
4359 var110
= ((val
* (*)(val
*))(var_vtclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_vtclass
) /* c_name on <var_vtclass:MClass>*/;
4361 var112
= varonce111
;
4365 var115
= string__NativeString__to_s_with_length(var113
, var114
);
4367 varonce111
= var112
;
4370 var117
= varonce116
;
4374 var120
= string__NativeString__to_s_with_length(var118
, var119
);
4376 varonce116
= var117
;
4378 var121
= NEW_array__Array(&type_array__Arraykernel__Object
);
4379 { /* var121 = array_instance Array[Object] */
4381 var123
= NEW_array__NativeArray(var122
, &type_array__NativeArraykernel__Object
);
4382 ((struct instance_array__NativeArray
*)var123
)->values
[0] = (val
*) var101
;
4383 var124
= BOX_kernel__Int(var_is_null
); /* autobox from Int to Object */
4384 ((struct instance_array__NativeArray
*)var123
)->values
[1] = (val
*) var124
;
4385 ((struct instance_array__NativeArray
*)var123
)->values
[2] = (val
*) var106
;
4386 ((struct instance_array__NativeArray
*)var123
)->values
[3] = (val
*) var110
;
4387 ((struct instance_array__NativeArray
*)var123
)->values
[4] = (val
*) var112
;
4388 ((struct instance_array__NativeArray
*)var123
)->values
[5] = (val
*) var_vt
;
4389 ((struct instance_array__NativeArray
*)var123
)->values
[6] = (val
*) var117
;
4390 ((void (*)(val
*, val
*, long))(var121
->class->vft
[COLOR_array__Array__with_native
]))(var121
, var123
, var122
) /* with_native on <var121:Array[Object]>*/;
4391 CHECK_NEW_array__Array(var121
);
4393 var125
= ((val
* (*)(val
*))(var121
->class->vft
[COLOR_string__Object__to_s
]))(var121
) /* to_s on <var121:Array[Object]>*/;
4394 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var125
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4396 CONTINUE_label126
: (void)0;
4397 ((void (*)(val
*))(var59
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var59
) /* next on <var59:Iterator[nullable Object]>*/;
4399 BREAK_label126
: (void)0;
4401 var128
= varonce127
;
4405 var131
= string__NativeString__to_s_with_length(var129
, var130
);
4407 varonce127
= var128
;
4409 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var128
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4411 var133
= varonce132
;
4415 var136
= string__NativeString__to_s_with_length(var134
, var135
);
4417 varonce132
= var133
;
4419 ((void (*)(val
*, val
*))(var_v
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(var_v
, var133
) /* add_decl on <var_v:SeparateCompilerVisitor>*/;
4426 /* method separate_erasure_compiler#SeparateErasureCompiler#build_class_vts_table for (self: Object, MClass): Bool */
4427 short int VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__build_class_vts_table(val
* self
, val
* p0
) {
4428 short int var
/* : Bool */;
4429 short int var1
/* : Bool */;
4430 var1
= separate_erasure_compiler__SeparateErasureCompiler__build_class_vts_table(self
, p0
);
4435 /* method separate_erasure_compiler#SeparateErasureCompiler#retrieve_vt_bound for (self: SeparateErasureCompiler, MClassType, nullable MType): MType */
4436 val
* separate_erasure_compiler__SeparateErasureCompiler__retrieve_vt_bound(val
* self
, val
* p0
, val
* p1
) {
4437 val
* var
/* : MType */;
4438 val
* var_anchor
/* var anchor: MClassType */;
4439 val
* var_mtype
/* var mtype: nullable MType */;
4440 val
* var1
/* : null */;
4441 short int var2
/* : Bool */;
4442 static val
* varonce
;
4443 val
* var3
/* : String */;
4444 char* var4
/* : NativeString */;
4445 long var5
/* : Int */;
4446 val
* var6
/* : String */;
4447 short int var7
/* : Bool */;
4450 val
* var8
/* : MModule */;
4451 val
* var9
/* : MType */;
4452 short int var10
/* : Bool */;
4455 val
* var13
/* : MModule */;
4456 val
* var14
/* : MType */;
4460 if (var_mtype
== NULL
) {
4461 var2
= 1; /* is null */
4463 var2
= 0; /* arg is null but recv is not */
4469 var4
= "NOT YET IMPLEMENTED: retrieve_vt_bound on null";
4471 var6
= string__NativeString__to_s_with_length(var4
, var5
);
4475 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var3
) /* print on <self:SeparateErasureCompiler>*/;
4476 fprintf(stderr
, "Runtime error: %s", "Aborted");
4477 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 378);
4481 /* <var_mtype:nullable MType(MType)> isa MVirtualType */
4482 cltype
= type_model__MVirtualType
.color
;
4483 idtype
= type_model__MVirtualType
.id
;
4484 if(cltype
>= var_mtype
->type
->table_size
) {
4487 var7
= var_mtype
->type
->type_table
[cltype
] == idtype
;
4490 var8
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__mainmodule
]))(self
) /* mainmodule on <self:SeparateErasureCompiler>*/;
4491 var9
= ((val
* (*)(val
*, val
*, val
*))(var_mtype
->class->vft
[COLOR_model__MType__anchor_to
]))(var_mtype
, var8
, var_anchor
) /* anchor_to on <var_mtype:nullable MType(MVirtualType)>*/;
4495 /* <var_mtype:nullable MType(MType)> isa MParameterType */
4496 cltype11
= type_model__MParameterType
.color
;
4497 idtype12
= type_model__MParameterType
.id
;
4498 if(cltype11
>= var_mtype
->type
->table_size
) {
4501 var10
= var_mtype
->type
->type_table
[cltype11
] == idtype12
;
4504 var13
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__mainmodule
]))(self
) /* mainmodule on <self:SeparateErasureCompiler>*/;
4505 var14
= ((val
* (*)(val
*, val
*, val
*))(var_mtype
->class->vft
[COLOR_model__MType__anchor_to
]))(var_mtype
, var13
, var_anchor
) /* anchor_to on <var_mtype:nullable MType(MParameterType)>*/;
4516 /* method separate_erasure_compiler#SeparateErasureCompiler#retrieve_vt_bound for (self: Object, MClassType, nullable MType): MType */
4517 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__retrieve_vt_bound(val
* self
, val
* p0
, val
* p1
) {
4518 val
* var
/* : MType */;
4519 val
* var1
/* : MType */;
4520 var1
= separate_erasure_compiler__SeparateErasureCompiler__retrieve_vt_bound(self
, p0
, p1
);
4525 /* method separate_erasure_compiler#SeparateErasureCompiler#new_visitor for (self: SeparateErasureCompiler): SeparateCompilerVisitor */
4526 val
* separate_erasure_compiler__SeparateErasureCompiler__new_visitor(val
* self
) {
4527 val
* var
/* : SeparateCompilerVisitor */;
4528 val
* var1
/* : SeparateErasureCompilerVisitor */;
4529 short int var2
/* : Bool */;
4532 const struct type
* type_struct
;
4533 const char* var_class_name
;
4534 var1
= NEW_separate_erasure_compiler__SeparateErasureCompilerVisitor(&type_separate_erasure_compiler__SeparateErasureCompilerVisitor
);
4535 ((void (*)(val
*, val
*))(var1
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__init
]))(var1
, self
) /* init on <var1:SeparateErasureCompilerVisitor>*/;
4536 CHECK_NEW_separate_erasure_compiler__SeparateErasureCompilerVisitor(var1
);
4537 /* <var1:SeparateErasureCompilerVisitor> isa VISITOR */
4538 type_struct
= self
->type
->resolution_table
->types
[COLOR_abstract_compiler__AbstractCompiler_VTVISITOR
];
4539 cltype
= type_struct
->color
;
4540 idtype
= type_struct
->id
;
4541 if(cltype
>= var1
->type
->table_size
) {
4544 var2
= var1
->type
->type_table
[cltype
] == idtype
;
4547 var_class_name
= var1
== NULL ?
"null" : var1
->type
->name
;
4548 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "VISITOR", var_class_name
);
4549 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 389);
4557 /* method separate_erasure_compiler#SeparateErasureCompiler#new_visitor for (self: Object): AbstractCompilerVisitor */
4558 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__new_visitor(val
* self
) {
4559 val
* var
/* : AbstractCompilerVisitor */;
4560 val
* var1
/* : SeparateCompilerVisitor */;
4561 var1
= separate_erasure_compiler__SeparateErasureCompiler__new_visitor(self
);
4566 /* method separate_erasure_compiler#SeparateErasureCompiler#class_tables for (self: SeparateErasureCompiler): Map[MClass, Array[nullable MClass]] */
4567 val
* separate_erasure_compiler__SeparateErasureCompiler__class_tables(val
* self
) {
4568 val
* var
/* : Map[MClass, Array[nullable MClass]] */;
4569 val
* var1
/* : Map[MClass, Array[nullable MClass]] */;
4570 var1
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___64dclass_tables
].val
; /* @class_tables on <self:SeparateErasureCompiler> */
4572 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @class_tables");
4573 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 393);
4580 /* method separate_erasure_compiler#SeparateErasureCompiler#class_tables for (self: Object): Map[MClass, Array[nullable MClass]] */
4581 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_tables(val
* self
) {
4582 val
* var
/* : Map[MClass, Array[nullable MClass]] */;
4583 val
* var1
/* : Map[MClass, Array[nullable MClass]] */;
4584 var1
= separate_erasure_compiler__SeparateErasureCompiler__class_tables(self
);
4589 /* method separate_erasure_compiler#SeparateErasureCompiler#class_tables= for (self: SeparateErasureCompiler, Map[MClass, Array[nullable MClass]]) */
4590 void separate_erasure_compiler__SeparateErasureCompiler__class_tables_61d(val
* self
, val
* p0
) {
4591 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___64dclass_tables
].val
= p0
; /* @class_tables on <self:SeparateErasureCompiler> */
4594 /* method separate_erasure_compiler#SeparateErasureCompiler#class_tables= for (self: Object, Map[MClass, Array[nullable MClass]]) */
4595 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__class_tables_61d(val
* self
, val
* p0
) {
4596 separate_erasure_compiler__SeparateErasureCompiler__class_tables_61d(self
, p0
);
4599 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_tables for (self: SeparateErasureCompiler): Map[MClass, Array[nullable MPropDef]] */
4600 val
* separate_erasure_compiler__SeparateErasureCompiler__vt_tables(val
* self
) {
4601 val
* var
/* : Map[MClass, Array[nullable MPropDef]] */;
4602 val
* var1
/* : Map[MClass, Array[nullable MPropDef]] */;
4603 var1
= self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___64dvt_tables
].val
; /* @vt_tables on <self:SeparateErasureCompiler> */
4605 fprintf(stderr
, "Runtime error: %s", "Uninitialized attribute @vt_tables");
4606 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 394);
4613 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_tables for (self: Object): Map[MClass, Array[nullable MPropDef]] */
4614 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__vt_tables(val
* self
) {
4615 val
* var
/* : Map[MClass, Array[nullable MPropDef]] */;
4616 val
* var1
/* : Map[MClass, Array[nullable MPropDef]] */;
4617 var1
= separate_erasure_compiler__SeparateErasureCompiler__vt_tables(self
);
4622 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_tables= for (self: SeparateErasureCompiler, Map[MClass, Array[nullable MPropDef]]) */
4623 void separate_erasure_compiler__SeparateErasureCompiler__vt_tables_61d(val
* self
, val
* p0
) {
4624 self
->attrs
[COLOR_separate_erasure_compiler__SeparateErasureCompiler___64dvt_tables
].val
= p0
; /* @vt_tables on <self:SeparateErasureCompiler> */
4627 /* method separate_erasure_compiler#SeparateErasureCompiler#vt_tables= for (self: Object, Map[MClass, Array[nullable MPropDef]]) */
4628 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__vt_tables_61d(val
* self
, val
* p0
) {
4629 separate_erasure_compiler__SeparateErasureCompiler__vt_tables_61d(self
, p0
);
4632 /* method separate_erasure_compiler#SeparateErasureCompiler#display_sizes for (self: SeparateErasureCompiler) */
4633 void separate_erasure_compiler__SeparateErasureCompiler__display_sizes(val
* self
) {
4634 static val
* varonce
;
4635 val
* var
/* : String */;
4636 char* var1
/* : NativeString */;
4637 long var2
/* : Int */;
4638 val
* var3
/* : String */;
4639 static val
* varonce4
;
4640 val
* var5
/* : String */;
4641 char* var6
/* : NativeString */;
4642 long var7
/* : Int */;
4643 val
* var8
/* : String */;
4644 long var9
/* : Int */;
4645 long var_total
/* var total: Int */;
4646 long var10
/* : Int */;
4647 long var_holes
/* var holes: Int */;
4648 val
* var11
/* : Map[MClass, Array[nullable MClass]] */;
4649 val
* var12
/* : MapIterator[Object, nullable Object] */;
4650 short int var13
/* : Bool */;
4651 val
* var14
/* : Object */;
4652 val
* var_t
/* var t: MClass */;
4653 val
* var15
/* : nullable Object */;
4654 val
* var_table
/* var table: Array[nullable MClass] */;
4655 long var16
/* : Int */;
4656 long var17
/* : Int */;
4657 long var19
/* : Int */;
4658 val
* var20
/* : Iterator[nullable Object] */;
4659 short int var21
/* : Bool */;
4660 val
* var22
/* : nullable Object */;
4661 val
* var_e
/* var e: nullable MClass */;
4662 val
* var23
/* : null */;
4663 short int var24
/* : Bool */;
4664 long var25
/* : Int */;
4665 long var26
/* : Int */;
4666 long var28
/* : Int */;
4667 static val
* varonce30
;
4668 val
* var31
/* : String */;
4669 char* var32
/* : NativeString */;
4670 long var33
/* : Int */;
4671 val
* var34
/* : String */;
4672 static val
* varonce35
;
4673 val
* var36
/* : String */;
4674 char* var37
/* : NativeString */;
4675 long var38
/* : Int */;
4676 val
* var39
/* : String */;
4677 val
* var40
/* : Array[Object] */;
4678 long var41
/* : Int */;
4679 val
* var42
/* : NativeArray[Object] */;
4680 val
* var43
/* : Object */;
4681 val
* var44
/* : Object */;
4682 val
* var45
/* : String */;
4683 static val
* varonce46
;
4684 val
* var47
/* : String */;
4685 char* var48
/* : NativeString */;
4686 long var49
/* : Int */;
4687 val
* var50
/* : String */;
4688 static val
* varonce51
;
4689 val
* var52
/* : String */;
4690 char* var53
/* : NativeString */;
4691 long var54
/* : Int */;
4692 val
* var55
/* : String */;
4693 long var56
/* : Int */;
4694 long var57
/* : Int */;
4695 val
* var58
/* : Map[MClass, Array[nullable MPropDef]] */;
4696 val
* var59
/* : MapIterator[Object, nullable Object] */;
4697 short int var60
/* : Bool */;
4698 val
* var61
/* : Object */;
4699 val
* var_t62
/* var t: MClass */;
4700 val
* var63
/* : nullable Object */;
4701 val
* var_table64
/* var table: Array[nullable MPropDef] */;
4702 long var65
/* : Int */;
4703 long var66
/* : Int */;
4704 long var68
/* : Int */;
4705 val
* var69
/* : Iterator[nullable Object] */;
4706 short int var70
/* : Bool */;
4707 val
* var71
/* : nullable Object */;
4708 val
* var_e72
/* var e: nullable MPropDef */;
4709 val
* var73
/* : null */;
4710 short int var74
/* : Bool */;
4711 long var75
/* : Int */;
4712 long var76
/* : Int */;
4713 long var78
/* : Int */;
4714 static val
* varonce81
;
4715 val
* var82
/* : String */;
4716 char* var83
/* : NativeString */;
4717 long var84
/* : Int */;
4718 val
* var85
/* : String */;
4719 static val
* varonce86
;
4720 val
* var87
/* : String */;
4721 char* var88
/* : NativeString */;
4722 long var89
/* : Int */;
4723 val
* var90
/* : String */;
4724 val
* var91
/* : Array[Object] */;
4725 long var92
/* : Int */;
4726 val
* var93
/* : NativeArray[Object] */;
4727 val
* var94
/* : Object */;
4728 val
* var95
/* : Object */;
4729 val
* var96
/* : String */;
4730 static val
* varonce97
;
4731 val
* var98
/* : String */;
4732 char* var99
/* : NativeString */;
4733 long var100
/* : Int */;
4734 val
* var101
/* : String */;
4735 static val
* varonce102
;
4736 val
* var103
/* : String */;
4737 char* var104
/* : NativeString */;
4738 long var105
/* : Int */;
4739 val
* var106
/* : String */;
4740 long var107
/* : Int */;
4741 long var108
/* : Int */;
4742 val
* var109
/* : Map[MClass, Array[nullable MPropDef]] */;
4743 val
* var110
/* : MapIterator[Object, nullable Object] */;
4744 short int var111
/* : Bool */;
4745 val
* var112
/* : Object */;
4746 val
* var_t113
/* var t: MClass */;
4747 val
* var114
/* : nullable Object */;
4748 val
* var_table115
/* var table: Array[nullable MPropDef] */;
4749 long var116
/* : Int */;
4750 long var117
/* : Int */;
4751 long var119
/* : Int */;
4752 val
* var120
/* : Iterator[nullable Object] */;
4753 short int var121
/* : Bool */;
4754 val
* var122
/* : nullable Object */;
4755 val
* var_e123
/* var e: nullable MPropDef */;
4756 val
* var124
/* : null */;
4757 short int var125
/* : Bool */;
4758 long var126
/* : Int */;
4759 long var127
/* : Int */;
4760 long var129
/* : Int */;
4761 static val
* varonce132
;
4762 val
* var133
/* : String */;
4763 char* var134
/* : NativeString */;
4764 long var135
/* : Int */;
4765 val
* var136
/* : String */;
4766 static val
* varonce137
;
4767 val
* var138
/* : String */;
4768 char* var139
/* : NativeString */;
4769 long var140
/* : Int */;
4770 val
* var141
/* : String */;
4771 val
* var142
/* : Array[Object] */;
4772 long var143
/* : Int */;
4773 val
* var144
/* : NativeArray[Object] */;
4774 val
* var145
/* : Object */;
4775 val
* var146
/* : Object */;
4776 val
* var147
/* : String */;
4777 static val
* varonce148
;
4778 val
* var149
/* : String */;
4779 char* var150
/* : NativeString */;
4780 long var151
/* : Int */;
4781 val
* var152
/* : String */;
4782 static val
* varonce153
;
4783 val
* var154
/* : String */;
4784 char* var155
/* : NativeString */;
4785 long var156
/* : Int */;
4786 val
* var157
/* : String */;
4787 long var158
/* : Int */;
4788 long var159
/* : Int */;
4789 val
* var160
/* : Map[MClass, Array[nullable MPropDef]] */;
4790 val
* var161
/* : MapIterator[Object, nullable Object] */;
4791 short int var162
/* : Bool */;
4792 val
* var163
/* : Object */;
4793 val
* var_t164
/* var t: MClass */;
4794 val
* var165
/* : nullable Object */;
4795 val
* var_table166
/* var table: Array[nullable MPropDef] */;
4796 long var167
/* : Int */;
4797 long var168
/* : Int */;
4798 long var170
/* : Int */;
4799 val
* var171
/* : Iterator[nullable Object] */;
4800 short int var172
/* : Bool */;
4801 val
* var173
/* : nullable Object */;
4802 val
* var_e174
/* var e: nullable MPropDef */;
4803 val
* var175
/* : null */;
4804 short int var176
/* : Bool */;
4805 long var177
/* : Int */;
4806 long var178
/* : Int */;
4807 long var180
/* : Int */;
4808 static val
* varonce183
;
4809 val
* var184
/* : String */;
4810 char* var185
/* : NativeString */;
4811 long var186
/* : Int */;
4812 val
* var187
/* : String */;
4813 static val
* varonce188
;
4814 val
* var189
/* : String */;
4815 char* var190
/* : NativeString */;
4816 long var191
/* : Int */;
4817 val
* var192
/* : String */;
4818 val
* var193
/* : Array[Object] */;
4819 long var194
/* : Int */;
4820 val
* var195
/* : NativeArray[Object] */;
4821 val
* var196
/* : Object */;
4822 val
* var197
/* : Object */;
4823 val
* var198
/* : String */;
4827 var1
= "# size of subtyping tables";
4829 var3
= string__NativeString__to_s_with_length(var1
, var2
);
4833 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var
) /* print on <self:SeparateErasureCompiler>*/;
4837 var6
= "\11total \11holes";
4839 var8
= string__NativeString__to_s_with_length(var6
, var7
);
4843 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var5
) /* print on <self:SeparateErasureCompiler>*/;
4848 var11
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__class_tables
]))(self
) /* class_tables on <self:SeparateErasureCompiler>*/;
4849 var12
= ((val
* (*)(val
*))(var11
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var11
) /* iterator on <var11:Map[MClass, Array[nullable MClass]]>*/;
4851 var13
= ((short int (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var12
) /* is_ok on <var12:MapIterator[Object, nullable Object]>*/;
4853 var14
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var12
) /* key on <var12:MapIterator[Object, nullable Object]>*/;
4855 var15
= ((val
* (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var12
) /* item on <var12:MapIterator[Object, nullable Object]>*/;
4857 var16
= ((long (*)(val
*))(var_table
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_table
) /* length on <var_table:Array[nullable MClass]>*/;
4858 { /* Inline kernel#Int#+ (var_total,var16) */
4859 var19
= var_total
+ var16
;
4862 RET_LABEL18
:(void)0;
4865 var20
= ((val
* (*)(val
*))(var_table
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_table
) /* iterator on <var_table:Array[nullable MClass]>*/;
4867 var21
= ((short int (*)(val
*))(var20
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var20
) /* is_ok on <var20:Iterator[nullable Object]>*/;
4869 var22
= ((val
* (*)(val
*))(var20
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var20
) /* item on <var20:Iterator[nullable Object]>*/;
4872 if (var_e
== NULL
) {
4873 var24
= 1; /* is null */
4875 var24
= 0; /* arg is null but recv is not */
4879 { /* Inline kernel#Int#+ (var_holes,var25) */
4880 var28
= var_holes
+ var25
;
4883 RET_LABEL27
:(void)0;
4888 CONTINUE_label
: (void)0;
4889 ((void (*)(val
*))(var20
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var20
) /* next on <var20:Iterator[nullable Object]>*/;
4891 BREAK_label
: (void)0;
4892 CONTINUE_label29
: (void)0;
4893 ((void (*)(val
*))(var12
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var12
) /* next on <var12:MapIterator[Object, nullable Object]>*/;
4895 BREAK_label29
: (void)0;
4901 var34
= string__NativeString__to_s_with_length(var32
, var33
);
4910 var39
= string__NativeString__to_s_with_length(var37
, var38
);
4914 var40
= NEW_array__Array(&type_array__Arraykernel__Object
);
4915 { /* var40 = array_instance Array[Object] */
4917 var42
= NEW_array__NativeArray(var41
, &type_array__NativeArraykernel__Object
);
4918 ((struct instance_array__NativeArray
*)var42
)->values
[0] = (val
*) var31
;
4919 var43
= BOX_kernel__Int(var_total
); /* autobox from Int to Object */
4920 ((struct instance_array__NativeArray
*)var42
)->values
[1] = (val
*) var43
;
4921 ((struct instance_array__NativeArray
*)var42
)->values
[2] = (val
*) var36
;
4922 var44
= BOX_kernel__Int(var_holes
); /* autobox from Int to Object */
4923 ((struct instance_array__NativeArray
*)var42
)->values
[3] = (val
*) var44
;
4924 ((void (*)(val
*, val
*, long))(var40
->class->vft
[COLOR_array__Array__with_native
]))(var40
, var42
, var41
) /* with_native on <var40:Array[Object]>*/;
4925 CHECK_NEW_array__Array(var40
);
4927 var45
= ((val
* (*)(val
*))(var40
->class->vft
[COLOR_string__Object__to_s
]))(var40
) /* to_s on <var40:Array[Object]>*/;
4928 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var45
) /* print on <self:SeparateErasureCompiler>*/;
4932 var48
= "# size of resolution tables";
4934 var50
= string__NativeString__to_s_with_length(var48
, var49
);
4938 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var47
) /* print on <self:SeparateErasureCompiler>*/;
4942 var53
= "\11total \11holes";
4944 var55
= string__NativeString__to_s_with_length(var53
, var54
);
4948 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var52
) /* print on <self:SeparateErasureCompiler>*/;
4953 var58
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__vt_tables
]))(self
) /* vt_tables on <self:SeparateErasureCompiler>*/;
4954 var59
= ((val
* (*)(val
*))(var58
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var58
) /* iterator on <var58:Map[MClass, Array[nullable MPropDef]]>*/;
4956 var60
= ((short int (*)(val
*))(var59
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var59
) /* is_ok on <var59:MapIterator[Object, nullable Object]>*/;
4958 var61
= ((val
* (*)(val
*))(var59
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var59
) /* key on <var59:MapIterator[Object, nullable Object]>*/;
4960 var63
= ((val
* (*)(val
*))(var59
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var59
) /* item on <var59:MapIterator[Object, nullable Object]>*/;
4961 var_table64
= var63
;
4962 var65
= ((long (*)(val
*))(var_table64
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_table64
) /* length on <var_table64:Array[nullable MPropDef]>*/;
4963 { /* Inline kernel#Int#+ (var_total,var65) */
4964 var68
= var_total
+ var65
;
4967 RET_LABEL67
:(void)0;
4970 var69
= ((val
* (*)(val
*))(var_table64
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_table64
) /* iterator on <var_table64:Array[nullable MPropDef]>*/;
4972 var70
= ((short int (*)(val
*))(var69
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var69
) /* is_ok on <var69:Iterator[nullable Object]>*/;
4974 var71
= ((val
* (*)(val
*))(var69
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var69
) /* item on <var69:Iterator[nullable Object]>*/;
4977 if (var_e72
== NULL
) {
4978 var74
= 1; /* is null */
4980 var74
= 0; /* arg is null but recv is not */
4984 { /* Inline kernel#Int#+ (var_holes,var75) */
4985 var78
= var_holes
+ var75
;
4988 RET_LABEL77
:(void)0;
4993 CONTINUE_label79
: (void)0;
4994 ((void (*)(val
*))(var69
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var69
) /* next on <var69:Iterator[nullable Object]>*/;
4996 BREAK_label79
: (void)0;
4997 CONTINUE_label80
: (void)0;
4998 ((void (*)(val
*))(var59
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var59
) /* next on <var59:MapIterator[Object, nullable Object]>*/;
5000 BREAK_label80
: (void)0;
5006 var85
= string__NativeString__to_s_with_length(var83
, var84
);
5015 var90
= string__NativeString__to_s_with_length(var88
, var89
);
5019 var91
= NEW_array__Array(&type_array__Arraykernel__Object
);
5020 { /* var91 = array_instance Array[Object] */
5022 var93
= NEW_array__NativeArray(var92
, &type_array__NativeArraykernel__Object
);
5023 ((struct instance_array__NativeArray
*)var93
)->values
[0] = (val
*) var82
;
5024 var94
= BOX_kernel__Int(var_total
); /* autobox from Int to Object */
5025 ((struct instance_array__NativeArray
*)var93
)->values
[1] = (val
*) var94
;
5026 ((struct instance_array__NativeArray
*)var93
)->values
[2] = (val
*) var87
;
5027 var95
= BOX_kernel__Int(var_holes
); /* autobox from Int to Object */
5028 ((struct instance_array__NativeArray
*)var93
)->values
[3] = (val
*) var95
;
5029 ((void (*)(val
*, val
*, long))(var91
->class->vft
[COLOR_array__Array__with_native
]))(var91
, var93
, var92
) /* with_native on <var91:Array[Object]>*/;
5030 CHECK_NEW_array__Array(var91
);
5032 var96
= ((val
* (*)(val
*))(var91
->class->vft
[COLOR_string__Object__to_s
]))(var91
) /* to_s on <var91:Array[Object]>*/;
5033 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var96
) /* print on <self:SeparateErasureCompiler>*/;
5037 var99
= "# size of methods tables";
5039 var101
= string__NativeString__to_s_with_length(var99
, var100
);
5043 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var98
) /* print on <self:SeparateErasureCompiler>*/;
5045 var103
= varonce102
;
5047 var104
= "\11total \11holes";
5049 var106
= string__NativeString__to_s_with_length(var104
, var105
);
5051 varonce102
= var103
;
5053 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var103
) /* print on <self:SeparateErasureCompiler>*/;
5058 var109
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_compiler__SeparateCompiler__method_tables
]))(self
) /* method_tables on <self:SeparateErasureCompiler>*/;
5059 var110
= ((val
* (*)(val
*))(var109
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var109
) /* iterator on <var109:Map[MClass, Array[nullable MPropDef]]>*/;
5061 var111
= ((short int (*)(val
*))(var110
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var110
) /* is_ok on <var110:MapIterator[Object, nullable Object]>*/;
5063 var112
= ((val
* (*)(val
*))(var110
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var110
) /* key on <var110:MapIterator[Object, nullable Object]>*/;
5065 var114
= ((val
* (*)(val
*))(var110
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var110
) /* item on <var110:MapIterator[Object, nullable Object]>*/;
5066 var_table115
= var114
;
5067 var116
= ((long (*)(val
*))(var_table115
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_table115
) /* length on <var_table115:Array[nullable MPropDef]>*/;
5068 { /* Inline kernel#Int#+ (var_total,var116) */
5069 var119
= var_total
+ var116
;
5072 RET_LABEL118
:(void)0;
5075 var120
= ((val
* (*)(val
*))(var_table115
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_table115
) /* iterator on <var_table115:Array[nullable MPropDef]>*/;
5077 var121
= ((short int (*)(val
*))(var120
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var120
) /* is_ok on <var120:Iterator[nullable Object]>*/;
5079 var122
= ((val
* (*)(val
*))(var120
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var120
) /* item on <var120:Iterator[nullable Object]>*/;
5082 if (var_e123
== NULL
) {
5083 var125
= 1; /* is null */
5085 var125
= 0; /* arg is null but recv is not */
5089 { /* Inline kernel#Int#+ (var_holes,var126) */
5090 var129
= var_holes
+ var126
;
5093 RET_LABEL128
:(void)0;
5098 CONTINUE_label130
: (void)0;
5099 ((void (*)(val
*))(var120
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var120
) /* next on <var120:Iterator[nullable Object]>*/;
5101 BREAK_label130
: (void)0;
5102 CONTINUE_label131
: (void)0;
5103 ((void (*)(val
*))(var110
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var110
) /* next on <var110:MapIterator[Object, nullable Object]>*/;
5105 BREAK_label131
: (void)0;
5107 var133
= varonce132
;
5111 var136
= string__NativeString__to_s_with_length(var134
, var135
);
5113 varonce132
= var133
;
5116 var138
= varonce137
;
5120 var141
= string__NativeString__to_s_with_length(var139
, var140
);
5122 varonce137
= var138
;
5124 var142
= NEW_array__Array(&type_array__Arraykernel__Object
);
5125 { /* var142 = array_instance Array[Object] */
5127 var144
= NEW_array__NativeArray(var143
, &type_array__NativeArraykernel__Object
);
5128 ((struct instance_array__NativeArray
*)var144
)->values
[0] = (val
*) var133
;
5129 var145
= BOX_kernel__Int(var_total
); /* autobox from Int to Object */
5130 ((struct instance_array__NativeArray
*)var144
)->values
[1] = (val
*) var145
;
5131 ((struct instance_array__NativeArray
*)var144
)->values
[2] = (val
*) var138
;
5132 var146
= BOX_kernel__Int(var_holes
); /* autobox from Int to Object */
5133 ((struct instance_array__NativeArray
*)var144
)->values
[3] = (val
*) var146
;
5134 ((void (*)(val
*, val
*, long))(var142
->class->vft
[COLOR_array__Array__with_native
]))(var142
, var144
, var143
) /* with_native on <var142:Array[Object]>*/;
5135 CHECK_NEW_array__Array(var142
);
5137 var147
= ((val
* (*)(val
*))(var142
->class->vft
[COLOR_string__Object__to_s
]))(var142
) /* to_s on <var142:Array[Object]>*/;
5138 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var147
) /* print on <self:SeparateErasureCompiler>*/;
5140 var149
= varonce148
;
5142 var150
= "# size of attributes tables";
5144 var152
= string__NativeString__to_s_with_length(var150
, var151
);
5146 varonce148
= var149
;
5148 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var149
) /* print on <self:SeparateErasureCompiler>*/;
5150 var154
= varonce153
;
5152 var155
= "\11total \11holes";
5154 var157
= string__NativeString__to_s_with_length(var155
, var156
);
5156 varonce153
= var154
;
5158 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var154
) /* print on <self:SeparateErasureCompiler>*/;
5163 var160
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_separate_compiler__SeparateCompiler__attr_tables
]))(self
) /* attr_tables on <self:SeparateErasureCompiler>*/;
5164 var161
= ((val
* (*)(val
*))(var160
->class->vft
[COLOR_abstract_collection__MapRead__iterator
]))(var160
) /* iterator on <var160:Map[MClass, Array[nullable MPropDef]]>*/;
5166 var162
= ((short int (*)(val
*))(var161
->class->vft
[COLOR_abstract_collection__MapIterator__is_ok
]))(var161
) /* is_ok on <var161:MapIterator[Object, nullable Object]>*/;
5168 var163
= ((val
* (*)(val
*))(var161
->class->vft
[COLOR_abstract_collection__MapIterator__key
]))(var161
) /* key on <var161:MapIterator[Object, nullable Object]>*/;
5170 var165
= ((val
* (*)(val
*))(var161
->class->vft
[COLOR_abstract_collection__MapIterator__item
]))(var161
) /* item on <var161:MapIterator[Object, nullable Object]>*/;
5171 var_table166
= var165
;
5172 var167
= ((long (*)(val
*))(var_table166
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_table166
) /* length on <var_table166:Array[nullable MPropDef]>*/;
5173 { /* Inline kernel#Int#+ (var_total,var167) */
5174 var170
= var_total
+ var167
;
5177 RET_LABEL169
:(void)0;
5180 var171
= ((val
* (*)(val
*))(var_table166
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var_table166
) /* iterator on <var_table166:Array[nullable MPropDef]>*/;
5182 var172
= ((short int (*)(val
*))(var171
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var171
) /* is_ok on <var171:Iterator[nullable Object]>*/;
5184 var173
= ((val
* (*)(val
*))(var171
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var171
) /* item on <var171:Iterator[nullable Object]>*/;
5187 if (var_e174
== NULL
) {
5188 var176
= 1; /* is null */
5190 var176
= 0; /* arg is null but recv is not */
5194 { /* Inline kernel#Int#+ (var_holes,var177) */
5195 var180
= var_holes
+ var177
;
5198 RET_LABEL179
:(void)0;
5203 CONTINUE_label181
: (void)0;
5204 ((void (*)(val
*))(var171
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var171
) /* next on <var171:Iterator[nullable Object]>*/;
5206 BREAK_label181
: (void)0;
5207 CONTINUE_label182
: (void)0;
5208 ((void (*)(val
*))(var161
->class->vft
[COLOR_abstract_collection__MapIterator__next
]))(var161
) /* next on <var161:MapIterator[Object, nullable Object]>*/;
5210 BREAK_label182
: (void)0;
5212 var184
= varonce183
;
5216 var187
= string__NativeString__to_s_with_length(var185
, var186
);
5218 varonce183
= var184
;
5221 var189
= varonce188
;
5225 var192
= string__NativeString__to_s_with_length(var190
, var191
);
5227 varonce188
= var189
;
5229 var193
= NEW_array__Array(&type_array__Arraykernel__Object
);
5230 { /* var193 = array_instance Array[Object] */
5232 var195
= NEW_array__NativeArray(var194
, &type_array__NativeArraykernel__Object
);
5233 ((struct instance_array__NativeArray
*)var195
)->values
[0] = (val
*) var184
;
5234 var196
= BOX_kernel__Int(var_total
); /* autobox from Int to Object */
5235 ((struct instance_array__NativeArray
*)var195
)->values
[1] = (val
*) var196
;
5236 ((struct instance_array__NativeArray
*)var195
)->values
[2] = (val
*) var189
;
5237 var197
= BOX_kernel__Int(var_holes
); /* autobox from Int to Object */
5238 ((struct instance_array__NativeArray
*)var195
)->values
[3] = (val
*) var197
;
5239 ((void (*)(val
*, val
*, long))(var193
->class->vft
[COLOR_array__Array__with_native
]))(var193
, var195
, var194
) /* with_native on <var193:Array[Object]>*/;
5240 CHECK_NEW_array__Array(var193
);
5242 var198
= ((val
* (*)(val
*))(var193
->class->vft
[COLOR_string__Object__to_s
]))(var193
) /* to_s on <var193:Array[Object]>*/;
5243 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_file__Object__print
]))(self
, var198
) /* print on <self:SeparateErasureCompiler>*/;
5246 /* method separate_erasure_compiler#SeparateErasureCompiler#display_sizes for (self: Object) */
5247 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompiler__display_sizes(val
* self
) {
5248 separate_erasure_compiler__SeparateErasureCompiler__display_sizes(self
);
5251 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#compile_callsite for (self: SeparateErasureCompilerVisitor, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
5252 val
* separate_erasure_compiler__SeparateErasureCompilerVisitor__compile_callsite(val
* self
, val
* p0
, val
* p1
) {
5253 val
* var
/* : nullable RuntimeVariable */;
5254 val
* var_callsite
/* var callsite: CallSite */;
5255 val
* var_arguments
/* var arguments: Array[RuntimeVariable] */;
5256 val
* var1
/* : nullable RuntimeVariable */;
5257 val
* var_res
/* var res: nullable RuntimeVariable */;
5258 short int var2
/* : Bool */;
5259 short int var3
/* : Bool */;
5260 short int var_
/* var : Bool */;
5261 val
* var4
/* : AbstractCompiler */;
5262 short int var5
/* : Bool */;
5265 const char* var_class_name
;
5266 val
* var6
/* : ModelBuilder */;
5267 val
* var7
/* : ToolContext */;
5268 val
* var8
/* : OptionBool */;
5269 val
* var9
/* : nullable Object */;
5270 short int var10
/* : Bool */;
5271 short int var11
/* : Bool */;
5272 val
* var12
/* : null */;
5273 short int var13
/* : Bool */;
5274 val
* var14
/* : MSignature */;
5275 val
* var15
/* : nullable MType */;
5276 val
* var_mtype
/* var mtype: nullable MType */;
5277 val
* var16
/* : null */;
5278 short int var17
/* : Bool */;
5279 static val
* varonce
;
5280 val
* var18
/* : String */;
5281 char* var19
/* : NativeString */;
5282 long var20
/* : Int */;
5283 val
* var21
/* : String */;
5284 static val
* varonce22
;
5285 val
* var23
/* : String */;
5286 char* var24
/* : NativeString */;
5287 long var25
/* : Int */;
5288 val
* var26
/* : String */;
5289 static val
* varonce27
;
5290 val
* var28
/* : String */;
5291 char* var29
/* : NativeString */;
5292 long var30
/* : Int */;
5293 val
* var31
/* : String */;
5294 val
* var32
/* : Array[Object] */;
5295 long var33
/* : Int */;
5296 val
* var34
/* : NativeArray[Object] */;
5297 val
* var35
/* : String */;
5298 static val
* varonce36
;
5299 val
* var37
/* : String */;
5300 char* var38
/* : NativeString */;
5301 long var39
/* : Int */;
5302 val
* var40
/* : String */;
5303 val
* var41
/* : RuntimeVariable */;
5304 val
* var_cond
/* var cond: RuntimeVariable */;
5305 static val
* varonce42
;
5306 val
* var43
/* : String */;
5307 char* var44
/* : NativeString */;
5308 long var45
/* : Int */;
5309 val
* var46
/* : String */;
5310 static val
* varonce47
;
5311 val
* var48
/* : String */;
5312 char* var49
/* : NativeString */;
5313 long var50
/* : Int */;
5314 val
* var51
/* : String */;
5315 val
* var52
/* : Array[Object] */;
5316 long var53
/* : Int */;
5317 val
* var54
/* : NativeArray[Object] */;
5318 val
* var55
/* : String */;
5319 static val
* varonce56
;
5320 val
* var57
/* : String */;
5321 char* var58
/* : NativeString */;
5322 long var59
/* : Int */;
5323 val
* var60
/* : String */;
5324 static val
* varonce61
;
5325 val
* var62
/* : String */;
5326 char* var63
/* : NativeString */;
5327 long var64
/* : Int */;
5328 val
* var65
/* : String */;
5331 var1
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompilerVisitor__compile_callsite
]))(self
, p0
, p1
) /* compile_callsite on <self:SeparateErasureCompilerVisitor>*/;
5333 var3
= ((short int (*)(val
*))(var_callsite
->class->vft
[COLOR_typing__CallSite__erasure_cast
]))(var_callsite
) /* erasure_cast on <var_callsite:CallSite>*/;
5336 var4
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler
]))(self
) /* compiler on <self:SeparateErasureCompilerVisitor>*/;
5337 /* <var4:AbstractCompiler(SeparateCompiler)> isa SeparateErasureCompiler */
5338 cltype
= type_separate_erasure_compiler__SeparateErasureCompiler
.color
;
5339 idtype
= type_separate_erasure_compiler__SeparateErasureCompiler
.id
;
5340 if(cltype
>= var4
->type
->table_size
) {
5343 var5
= var4
->type
->type_table
[cltype
] == idtype
;
5346 var_class_name
= var4
== NULL ?
"null" : var4
->type
->name
;
5347 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SeparateErasureCompiler", var_class_name
);
5348 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 446);
5351 var6
= ((val
* (*)(val
*))(var4
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__modelbuilder
]))(var4
) /* modelbuilder on <var4:SeparateCompiler(SeparateErasureCompiler)>*/;
5352 var7
= ((val
* (*)(val
*))(var6
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(var6
) /* toolcontext on <var6:ModelBuilder>*/;
5353 var8
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_separate_erasure_compiler__ToolContext__opt_no_check_erasure_cast
]))(var7
) /* opt_no_check_erasure_cast on <var7:ToolContext>*/;
5354 var9
= ((val
* (*)(val
*))(var8
->class->vft
[COLOR_opts__Option__value
]))(var8
) /* value on <var8:OptionBool>*/;
5355 var10
= ((struct instance_kernel__Bool
*)var9
)->value
; /* autounbox from nullable Object to Bool */;
5363 if (var_res
== NULL
) {
5364 var13
= 0; /* is null */
5366 var13
= 1; /* arg is null and recv is not */
5369 fprintf(stderr
, "Runtime error: %s", "Assert failed");
5370 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 447);
5373 var14
= ((val
* (*)(val
*))(var_callsite
->class->vft
[COLOR_typing__CallSite__msignature
]))(var_callsite
) /* msignature on <var_callsite:CallSite>*/;
5374 var15
= ((val
* (*)(val
*))(var14
->class->vft
[COLOR_model__MSignature__return_mtype
]))(var14
) /* return_mtype on <var14:MSignature>*/;
5377 if (var_mtype
== NULL
) {
5378 var17
= 0; /* is null */
5380 var17
= 1; /* arg is null and recv is not */
5383 fprintf(stderr
, "Runtime error: %s", "Assert failed");
5384 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 449);
5390 var19
= "/* Erasure cast for return ";
5392 var21
= string__NativeString__to_s_with_length(var19
, var20
);
5401 var26
= string__NativeString__to_s_with_length(var24
, var25
);
5410 var31
= string__NativeString__to_s_with_length(var29
, var30
);
5414 var32
= NEW_array__Array(&type_array__Arraykernel__Object
);
5415 { /* var32 = array_instance Array[Object] */
5417 var34
= NEW_array__NativeArray(var33
, &type_array__NativeArraykernel__Object
);
5418 ((struct instance_array__NativeArray
*)var34
)->values
[0] = (val
*) var18
;
5419 ((struct instance_array__NativeArray
*)var34
)->values
[1] = (val
*) var_res
;
5420 ((struct instance_array__NativeArray
*)var34
)->values
[2] = (val
*) var23
;
5421 ((struct instance_array__NativeArray
*)var34
)->values
[3] = (val
*) var_mtype
;
5422 ((struct instance_array__NativeArray
*)var34
)->values
[4] = (val
*) var28
;
5423 ((void (*)(val
*, val
*, long))(var32
->class->vft
[COLOR_array__Array__with_native
]))(var32
, var34
, var33
) /* with_native on <var32:Array[Object]>*/;
5424 CHECK_NEW_array__Array(var32
);
5426 var35
= ((val
* (*)(val
*))(var32
->class->vft
[COLOR_string__Object__to_s
]))(var32
) /* to_s on <var32:Array[Object]>*/;
5427 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var35
) /* add on <self:SeparateErasureCompilerVisitor>*/;
5433 var40
= string__NativeString__to_s_with_length(var38
, var39
);
5437 var41
= ((val
* (*)(val
*, val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__type_test
]))(self
, var_res
, var_mtype
, var37
) /* type_test on <self:SeparateErasureCompilerVisitor>*/;
5444 var46
= string__NativeString__to_s_with_length(var44
, var45
);
5453 var51
= string__NativeString__to_s_with_length(var49
, var50
);
5457 var52
= NEW_array__Array(&type_array__Arraykernel__Object
);
5458 { /* var52 = array_instance Array[Object] */
5460 var54
= NEW_array__NativeArray(var53
, &type_array__NativeArraykernel__Object
);
5461 ((struct instance_array__NativeArray
*)var54
)->values
[0] = (val
*) var43
;
5462 ((struct instance_array__NativeArray
*)var54
)->values
[1] = (val
*) var_cond
;
5463 ((struct instance_array__NativeArray
*)var54
)->values
[2] = (val
*) var48
;
5464 ((void (*)(val
*, val
*, long))(var52
->class->vft
[COLOR_array__Array__with_native
]))(var52
, var54
, var53
) /* with_native on <var52:Array[Object]>*/;
5465 CHECK_NEW_array__Array(var52
);
5467 var55
= ((val
* (*)(val
*))(var52
->class->vft
[COLOR_string__Object__to_s
]))(var52
) /* to_s on <var52:Array[Object]>*/;
5468 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var55
) /* add on <self:SeparateErasureCompilerVisitor>*/;
5472 var58
= "Cast failed";
5474 var60
= string__NativeString__to_s_with_length(var58
, var59
);
5478 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_abort
]))(self
, var57
) /* add_abort on <self:SeparateErasureCompilerVisitor>*/;
5484 var65
= string__NativeString__to_s_with_length(var63
, var64
);
5488 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var62
) /* add on <self:SeparateErasureCompilerVisitor>*/;
5496 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#compile_callsite for (self: Object, CallSite, Array[RuntimeVariable]): nullable RuntimeVariable */
5497 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompilerVisitor__compile_callsite(val
* self
, val
* p0
, val
* p1
) {
5498 val
* var
/* : nullable RuntimeVariable */;
5499 val
* var1
/* : nullable RuntimeVariable */;
5500 var1
= separate_erasure_compiler__SeparateErasureCompilerVisitor__compile_callsite(self
, p0
, p1
);
5505 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#init_instance for (self: SeparateErasureCompilerVisitor, MClassType): RuntimeVariable */
5506 val
* separate_erasure_compiler__SeparateErasureCompilerVisitor__init_instance(val
* self
, val
* p0
) {
5507 val
* var
/* : RuntimeVariable */;
5508 val
* var_mtype
/* var mtype: MClassType */;
5509 static val
* varonce
;
5510 val
* var1
/* : String */;
5511 char* var2
/* : NativeString */;
5512 long var3
/* : Int */;
5513 val
* var4
/* : String */;
5514 val
* var5
/* : MClass */;
5515 val
* var6
/* : String */;
5516 val
* var7
/* : Array[Object] */;
5517 long var8
/* : Int */;
5518 val
* var9
/* : NativeArray[Object] */;
5519 val
* var10
/* : String */;
5520 static val
* varonce11
;
5521 val
* var12
/* : String */;
5522 char* var13
/* : NativeString */;
5523 long var14
/* : Int */;
5524 val
* var15
/* : String */;
5525 val
* var16
/* : MClass */;
5526 val
* var17
/* : String */;
5527 static val
* varonce18
;
5528 val
* var19
/* : String */;
5529 char* var20
/* : NativeString */;
5530 long var21
/* : Int */;
5531 val
* var22
/* : String */;
5532 val
* var23
/* : Array[Object] */;
5533 long var24
/* : Int */;
5534 val
* var25
/* : NativeArray[Object] */;
5535 val
* var26
/* : String */;
5536 val
* var27
/* : RuntimeVariable */;
5543 var4
= string__NativeString__to_s_with_length(var2
, var3
);
5547 var5
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MClassType__mclass
]))(var_mtype
) /* mclass on <var_mtype:MClassType>*/;
5548 var6
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var5
) /* c_name on <var5:MClass>*/;
5549 var7
= NEW_array__Array(&type_array__Arraykernel__Object
);
5550 { /* var7 = array_instance Array[Object] */
5552 var9
= NEW_array__NativeArray(var8
, &type_array__NativeArraykernel__Object
);
5553 ((struct instance_array__NativeArray
*)var9
)->values
[0] = (val
*) var1
;
5554 ((struct instance_array__NativeArray
*)var9
)->values
[1] = (val
*) var6
;
5555 ((void (*)(val
*, val
*, long))(var7
->class->vft
[COLOR_array__Array__with_native
]))(var7
, var9
, var8
) /* with_native on <var7:Array[Object]>*/;
5556 CHECK_NEW_array__Array(var7
);
5558 var10
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_string__Object__to_s
]))(var7
) /* to_s on <var7:Array[Object]>*/;
5559 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(self
, var10
) /* require_declaration on <self:SeparateErasureCompilerVisitor>*/;
5565 var15
= string__NativeString__to_s_with_length(var13
, var14
);
5569 var16
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MClassType__mclass
]))(var_mtype
) /* mclass on <var_mtype:MClassType>*/;
5570 var17
= ((val
* (*)(val
*))(var16
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var16
) /* c_name on <var16:MClass>*/;
5576 var22
= string__NativeString__to_s_with_length(var20
, var21
);
5580 var23
= NEW_array__Array(&type_array__Arraykernel__Object
);
5581 { /* var23 = array_instance Array[Object] */
5583 var25
= NEW_array__NativeArray(var24
, &type_array__NativeArraykernel__Object
);
5584 ((struct instance_array__NativeArray
*)var25
)->values
[0] = (val
*) var12
;
5585 ((struct instance_array__NativeArray
*)var25
)->values
[1] = (val
*) var17
;
5586 ((struct instance_array__NativeArray
*)var25
)->values
[2] = (val
*) var19
;
5587 ((void (*)(val
*, val
*, long))(var23
->class->vft
[COLOR_array__Array__with_native
]))(var23
, var25
, var24
) /* with_native on <var23:Array[Object]>*/;
5588 CHECK_NEW_array__Array(var23
);
5590 var26
= ((val
* (*)(val
*))(var23
->class->vft
[COLOR_string__Object__to_s
]))(var23
) /* to_s on <var23:Array[Object]>*/;
5591 var27
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr
]))(self
, var26
, var_mtype
) /* new_expr on <self:SeparateErasureCompilerVisitor>*/;
5597 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#init_instance for (self: Object, MClassType): RuntimeVariable */
5598 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompilerVisitor__init_instance(val
* self
, val
* p0
) {
5599 val
* var
/* : RuntimeVariable */;
5600 val
* var1
/* : RuntimeVariable */;
5601 var1
= separate_erasure_compiler__SeparateErasureCompilerVisitor__init_instance(self
, p0
);
5606 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#type_test for (self: SeparateErasureCompilerVisitor, RuntimeVariable, MType, String): RuntimeVariable */
5607 val
* separate_erasure_compiler__SeparateErasureCompilerVisitor__type_test(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
5608 val
* var
/* : RuntimeVariable */;
5609 val
* var_value
/* var value: RuntimeVariable */;
5610 val
* var_mtype
/* var mtype: MType */;
5611 val
* var_tag
/* var tag: String */;
5612 static val
* varonce
;
5613 val
* var1
/* : String */;
5614 char* var2
/* : NativeString */;
5615 long var3
/* : Int */;
5616 val
* var4
/* : String */;
5617 val
* var5
/* : String */;
5618 static val
* varonce6
;
5619 val
* var7
/* : String */;
5620 char* var8
/* : NativeString */;
5621 long var9
/* : Int */;
5622 val
* var10
/* : String */;
5623 static val
* varonce11
;
5624 val
* var12
/* : String */;
5625 char* var13
/* : NativeString */;
5626 long var14
/* : Int */;
5627 val
* var15
/* : String */;
5628 val
* var16
/* : Array[Object] */;
5629 long var17
/* : Int */;
5630 val
* var18
/* : NativeArray[Object] */;
5631 val
* var19
/* : String */;
5632 val
* var20
/* : MClassType */;
5633 val
* var21
/* : RuntimeVariable */;
5634 val
* var_res
/* var res: RuntimeVariable */;
5635 static val
* varonce22
;
5636 val
* var23
/* : String */;
5637 char* var24
/* : NativeString */;
5638 long var25
/* : Int */;
5639 val
* var26
/* : String */;
5640 val
* var27
/* : String */;
5641 val
* var_cltype
/* var cltype: String */;
5642 static val
* varonce28
;
5643 val
* var29
/* : String */;
5644 char* var30
/* : NativeString */;
5645 long var31
/* : Int */;
5646 val
* var32
/* : String */;
5647 static val
* varonce33
;
5648 val
* var34
/* : String */;
5649 char* var35
/* : NativeString */;
5650 long var36
/* : Int */;
5651 val
* var37
/* : String */;
5652 val
* var38
/* : Array[Object] */;
5653 long var39
/* : Int */;
5654 val
* var40
/* : NativeArray[Object] */;
5655 val
* var41
/* : String */;
5656 static val
* varonce42
;
5657 val
* var43
/* : String */;
5658 char* var44
/* : NativeString */;
5659 long var45
/* : Int */;
5660 val
* var46
/* : String */;
5661 val
* var47
/* : String */;
5662 val
* var_idtype
/* var idtype: String */;
5663 static val
* varonce48
;
5664 val
* var49
/* : String */;
5665 char* var50
/* : NativeString */;
5666 long var51
/* : Int */;
5667 val
* var52
/* : String */;
5668 static val
* varonce53
;
5669 val
* var54
/* : String */;
5670 char* var55
/* : NativeString */;
5671 long var56
/* : Int */;
5672 val
* var57
/* : String */;
5673 val
* var58
/* : Array[Object] */;
5674 long var59
/* : Int */;
5675 val
* var60
/* : NativeArray[Object] */;
5676 val
* var61
/* : String */;
5677 short int var62
/* : Bool */;
5678 short int var_maybe_null
/* var maybe_null: Bool */;
5679 static val
* varonce63
;
5680 val
* var64
/* : String */;
5681 char* var65
/* : NativeString */;
5682 long var66
/* : Int */;
5683 val
* var67
/* : String */;
5684 val
* var_accept_null
/* var accept_null: String */;
5685 short int var68
/* : Bool */;
5688 val
* var69
/* : MType */;
5689 static val
* varonce70
;
5690 val
* var71
/* : String */;
5691 char* var72
/* : NativeString */;
5692 long var73
/* : Int */;
5693 val
* var74
/* : String */;
5694 short int var75
/* : Bool */;
5697 val
* var78
/* : nullable Frame */;
5698 val
* var79
/* : MPropDef */;
5699 val
* var80
/* : MClassDef */;
5700 val
* var81
/* : MClassType */;
5701 val
* var82
/* : nullable Frame */;
5702 val
* var83
/* : MPropDef */;
5703 val
* var84
/* : MClassDef */;
5704 val
* var85
/* : MClassType */;
5705 val
* var86
/* : nullable Frame */;
5706 val
* var87
/* : MPropDef */;
5707 val
* var88
/* : MClassDef */;
5708 val
* var89
/* : MModule */;
5709 short int var90
/* : Bool */;
5710 val
* var91
/* : MType */;
5711 short int var92
/* : Bool */;
5714 val
* var95
/* : MType */;
5715 static val
* varonce96
;
5716 val
* var97
/* : String */;
5717 char* var98
/* : NativeString */;
5718 long var99
/* : Int */;
5719 val
* var100
/* : String */;
5720 val
* var101
/* : MType */;
5721 val
* var102
/* : nullable Frame */;
5722 val
* var103
/* : MPropDef */;
5723 val
* var104
/* : MClassDef */;
5724 val
* var105
/* : MModule */;
5725 val
* var106
/* : nullable Frame */;
5726 val
* var107
/* : MPropDef */;
5727 val
* var108
/* : MClassDef */;
5728 val
* var109
/* : MClassType */;
5729 short int var110
/* : Bool */;
5730 static val
* varonce111
;
5731 val
* var112
/* : String */;
5732 char* var113
/* : NativeString */;
5733 long var114
/* : Int */;
5734 val
* var115
/* : String */;
5735 val
* var116
/* : String */;
5736 static val
* varonce117
;
5737 val
* var118
/* : String */;
5738 char* var119
/* : NativeString */;
5739 long var120
/* : Int */;
5740 val
* var121
/* : String */;
5741 static val
* varonce122
;
5742 val
* var123
/* : String */;
5743 char* var124
/* : NativeString */;
5744 long var125
/* : Int */;
5745 val
* var126
/* : String */;
5746 val
* var127
/* : Array[Object] */;
5747 long var128
/* : Int */;
5748 val
* var129
/* : NativeArray[Object] */;
5749 val
* var130
/* : String */;
5750 val
* var131
/* : AbstractCompiler */;
5751 val
* var132
/* : ModelBuilder */;
5752 val
* var133
/* : ToolContext */;
5753 val
* var134
/* : OptionBool */;
5754 val
* var135
/* : nullable Object */;
5755 short int var136
/* : Bool */;
5756 val
* var137
/* : AbstractCompiler */;
5757 val
* var138
/* : HashMap[String, Int] */;
5758 val
* var_
/* var : HashMap[String, Int] */;
5759 val
* var_139
/* var : String */;
5760 val
* var140
/* : nullable Object */;
5761 long var141
/* : Int */;
5762 long var142
/* : Int */;
5763 long var144
/* : Int */;
5764 long var145
/* : Int */;
5765 val
* var146
/* : nullable Object */;
5766 static val
* varonce147
;
5767 val
* var148
/* : String */;
5768 char* var149
/* : NativeString */;
5769 long var150
/* : Int */;
5770 val
* var151
/* : String */;
5771 static val
* varonce152
;
5772 val
* var153
/* : String */;
5773 char* var154
/* : NativeString */;
5774 long var155
/* : Int */;
5775 val
* var156
/* : String */;
5776 val
* var157
/* : Array[Object] */;
5777 long var158
/* : Int */;
5778 val
* var159
/* : NativeArray[Object] */;
5779 val
* var160
/* : String */;
5780 val
* var161
/* : MType */;
5781 val
* var162
/* : String */;
5782 static val
* varonce163
;
5783 val
* var164
/* : String */;
5784 char* var165
/* : NativeString */;
5785 long var166
/* : Int */;
5786 val
* var167
/* : String */;
5787 short int var168
/* : Bool */;
5788 val
* var169
/* : Array[Object] */;
5789 long var170
/* : Int */;
5790 val
* var_171
/* var : Array[Object] */;
5791 static val
* varonce172
;
5792 val
* var173
/* : String */;
5793 char* var174
/* : NativeString */;
5794 long var175
/* : Int */;
5795 val
* var176
/* : String */;
5796 static val
* varonce177
;
5797 val
* var178
/* : String */;
5798 char* var179
/* : NativeString */;
5799 long var180
/* : Int */;
5800 val
* var181
/* : String */;
5801 val
* var182
/* : String */;
5802 val
* var_class_ptr
/* var class_ptr: nullable Object */;
5803 val
* var183
/* : MType */;
5804 short int var184
/* : Bool */;
5807 const char* var_class_name
;
5808 val
* var187
/* : MClass */;
5809 val
* var_mclass
/* var mclass: MClass */;
5810 static val
* varonce188
;
5811 val
* var189
/* : String */;
5812 char* var190
/* : NativeString */;
5813 long var191
/* : Int */;
5814 val
* var192
/* : String */;
5815 val
* var193
/* : String */;
5816 val
* var194
/* : Array[Object] */;
5817 long var195
/* : Int */;
5818 val
* var196
/* : NativeArray[Object] */;
5819 val
* var197
/* : String */;
5820 val
* var198
/* : Array[Object] */;
5821 long var199
/* : Int */;
5822 val
* var_200
/* var : Array[Object] */;
5823 static val
* varonce201
;
5824 val
* var202
/* : String */;
5825 char* var203
/* : NativeString */;
5826 long var204
/* : Int */;
5827 val
* var205
/* : String */;
5828 val
* var206
/* : String */;
5829 static val
* varonce207
;
5830 val
* var208
/* : String */;
5831 char* var209
/* : NativeString */;
5832 long var210
/* : Int */;
5833 val
* var211
/* : String */;
5834 val
* var212
/* : String */;
5835 short int var213
/* : Bool */;
5838 static val
* varonce216
;
5839 val
* var217
/* : String */;
5840 char* var218
/* : NativeString */;
5841 long var219
/* : Int */;
5842 val
* var220
/* : String */;
5843 val
* var221
/* : MClass */;
5844 val
* var222
/* : String */;
5845 val
* var223
/* : Array[Object] */;
5846 long var224
/* : Int */;
5847 val
* var225
/* : NativeArray[Object] */;
5848 val
* var226
/* : String */;
5849 static val
* varonce227
;
5850 val
* var228
/* : String */;
5851 char* var229
/* : NativeString */;
5852 long var230
/* : Int */;
5853 val
* var231
/* : String */;
5854 val
* var232
/* : MClass */;
5855 val
* var233
/* : String */;
5856 static val
* varonce234
;
5857 val
* var235
/* : String */;
5858 char* var236
/* : NativeString */;
5859 long var237
/* : Int */;
5860 val
* var238
/* : String */;
5861 val
* var239
/* : Array[Object] */;
5862 long var240
/* : Int */;
5863 val
* var241
/* : NativeArray[Object] */;
5864 val
* var242
/* : String */;
5865 static val
* varonce243
;
5866 val
* var244
/* : String */;
5867 char* var245
/* : NativeString */;
5868 long var246
/* : Int */;
5869 val
* var247
/* : String */;
5870 val
* var248
/* : MClass */;
5871 val
* var249
/* : String */;
5872 static val
* varonce250
;
5873 val
* var251
/* : String */;
5874 char* var252
/* : NativeString */;
5875 long var253
/* : Int */;
5876 val
* var254
/* : String */;
5877 val
* var255
/* : Array[Object] */;
5878 long var256
/* : Int */;
5879 val
* var257
/* : NativeArray[Object] */;
5880 val
* var258
/* : String */;
5881 val
* var259
/* : AbstractCompiler */;
5882 val
* var260
/* : ModelBuilder */;
5883 val
* var261
/* : ToolContext */;
5884 val
* var262
/* : OptionBool */;
5885 val
* var263
/* : nullable Object */;
5886 short int var264
/* : Bool */;
5887 val
* var265
/* : AbstractCompiler */;
5888 val
* var266
/* : HashMap[String, Int] */;
5889 val
* var_267
/* var : HashMap[String, Int] */;
5890 val
* var_268
/* var : String */;
5891 val
* var269
/* : nullable Object */;
5892 long var270
/* : Int */;
5893 long var271
/* : Int */;
5894 long var273
/* : Int */;
5895 long var274
/* : Int */;
5896 val
* var275
/* : nullable Object */;
5897 static val
* varonce276
;
5898 val
* var277
/* : String */;
5899 char* var278
/* : NativeString */;
5900 long var279
/* : Int */;
5901 val
* var280
/* : String */;
5902 static val
* varonce281
;
5903 val
* var282
/* : String */;
5904 char* var283
/* : NativeString */;
5905 long var284
/* : Int */;
5906 val
* var285
/* : String */;
5907 val
* var286
/* : Array[Object] */;
5908 long var287
/* : Int */;
5909 val
* var288
/* : NativeArray[Object] */;
5910 val
* var289
/* : String */;
5911 short int var290
/* : Bool */;
5914 val
* var293
/* : nullable Frame */;
5915 val
* var294
/* : Array[RuntimeVariable] */;
5916 val
* var295
/* : nullable Object */;
5917 val
* var_recv
/* var recv: RuntimeVariable */;
5918 val
* var296
/* : MType */;
5919 val
* var297
/* : String */;
5920 static val
* varonce298
;
5921 val
* var299
/* : String */;
5922 char* var300
/* : NativeString */;
5923 long var301
/* : Int */;
5924 val
* var302
/* : String */;
5925 short int var303
/* : Bool */;
5926 static val
* varonce304
;
5927 val
* var305
/* : String */;
5928 char* var306
/* : NativeString */;
5929 long var307
/* : Int */;
5930 val
* var308
/* : String */;
5931 val
* var309
/* : Array[Object] */;
5932 long var310
/* : Int */;
5933 val
* var311
/* : NativeArray[Object] */;
5934 val
* var312
/* : String */;
5935 val
* var_recv_ptr
/* var recv_ptr: nullable Object */;
5936 val
* var313
/* : MType */;
5937 short int var314
/* : Bool */;
5940 const char* var_class_name317
;
5941 val
* var318
/* : MClass */;
5942 val
* var_mclass319
/* var mclass: MClass */;
5943 static val
* varonce320
;
5944 val
* var321
/* : String */;
5945 char* var322
/* : NativeString */;
5946 long var323
/* : Int */;
5947 val
* var324
/* : String */;
5948 val
* var325
/* : String */;
5949 val
* var326
/* : Array[Object] */;
5950 long var327
/* : Int */;
5951 val
* var328
/* : NativeArray[Object] */;
5952 val
* var329
/* : String */;
5953 static val
* varonce330
;
5954 val
* var331
/* : String */;
5955 char* var332
/* : NativeString */;
5956 long var333
/* : Int */;
5957 val
* var334
/* : String */;
5958 val
* var335
/* : String */;
5959 static val
* varonce336
;
5960 val
* var337
/* : String */;
5961 char* var338
/* : NativeString */;
5962 long var339
/* : Int */;
5963 val
* var340
/* : String */;
5964 val
* var341
/* : Array[Object] */;
5965 long var342
/* : Int */;
5966 val
* var343
/* : NativeArray[Object] */;
5967 val
* var344
/* : String */;
5968 static val
* varonce345
;
5969 val
* var346
/* : String */;
5970 char* var347
/* : NativeString */;
5971 long var348
/* : Int */;
5972 val
* var349
/* : String */;
5973 val
* var350
/* : String */;
5974 val
* var_entry
/* var entry: String */;
5975 static val
* varonce351
;
5976 val
* var352
/* : String */;
5977 char* var353
/* : NativeString */;
5978 long var354
/* : Int */;
5979 val
* var355
/* : String */;
5980 static val
* varonce356
;
5981 val
* var357
/* : String */;
5982 char* var358
/* : NativeString */;
5983 long var359
/* : Int */;
5984 val
* var360
/* : String */;
5985 val
* var361
/* : Array[Object] */;
5986 long var362
/* : Int */;
5987 val
* var363
/* : NativeArray[Object] */;
5988 val
* var364
/* : String */;
5989 val
* var365
/* : MProperty */;
5990 val
* var366
/* : String */;
5991 val
* var367
/* : AbstractCompiler */;
5992 short int var368
/* : Bool */;
5995 const char* var_class_name371
;
5996 val
* var372
/* : nullable Layout[MVirtualTypeProp] */;
5997 short int var373
/* : Bool */;
6000 static val
* varonce376
;
6001 val
* var377
/* : String */;
6002 char* var378
/* : NativeString */;
6003 long var379
/* : Int */;
6004 val
* var380
/* : String */;
6005 static val
* varonce381
;
6006 val
* var382
/* : String */;
6007 char* var383
/* : NativeString */;
6008 long var384
/* : Int */;
6009 val
* var385
/* : String */;
6010 static val
* varonce386
;
6011 val
* var387
/* : String */;
6012 char* var388
/* : NativeString */;
6013 long var389
/* : Int */;
6014 val
* var390
/* : String */;
6015 val
* var391
/* : MProperty */;
6016 val
* var392
/* : String */;
6017 static val
* varonce393
;
6018 val
* var394
/* : String */;
6019 char* var395
/* : NativeString */;
6020 long var396
/* : Int */;
6021 val
* var397
/* : String */;
6022 val
* var398
/* : Array[Object] */;
6023 long var399
/* : Int */;
6024 val
* var400
/* : NativeArray[Object] */;
6025 val
* var401
/* : String */;
6026 static val
* varonce402
;
6027 val
* var403
/* : String */;
6028 char* var404
/* : NativeString */;
6029 long var405
/* : Int */;
6030 val
* var406
/* : String */;
6031 static val
* varonce407
;
6032 val
* var408
/* : String */;
6033 char* var409
/* : NativeString */;
6034 long var410
/* : Int */;
6035 val
* var411
/* : String */;
6036 val
* var412
/* : MProperty */;
6037 val
* var413
/* : String */;
6038 static val
* varonce414
;
6039 val
* var415
/* : String */;
6040 char* var416
/* : NativeString */;
6041 long var417
/* : Int */;
6042 val
* var418
/* : String */;
6043 val
* var419
/* : Array[Object] */;
6044 long var420
/* : Int */;
6045 val
* var421
/* : NativeArray[Object] */;
6046 val
* var422
/* : String */;
6047 static val
* varonce423
;
6048 val
* var424
/* : String */;
6049 char* var425
/* : NativeString */;
6050 long var426
/* : Int */;
6051 val
* var427
/* : String */;
6052 static val
* varonce428
;
6053 val
* var429
/* : String */;
6054 char* var430
/* : NativeString */;
6055 long var431
/* : Int */;
6056 val
* var432
/* : String */;
6057 val
* var433
/* : Array[Object] */;
6058 long var434
/* : Int */;
6059 val
* var435
/* : NativeArray[Object] */;
6060 val
* var436
/* : String */;
6061 static val
* varonce437
;
6062 val
* var438
/* : String */;
6063 char* var439
/* : NativeString */;
6064 long var440
/* : Int */;
6065 val
* var441
/* : String */;
6066 static val
* varonce442
;
6067 val
* var443
/* : String */;
6068 char* var444
/* : NativeString */;
6069 long var445
/* : Int */;
6070 val
* var446
/* : String */;
6071 val
* var447
/* : Array[Object] */;
6072 long var448
/* : Int */;
6073 val
* var449
/* : NativeArray[Object] */;
6074 val
* var450
/* : String */;
6075 short int var451
/* : Bool */;
6076 short int var_452
/* var : Bool */;
6077 static val
* varonce453
;
6078 val
* var454
/* : String */;
6079 char* var455
/* : NativeString */;
6080 long var456
/* : Int */;
6081 val
* var457
/* : String */;
6082 short int var458
/* : Bool */;
6083 static val
* varonce459
;
6084 val
* var460
/* : String */;
6085 char* var461
/* : NativeString */;
6086 long var462
/* : Int */;
6087 val
* var463
/* : String */;
6088 val
* var464
/* : String */;
6089 val
* var_is_nullable
/* var is_nullable: String */;
6090 static val
* varonce465
;
6091 val
* var466
/* : String */;
6092 char* var467
/* : NativeString */;
6093 long var468
/* : Int */;
6094 val
* var469
/* : String */;
6095 static val
* varonce470
;
6096 val
* var471
/* : String */;
6097 char* var472
/* : NativeString */;
6098 long var473
/* : Int */;
6099 val
* var474
/* : String */;
6100 val
* var475
/* : Array[Object] */;
6101 long var476
/* : Int */;
6102 val
* var477
/* : NativeArray[Object] */;
6103 val
* var478
/* : String */;
6104 static val
* varonce479
;
6105 val
* var480
/* : String */;
6106 char* var481
/* : NativeString */;
6107 long var482
/* : Int */;
6108 val
* var483
/* : String */;
6109 static val
* varonce484
;
6110 val
* var485
/* : String */;
6111 char* var486
/* : NativeString */;
6112 long var487
/* : Int */;
6113 val
* var488
/* : String */;
6114 val
* var489
/* : Array[Object] */;
6115 long var490
/* : Int */;
6116 val
* var491
/* : NativeArray[Object] */;
6117 val
* var492
/* : String */;
6118 val
* var493
/* : String */;
6119 val
* var494
/* : AbstractCompiler */;
6120 val
* var495
/* : ModelBuilder */;
6121 val
* var496
/* : ToolContext */;
6122 val
* var497
/* : OptionBool */;
6123 val
* var498
/* : nullable Object */;
6124 short int var499
/* : Bool */;
6125 val
* var500
/* : AbstractCompiler */;
6126 val
* var501
/* : HashMap[String, Int] */;
6127 val
* var_502
/* var : HashMap[String, Int] */;
6128 val
* var_503
/* var : String */;
6129 val
* var504
/* : nullable Object */;
6130 long var505
/* : Int */;
6131 long var506
/* : Int */;
6132 long var508
/* : Int */;
6133 long var509
/* : Int */;
6134 val
* var510
/* : nullable Object */;
6135 static val
* varonce511
;
6136 val
* var512
/* : String */;
6137 char* var513
/* : NativeString */;
6138 long var514
/* : Int */;
6139 val
* var515
/* : String */;
6140 static val
* varonce516
;
6141 val
* var517
/* : String */;
6142 char* var518
/* : NativeString */;
6143 long var519
/* : Int */;
6144 val
* var520
/* : String */;
6145 val
* var521
/* : Array[Object] */;
6146 long var522
/* : Int */;
6147 val
* var523
/* : NativeArray[Object] */;
6148 val
* var524
/* : String */;
6149 static val
* varonce525
;
6150 val
* var526
/* : String */;
6151 char* var527
/* : NativeString */;
6152 long var528
/* : Int */;
6153 val
* var529
/* : String */;
6154 val
* var530
/* : String */;
6155 static val
* varonce531
;
6156 val
* var532
/* : String */;
6157 char* var533
/* : NativeString */;
6158 long var534
/* : Int */;
6159 val
* var535
/* : String */;
6160 static val
* varonce536
;
6161 val
* var537
/* : String */;
6162 char* var538
/* : NativeString */;
6163 long var539
/* : Int */;
6164 val
* var540
/* : String */;
6165 val
* var541
/* : Array[Object] */;
6166 long var542
/* : Int */;
6167 val
* var543
/* : NativeArray[Object] */;
6168 val
* var544
/* : String */;
6169 static val
* varonce545
;
6170 val
* var546
/* : String */;
6171 char* var547
/* : NativeString */;
6172 long var548
/* : Int */;
6173 val
* var549
/* : String */;
6174 static val
* varonce550
;
6175 val
* var551
/* : String */;
6176 char* var552
/* : NativeString */;
6177 long var553
/* : Int */;
6178 val
* var554
/* : String */;
6179 val
* var555
/* : Array[Object] */;
6180 long var556
/* : Int */;
6181 val
* var557
/* : NativeArray[Object] */;
6182 val
* var558
/* : String */;
6183 static val
* varonce559
;
6184 val
* var560
/* : String */;
6185 char* var561
/* : NativeString */;
6186 long var562
/* : Int */;
6187 val
* var563
/* : String */;
6188 static val
* varonce564
;
6189 val
* var565
/* : String */;
6190 char* var566
/* : NativeString */;
6191 long var567
/* : Int */;
6192 val
* var568
/* : String */;
6193 val
* var569
/* : Array[Object] */;
6194 long var570
/* : Int */;
6195 val
* var571
/* : NativeArray[Object] */;
6196 val
* var572
/* : String */;
6197 static val
* varonce573
;
6198 val
* var574
/* : String */;
6199 char* var575
/* : NativeString */;
6200 long var576
/* : Int */;
6201 val
* var577
/* : String */;
6202 val
* var578
/* : AbstractCompiler */;
6203 short int var579
/* : Bool */;
6206 const char* var_class_name582
;
6207 val
* var583
/* : nullable Layout[MClass] */;
6208 short int var584
/* : Bool */;
6211 static val
* varonce587
;
6212 val
* var588
/* : String */;
6213 char* var589
/* : NativeString */;
6214 long var590
/* : Int */;
6215 val
* var591
/* : String */;
6216 static val
* varonce592
;
6217 val
* var593
/* : String */;
6218 char* var594
/* : NativeString */;
6219 long var595
/* : Int */;
6220 val
* var596
/* : String */;
6221 static val
* varonce597
;
6222 val
* var598
/* : String */;
6223 char* var599
/* : NativeString */;
6224 long var600
/* : Int */;
6225 val
* var601
/* : String */;
6226 val
* var602
/* : Array[Object] */;
6227 long var603
/* : Int */;
6228 val
* var604
/* : NativeArray[Object] */;
6229 val
* var605
/* : String */;
6230 static val
* varonce606
;
6231 val
* var607
/* : String */;
6232 char* var608
/* : NativeString */;
6233 long var609
/* : Int */;
6234 val
* var610
/* : String */;
6235 static val
* varonce611
;
6236 val
* var612
/* : String */;
6237 char* var613
/* : NativeString */;
6238 long var614
/* : Int */;
6239 val
* var615
/* : String */;
6240 static val
* varonce616
;
6241 val
* var617
/* : String */;
6242 char* var618
/* : NativeString */;
6243 long var619
/* : Int */;
6244 val
* var620
/* : String */;
6245 val
* var621
/* : Array[Object] */;
6246 long var622
/* : Int */;
6247 val
* var623
/* : NativeArray[Object] */;
6248 val
* var624
/* : String */;
6249 static val
* varonce625
;
6250 val
* var626
/* : String */;
6251 char* var627
/* : NativeString */;
6252 long var628
/* : Int */;
6253 val
* var629
/* : String */;
6254 val
* var630
/* : Array[Object] */;
6255 long var631
/* : Int */;
6256 val
* var632
/* : NativeArray[Object] */;
6257 val
* var633
/* : String */;
6258 static val
* varonce634
;
6259 val
* var635
/* : String */;
6260 char* var636
/* : NativeString */;
6261 long var637
/* : Int */;
6262 val
* var638
/* : String */;
6263 static val
* varonce639
;
6264 val
* var640
/* : String */;
6265 char* var641
/* : NativeString */;
6266 long var642
/* : Int */;
6267 val
* var643
/* : String */;
6268 static val
* varonce644
;
6269 val
* var645
/* : String */;
6270 char* var646
/* : NativeString */;
6271 long var647
/* : Int */;
6272 val
* var648
/* : String */;
6273 static val
* varonce649
;
6274 val
* var650
/* : String */;
6275 char* var651
/* : NativeString */;
6276 long var652
/* : Int */;
6277 val
* var653
/* : String */;
6278 static val
* varonce654
;
6279 val
* var655
/* : String */;
6280 char* var656
/* : NativeString */;
6281 long var657
/* : Int */;
6282 val
* var658
/* : String */;
6283 val
* var659
/* : Array[Object] */;
6284 long var660
/* : Int */;
6285 val
* var661
/* : NativeArray[Object] */;
6286 val
* var662
/* : String */;
6287 static val
* varonce663
;
6288 val
* var664
/* : String */;
6289 char* var665
/* : NativeString */;
6290 long var666
/* : Int */;
6291 val
* var667
/* : String */;
6292 static val
* varonce668
;
6293 val
* var669
/* : String */;
6294 char* var670
/* : NativeString */;
6295 long var671
/* : Int */;
6296 val
* var672
/* : String */;
6303 var2
= "/* type test for ";
6305 var4
= string__NativeString__to_s_with_length(var2
, var3
);
6309 var5
= ((val
* (*)(val
*))(var_value
->class->vft
[COLOR_string__Object__inspect
]))(var_value
) /* inspect on <var_value:RuntimeVariable>*/;
6315 var10
= string__NativeString__to_s_with_length(var8
, var9
);
6324 var15
= string__NativeString__to_s_with_length(var13
, var14
);
6328 var16
= NEW_array__Array(&type_array__Arraykernel__Object
);
6329 { /* var16 = array_instance Array[Object] */
6331 var18
= NEW_array__NativeArray(var17
, &type_array__NativeArraykernel__Object
);
6332 ((struct instance_array__NativeArray
*)var18
)->values
[0] = (val
*) var1
;
6333 ((struct instance_array__NativeArray
*)var18
)->values
[1] = (val
*) var5
;
6334 ((struct instance_array__NativeArray
*)var18
)->values
[2] = (val
*) var7
;
6335 ((struct instance_array__NativeArray
*)var18
)->values
[3] = (val
*) var_mtype
;
6336 ((struct instance_array__NativeArray
*)var18
)->values
[4] = (val
*) var12
;
6337 ((void (*)(val
*, val
*, long))(var16
->class->vft
[COLOR_array__Array__with_native
]))(var16
, var18
, var17
) /* with_native on <var16:Array[Object]>*/;
6338 CHECK_NEW_array__Array(var16
);
6340 var19
= ((val
* (*)(val
*))(var16
->class->vft
[COLOR_string__Object__to_s
]))(var16
) /* to_s on <var16:Array[Object]>*/;
6341 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var19
) /* add on <self:SeparateErasureCompilerVisitor>*/;
6342 var20
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__bool_type
]))(self
) /* bool_type on <self:SeparateErasureCompilerVisitor>*/;
6343 var21
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var
]))(self
, var20
) /* new_var on <self:SeparateErasureCompilerVisitor>*/;
6350 var26
= string__NativeString__to_s_with_length(var24
, var25
);
6354 var27
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name
]))(self
, var23
) /* get_name on <self:SeparateErasureCompilerVisitor>*/;
6361 var32
= string__NativeString__to_s_with_length(var30
, var31
);
6370 var37
= string__NativeString__to_s_with_length(var35
, var36
);
6374 var38
= NEW_array__Array(&type_array__Arraykernel__Object
);
6375 { /* var38 = array_instance Array[Object] */
6377 var40
= NEW_array__NativeArray(var39
, &type_array__NativeArraykernel__Object
);
6378 ((struct instance_array__NativeArray
*)var40
)->values
[0] = (val
*) var29
;
6379 ((struct instance_array__NativeArray
*)var40
)->values
[1] = (val
*) var_cltype
;
6380 ((struct instance_array__NativeArray
*)var40
)->values
[2] = (val
*) var34
;
6381 ((void (*)(val
*, val
*, long))(var38
->class->vft
[COLOR_array__Array__with_native
]))(var38
, var40
, var39
) /* with_native on <var38:Array[Object]>*/;
6382 CHECK_NEW_array__Array(var38
);
6384 var41
= ((val
* (*)(val
*))(var38
->class->vft
[COLOR_string__Object__to_s
]))(var38
) /* to_s on <var38:Array[Object]>*/;
6385 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(self
, var41
) /* add_decl on <self:SeparateErasureCompilerVisitor>*/;
6391 var46
= string__NativeString__to_s_with_length(var44
, var45
);
6395 var47
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name
]))(self
, var43
) /* get_name on <self:SeparateErasureCompilerVisitor>*/;
6402 var52
= string__NativeString__to_s_with_length(var50
, var51
);
6411 var57
= string__NativeString__to_s_with_length(var55
, var56
);
6415 var58
= NEW_array__Array(&type_array__Arraykernel__Object
);
6416 { /* var58 = array_instance Array[Object] */
6418 var60
= NEW_array__NativeArray(var59
, &type_array__NativeArraykernel__Object
);
6419 ((struct instance_array__NativeArray
*)var60
)->values
[0] = (val
*) var49
;
6420 ((struct instance_array__NativeArray
*)var60
)->values
[1] = (val
*) var_idtype
;
6421 ((struct instance_array__NativeArray
*)var60
)->values
[2] = (val
*) var54
;
6422 ((void (*)(val
*, val
*, long))(var58
->class->vft
[COLOR_array__Array__with_native
]))(var58
, var60
, var59
) /* with_native on <var58:Array[Object]>*/;
6423 CHECK_NEW_array__Array(var58
);
6425 var61
= ((val
* (*)(val
*))(var58
->class->vft
[COLOR_string__Object__to_s
]))(var58
) /* to_s on <var58:Array[Object]>*/;
6426 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(self
, var61
) /* add_decl on <self:SeparateErasureCompilerVisitor>*/;
6427 var62
= ((short int (*)(val
*, val
*))(self
->class->vft
[COLOR_separate_compiler__SeparateCompilerVisitor__maybe_null
]))(self
, var_value
) /* maybe_null on <self:SeparateErasureCompilerVisitor>*/;
6428 var_maybe_null
= var62
;
6434 var67
= string__NativeString__to_s_with_length(var65
, var66
);
6438 var_accept_null
= var64
;
6439 /* <var_mtype:MType> isa MNullableType */
6440 cltype
= type_model__MNullableType
.color
;
6441 idtype
= type_model__MNullableType
.id
;
6442 if(cltype
>= var_mtype
->type
->table_size
) {
6445 var68
= var_mtype
->type
->type_table
[cltype
] == idtype
;
6448 var69
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MNullableType__mtype
]))(var_mtype
) /* mtype on <var_mtype:MType(MNullableType)>*/;
6455 var74
= string__NativeString__to_s_with_length(var72
, var73
);
6459 var_accept_null
= var71
;
6462 /* <var_mtype:MType> isa MParameterType */
6463 cltype76
= type_model__MParameterType
.color
;
6464 idtype77
= type_model__MParameterType
.id
;
6465 if(cltype76
>= var_mtype
->type
->table_size
) {
6468 var75
= var_mtype
->type
->type_table
[cltype76
] == idtype77
;
6471 var78
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__frame
]))(self
) /* frame on <self:SeparateErasureCompilerVisitor>*/;
6472 if (var78
== NULL
) {
6473 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
6474 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 487);
6477 var79
= ((val
* (*)(val
*))(var78
->class->vft
[COLOR_abstract_compiler__Frame__mpropdef
]))(var78
) /* mpropdef on <var78:nullable Frame>*/;
6479 var80
= ((val
* (*)(val
*))(var79
->class->vft
[COLOR_model__MPropDef__mclassdef
]))(var79
) /* mclassdef on <var79:MPropDef>*/;
6480 var81
= ((val
* (*)(val
*))(var80
->class->vft
[COLOR_model__MClassDef__bound_mtype
]))(var80
) /* bound_mtype on <var80:MClassDef>*/;
6481 var82
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__frame
]))(self
) /* frame on <self:SeparateErasureCompilerVisitor>*/;
6482 if (var82
== NULL
) {
6483 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
6484 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 487);
6487 var83
= ((val
* (*)(val
*))(var82
->class->vft
[COLOR_abstract_compiler__Frame__mpropdef
]))(var82
) /* mpropdef on <var82:nullable Frame>*/;
6489 var84
= ((val
* (*)(val
*))(var83
->class->vft
[COLOR_model__MPropDef__mclassdef
]))(var83
) /* mclassdef on <var83:MPropDef>*/;
6490 var85
= ((val
* (*)(val
*))(var84
->class->vft
[COLOR_model__MClassDef__bound_mtype
]))(var84
) /* bound_mtype on <var84:MClassDef>*/;
6491 var86
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__frame
]))(self
) /* frame on <self:SeparateErasureCompilerVisitor>*/;
6492 if (var86
== NULL
) {
6493 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
6494 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 487);
6497 var87
= ((val
* (*)(val
*))(var86
->class->vft
[COLOR_abstract_compiler__Frame__mpropdef
]))(var86
) /* mpropdef on <var86:nullable Frame>*/;
6499 var88
= ((val
* (*)(val
*))(var87
->class->vft
[COLOR_model__MPropDef__mclassdef
]))(var87
) /* mclassdef on <var87:MPropDef>*/;
6500 var89
= ((val
* (*)(val
*))(var88
->class->vft
[COLOR_model__MClassDef__mmodule
]))(var88
) /* mmodule on <var88:MClassDef>*/;
6502 var91
= ((val
* (*)(val
*, val
*, val
*, val
*, short int))(var_mtype
->class->vft
[COLOR_model__MType__resolve_for
]))(var_mtype
, var81
, var85
, var89
, var90
) /* resolve_for on <var_mtype:MType(MParameterType)>*/;
6504 /* <var_mtype:MType> isa MNullableType */
6505 cltype93
= type_model__MNullableType
.color
;
6506 idtype94
= type_model__MNullableType
.id
;
6507 if(cltype93
>= var_mtype
->type
->table_size
) {
6510 var92
= var_mtype
->type
->type_table
[cltype93
] == idtype94
;
6513 var95
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MNullableType__mtype
]))(var_mtype
) /* mtype on <var_mtype:MType(MNullableType)>*/;
6520 var100
= string__NativeString__to_s_with_length(var98
, var99
);
6524 var_accept_null
= var97
;
6529 var101
= ((val
* (*)(val
*))(var_value
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__mcasttype
]))(var_value
) /* mcasttype on <var_value:RuntimeVariable>*/;
6530 var102
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__frame
]))(self
) /* frame on <self:SeparateErasureCompilerVisitor>*/;
6531 if (var102
== NULL
) {
6532 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
6533 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 494);
6536 var103
= ((val
* (*)(val
*))(var102
->class->vft
[COLOR_abstract_compiler__Frame__mpropdef
]))(var102
) /* mpropdef on <var102:nullable Frame>*/;
6538 var104
= ((val
* (*)(val
*))(var103
->class->vft
[COLOR_model__MPropDef__mclassdef
]))(var103
) /* mclassdef on <var103:MPropDef>*/;
6539 var105
= ((val
* (*)(val
*))(var104
->class->vft
[COLOR_model__MClassDef__mmodule
]))(var104
) /* mmodule on <var104:MClassDef>*/;
6540 var106
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__frame
]))(self
) /* frame on <self:SeparateErasureCompilerVisitor>*/;
6541 if (var106
== NULL
) {
6542 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
6543 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 494);
6546 var107
= ((val
* (*)(val
*))(var106
->class->vft
[COLOR_abstract_compiler__Frame__mpropdef
]))(var106
) /* mpropdef on <var106:nullable Frame>*/;
6548 var108
= ((val
* (*)(val
*))(var107
->class->vft
[COLOR_model__MPropDef__mclassdef
]))(var107
) /* mclassdef on <var107:MPropDef>*/;
6549 var109
= ((val
* (*)(val
*))(var108
->class->vft
[COLOR_model__MClassDef__bound_mtype
]))(var108
) /* bound_mtype on <var108:MClassDef>*/;
6550 var110
= ((short int (*)(val
*, val
*, val
*, val
*))(var101
->class->vft
[COLOR_model__MType__is_subtype
]))(var101
, var105
, var109
, var_mtype
) /* is_subtype on <var101:MType>*/;
6553 var112
= varonce111
;
6555 var113
= " = 1; /* easy ";
6557 var115
= string__NativeString__to_s_with_length(var113
, var114
);
6559 varonce111
= var112
;
6561 var116
= ((val
* (*)(val
*))(var_value
->class->vft
[COLOR_string__Object__inspect
]))(var_value
) /* inspect on <var_value:RuntimeVariable>*/;
6563 var118
= varonce117
;
6567 var121
= string__NativeString__to_s_with_length(var119
, var120
);
6569 varonce117
= var118
;
6572 var123
= varonce122
;
6576 var126
= string__NativeString__to_s_with_length(var124
, var125
);
6578 varonce122
= var123
;
6580 var127
= NEW_array__Array(&type_array__Arraykernel__Object
);
6581 { /* var127 = array_instance Array[Object] */
6583 var129
= NEW_array__NativeArray(var128
, &type_array__NativeArraykernel__Object
);
6584 ((struct instance_array__NativeArray
*)var129
)->values
[0] = (val
*) var_res
;
6585 ((struct instance_array__NativeArray
*)var129
)->values
[1] = (val
*) var112
;
6586 ((struct instance_array__NativeArray
*)var129
)->values
[2] = (val
*) var116
;
6587 ((struct instance_array__NativeArray
*)var129
)->values
[3] = (val
*) var118
;
6588 ((struct instance_array__NativeArray
*)var129
)->values
[4] = (val
*) var_mtype
;
6589 ((struct instance_array__NativeArray
*)var129
)->values
[5] = (val
*) var123
;
6590 ((void (*)(val
*, val
*, long))(var127
->class->vft
[COLOR_array__Array__with_native
]))(var127
, var129
, var128
) /* with_native on <var127:Array[Object]>*/;
6591 CHECK_NEW_array__Array(var127
);
6593 var130
= ((val
* (*)(val
*))(var127
->class->vft
[COLOR_string__Object__to_s
]))(var127
) /* to_s on <var127:Array[Object]>*/;
6594 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var130
) /* add on <self:SeparateErasureCompilerVisitor>*/;
6595 var131
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler
]))(self
) /* compiler on <self:SeparateErasureCompilerVisitor>*/;
6596 var132
= ((val
* (*)(val
*))(var131
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__modelbuilder
]))(var131
) /* modelbuilder on <var131:AbstractCompiler(SeparateCompiler)>*/;
6597 var133
= ((val
* (*)(val
*))(var132
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(var132
) /* toolcontext on <var132:ModelBuilder>*/;
6598 var134
= ((val
* (*)(val
*))(var133
->class->vft
[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics
]))(var133
) /* opt_typing_test_metrics on <var133:ToolContext>*/;
6599 var135
= ((val
* (*)(val
*))(var134
->class->vft
[COLOR_opts__Option__value
]))(var134
) /* value on <var134:OptionBool>*/;
6600 var136
= ((struct instance_kernel__Bool
*)var135
)->value
; /* autounbox from nullable Object to Bool */;
6602 var137
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler
]))(self
) /* compiler on <self:SeparateErasureCompilerVisitor>*/;
6603 var138
= ((val
* (*)(val
*))(var137
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__count_type_test_skipped
]))(var137
) /* count_type_test_skipped on <var137:AbstractCompiler(SeparateCompiler)>*/;
6606 var140
= ((val
* (*)(val
*, val
*))(var_
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_
, var_139
) /* [] on <var_:HashMap[String, Int]>*/;
6608 { /* Inline kernel#Int#+ (var140,var141) */
6609 var144
= ((struct instance_kernel__Int
*)var140
)->value
; /* autounbox from nullable Object to Int */;
6610 var145
= var144
+ var141
;
6613 RET_LABEL143
:(void)0;
6615 var146
= BOX_kernel__Int(var142
); /* autobox from Int to nullable Object */
6616 ((void (*)(val
*, val
*, val
*))(var_
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_
, var_139
, var146
) /* []= on <var_:HashMap[String, Int]>*/;
6618 var148
= varonce147
;
6620 var149
= "count_type_test_skipped_";
6622 var151
= string__NativeString__to_s_with_length(var149
, var150
);
6624 varonce147
= var148
;
6627 var153
= varonce152
;
6631 var156
= string__NativeString__to_s_with_length(var154
, var155
);
6633 varonce152
= var153
;
6635 var157
= NEW_array__Array(&type_array__Arraykernel__Object
);
6636 { /* var157 = array_instance Array[Object] */
6638 var159
= NEW_array__NativeArray(var158
, &type_array__NativeArraykernel__Object
);
6639 ((struct instance_array__NativeArray
*)var159
)->values
[0] = (val
*) var148
;
6640 ((struct instance_array__NativeArray
*)var159
)->values
[1] = (val
*) var_tag
;
6641 ((struct instance_array__NativeArray
*)var159
)->values
[2] = (val
*) var153
;
6642 ((void (*)(val
*, val
*, long))(var157
->class->vft
[COLOR_array__Array__with_native
]))(var157
, var159
, var158
) /* with_native on <var157:Array[Object]>*/;
6643 CHECK_NEW_array__Array(var157
);
6645 var160
= ((val
* (*)(val
*))(var157
->class->vft
[COLOR_string__Object__to_s
]))(var157
) /* to_s on <var157:Array[Object]>*/;
6646 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var160
) /* add on <self:SeparateErasureCompilerVisitor>*/;
6653 var161
= ((val
* (*)(val
*))(var_value
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__mtype
]))(var_value
) /* mtype on <var_value:RuntimeVariable>*/;
6654 var162
= ((val
* (*)(val
*))(var161
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var161
) /* ctype on <var161:MType>*/;
6656 var164
= varonce163
;
6660 var167
= string__NativeString__to_s_with_length(var165
, var166
);
6662 varonce163
= var164
;
6664 var168
= ((short int (*)(val
*, val
*))(var162
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var162
, var164
) /* == on <var162:String>*/;
6666 var169
= NEW_array__Array(&type_array__Arraykernel__Object
);
6668 ((void (*)(val
*, long))(var169
->class->vft
[COLOR_array__Array__with_capacity
]))(var169
, var170
) /* with_capacity on <var169:Array[Object]>*/;
6669 CHECK_NEW_array__Array(var169
);
6672 var173
= varonce172
;
6676 var176
= string__NativeString__to_s_with_length(var174
, var175
);
6678 varonce172
= var173
;
6680 ((void (*)(val
*, val
*))(var_171
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_171
, var173
) /* add on <var_171:Array[Object]>*/;
6681 ((void (*)(val
*, val
*))(var_171
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_171
, var_value
) /* add on <var_171:Array[Object]>*/;
6683 var178
= varonce177
;
6685 var179
= "->class->";
6687 var181
= string__NativeString__to_s_with_length(var179
, var180
);
6689 varonce177
= var178
;
6691 ((void (*)(val
*, val
*))(var_171
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_171
, var178
) /* add on <var_171:Array[Object]>*/;
6692 var182
= ((val
* (*)(val
*))(var_171
->class->vft
[COLOR_string__Object__to_s
]))(var_171
) /* to_s on <var_171:Array[Object]>*/;
6693 var_class_ptr
= var182
;
6695 var183
= ((val
* (*)(val
*))(var_value
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__mtype
]))(var_value
) /* mtype on <var_value:RuntimeVariable>*/;
6696 /* <var183:MType> isa MClassType */
6697 cltype185
= type_model__MClassType
.color
;
6698 idtype186
= type_model__MClassType
.id
;
6699 if(cltype185
>= var183
->type
->table_size
) {
6702 var184
= var183
->type
->type_table
[cltype185
] == idtype186
;
6705 var_class_name
= var183
== NULL ?
"null" : var183
->type
->name
;
6706 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name
);
6707 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 508);
6710 var187
= ((val
* (*)(val
*))(var183
->class->vft
[COLOR_model__MClassType__mclass
]))(var183
) /* mclass on <var183:MType(MClassType)>*/;
6711 var_mclass
= var187
;
6713 var189
= varonce188
;
6717 var192
= string__NativeString__to_s_with_length(var190
, var191
);
6719 varonce188
= var189
;
6721 var193
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_mclass
) /* c_name on <var_mclass:MClass>*/;
6722 var194
= NEW_array__Array(&type_array__Arraykernel__Object
);
6723 { /* var194 = array_instance Array[Object] */
6725 var196
= NEW_array__NativeArray(var195
, &type_array__NativeArraykernel__Object
);
6726 ((struct instance_array__NativeArray
*)var196
)->values
[0] = (val
*) var189
;
6727 ((struct instance_array__NativeArray
*)var196
)->values
[1] = (val
*) var193
;
6728 ((void (*)(val
*, val
*, long))(var194
->class->vft
[COLOR_array__Array__with_native
]))(var194
, var196
, var195
) /* with_native on <var194:Array[Object]>*/;
6729 CHECK_NEW_array__Array(var194
);
6731 var197
= ((val
* (*)(val
*))(var194
->class->vft
[COLOR_string__Object__to_s
]))(var194
) /* to_s on <var194:Array[Object]>*/;
6732 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(self
, var197
) /* require_declaration on <self:SeparateErasureCompilerVisitor>*/;
6733 var198
= NEW_array__Array(&type_array__Arraykernel__Object
);
6735 ((void (*)(val
*, long))(var198
->class->vft
[COLOR_array__Array__with_capacity
]))(var198
, var199
) /* with_capacity on <var198:Array[Object]>*/;
6736 CHECK_NEW_array__Array(var198
);
6739 var202
= varonce201
;
6743 var205
= string__NativeString__to_s_with_length(var203
, var204
);
6745 varonce201
= var202
;
6747 ((void (*)(val
*, val
*))(var_200
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_200
, var202
) /* add on <var_200:Array[Object]>*/;
6748 var206
= ((val
* (*)(val
*))(var_mclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_mclass
) /* c_name on <var_mclass:MClass>*/;
6749 ((void (*)(val
*, val
*))(var_200
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_200
, var206
) /* add on <var_200:Array[Object]>*/;
6751 var208
= varonce207
;
6755 var211
= string__NativeString__to_s_with_length(var209
, var210
);
6757 varonce207
= var208
;
6759 ((void (*)(val
*, val
*))(var_200
->class->vft
[COLOR_abstract_collection__SimpleCollection__add
]))(var_200
, var208
) /* add on <var_200:Array[Object]>*/;
6760 var212
= ((val
* (*)(val
*))(var_200
->class->vft
[COLOR_string__Object__to_s
]))(var_200
) /* to_s on <var_200:Array[Object]>*/;
6761 var_class_ptr
= var212
;
6763 /* <var_mtype:MType> isa MClassType */
6764 cltype214
= type_model__MClassType
.color
;
6765 idtype215
= type_model__MClassType
.id
;
6766 if(cltype214
>= var_mtype
->type
->table_size
) {
6769 var213
= var_mtype
->type
->type_table
[cltype214
] == idtype215
;
6773 var217
= varonce216
;
6777 var220
= string__NativeString__to_s_with_length(var218
, var219
);
6779 varonce216
= var217
;
6781 var221
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MClassType__mclass
]))(var_mtype
) /* mclass on <var_mtype:MType(MClassType)>*/;
6782 var222
= ((val
* (*)(val
*))(var221
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var221
) /* c_name on <var221:MClass>*/;
6783 var223
= NEW_array__Array(&type_array__Arraykernel__Object
);
6784 { /* var223 = array_instance Array[Object] */
6786 var225
= NEW_array__NativeArray(var224
, &type_array__NativeArraykernel__Object
);
6787 ((struct instance_array__NativeArray
*)var225
)->values
[0] = (val
*) var217
;
6788 ((struct instance_array__NativeArray
*)var225
)->values
[1] = (val
*) var222
;
6789 ((void (*)(val
*, val
*, long))(var223
->class->vft
[COLOR_array__Array__with_native
]))(var223
, var225
, var224
) /* with_native on <var223:Array[Object]>*/;
6790 CHECK_NEW_array__Array(var223
);
6792 var226
= ((val
* (*)(val
*))(var223
->class->vft
[COLOR_string__Object__to_s
]))(var223
) /* to_s on <var223:Array[Object]>*/;
6793 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(self
, var226
) /* require_declaration on <self:SeparateErasureCompilerVisitor>*/;
6795 var228
= varonce227
;
6797 var229
= " = class_";
6799 var231
= string__NativeString__to_s_with_length(var229
, var230
);
6801 varonce227
= var228
;
6803 var232
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MClassType__mclass
]))(var_mtype
) /* mclass on <var_mtype:MType(MClassType)>*/;
6804 var233
= ((val
* (*)(val
*))(var232
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var232
) /* c_name on <var232:MClass>*/;
6806 var235
= varonce234
;
6810 var238
= string__NativeString__to_s_with_length(var236
, var237
);
6812 varonce234
= var235
;
6814 var239
= NEW_array__Array(&type_array__Arraykernel__Object
);
6815 { /* var239 = array_instance Array[Object] */
6817 var241
= NEW_array__NativeArray(var240
, &type_array__NativeArraykernel__Object
);
6818 ((struct instance_array__NativeArray
*)var241
)->values
[0] = (val
*) var_cltype
;
6819 ((struct instance_array__NativeArray
*)var241
)->values
[1] = (val
*) var228
;
6820 ((struct instance_array__NativeArray
*)var241
)->values
[2] = (val
*) var233
;
6821 ((struct instance_array__NativeArray
*)var241
)->values
[3] = (val
*) var235
;
6822 ((void (*)(val
*, val
*, long))(var239
->class->vft
[COLOR_array__Array__with_native
]))(var239
, var241
, var240
) /* with_native on <var239:Array[Object]>*/;
6823 CHECK_NEW_array__Array(var239
);
6825 var242
= ((val
* (*)(val
*))(var239
->class->vft
[COLOR_string__Object__to_s
]))(var239
) /* to_s on <var239:Array[Object]>*/;
6826 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var242
) /* add on <self:SeparateErasureCompilerVisitor>*/;
6828 var244
= varonce243
;
6830 var245
= " = class_";
6832 var247
= string__NativeString__to_s_with_length(var245
, var246
);
6834 varonce243
= var244
;
6836 var248
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MClassType__mclass
]))(var_mtype
) /* mclass on <var_mtype:MType(MClassType)>*/;
6837 var249
= ((val
* (*)(val
*))(var248
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var248
) /* c_name on <var248:MClass>*/;
6839 var251
= varonce250
;
6843 var254
= string__NativeString__to_s_with_length(var252
, var253
);
6845 varonce250
= var251
;
6847 var255
= NEW_array__Array(&type_array__Arraykernel__Object
);
6848 { /* var255 = array_instance Array[Object] */
6850 var257
= NEW_array__NativeArray(var256
, &type_array__NativeArraykernel__Object
);
6851 ((struct instance_array__NativeArray
*)var257
)->values
[0] = (val
*) var_idtype
;
6852 ((struct instance_array__NativeArray
*)var257
)->values
[1] = (val
*) var244
;
6853 ((struct instance_array__NativeArray
*)var257
)->values
[2] = (val
*) var249
;
6854 ((struct instance_array__NativeArray
*)var257
)->values
[3] = (val
*) var251
;
6855 ((void (*)(val
*, val
*, long))(var255
->class->vft
[COLOR_array__Array__with_native
]))(var255
, var257
, var256
) /* with_native on <var255:Array[Object]>*/;
6856 CHECK_NEW_array__Array(var255
);
6858 var258
= ((val
* (*)(val
*))(var255
->class->vft
[COLOR_string__Object__to_s
]))(var255
) /* to_s on <var255:Array[Object]>*/;
6859 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var258
) /* add on <self:SeparateErasureCompilerVisitor>*/;
6860 var259
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler
]))(self
) /* compiler on <self:SeparateErasureCompilerVisitor>*/;
6861 var260
= ((val
* (*)(val
*))(var259
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__modelbuilder
]))(var259
) /* modelbuilder on <var259:AbstractCompiler(SeparateCompiler)>*/;
6862 var261
= ((val
* (*)(val
*))(var260
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(var260
) /* toolcontext on <var260:ModelBuilder>*/;
6863 var262
= ((val
* (*)(val
*))(var261
->class->vft
[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics
]))(var261
) /* opt_typing_test_metrics on <var261:ToolContext>*/;
6864 var263
= ((val
* (*)(val
*))(var262
->class->vft
[COLOR_opts__Option__value
]))(var262
) /* value on <var262:OptionBool>*/;
6865 var264
= ((struct instance_kernel__Bool
*)var263
)->value
; /* autounbox from nullable Object to Bool */;
6867 var265
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler
]))(self
) /* compiler on <self:SeparateErasureCompilerVisitor>*/;
6868 var266
= ((val
* (*)(val
*))(var265
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__count_type_test_resolved
]))(var265
) /* count_type_test_resolved on <var265:AbstractCompiler(SeparateCompiler)>*/;
6871 var269
= ((val
* (*)(val
*, val
*))(var_267
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_267
, var_268
) /* [] on <var_267:HashMap[String, Int]>*/;
6873 { /* Inline kernel#Int#+ (var269,var270) */
6874 var273
= ((struct instance_kernel__Int
*)var269
)->value
; /* autounbox from nullable Object to Int */;
6875 var274
= var273
+ var270
;
6878 RET_LABEL272
:(void)0;
6880 var275
= BOX_kernel__Int(var271
); /* autobox from Int to nullable Object */
6881 ((void (*)(val
*, val
*, val
*))(var_267
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_267
, var_268
, var275
) /* []= on <var_267:HashMap[String, Int]>*/;
6883 var277
= varonce276
;
6885 var278
= "count_type_test_resolved_";
6887 var280
= string__NativeString__to_s_with_length(var278
, var279
);
6889 varonce276
= var277
;
6892 var282
= varonce281
;
6896 var285
= string__NativeString__to_s_with_length(var283
, var284
);
6898 varonce281
= var282
;
6900 var286
= NEW_array__Array(&type_array__Arraykernel__Object
);
6901 { /* var286 = array_instance Array[Object] */
6903 var288
= NEW_array__NativeArray(var287
, &type_array__NativeArraykernel__Object
);
6904 ((struct instance_array__NativeArray
*)var288
)->values
[0] = (val
*) var277
;
6905 ((struct instance_array__NativeArray
*)var288
)->values
[1] = (val
*) var_tag
;
6906 ((struct instance_array__NativeArray
*)var288
)->values
[2] = (val
*) var282
;
6907 ((void (*)(val
*, val
*, long))(var286
->class->vft
[COLOR_array__Array__with_native
]))(var286
, var288
, var287
) /* with_native on <var286:Array[Object]>*/;
6908 CHECK_NEW_array__Array(var286
);
6910 var289
= ((val
* (*)(val
*))(var286
->class->vft
[COLOR_string__Object__to_s
]))(var286
) /* to_s on <var286:Array[Object]>*/;
6911 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var289
) /* add on <self:SeparateErasureCompilerVisitor>*/;
6915 /* <var_mtype:MType> isa MVirtualType */
6916 cltype291
= type_model__MVirtualType
.color
;
6917 idtype292
= type_model__MVirtualType
.id
;
6918 if(cltype291
>= var_mtype
->type
->table_size
) {
6921 var290
= var_mtype
->type
->type_table
[cltype291
] == idtype292
;
6924 var293
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__frame
]))(self
) /* frame on <self:SeparateErasureCompilerVisitor>*/;
6925 if (var293
== NULL
) {
6926 fprintf(stderr
, "Runtime error: %s", "Reciever is null");
6927 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 522);
6930 var294
= ((val
* (*)(val
*))(var293
->class->vft
[COLOR_abstract_compiler__Frame__arguments
]))(var293
) /* arguments on <var293:nullable Frame>*/;
6932 var295
= ((val
* (*)(val
*))(var294
->class->vft
[COLOR_abstract_collection__Collection__first
]))(var294
) /* first on <var294:Array[RuntimeVariable]>*/;
6934 var296
= ((val
* (*)(val
*))(var_recv
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__mtype
]))(var_recv
) /* mtype on <var_recv:RuntimeVariable>*/;
6935 var297
= ((val
* (*)(val
*))(var296
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var296
) /* ctype on <var296:MType>*/;
6937 var299
= varonce298
;
6941 var302
= string__NativeString__to_s_with_length(var300
, var301
);
6943 varonce298
= var299
;
6945 var303
= ((short int (*)(val
*, val
*))(var297
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var297
, var299
) /* == on <var297:String>*/;
6948 var305
= varonce304
;
6950 var306
= "->class->";
6952 var308
= string__NativeString__to_s_with_length(var306
, var307
);
6954 varonce304
= var305
;
6956 var309
= NEW_array__Array(&type_array__Arraykernel__Object
);
6957 { /* var309 = array_instance Array[Object] */
6959 var311
= NEW_array__NativeArray(var310
, &type_array__NativeArraykernel__Object
);
6960 ((struct instance_array__NativeArray
*)var311
)->values
[0] = (val
*) var_recv
;
6961 ((struct instance_array__NativeArray
*)var311
)->values
[1] = (val
*) var305
;
6962 ((void (*)(val
*, val
*, long))(var309
->class->vft
[COLOR_array__Array__with_native
]))(var309
, var311
, var310
) /* with_native on <var309:Array[Object]>*/;
6963 CHECK_NEW_array__Array(var309
);
6965 var312
= ((val
* (*)(val
*))(var309
->class->vft
[COLOR_string__Object__to_s
]))(var309
) /* to_s on <var309:Array[Object]>*/;
6966 var_recv_ptr
= var312
;
6968 var313
= ((val
* (*)(val
*))(var_recv
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__mtype
]))(var_recv
) /* mtype on <var_recv:RuntimeVariable>*/;
6969 /* <var313:MType> isa MClassType */
6970 cltype315
= type_model__MClassType
.color
;
6971 idtype316
= type_model__MClassType
.id
;
6972 if(cltype315
>= var313
->type
->table_size
) {
6975 var314
= var313
->type
->type_table
[cltype315
] == idtype316
;
6978 var_class_name317
= var313
== NULL ?
"null" : var313
->type
->name
;
6979 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name317
);
6980 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 527);
6983 var318
= ((val
* (*)(val
*))(var313
->class->vft
[COLOR_model__MClassType__mclass
]))(var313
) /* mclass on <var313:MType(MClassType)>*/;
6984 var_mclass319
= var318
;
6986 var321
= varonce320
;
6990 var324
= string__NativeString__to_s_with_length(var322
, var323
);
6992 varonce320
= var321
;
6994 var325
= ((val
* (*)(val
*))(var_mclass319
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_mclass319
) /* c_name on <var_mclass319:MClass>*/;
6995 var326
= NEW_array__Array(&type_array__Arraykernel__Object
);
6996 { /* var326 = array_instance Array[Object] */
6998 var328
= NEW_array__NativeArray(var327
, &type_array__NativeArraykernel__Object
);
6999 ((struct instance_array__NativeArray
*)var328
)->values
[0] = (val
*) var321
;
7000 ((struct instance_array__NativeArray
*)var328
)->values
[1] = (val
*) var325
;
7001 ((void (*)(val
*, val
*, long))(var326
->class->vft
[COLOR_array__Array__with_native
]))(var326
, var328
, var327
) /* with_native on <var326:Array[Object]>*/;
7002 CHECK_NEW_array__Array(var326
);
7004 var329
= ((val
* (*)(val
*))(var326
->class->vft
[COLOR_string__Object__to_s
]))(var326
) /* to_s on <var326:Array[Object]>*/;
7005 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(self
, var329
) /* require_declaration on <self:SeparateErasureCompilerVisitor>*/;
7007 var331
= varonce330
;
7011 var334
= string__NativeString__to_s_with_length(var332
, var333
);
7013 varonce330
= var331
;
7015 var335
= ((val
* (*)(val
*))(var_mclass319
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_mclass319
) /* c_name on <var_mclass319:MClass>*/;
7017 var337
= varonce336
;
7021 var340
= string__NativeString__to_s_with_length(var338
, var339
);
7023 varonce336
= var337
;
7025 var341
= NEW_array__Array(&type_array__Arraykernel__Object
);
7026 { /* var341 = array_instance Array[Object] */
7028 var343
= NEW_array__NativeArray(var342
, &type_array__NativeArraykernel__Object
);
7029 ((struct instance_array__NativeArray
*)var343
)->values
[0] = (val
*) var331
;
7030 ((struct instance_array__NativeArray
*)var343
)->values
[1] = (val
*) var335
;
7031 ((struct instance_array__NativeArray
*)var343
)->values
[2] = (val
*) var337
;
7032 ((void (*)(val
*, val
*, long))(var341
->class->vft
[COLOR_array__Array__with_native
]))(var341
, var343
, var342
) /* with_native on <var341:Array[Object]>*/;
7033 CHECK_NEW_array__Array(var341
);
7035 var344
= ((val
* (*)(val
*))(var341
->class->vft
[COLOR_string__Object__to_s
]))(var341
) /* to_s on <var341:Array[Object]>*/;
7036 var_recv_ptr
= var344
;
7039 var346
= varonce345
;
7043 var349
= string__NativeString__to_s_with_length(var347
, var348
);
7045 varonce345
= var346
;
7047 var350
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name
]))(self
, var346
) /* get_name on <self:SeparateErasureCompilerVisitor>*/;
7050 var352
= varonce351
;
7052 var353
= "struct vts_entry ";
7054 var355
= string__NativeString__to_s_with_length(var353
, var354
);
7056 varonce351
= var352
;
7059 var357
= varonce356
;
7063 var360
= string__NativeString__to_s_with_length(var358
, var359
);
7065 varonce356
= var357
;
7067 var361
= NEW_array__Array(&type_array__Arraykernel__Object
);
7068 { /* var361 = array_instance Array[Object] */
7070 var363
= NEW_array__NativeArray(var362
, &type_array__NativeArraykernel__Object
);
7071 ((struct instance_array__NativeArray
*)var363
)->values
[0] = (val
*) var352
;
7072 ((struct instance_array__NativeArray
*)var363
)->values
[1] = (val
*) var_entry
;
7073 ((struct instance_array__NativeArray
*)var363
)->values
[2] = (val
*) var357
;
7074 ((void (*)(val
*, val
*, long))(var361
->class->vft
[COLOR_array__Array__with_native
]))(var361
, var363
, var362
) /* with_native on <var361:Array[Object]>*/;
7075 CHECK_NEW_array__Array(var361
);
7077 var364
= ((val
* (*)(val
*))(var361
->class->vft
[COLOR_string__Object__to_s
]))(var361
) /* to_s on <var361:Array[Object]>*/;
7078 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var364
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7079 var365
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MVirtualType__mproperty
]))(var_mtype
) /* mproperty on <var_mtype:MType(MVirtualType)>*/;
7080 var366
= ((val
* (*)(val
*))(var365
->class->vft
[COLOR_separate_compiler__MProperty__const_color
]))(var365
) /* const_color on <var365:MProperty>*/;
7081 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(self
, var366
) /* require_declaration on <self:SeparateErasureCompilerVisitor>*/;
7082 var367
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler
]))(self
) /* compiler on <self:SeparateErasureCompilerVisitor>*/;
7083 /* <var367:AbstractCompiler(SeparateCompiler)> isa SeparateErasureCompiler */
7084 cltype369
= type_separate_erasure_compiler__SeparateErasureCompiler
.color
;
7085 idtype370
= type_separate_erasure_compiler__SeparateErasureCompiler
.id
;
7086 if(cltype369
>= var367
->type
->table_size
) {
7089 var368
= var367
->type
->type_table
[cltype369
] == idtype370
;
7092 var_class_name371
= var367
== NULL ?
"null" : var367
->type
->name
;
7093 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SeparateErasureCompiler", var_class_name371
);
7094 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 534);
7097 var372
= ((val
* (*)(val
*))(var367
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__vt_layout
]))(var367
) /* vt_layout on <var367:SeparateCompiler(SeparateErasureCompiler)>*/;
7098 /* <var372:nullable Layout[MVirtualTypeProp]> isa PHLayout[MClass, MVirtualTypeProp] */
7099 cltype374
= type_layout_builders__PHLayoutmodel__MClassmodel__MVirtualTypeProp
.color
;
7100 idtype375
= type_layout_builders__PHLayoutmodel__MClassmodel__MVirtualTypeProp
.id
;
7101 if(var372
== NULL
) {
7104 if(cltype374
>= var372
->type
->table_size
) {
7107 var373
= var372
->type
->type_table
[cltype374
] == idtype375
;
7112 var377
= varonce376
;
7116 var380
= string__NativeString__to_s_with_length(var378
, var379
);
7118 varonce376
= var377
;
7121 var382
= varonce381
;
7123 var383
= "vts_table->vts[HASH(";
7125 var385
= string__NativeString__to_s_with_length(var383
, var384
);
7127 varonce381
= var382
;
7130 var387
= varonce386
;
7132 var388
= "vts_table->mask, ";
7134 var390
= string__NativeString__to_s_with_length(var388
, var389
);
7136 varonce386
= var387
;
7138 var391
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MVirtualType__mproperty
]))(var_mtype
) /* mproperty on <var_mtype:MType(MVirtualType)>*/;
7139 var392
= ((val
* (*)(val
*))(var391
->class->vft
[COLOR_separate_compiler__MProperty__const_color
]))(var391
) /* const_color on <var391:MProperty>*/;
7141 var394
= varonce393
;
7145 var397
= string__NativeString__to_s_with_length(var395
, var396
);
7147 varonce393
= var394
;
7149 var398
= NEW_array__Array(&type_array__Arraykernel__Object
);
7150 { /* var398 = array_instance Array[Object] */
7152 var400
= NEW_array__NativeArray(var399
, &type_array__NativeArraykernel__Object
);
7153 ((struct instance_array__NativeArray
*)var400
)->values
[0] = (val
*) var_entry
;
7154 ((struct instance_array__NativeArray
*)var400
)->values
[1] = (val
*) var377
;
7155 ((struct instance_array__NativeArray
*)var400
)->values
[2] = (val
*) var_recv_ptr
;
7156 ((struct instance_array__NativeArray
*)var400
)->values
[3] = (val
*) var382
;
7157 ((struct instance_array__NativeArray
*)var400
)->values
[4] = (val
*) var_recv_ptr
;
7158 ((struct instance_array__NativeArray
*)var400
)->values
[5] = (val
*) var387
;
7159 ((struct instance_array__NativeArray
*)var400
)->values
[6] = (val
*) var392
;
7160 ((struct instance_array__NativeArray
*)var400
)->values
[7] = (val
*) var394
;
7161 ((void (*)(val
*, val
*, long))(var398
->class->vft
[COLOR_array__Array__with_native
]))(var398
, var400
, var399
) /* with_native on <var398:Array[Object]>*/;
7162 CHECK_NEW_array__Array(var398
);
7164 var401
= ((val
* (*)(val
*))(var398
->class->vft
[COLOR_string__Object__to_s
]))(var398
) /* to_s on <var398:Array[Object]>*/;
7165 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var401
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7168 var403
= varonce402
;
7172 var406
= string__NativeString__to_s_with_length(var404
, var405
);
7174 varonce402
= var403
;
7177 var408
= varonce407
;
7179 var409
= "vts_table->vts[";
7181 var411
= string__NativeString__to_s_with_length(var409
, var410
);
7183 varonce407
= var408
;
7185 var412
= ((val
* (*)(val
*))(var_mtype
->class->vft
[COLOR_model__MVirtualType__mproperty
]))(var_mtype
) /* mproperty on <var_mtype:MType(MVirtualType)>*/;
7186 var413
= ((val
* (*)(val
*))(var412
->class->vft
[COLOR_separate_compiler__MProperty__const_color
]))(var412
) /* const_color on <var412:MProperty>*/;
7188 var415
= varonce414
;
7192 var418
= string__NativeString__to_s_with_length(var416
, var417
);
7194 varonce414
= var415
;
7196 var419
= NEW_array__Array(&type_array__Arraykernel__Object
);
7197 { /* var419 = array_instance Array[Object] */
7199 var421
= NEW_array__NativeArray(var420
, &type_array__NativeArraykernel__Object
);
7200 ((struct instance_array__NativeArray
*)var421
)->values
[0] = (val
*) var_entry
;
7201 ((struct instance_array__NativeArray
*)var421
)->values
[1] = (val
*) var403
;
7202 ((struct instance_array__NativeArray
*)var421
)->values
[2] = (val
*) var_recv_ptr
;
7203 ((struct instance_array__NativeArray
*)var421
)->values
[3] = (val
*) var408
;
7204 ((struct instance_array__NativeArray
*)var421
)->values
[4] = (val
*) var413
;
7205 ((struct instance_array__NativeArray
*)var421
)->values
[5] = (val
*) var415
;
7206 ((void (*)(val
*, val
*, long))(var419
->class->vft
[COLOR_array__Array__with_native
]))(var419
, var421
, var420
) /* with_native on <var419:Array[Object]>*/;
7207 CHECK_NEW_array__Array(var419
);
7209 var422
= ((val
* (*)(val
*))(var419
->class->vft
[COLOR_string__Object__to_s
]))(var419
) /* to_s on <var419:Array[Object]>*/;
7210 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var422
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7213 var424
= varonce423
;
7217 var427
= string__NativeString__to_s_with_length(var425
, var426
);
7219 varonce423
= var424
;
7222 var429
= varonce428
;
7224 var430
= ".class->color;";
7226 var432
= string__NativeString__to_s_with_length(var430
, var431
);
7228 varonce428
= var429
;
7230 var433
= NEW_array__Array(&type_array__Arraykernel__Object
);
7231 { /* var433 = array_instance Array[Object] */
7233 var435
= NEW_array__NativeArray(var434
, &type_array__NativeArraykernel__Object
);
7234 ((struct instance_array__NativeArray
*)var435
)->values
[0] = (val
*) var_cltype
;
7235 ((struct instance_array__NativeArray
*)var435
)->values
[1] = (val
*) var424
;
7236 ((struct instance_array__NativeArray
*)var435
)->values
[2] = (val
*) var_entry
;
7237 ((struct instance_array__NativeArray
*)var435
)->values
[3] = (val
*) var429
;
7238 ((void (*)(val
*, val
*, long))(var433
->class->vft
[COLOR_array__Array__with_native
]))(var433
, var435
, var434
) /* with_native on <var433:Array[Object]>*/;
7239 CHECK_NEW_array__Array(var433
);
7241 var436
= ((val
* (*)(val
*))(var433
->class->vft
[COLOR_string__Object__to_s
]))(var433
) /* to_s on <var433:Array[Object]>*/;
7242 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var436
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7244 var438
= varonce437
;
7248 var441
= string__NativeString__to_s_with_length(var439
, var440
);
7250 varonce437
= var438
;
7253 var443
= varonce442
;
7255 var444
= ".class->id;";
7257 var446
= string__NativeString__to_s_with_length(var444
, var445
);
7259 varonce442
= var443
;
7261 var447
= NEW_array__Array(&type_array__Arraykernel__Object
);
7262 { /* var447 = array_instance Array[Object] */
7264 var449
= NEW_array__NativeArray(var448
, &type_array__NativeArraykernel__Object
);
7265 ((struct instance_array__NativeArray
*)var449
)->values
[0] = (val
*) var_idtype
;
7266 ((struct instance_array__NativeArray
*)var449
)->values
[1] = (val
*) var438
;
7267 ((struct instance_array__NativeArray
*)var449
)->values
[2] = (val
*) var_entry
;
7268 ((struct instance_array__NativeArray
*)var449
)->values
[3] = (val
*) var443
;
7269 ((void (*)(val
*, val
*, long))(var447
->class->vft
[COLOR_array__Array__with_native
]))(var447
, var449
, var448
) /* with_native on <var447:Array[Object]>*/;
7270 CHECK_NEW_array__Array(var447
);
7272 var450
= ((val
* (*)(val
*))(var447
->class->vft
[COLOR_string__Object__to_s
]))(var447
) /* to_s on <var447:Array[Object]>*/;
7273 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var450
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7274 var_452
= var_maybe_null
;
7275 if (var_maybe_null
){
7277 var454
= varonce453
;
7281 var457
= string__NativeString__to_s_with_length(var455
, var456
);
7283 varonce453
= var454
;
7285 var458
= ((short int (*)(val
*, val
*))(var_accept_null
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var_accept_null
, var454
) /* == on <var_accept_null:String>*/;
7292 var460
= varonce459
;
7294 var461
= "is_nullable";
7296 var463
= string__NativeString__to_s_with_length(var461
, var462
);
7298 varonce459
= var460
;
7300 var464
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name
]))(self
, var460
) /* get_name on <self:SeparateErasureCompilerVisitor>*/;
7301 var_is_nullable
= var464
;
7303 var466
= varonce465
;
7305 var467
= "short int ";
7307 var469
= string__NativeString__to_s_with_length(var467
, var468
);
7309 varonce465
= var466
;
7312 var471
= varonce470
;
7316 var474
= string__NativeString__to_s_with_length(var472
, var473
);
7318 varonce470
= var471
;
7320 var475
= NEW_array__Array(&type_array__Arraykernel__Object
);
7321 { /* var475 = array_instance Array[Object] */
7323 var477
= NEW_array__NativeArray(var476
, &type_array__NativeArraykernel__Object
);
7324 ((struct instance_array__NativeArray
*)var477
)->values
[0] = (val
*) var466
;
7325 ((struct instance_array__NativeArray
*)var477
)->values
[1] = (val
*) var_is_nullable
;
7326 ((struct instance_array__NativeArray
*)var477
)->values
[2] = (val
*) var471
;
7327 ((void (*)(val
*, val
*, long))(var475
->class->vft
[COLOR_array__Array__with_native
]))(var475
, var477
, var476
) /* with_native on <var475:Array[Object]>*/;
7328 CHECK_NEW_array__Array(var475
);
7330 var478
= ((val
* (*)(val
*))(var475
->class->vft
[COLOR_string__Object__to_s
]))(var475
) /* to_s on <var475:Array[Object]>*/;
7331 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(self
, var478
) /* add_decl on <self:SeparateErasureCompilerVisitor>*/;
7333 var480
= varonce479
;
7337 var483
= string__NativeString__to_s_with_length(var481
, var482
);
7339 varonce479
= var480
;
7342 var485
= varonce484
;
7344 var486
= ".is_nullable;";
7346 var488
= string__NativeString__to_s_with_length(var486
, var487
);
7348 varonce484
= var485
;
7350 var489
= NEW_array__Array(&type_array__Arraykernel__Object
);
7351 { /* var489 = array_instance Array[Object] */
7353 var491
= NEW_array__NativeArray(var490
, &type_array__NativeArraykernel__Object
);
7354 ((struct instance_array__NativeArray
*)var491
)->values
[0] = (val
*) var_is_nullable
;
7355 ((struct instance_array__NativeArray
*)var491
)->values
[1] = (val
*) var480
;
7356 ((struct instance_array__NativeArray
*)var491
)->values
[2] = (val
*) var_entry
;
7357 ((struct instance_array__NativeArray
*)var491
)->values
[3] = (val
*) var485
;
7358 ((void (*)(val
*, val
*, long))(var489
->class->vft
[COLOR_array__Array__with_native
]))(var489
, var491
, var490
) /* with_native on <var489:Array[Object]>*/;
7359 CHECK_NEW_array__Array(var489
);
7361 var492
= ((val
* (*)(val
*))(var489
->class->vft
[COLOR_string__Object__to_s
]))(var489
) /* to_s on <var489:Array[Object]>*/;
7362 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var492
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7363 var493
= ((val
* (*)(val
*))(var_is_nullable
->class->vft
[COLOR_string__Object__to_s
]))(var_is_nullable
) /* to_s on <var_is_nullable:String>*/;
7364 var_accept_null
= var493
;
7367 var494
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler
]))(self
) /* compiler on <self:SeparateErasureCompilerVisitor>*/;
7368 var495
= ((val
* (*)(val
*))(var494
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__modelbuilder
]))(var494
) /* modelbuilder on <var494:AbstractCompiler(SeparateCompiler)>*/;
7369 var496
= ((val
* (*)(val
*))(var495
->class->vft
[COLOR_modelbuilder__ModelBuilder__toolcontext
]))(var495
) /* toolcontext on <var495:ModelBuilder>*/;
7370 var497
= ((val
* (*)(val
*))(var496
->class->vft
[COLOR_abstract_compiler__ToolContext__opt_typing_test_metrics
]))(var496
) /* opt_typing_test_metrics on <var496:ToolContext>*/;
7371 var498
= ((val
* (*)(val
*))(var497
->class->vft
[COLOR_opts__Option__value
]))(var497
) /* value on <var497:OptionBool>*/;
7372 var499
= ((struct instance_kernel__Bool
*)var498
)->value
; /* autounbox from nullable Object to Bool */;
7374 var500
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler
]))(self
) /* compiler on <self:SeparateErasureCompilerVisitor>*/;
7375 var501
= ((val
* (*)(val
*))(var500
->class->vft
[COLOR_abstract_compiler__AbstractCompiler__count_type_test_unresolved
]))(var500
) /* count_type_test_unresolved on <var500:AbstractCompiler(SeparateCompiler)>*/;
7378 var504
= ((val
* (*)(val
*, val
*))(var_502
->class->vft
[COLOR_abstract_collection__MapRead___91d_93d
]))(var_502
, var_503
) /* [] on <var_502:HashMap[String, Int]>*/;
7380 { /* Inline kernel#Int#+ (var504,var505) */
7381 var508
= ((struct instance_kernel__Int
*)var504
)->value
; /* autounbox from nullable Object to Int */;
7382 var509
= var508
+ var505
;
7385 RET_LABEL507
:(void)0;
7387 var510
= BOX_kernel__Int(var506
); /* autobox from Int to nullable Object */
7388 ((void (*)(val
*, val
*, val
*))(var_502
->class->vft
[COLOR_abstract_collection__Map___91d_93d_61d
]))(var_502
, var_503
, var510
) /* []= on <var_502:HashMap[String, Int]>*/;
7390 var512
= varonce511
;
7392 var513
= "count_type_test_unresolved_";
7394 var515
= string__NativeString__to_s_with_length(var513
, var514
);
7396 varonce511
= var512
;
7399 var517
= varonce516
;
7403 var520
= string__NativeString__to_s_with_length(var518
, var519
);
7405 varonce516
= var517
;
7407 var521
= NEW_array__Array(&type_array__Arraykernel__Object
);
7408 { /* var521 = array_instance Array[Object] */
7410 var523
= NEW_array__NativeArray(var522
, &type_array__NativeArraykernel__Object
);
7411 ((struct instance_array__NativeArray
*)var523
)->values
[0] = (val
*) var512
;
7412 ((struct instance_array__NativeArray
*)var523
)->values
[1] = (val
*) var_tag
;
7413 ((struct instance_array__NativeArray
*)var523
)->values
[2] = (val
*) var517
;
7414 ((void (*)(val
*, val
*, long))(var521
->class->vft
[COLOR_array__Array__with_native
]))(var521
, var523
, var522
) /* with_native on <var521:Array[Object]>*/;
7415 CHECK_NEW_array__Array(var521
);
7417 var524
= ((val
* (*)(val
*))(var521
->class->vft
[COLOR_string__Object__to_s
]))(var521
) /* to_s on <var521:Array[Object]>*/;
7418 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var524
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7423 var526
= varonce525
;
7425 var527
= "type_test(";
7427 var529
= string__NativeString__to_s_with_length(var527
, var528
);
7429 varonce525
= var526
;
7431 var530
= ((val
* (*)(val
*))(var_value
->class->vft
[COLOR_string__Object__inspect
]))(var_value
) /* inspect on <var_value:RuntimeVariable>*/;
7433 var532
= varonce531
;
7437 var535
= string__NativeString__to_s_with_length(var533
, var534
);
7439 varonce531
= var532
;
7442 var537
= varonce536
;
7446 var540
= string__NativeString__to_s_with_length(var538
, var539
);
7448 varonce536
= var537
;
7450 var541
= NEW_array__Array(&type_array__Arraykernel__Object
);
7451 { /* var541 = array_instance Array[Object] */
7453 var543
= NEW_array__NativeArray(var542
, &type_array__NativeArraykernel__Object
);
7454 ((struct instance_array__NativeArray
*)var543
)->values
[0] = (val
*) var526
;
7455 ((struct instance_array__NativeArray
*)var543
)->values
[1] = (val
*) var530
;
7456 ((struct instance_array__NativeArray
*)var543
)->values
[2] = (val
*) var532
;
7457 ((struct instance_array__NativeArray
*)var543
)->values
[3] = (val
*) var_mtype
;
7458 ((struct instance_array__NativeArray
*)var543
)->values
[4] = (val
*) var537
;
7459 ((void (*)(val
*, val
*, long))(var541
->class->vft
[COLOR_array__Array__with_native
]))(var541
, var543
, var542
) /* with_native on <var541:Array[Object]>*/;
7460 CHECK_NEW_array__Array(var541
);
7462 var544
= ((val
* (*)(val
*))(var541
->class->vft
[COLOR_string__Object__to_s
]))(var541
) /* to_s on <var541:Array[Object]>*/;
7463 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__debug
]))(self
, var544
) /* debug on <self:SeparateErasureCompilerVisitor>*/;
7464 fprintf(stderr
, "Runtime error: %s", "Aborted");
7465 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 553);
7469 if (var_maybe_null
){
7471 var546
= varonce545
;
7475 var549
= string__NativeString__to_s_with_length(var547
, var548
);
7477 varonce545
= var546
;
7480 var551
= varonce550
;
7482 var552
= " == NULL) {";
7484 var554
= string__NativeString__to_s_with_length(var552
, var553
);
7486 varonce550
= var551
;
7488 var555
= NEW_array__Array(&type_array__Arraykernel__Object
);
7489 { /* var555 = array_instance Array[Object] */
7491 var557
= NEW_array__NativeArray(var556
, &type_array__NativeArraykernel__Object
);
7492 ((struct instance_array__NativeArray
*)var557
)->values
[0] = (val
*) var546
;
7493 ((struct instance_array__NativeArray
*)var557
)->values
[1] = (val
*) var_value
;
7494 ((struct instance_array__NativeArray
*)var557
)->values
[2] = (val
*) var551
;
7495 ((void (*)(val
*, val
*, long))(var555
->class->vft
[COLOR_array__Array__with_native
]))(var555
, var557
, var556
) /* with_native on <var555:Array[Object]>*/;
7496 CHECK_NEW_array__Array(var555
);
7498 var558
= ((val
* (*)(val
*))(var555
->class->vft
[COLOR_string__Object__to_s
]))(var555
) /* to_s on <var555:Array[Object]>*/;
7499 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var558
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7501 var560
= varonce559
;
7505 var563
= string__NativeString__to_s_with_length(var561
, var562
);
7507 varonce559
= var560
;
7510 var565
= varonce564
;
7514 var568
= string__NativeString__to_s_with_length(var566
, var567
);
7516 varonce564
= var565
;
7518 var569
= NEW_array__Array(&type_array__Arraykernel__Object
);
7519 { /* var569 = array_instance Array[Object] */
7521 var571
= NEW_array__NativeArray(var570
, &type_array__NativeArraykernel__Object
);
7522 ((struct instance_array__NativeArray
*)var571
)->values
[0] = (val
*) var_res
;
7523 ((struct instance_array__NativeArray
*)var571
)->values
[1] = (val
*) var560
;
7524 ((struct instance_array__NativeArray
*)var571
)->values
[2] = (val
*) var_accept_null
;
7525 ((struct instance_array__NativeArray
*)var571
)->values
[3] = (val
*) var565
;
7526 ((void (*)(val
*, val
*, long))(var569
->class->vft
[COLOR_array__Array__with_native
]))(var569
, var571
, var570
) /* with_native on <var569:Array[Object]>*/;
7527 CHECK_NEW_array__Array(var569
);
7529 var572
= ((val
* (*)(val
*))(var569
->class->vft
[COLOR_string__Object__to_s
]))(var569
) /* to_s on <var569:Array[Object]>*/;
7530 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var572
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7532 var574
= varonce573
;
7534 var575
= "} else {";
7536 var577
= string__NativeString__to_s_with_length(var575
, var576
);
7538 varonce573
= var574
;
7540 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var574
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7543 var578
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__compiler
]))(self
) /* compiler on <self:SeparateErasureCompilerVisitor>*/;
7544 /* <var578:AbstractCompiler(SeparateCompiler)> isa SeparateErasureCompiler */
7545 cltype580
= type_separate_erasure_compiler__SeparateErasureCompiler
.color
;
7546 idtype581
= type_separate_erasure_compiler__SeparateErasureCompiler
.id
;
7547 if(cltype580
>= var578
->type
->table_size
) {
7550 var579
= var578
->type
->type_table
[cltype580
] == idtype581
;
7553 var_class_name582
= var578
== NULL ?
"null" : var578
->type
->name
;
7554 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "SeparateErasureCompiler", var_class_name582
);
7555 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 562);
7558 var583
= ((val
* (*)(val
*))(var578
->class->vft
[COLOR_separate_erasure_compiler__SeparateErasureCompiler__class_layout
]))(var578
) /* class_layout on <var578:SeparateCompiler(SeparateErasureCompiler)>*/;
7559 /* <var583:nullable Layout[MClass]> isa PHLayout[MClass, MClass] */
7560 cltype585
= type_layout_builders__PHLayoutmodel__MClassmodel__MClass
.color
;
7561 idtype586
= type_layout_builders__PHLayoutmodel__MClassmodel__MClass
.id
;
7562 if(var583
== NULL
) {
7565 if(cltype585
>= var583
->type
->table_size
) {
7568 var584
= var583
->type
->type_table
[cltype585
] == idtype586
;
7573 var588
= varonce587
;
7575 var589
= " = HASH(";
7577 var591
= string__NativeString__to_s_with_length(var589
, var590
);
7579 varonce587
= var588
;
7582 var593
= varonce592
;
7586 var596
= string__NativeString__to_s_with_length(var594
, var595
);
7588 varonce592
= var593
;
7591 var598
= varonce597
;
7595 var601
= string__NativeString__to_s_with_length(var599
, var600
);
7597 varonce597
= var598
;
7599 var602
= NEW_array__Array(&type_array__Arraykernel__Object
);
7600 { /* var602 = array_instance Array[Object] */
7602 var604
= NEW_array__NativeArray(var603
, &type_array__NativeArraykernel__Object
);
7603 ((struct instance_array__NativeArray
*)var604
)->values
[0] = (val
*) var_cltype
;
7604 ((struct instance_array__NativeArray
*)var604
)->values
[1] = (val
*) var588
;
7605 ((struct instance_array__NativeArray
*)var604
)->values
[2] = (val
*) var_class_ptr
;
7606 ((struct instance_array__NativeArray
*)var604
)->values
[3] = (val
*) var593
;
7607 ((struct instance_array__NativeArray
*)var604
)->values
[4] = (val
*) var_idtype
;
7608 ((struct instance_array__NativeArray
*)var604
)->values
[5] = (val
*) var598
;
7609 ((void (*)(val
*, val
*, long))(var602
->class->vft
[COLOR_array__Array__with_native
]))(var602
, var604
, var603
) /* with_native on <var602:Array[Object]>*/;
7610 CHECK_NEW_array__Array(var602
);
7612 var605
= ((val
* (*)(val
*))(var602
->class->vft
[COLOR_string__Object__to_s
]))(var602
) /* to_s on <var602:Array[Object]>*/;
7613 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var605
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7617 var607
= varonce606
;
7621 var610
= string__NativeString__to_s_with_length(var608
, var609
);
7623 varonce606
= var607
;
7626 var612
= varonce611
;
7630 var615
= string__NativeString__to_s_with_length(var613
, var614
);
7632 varonce611
= var612
;
7635 var617
= varonce616
;
7637 var618
= "type_table->size) {";
7639 var620
= string__NativeString__to_s_with_length(var618
, var619
);
7641 varonce616
= var617
;
7643 var621
= NEW_array__Array(&type_array__Arraykernel__Object
);
7644 { /* var621 = array_instance Array[Object] */
7646 var623
= NEW_array__NativeArray(var622
, &type_array__NativeArraykernel__Object
);
7647 ((struct instance_array__NativeArray
*)var623
)->values
[0] = (val
*) var607
;
7648 ((struct instance_array__NativeArray
*)var623
)->values
[1] = (val
*) var_cltype
;
7649 ((struct instance_array__NativeArray
*)var623
)->values
[2] = (val
*) var612
;
7650 ((struct instance_array__NativeArray
*)var623
)->values
[3] = (val
*) var_class_ptr
;
7651 ((struct instance_array__NativeArray
*)var623
)->values
[4] = (val
*) var617
;
7652 ((void (*)(val
*, val
*, long))(var621
->class->vft
[COLOR_array__Array__with_native
]))(var621
, var623
, var622
) /* with_native on <var621:Array[Object]>*/;
7653 CHECK_NEW_array__Array(var621
);
7655 var624
= ((val
* (*)(val
*))(var621
->class->vft
[COLOR_string__Object__to_s
]))(var621
) /* to_s on <var621:Array[Object]>*/;
7656 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var624
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7658 var626
= varonce625
;
7662 var629
= string__NativeString__to_s_with_length(var627
, var628
);
7664 varonce625
= var626
;
7666 var630
= NEW_array__Array(&type_array__Arraykernel__Object
);
7667 { /* var630 = array_instance Array[Object] */
7669 var632
= NEW_array__NativeArray(var631
, &type_array__NativeArraykernel__Object
);
7670 ((struct instance_array__NativeArray
*)var632
)->values
[0] = (val
*) var_res
;
7671 ((struct instance_array__NativeArray
*)var632
)->values
[1] = (val
*) var626
;
7672 ((void (*)(val
*, val
*, long))(var630
->class->vft
[COLOR_array__Array__with_native
]))(var630
, var632
, var631
) /* with_native on <var630:Array[Object]>*/;
7673 CHECK_NEW_array__Array(var630
);
7675 var633
= ((val
* (*)(val
*))(var630
->class->vft
[COLOR_string__Object__to_s
]))(var630
) /* to_s on <var630:Array[Object]>*/;
7676 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var633
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7678 var635
= varonce634
;
7680 var636
= "} else {";
7682 var638
= string__NativeString__to_s_with_length(var636
, var637
);
7684 varonce634
= var635
;
7686 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var635
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7688 var640
= varonce639
;
7692 var643
= string__NativeString__to_s_with_length(var641
, var642
);
7694 varonce639
= var640
;
7697 var645
= varonce644
;
7699 var646
= "type_table->table[";
7701 var648
= string__NativeString__to_s_with_length(var646
, var647
);
7703 varonce644
= var645
;
7706 var650
= varonce649
;
7710 var653
= string__NativeString__to_s_with_length(var651
, var652
);
7712 varonce649
= var650
;
7715 var655
= varonce654
;
7719 var658
= string__NativeString__to_s_with_length(var656
, var657
);
7721 varonce654
= var655
;
7723 var659
= NEW_array__Array(&type_array__Arraykernel__Object
);
7724 { /* var659 = array_instance Array[Object] */
7726 var661
= NEW_array__NativeArray(var660
, &type_array__NativeArraykernel__Object
);
7727 ((struct instance_array__NativeArray
*)var661
)->values
[0] = (val
*) var_res
;
7728 ((struct instance_array__NativeArray
*)var661
)->values
[1] = (val
*) var640
;
7729 ((struct instance_array__NativeArray
*)var661
)->values
[2] = (val
*) var_class_ptr
;
7730 ((struct instance_array__NativeArray
*)var661
)->values
[3] = (val
*) var645
;
7731 ((struct instance_array__NativeArray
*)var661
)->values
[4] = (val
*) var_cltype
;
7732 ((struct instance_array__NativeArray
*)var661
)->values
[5] = (val
*) var650
;
7733 ((struct instance_array__NativeArray
*)var661
)->values
[6] = (val
*) var_idtype
;
7734 ((struct instance_array__NativeArray
*)var661
)->values
[7] = (val
*) var655
;
7735 ((void (*)(val
*, val
*, long))(var659
->class->vft
[COLOR_array__Array__with_native
]))(var659
, var661
, var660
) /* with_native on <var659:Array[Object]>*/;
7736 CHECK_NEW_array__Array(var659
);
7738 var662
= ((val
* (*)(val
*))(var659
->class->vft
[COLOR_string__Object__to_s
]))(var659
) /* to_s on <var659:Array[Object]>*/;
7739 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var662
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7741 var664
= varonce663
;
7745 var667
= string__NativeString__to_s_with_length(var665
, var666
);
7747 varonce663
= var664
;
7749 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var664
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7750 if (var_maybe_null
){
7752 var669
= varonce668
;
7756 var672
= string__NativeString__to_s_with_length(var670
, var671
);
7758 varonce668
= var669
;
7760 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var669
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7768 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#type_test for (self: Object, RuntimeVariable, MType, String): RuntimeVariable */
7769 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompilerVisitor__type_test(val
* self
, val
* p0
, val
* p1
, val
* p2
) {
7770 val
* var
/* : RuntimeVariable */;
7771 val
* var1
/* : RuntimeVariable */;
7772 var1
= separate_erasure_compiler__SeparateErasureCompilerVisitor__type_test(self
, p0
, p1
, p2
);
7777 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#class_name_string for (self: SeparateErasureCompilerVisitor, RuntimeVariable): String */
7778 val
* separate_erasure_compiler__SeparateErasureCompilerVisitor__class_name_string(val
* self
, val
* p0
) {
7779 val
* var
/* : String */;
7780 val
* var_value
/* var value: RuntimeVariable */;
7781 static val
* varonce
;
7782 val
* var1
/* : String */;
7783 char* var2
/* : NativeString */;
7784 long var3
/* : Int */;
7785 val
* var4
/* : String */;
7786 val
* var5
/* : String */;
7787 val
* var_res
/* var res: String */;
7788 static val
* varonce6
;
7789 val
* var7
/* : String */;
7790 char* var8
/* : NativeString */;
7791 long var9
/* : Int */;
7792 val
* var10
/* : String */;
7793 static val
* varonce11
;
7794 val
* var12
/* : String */;
7795 char* var13
/* : NativeString */;
7796 long var14
/* : Int */;
7797 val
* var15
/* : String */;
7798 val
* var16
/* : Array[Object] */;
7799 long var17
/* : Int */;
7800 val
* var18
/* : NativeArray[Object] */;
7801 val
* var19
/* : String */;
7802 val
* var20
/* : MType */;
7803 val
* var21
/* : String */;
7804 static val
* varonce22
;
7805 val
* var23
/* : String */;
7806 char* var24
/* : NativeString */;
7807 long var25
/* : Int */;
7808 val
* var26
/* : String */;
7809 short int var27
/* : Bool */;
7810 static val
* varonce28
;
7811 val
* var29
/* : String */;
7812 char* var30
/* : NativeString */;
7813 long var31
/* : Int */;
7814 val
* var32
/* : String */;
7815 static val
* varonce33
;
7816 val
* var34
/* : String */;
7817 char* var35
/* : NativeString */;
7818 long var36
/* : Int */;
7819 val
* var37
/* : String */;
7820 static val
* varonce38
;
7821 val
* var39
/* : String */;
7822 char* var40
/* : NativeString */;
7823 long var41
/* : Int */;
7824 val
* var42
/* : String */;
7825 val
* var43
/* : Array[Object] */;
7826 long var44
/* : Int */;
7827 val
* var45
/* : NativeArray[Object] */;
7828 val
* var46
/* : String */;
7829 static val
* varonce47
;
7830 val
* var48
/* : String */;
7831 char* var49
/* : NativeString */;
7832 long var50
/* : Int */;
7833 val
* var51
/* : String */;
7834 val
* var52
/* : MType */;
7835 val
* var53
/* : String */;
7836 val
* var54
/* : Array[Object] */;
7837 long var55
/* : Int */;
7838 val
* var56
/* : NativeArray[Object] */;
7839 val
* var57
/* : String */;
7840 static val
* varonce58
;
7841 val
* var59
/* : String */;
7842 char* var60
/* : NativeString */;
7843 long var61
/* : Int */;
7844 val
* var62
/* : String */;
7845 val
* var63
/* : MType */;
7846 val
* var64
/* : String */;
7847 static val
* varonce65
;
7848 val
* var66
/* : String */;
7849 char* var67
/* : NativeString */;
7850 long var68
/* : Int */;
7851 val
* var69
/* : String */;
7852 val
* var70
/* : Array[Object] */;
7853 long var71
/* : Int */;
7854 val
* var72
/* : NativeArray[Object] */;
7855 val
* var73
/* : String */;
7860 var2
= "var_class_name";
7862 var4
= string__NativeString__to_s_with_length(var2
, var3
);
7866 var5
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__get_name
]))(self
, var1
) /* get_name on <self:SeparateErasureCompilerVisitor>*/;
7871 var8
= "const char* ";
7873 var10
= string__NativeString__to_s_with_length(var8
, var9
);
7882 var15
= string__NativeString__to_s_with_length(var13
, var14
);
7886 var16
= NEW_array__Array(&type_array__Arraykernel__Object
);
7887 { /* var16 = array_instance Array[Object] */
7889 var18
= NEW_array__NativeArray(var17
, &type_array__NativeArraykernel__Object
);
7890 ((struct instance_array__NativeArray
*)var18
)->values
[0] = (val
*) var7
;
7891 ((struct instance_array__NativeArray
*)var18
)->values
[1] = (val
*) var_res
;
7892 ((struct instance_array__NativeArray
*)var18
)->values
[2] = (val
*) var12
;
7893 ((void (*)(val
*, val
*, long))(var16
->class->vft
[COLOR_array__Array__with_native
]))(var16
, var18
, var17
) /* with_native on <var16:Array[Object]>*/;
7894 CHECK_NEW_array__Array(var16
);
7896 var19
= ((val
* (*)(val
*))(var16
->class->vft
[COLOR_string__Object__to_s
]))(var16
) /* to_s on <var16:Array[Object]>*/;
7897 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add_decl
]))(self
, var19
) /* add_decl on <self:SeparateErasureCompilerVisitor>*/;
7898 var20
= ((val
* (*)(val
*))(var_value
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__mtype
]))(var_value
) /* mtype on <var_value:RuntimeVariable>*/;
7899 var21
= ((val
* (*)(val
*))(var20
->class->vft
[COLOR_abstract_compiler__MType__ctype
]))(var20
) /* ctype on <var20:MType>*/;
7905 var26
= string__NativeString__to_s_with_length(var24
, var25
);
7909 var27
= ((short int (*)(val
*, val
*))(var21
->class->vft
[COLOR_kernel__Object___61d_61d
]))(var21
, var23
) /* == on <var21:String>*/;
7916 var32
= string__NativeString__to_s_with_length(var30
, var31
);
7923 var35
= " == NULL ? \"null\" : ";
7925 var37
= string__NativeString__to_s_with_length(var35
, var36
);
7932 var40
= "->class->name;";
7934 var42
= string__NativeString__to_s_with_length(var40
, var41
);
7938 var43
= NEW_array__Array(&type_array__Arraykernel__Object
);
7939 { /* var43 = array_instance Array[Object] */
7941 var45
= NEW_array__NativeArray(var44
, &type_array__NativeArraykernel__Object
);
7942 ((struct instance_array__NativeArray
*)var45
)->values
[0] = (val
*) var_res
;
7943 ((struct instance_array__NativeArray
*)var45
)->values
[1] = (val
*) var29
;
7944 ((struct instance_array__NativeArray
*)var45
)->values
[2] = (val
*) var_value
;
7945 ((struct instance_array__NativeArray
*)var45
)->values
[3] = (val
*) var34
;
7946 ((struct instance_array__NativeArray
*)var45
)->values
[4] = (val
*) var_value
;
7947 ((struct instance_array__NativeArray
*)var45
)->values
[5] = (val
*) var39
;
7948 ((void (*)(val
*, val
*, long))(var43
->class->vft
[COLOR_array__Array__with_native
]))(var43
, var45
, var44
) /* with_native on <var43:Array[Object]>*/;
7949 CHECK_NEW_array__Array(var43
);
7951 var46
= ((val
* (*)(val
*))(var43
->class->vft
[COLOR_string__Object__to_s
]))(var43
) /* to_s on <var43:Array[Object]>*/;
7952 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var46
) /* add on <self:SeparateErasureCompilerVisitor>*/;
7959 var51
= string__NativeString__to_s_with_length(var49
, var50
);
7963 var52
= ((val
* (*)(val
*))(var_value
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__mtype
]))(var_value
) /* mtype on <var_value:RuntimeVariable>*/;
7964 var53
= ((val
* (*)(val
*))(var52
->class->vft
[COLOR_abstract_compiler__MType__c_name
]))(var52
) /* c_name on <var52:MType>*/;
7965 var54
= NEW_array__Array(&type_array__Arraykernel__Object
);
7966 { /* var54 = array_instance Array[Object] */
7968 var56
= NEW_array__NativeArray(var55
, &type_array__NativeArraykernel__Object
);
7969 ((struct instance_array__NativeArray
*)var56
)->values
[0] = (val
*) var48
;
7970 ((struct instance_array__NativeArray
*)var56
)->values
[1] = (val
*) var53
;
7971 ((void (*)(val
*, val
*, long))(var54
->class->vft
[COLOR_array__Array__with_native
]))(var54
, var56
, var55
) /* with_native on <var54:Array[Object]>*/;
7972 CHECK_NEW_array__Array(var54
);
7974 var57
= ((val
* (*)(val
*))(var54
->class->vft
[COLOR_string__Object__to_s
]))(var54
) /* to_s on <var54:Array[Object]>*/;
7975 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(self
, var57
) /* require_declaration on <self:SeparateErasureCompilerVisitor>*/;
7979 var60
= " = class_";
7981 var62
= string__NativeString__to_s_with_length(var60
, var61
);
7985 var63
= ((val
* (*)(val
*))(var_value
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__mtype
]))(var_value
) /* mtype on <var_value:RuntimeVariable>*/;
7986 var64
= ((val
* (*)(val
*))(var63
->class->vft
[COLOR_abstract_compiler__MType__c_name
]))(var63
) /* c_name on <var63:MType>*/;
7992 var69
= string__NativeString__to_s_with_length(var67
, var68
);
7996 var70
= NEW_array__Array(&type_array__Arraykernel__Object
);
7997 { /* var70 = array_instance Array[Object] */
7999 var72
= NEW_array__NativeArray(var71
, &type_array__NativeArraykernel__Object
);
8000 ((struct instance_array__NativeArray
*)var72
)->values
[0] = (val
*) var_res
;
8001 ((struct instance_array__NativeArray
*)var72
)->values
[1] = (val
*) var59
;
8002 ((struct instance_array__NativeArray
*)var72
)->values
[2] = (val
*) var64
;
8003 ((struct instance_array__NativeArray
*)var72
)->values
[3] = (val
*) var66
;
8004 ((void (*)(val
*, val
*, long))(var70
->class->vft
[COLOR_array__Array__with_native
]))(var70
, var72
, var71
) /* with_native on <var70:Array[Object]>*/;
8005 CHECK_NEW_array__Array(var70
);
8007 var73
= ((val
* (*)(val
*))(var70
->class->vft
[COLOR_string__Object__to_s
]))(var70
) /* to_s on <var70:Array[Object]>*/;
8008 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var73
) /* add on <self:SeparateErasureCompilerVisitor>*/;
8015 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#class_name_string for (self: Object, RuntimeVariable): String */
8016 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompilerVisitor__class_name_string(val
* self
, val
* p0
) {
8017 val
* var
/* : String */;
8018 val
* var1
/* : String */;
8019 var1
= separate_erasure_compiler__SeparateErasureCompilerVisitor__class_name_string(self
, p0
);
8024 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#array_instance for (self: SeparateErasureCompilerVisitor, Array[RuntimeVariable], MType): RuntimeVariable */
8025 val
* separate_erasure_compiler__SeparateErasureCompilerVisitor__array_instance(val
* self
, val
* p0
, val
* p1
) {
8026 val
* var
/* : RuntimeVariable */;
8027 val
* var_array
/* var array: Array[RuntimeVariable] */;
8028 val
* var_elttype
/* var elttype: MType */;
8029 static val
* varonce
;
8030 val
* var1
/* : String */;
8031 char* var2
/* : NativeString */;
8032 long var3
/* : Int */;
8033 val
* var4
/* : String */;
8034 val
* var5
/* : MClass */;
8035 val
* var_nclass
/* var nclass: MClass */;
8036 val
* var6
/* : MType */;
8037 static val
* varonce7
;
8038 val
* var8
/* : String */;
8039 char* var9
/* : NativeString */;
8040 long var10
/* : Int */;
8041 val
* var11
/* : String */;
8042 val
* var12
/* : MClass */;
8043 val
* var13
/* : Array[MType] */;
8044 long var14
/* : Int */;
8045 val
* var15
/* : NativeArray[MType] */;
8046 val
* var16
/* : MClassType */;
8047 val
* var_arraytype
/* var arraytype: MClassType */;
8048 val
* var17
/* : RuntimeVariable */;
8049 val
* var_res
/* var res: RuntimeVariable */;
8050 static val
* varonce18
;
8051 val
* var19
/* : String */;
8052 char* var20
/* : NativeString */;
8053 long var21
/* : Int */;
8054 val
* var22
/* : String */;
8055 static val
* varonce23
;
8056 val
* var24
/* : String */;
8057 char* var25
/* : NativeString */;
8058 long var26
/* : Int */;
8059 val
* var27
/* : String */;
8060 static val
* varonce28
;
8061 val
* var29
/* : String */;
8062 char* var30
/* : NativeString */;
8063 long var31
/* : Int */;
8064 val
* var32
/* : String */;
8065 val
* var33
/* : Array[Object] */;
8066 long var34
/* : Int */;
8067 val
* var35
/* : NativeArray[Object] */;
8068 val
* var36
/* : String */;
8069 static val
* varonce37
;
8070 val
* var38
/* : String */;
8071 char* var39
/* : NativeString */;
8072 long var40
/* : Int */;
8073 val
* var41
/* : String */;
8074 val
* var42
/* : MClass */;
8075 val
* var43
/* : Array[MType] */;
8076 long var44
/* : Int */;
8077 val
* var45
/* : NativeArray[MType] */;
8078 val
* var46
/* : MClassType */;
8079 val
* var47
/* : RuntimeVariable */;
8080 val
* var_nat
/* var nat: RuntimeVariable */;
8081 short int var48
/* : Bool */;
8082 static val
* varonce49
;
8083 val
* var50
/* : String */;
8084 char* var51
/* : NativeString */;
8085 long var52
/* : Int */;
8086 val
* var53
/* : String */;
8087 val
* var54
/* : String */;
8088 val
* var55
/* : Array[Object] */;
8089 long var56
/* : Int */;
8090 val
* var57
/* : NativeArray[Object] */;
8091 val
* var58
/* : String */;
8092 static val
* varonce59
;
8093 val
* var60
/* : String */;
8094 char* var61
/* : NativeString */;
8095 long var62
/* : Int */;
8096 val
* var63
/* : String */;
8097 val
* var64
/* : String */;
8098 static val
* varonce65
;
8099 val
* var66
/* : String */;
8100 char* var67
/* : NativeString */;
8101 long var68
/* : Int */;
8102 val
* var69
/* : String */;
8103 long var70
/* : Int */;
8104 static val
* varonce71
;
8105 val
* var72
/* : String */;
8106 char* var73
/* : NativeString */;
8107 long var74
/* : Int */;
8108 val
* var75
/* : String */;
8109 val
* var76
/* : Array[Object] */;
8110 long var77
/* : Int */;
8111 val
* var78
/* : NativeArray[Object] */;
8112 val
* var79
/* : Object */;
8113 val
* var80
/* : String */;
8114 val
* var81
/* : Range[Int] */;
8115 long var82
/* : Int */;
8116 long var83
/* : Int */;
8117 val
* var84
/* : Discrete */;
8118 val
* var85
/* : Discrete */;
8119 val
* var86
/* : Iterator[nullable Object] */;
8120 short int var87
/* : Bool */;
8121 val
* var88
/* : nullable Object */;
8122 long var_i
/* var i: Int */;
8123 long var89
/* : Int */;
8124 val
* var90
/* : nullable Object */;
8125 val
* var91
/* : MClassType */;
8126 val
* var92
/* : RuntimeVariable */;
8127 val
* var_r
/* var r: RuntimeVariable */;
8128 static val
* varonce93
;
8129 val
* var94
/* : String */;
8130 char* var95
/* : NativeString */;
8131 long var96
/* : Int */;
8132 val
* var97
/* : String */;
8133 val
* var98
/* : String */;
8134 static val
* varonce99
;
8135 val
* var100
/* : String */;
8136 char* var101
/* : NativeString */;
8137 long var102
/* : Int */;
8138 val
* var103
/* : String */;
8139 static val
* varonce104
;
8140 val
* var105
/* : String */;
8141 char* var106
/* : NativeString */;
8142 long var107
/* : Int */;
8143 val
* var108
/* : String */;
8144 static val
* varonce109
;
8145 val
* var110
/* : String */;
8146 char* var111
/* : NativeString */;
8147 long var112
/* : Int */;
8148 val
* var113
/* : String */;
8149 static val
* varonce114
;
8150 val
* var115
/* : String */;
8151 char* var116
/* : NativeString */;
8152 long var117
/* : Int */;
8153 val
* var118
/* : String */;
8154 val
* var119
/* : Array[Object] */;
8155 long var120
/* : Int */;
8156 val
* var121
/* : NativeArray[Object] */;
8157 val
* var122
/* : Object */;
8158 val
* var123
/* : String */;
8159 long var124
/* : Int */;
8160 val
* var125
/* : RuntimeVariable */;
8161 val
* var_length
/* var length: RuntimeVariable */;
8162 static val
* varonce126
;
8163 val
* var127
/* : String */;
8164 char* var128
/* : NativeString */;
8165 long var129
/* : Int */;
8166 val
* var130
/* : String */;
8167 val
* var131
/* : MMethod */;
8168 val
* var132
/* : Array[RuntimeVariable] */;
8169 long var133
/* : Int */;
8170 val
* var134
/* : NativeArray[RuntimeVariable] */;
8171 val
* var135
/* : nullable RuntimeVariable */;
8172 static val
* varonce136
;
8173 val
* var137
/* : String */;
8174 char* var138
/* : NativeString */;
8175 long var139
/* : Int */;
8176 val
* var140
/* : String */;
8182 var2
= "NativeArray";
8184 var4
= string__NativeString__to_s_with_length(var2
, var3
);
8188 var5
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class
]))(self
, var1
) /* get_class on <self:SeparateErasureCompilerVisitor>*/;
8190 var6
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__anchor
]))(self
, var_elttype
) /* anchor on <self:SeparateErasureCompilerVisitor>*/;
8197 var11
= string__NativeString__to_s_with_length(var9
, var10
);
8201 var12
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class
]))(self
, var8
) /* get_class on <self:SeparateErasureCompilerVisitor>*/;
8202 var13
= NEW_array__Array(&type_array__Arraymodel__MType
);
8203 { /* var13 = array_instance Array[MType] */
8205 var15
= NEW_array__NativeArray(var14
, &type_array__NativeArraymodel__MType
);
8206 ((struct instance_array__NativeArray
*)var15
)->values
[0] = (val
*) var_elttype
;
8207 ((void (*)(val
*, val
*, long))(var13
->class->vft
[COLOR_array__Array__with_native
]))(var13
, var15
, var14
) /* with_native on <var13:Array[MType]>*/;
8208 CHECK_NEW_array__Array(var13
);
8210 var16
= ((val
* (*)(val
*, val
*))(var12
->class->vft
[COLOR_model__MClass__get_mtype
]))(var12
, var13
) /* get_mtype on <var12:MClass>*/;
8211 var_arraytype
= var16
;
8212 var17
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__init_instance
]))(self
, var_arraytype
) /* init_instance on <self:SeparateErasureCompilerVisitor>*/;
8219 var22
= string__NativeString__to_s_with_length(var20
, var21
);
8226 var25
= " = array_instance Array[";
8228 var27
= string__NativeString__to_s_with_length(var25
, var26
);
8237 var32
= string__NativeString__to_s_with_length(var30
, var31
);
8241 var33
= NEW_array__Array(&type_array__Arraykernel__Object
);
8242 { /* var33 = array_instance Array[Object] */
8244 var35
= NEW_array__NativeArray(var34
, &type_array__NativeArraykernel__Object
);
8245 ((struct instance_array__NativeArray
*)var35
)->values
[0] = (val
*) var19
;
8246 ((struct instance_array__NativeArray
*)var35
)->values
[1] = (val
*) var_res
;
8247 ((struct instance_array__NativeArray
*)var35
)->values
[2] = (val
*) var24
;
8248 ((struct instance_array__NativeArray
*)var35
)->values
[3] = (val
*) var_elttype
;
8249 ((struct instance_array__NativeArray
*)var35
)->values
[4] = (val
*) var29
;
8250 ((void (*)(val
*, val
*, long))(var33
->class->vft
[COLOR_array__Array__with_native
]))(var33
, var35
, var34
) /* with_native on <var33:Array[Object]>*/;
8251 CHECK_NEW_array__Array(var33
);
8253 var36
= ((val
* (*)(val
*))(var33
->class->vft
[COLOR_string__Object__to_s
]))(var33
) /* to_s on <var33:Array[Object]>*/;
8254 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var36
) /* add on <self:SeparateErasureCompilerVisitor>*/;
8258 var39
= "NativeArray";
8260 var41
= string__NativeString__to_s_with_length(var39
, var40
);
8264 var42
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__get_class
]))(self
, var38
) /* get_class on <self:SeparateErasureCompilerVisitor>*/;
8265 var43
= NEW_array__Array(&type_array__Arraymodel__MType
);
8266 { /* var43 = array_instance Array[MType] */
8268 var45
= NEW_array__NativeArray(var44
, &type_array__NativeArraymodel__MType
);
8269 ((struct instance_array__NativeArray
*)var45
)->values
[0] = (val
*) var_elttype
;
8270 ((void (*)(val
*, val
*, long))(var43
->class->vft
[COLOR_array__Array__with_native
]))(var43
, var45
, var44
) /* with_native on <var43:Array[MType]>*/;
8271 CHECK_NEW_array__Array(var43
);
8273 var46
= ((val
* (*)(val
*, val
*))(var42
->class->vft
[COLOR_model__MClass__get_mtype
]))(var42
, var43
) /* get_mtype on <var42:MClass>*/;
8274 var47
= ((val
* (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__new_var
]))(self
, var46
) /* new_var on <self:SeparateErasureCompilerVisitor>*/;
8277 ((void (*)(val
*, short int))(var_nat
->class->vft
[COLOR_abstract_compiler__RuntimeVariable__is_exact_61d
]))(var_nat
, var48
) /* is_exact= on <var_nat:RuntimeVariable>*/;
8283 var53
= string__NativeString__to_s_with_length(var51
, var52
);
8287 var54
= ((val
* (*)(val
*))(var_nclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_nclass
) /* c_name on <var_nclass:MClass>*/;
8288 var55
= NEW_array__Array(&type_array__Arraykernel__Object
);
8289 { /* var55 = array_instance Array[Object] */
8291 var57
= NEW_array__NativeArray(var56
, &type_array__NativeArraykernel__Object
);
8292 ((struct instance_array__NativeArray
*)var57
)->values
[0] = (val
*) var50
;
8293 ((struct instance_array__NativeArray
*)var57
)->values
[1] = (val
*) var54
;
8294 ((void (*)(val
*, val
*, long))(var55
->class->vft
[COLOR_array__Array__with_native
]))(var55
, var57
, var56
) /* with_native on <var55:Array[Object]>*/;
8295 CHECK_NEW_array__Array(var55
);
8297 var58
= ((val
* (*)(val
*))(var55
->class->vft
[COLOR_string__Object__to_s
]))(var55
) /* to_s on <var55:Array[Object]>*/;
8298 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(self
, var58
) /* require_declaration on <self:SeparateErasureCompilerVisitor>*/;
8304 var63
= string__NativeString__to_s_with_length(var61
, var62
);
8308 var64
= ((val
* (*)(val
*))(var_nclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_nclass
) /* c_name on <var_nclass:MClass>*/;
8314 var69
= string__NativeString__to_s_with_length(var67
, var68
);
8318 var70
= ((long (*)(val
*))(var_array
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_array
) /* length on <var_array:Array[RuntimeVariable]>*/;
8324 var75
= string__NativeString__to_s_with_length(var73
, var74
);
8328 var76
= NEW_array__Array(&type_array__Arraykernel__Object
);
8329 { /* var76 = array_instance Array[Object] */
8331 var78
= NEW_array__NativeArray(var77
, &type_array__NativeArraykernel__Object
);
8332 ((struct instance_array__NativeArray
*)var78
)->values
[0] = (val
*) var_nat
;
8333 ((struct instance_array__NativeArray
*)var78
)->values
[1] = (val
*) var60
;
8334 ((struct instance_array__NativeArray
*)var78
)->values
[2] = (val
*) var64
;
8335 ((struct instance_array__NativeArray
*)var78
)->values
[3] = (val
*) var66
;
8336 var79
= BOX_kernel__Int(var70
); /* autobox from Int to Object */
8337 ((struct instance_array__NativeArray
*)var78
)->values
[4] = (val
*) var79
;
8338 ((struct instance_array__NativeArray
*)var78
)->values
[5] = (val
*) var72
;
8339 ((void (*)(val
*, val
*, long))(var76
->class->vft
[COLOR_array__Array__with_native
]))(var76
, var78
, var77
) /* with_native on <var76:Array[Object]>*/;
8340 CHECK_NEW_array__Array(var76
);
8342 var80
= ((val
* (*)(val
*))(var76
->class->vft
[COLOR_string__Object__to_s
]))(var76
) /* to_s on <var76:Array[Object]>*/;
8343 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var80
) /* add on <self:SeparateErasureCompilerVisitor>*/;
8344 var81
= NEW_range__Range(&type_range__Rangekernel__Int
);
8346 var83
= ((long (*)(val
*))(var_array
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_array
) /* length on <var_array:Array[RuntimeVariable]>*/;
8347 var84
= BOX_kernel__Int(var82
); /* autobox from Int to Discrete */
8348 var85
= BOX_kernel__Int(var83
); /* autobox from Int to Discrete */
8349 ((void (*)(val
*, val
*, val
*))(var81
->class->vft
[COLOR_range__Range__without_last
]))(var81
, var84
, var85
) /* without_last on <var81:Range[Int]>*/;
8350 CHECK_NEW_range__Range(var81
);
8351 var86
= ((val
* (*)(val
*))(var81
->class->vft
[COLOR_abstract_collection__Collection__iterator
]))(var81
) /* iterator on <var81:Range[Int]>*/;
8353 var87
= ((short int (*)(val
*))(var86
->class->vft
[COLOR_abstract_collection__Iterator__is_ok
]))(var86
) /* is_ok on <var86:Iterator[nullable Object]>*/;
8355 var88
= ((val
* (*)(val
*))(var86
->class->vft
[COLOR_abstract_collection__Iterator__item
]))(var86
) /* item on <var86:Iterator[nullable Object]>*/;
8356 var89
= ((struct instance_kernel__Int
*)var88
)->value
; /* autounbox from nullable Object to Int */;
8358 var90
= ((val
* (*)(val
*, long))(var_array
->class->vft
[COLOR_abstract_collection__SequenceRead___91d_93d
]))(var_array
, var_i
) /* [] on <var_array:Array[RuntimeVariable]>*/;
8359 var91
= ((val
* (*)(val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__object_type
]))(self
) /* object_type on <self:SeparateErasureCompilerVisitor>*/;
8360 var92
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__autobox
]))(self
, var90
, var91
) /* autobox on <self:SeparateErasureCompilerVisitor>*/;
8365 var95
= "((struct instance_";
8367 var97
= string__NativeString__to_s_with_length(var95
, var96
);
8371 var98
= ((val
* (*)(val
*))(var_nclass
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var_nclass
) /* c_name on <var_nclass:MClass>*/;
8377 var103
= string__NativeString__to_s_with_length(var101
, var102
);
8382 var105
= varonce104
;
8384 var106
= ")->values[";
8386 var108
= string__NativeString__to_s_with_length(var106
, var107
);
8388 varonce104
= var105
;
8391 var110
= varonce109
;
8393 var111
= "] = (val*) ";
8395 var113
= string__NativeString__to_s_with_length(var111
, var112
);
8397 varonce109
= var110
;
8400 var115
= varonce114
;
8404 var118
= string__NativeString__to_s_with_length(var116
, var117
);
8406 varonce114
= var115
;
8408 var119
= NEW_array__Array(&type_array__Arraykernel__Object
);
8409 { /* var119 = array_instance Array[Object] */
8411 var121
= NEW_array__NativeArray(var120
, &type_array__NativeArraykernel__Object
);
8412 ((struct instance_array__NativeArray
*)var121
)->values
[0] = (val
*) var94
;
8413 ((struct instance_array__NativeArray
*)var121
)->values
[1] = (val
*) var98
;
8414 ((struct instance_array__NativeArray
*)var121
)->values
[2] = (val
*) var100
;
8415 ((struct instance_array__NativeArray
*)var121
)->values
[3] = (val
*) var_nat
;
8416 ((struct instance_array__NativeArray
*)var121
)->values
[4] = (val
*) var105
;
8417 var122
= BOX_kernel__Int(var_i
); /* autobox from Int to Object */
8418 ((struct instance_array__NativeArray
*)var121
)->values
[5] = (val
*) var122
;
8419 ((struct instance_array__NativeArray
*)var121
)->values
[6] = (val
*) var110
;
8420 ((struct instance_array__NativeArray
*)var121
)->values
[7] = (val
*) var_r
;
8421 ((struct instance_array__NativeArray
*)var121
)->values
[8] = (val
*) var115
;
8422 ((void (*)(val
*, val
*, long))(var119
->class->vft
[COLOR_array__Array__with_native
]))(var119
, var121
, var120
) /* with_native on <var119:Array[Object]>*/;
8423 CHECK_NEW_array__Array(var119
);
8425 var123
= ((val
* (*)(val
*))(var119
->class->vft
[COLOR_string__Object__to_s
]))(var119
) /* to_s on <var119:Array[Object]>*/;
8426 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var123
) /* add on <self:SeparateErasureCompilerVisitor>*/;
8427 CONTINUE_label
: (void)0;
8428 ((void (*)(val
*))(var86
->class->vft
[COLOR_abstract_collection__Iterator__next
]))(var86
) /* next on <var86:Iterator[nullable Object]>*/;
8430 BREAK_label
: (void)0;
8431 var124
= ((long (*)(val
*))(var_array
->class->vft
[COLOR_abstract_collection__Collection__length
]))(var_array
) /* length on <var_array:Array[RuntimeVariable]>*/;
8432 var125
= ((val
* (*)(val
*, long))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__int_instance
]))(self
, var124
) /* int_instance on <self:SeparateErasureCompilerVisitor>*/;
8433 var_length
= var125
;
8435 var127
= varonce126
;
8437 var128
= "with_native";
8439 var130
= string__NativeString__to_s_with_length(var128
, var129
);
8441 varonce126
= var127
;
8443 var131
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__get_property
]))(self
, var127
, var_arraytype
) /* get_property on <self:SeparateErasureCompilerVisitor>*/;
8444 var132
= NEW_array__Array(&type_array__Arrayabstract_compiler__RuntimeVariable
);
8445 { /* var132 = array_instance Array[RuntimeVariable] */
8447 var134
= NEW_array__NativeArray(var133
, &type_array__NativeArrayabstract_compiler__RuntimeVariable
);
8448 ((struct instance_array__NativeArray
*)var134
)->values
[0] = (val
*) var_res
;
8449 ((struct instance_array__NativeArray
*)var134
)->values
[1] = (val
*) var_nat
;
8450 ((struct instance_array__NativeArray
*)var134
)->values
[2] = (val
*) var_length
;
8451 ((void (*)(val
*, val
*, long))(var132
->class->vft
[COLOR_array__Array__with_native
]))(var132
, var134
, var133
) /* with_native on <var132:Array[RuntimeVariable]>*/;
8452 CHECK_NEW_array__Array(var132
);
8454 var135
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__send
]))(self
, var131
, var132
) /* send on <self:SeparateErasureCompilerVisitor>*/;
8456 ((void (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__check_init_instance
]))(self
, var_res
, var_arraytype
) /* check_init_instance on <self:SeparateErasureCompilerVisitor>*/;
8458 var137
= varonce136
;
8462 var140
= string__NativeString__to_s_with_length(var138
, var139
);
8464 varonce136
= var137
;
8466 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__add
]))(self
, var137
) /* add on <self:SeparateErasureCompilerVisitor>*/;
8472 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#array_instance for (self: Object, Array[RuntimeVariable], MType): RuntimeVariable */
8473 val
* VIRTUAL_separate_erasure_compiler__SeparateErasureCompilerVisitor__array_instance(val
* self
, val
* p0
, val
* p1
) {
8474 val
* var
/* : RuntimeVariable */;
8475 val
* var1
/* : RuntimeVariable */;
8476 var1
= separate_erasure_compiler__SeparateErasureCompilerVisitor__array_instance(self
, p0
, p1
);
8481 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#calloc_array for (self: SeparateErasureCompilerVisitor, MType, Array[RuntimeVariable]) */
8482 void separate_erasure_compiler__SeparateErasureCompilerVisitor__calloc_array(val
* self
, val
* p0
, val
* p1
) {
8483 val
* var_ret_type
/* var ret_type: MType */;
8484 val
* var_arguments
/* var arguments: Array[RuntimeVariable] */;
8485 short int var
/* : Bool */;
8488 const char* var_class_name
;
8489 val
* var_ret
/* var ret: MClassType */;
8490 static val
* varonce
;
8491 val
* var1
/* : String */;
8492 char* var2
/* : NativeString */;
8493 long var3
/* : Int */;
8494 val
* var4
/* : String */;
8495 val
* var5
/* : MClass */;
8496 val
* var6
/* : String */;
8497 val
* var7
/* : Array[Object] */;
8498 long var8
/* : Int */;
8499 val
* var9
/* : NativeArray[Object] */;
8500 val
* var10
/* : String */;
8501 static val
* varonce11
;
8502 val
* var12
/* : String */;
8503 char* var13
/* : NativeString */;
8504 long var14
/* : Int */;
8505 val
* var15
/* : String */;
8506 val
* var16
/* : MClass */;
8507 val
* var17
/* : String */;
8508 static val
* varonce18
;
8509 val
* var19
/* : String */;
8510 char* var20
/* : NativeString */;
8511 long var21
/* : Int */;
8512 val
* var22
/* : String */;
8513 long var23
/* : Int */;
8514 val
* var24
/* : nullable Object */;
8515 static val
* varonce25
;
8516 val
* var26
/* : String */;
8517 char* var27
/* : NativeString */;
8518 long var28
/* : Int */;
8519 val
* var29
/* : String */;
8520 val
* var30
/* : Array[Object] */;
8521 long var31
/* : Int */;
8522 val
* var32
/* : NativeArray[Object] */;
8523 val
* var33
/* : String */;
8524 val
* var34
/* : RuntimeVariable */;
8527 /* <var_ret_type:MType> isa MClassType */
8528 cltype
= type_model__MClassType
.color
;
8529 idtype
= type_model__MClassType
.id
;
8530 if(cltype
>= var_ret_type
->type
->table_size
) {
8533 var
= var_ret_type
->type
->type_table
[cltype
] == idtype
;
8536 var_class_name
= var_ret_type
== NULL ?
"null" : var_ret_type
->type
->name
;
8537 fprintf(stderr
, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MClassType", var_class_name
);
8538 fprintf(stderr
, " (%s:%d)\n", "src/separate_erasure_compiler.nit", 614);
8541 var_ret
= var_ret_type
;
8547 var4
= string__NativeString__to_s_with_length(var2
, var3
);
8551 var5
= ((val
* (*)(val
*))(var_ret
->class->vft
[COLOR_model__MClassType__mclass
]))(var_ret
) /* mclass on <var_ret:MClassType>*/;
8552 var6
= ((val
* (*)(val
*))(var5
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var5
) /* c_name on <var5:MClass>*/;
8553 var7
= NEW_array__Array(&type_array__Arraykernel__Object
);
8554 { /* var7 = array_instance Array[Object] */
8556 var9
= NEW_array__NativeArray(var8
, &type_array__NativeArraykernel__Object
);
8557 ((struct instance_array__NativeArray
*)var9
)->values
[0] = (val
*) var1
;
8558 ((struct instance_array__NativeArray
*)var9
)->values
[1] = (val
*) var6
;
8559 ((void (*)(val
*, val
*, long))(var7
->class->vft
[COLOR_array__Array__with_native
]))(var7
, var9
, var8
) /* with_native on <var7:Array[Object]>*/;
8560 CHECK_NEW_array__Array(var7
);
8562 var10
= ((val
* (*)(val
*))(var7
->class->vft
[COLOR_string__Object__to_s
]))(var7
) /* to_s on <var7:Array[Object]>*/;
8563 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__require_declaration
]))(self
, var10
) /* require_declaration on <self:SeparateErasureCompilerVisitor>*/;
8569 var15
= string__NativeString__to_s_with_length(var13
, var14
);
8573 var16
= ((val
* (*)(val
*))(var_ret
->class->vft
[COLOR_model__MClassType__mclass
]))(var_ret
) /* mclass on <var_ret:MClassType>*/;
8574 var17
= ((val
* (*)(val
*))(var16
->class->vft
[COLOR_abstract_compiler__MClass__c_name
]))(var16
) /* c_name on <var16:MClass>*/;
8580 var22
= string__NativeString__to_s_with_length(var20
, var21
);
8585 var24
= ((val
* (*)(val
*, long))(var_arguments
->class->vft
[COLOR_abstract_collection__SequenceRead___91d_93d
]))(var_arguments
, var23
) /* [] on <var_arguments:Array[RuntimeVariable]>*/;
8591 var29
= string__NativeString__to_s_with_length(var27
, var28
);
8595 var30
= NEW_array__Array(&type_array__Arraykernel__Object
);
8596 { /* var30 = array_instance Array[Object] */
8598 var32
= NEW_array__NativeArray(var31
, &type_array__NativeArraykernel__Object
);
8599 ((struct instance_array__NativeArray
*)var32
)->values
[0] = (val
*) var12
;
8600 ((struct instance_array__NativeArray
*)var32
)->values
[1] = (val
*) var17
;
8601 ((struct instance_array__NativeArray
*)var32
)->values
[2] = (val
*) var19
;
8602 ((struct instance_array__NativeArray
*)var32
)->values
[3] = (val
*) var24
;
8603 ((struct instance_array__NativeArray
*)var32
)->values
[4] = (val
*) var26
;
8604 ((void (*)(val
*, val
*, long))(var30
->class->vft
[COLOR_array__Array__with_native
]))(var30
, var32
, var31
) /* with_native on <var30:Array[Object]>*/;
8605 CHECK_NEW_array__Array(var30
);
8607 var33
= ((val
* (*)(val
*))(var30
->class->vft
[COLOR_string__Object__to_s
]))(var30
) /* to_s on <var30:Array[Object]>*/;
8608 var34
= ((val
* (*)(val
*, val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__new_expr
]))(self
, var33
, var_ret_type
) /* new_expr on <self:SeparateErasureCompilerVisitor>*/;
8609 ((void (*)(val
*, val
*))(self
->class->vft
[COLOR_abstract_compiler__AbstractCompilerVisitor__ret
]))(self
, var34
) /* ret on <self:SeparateErasureCompilerVisitor>*/;
8612 /* method separate_erasure_compiler#SeparateErasureCompilerVisitor#calloc_array for (self: Object, MType, Array[RuntimeVariable]) */
8613 void VIRTUAL_separate_erasure_compiler__SeparateErasureCompilerVisitor__calloc_array(val
* self
, val
* p0
, val
* p1
) {
8614 separate_erasure_compiler__SeparateErasureCompilerVisitor__calloc_array(self
, p0
, p1
);