c_src: update Makefile to compile on MacOSX
[nit.git] / c_src / sorter.sep.1.c
1 #include "sorter.sep.0.h"
2 /* method sorter#AbstractSorter#compare for (self: AbstractSorter[nullable Object], nullable Object, nullable Object): Int */
3 long sorter__AbstractSorter__compare(val* self, val* p0, val* p1) {
4 long var /* : Int */;
5 short int var1 /* : Bool */;
6 int cltype;
7 int idtype;
8 const struct type* type_struct;
9 short int is_nullable;
10 const char* var_class_name;
11 short int var2 /* : Bool */;
12 int cltype3;
13 int idtype4;
14 const struct type* type_struct5;
15 short int is_nullable6;
16 const char* var_class_name7;
17 const char* var_class_name8;
18 /* Covariant cast for argument 0 (a) <p0:nullable Object> isa AbstractSorter#0 */
19 /* <p0:nullable Object> isa AbstractSorter#0 */
20 type_struct = self->type->resolution_table->types[COLOR_sorter__AbstractSorter_FT0];
21 cltype = type_struct->color;
22 idtype = type_struct->id;
23 is_nullable = type_struct->is_nullable;
24 if(p0 == NULL) {
25 var1 = is_nullable;
26 } else {
27 if(cltype >= p0->type->table_size) {
28 var1 = 0;
29 } else {
30 var1 = p0->type->type_table[cltype] == idtype;
31 }
32 }
33 if (!var1) {
34 var_class_name = p0 == NULL ? "null" : p0->type->name;
35 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name);
36 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 23);
37 show_backtrace(1);
38 }
39 /* Covariant cast for argument 1 (b) <p1:nullable Object> isa AbstractSorter#0 */
40 /* <p1:nullable Object> isa AbstractSorter#0 */
41 type_struct5 = self->type->resolution_table->types[COLOR_sorter__AbstractSorter_FT0];
42 cltype3 = type_struct5->color;
43 idtype4 = type_struct5->id;
44 is_nullable6 = type_struct5->is_nullable;
45 if(p1 == NULL) {
46 var2 = is_nullable6;
47 } else {
48 if(cltype3 >= p1->type->table_size) {
49 var2 = 0;
50 } else {
51 var2 = p1->type->type_table[cltype3] == idtype4;
52 }
53 }
54 if (!var2) {
55 var_class_name7 = p1 == NULL ? "null" : p1->type->name;
56 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name7);
57 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 23);
58 show_backtrace(1);
59 }
60 var_class_name8 = self == NULL ? "null" : self->type->name;
61 fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "compare", var_class_name8);
62 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 23);
63 show_backtrace(1);
64 RET_LABEL:;
65 return var;
66 }
67 /* method sorter#AbstractSorter#compare for (self: Object, nullable Object, nullable Object): Int */
68 long VIRTUAL_sorter__AbstractSorter__compare(val* self, val* p0, val* p1) {
69 long var /* : Int */;
70 long var1 /* : Int */;
71 var1 = sorter__AbstractSorter__compare(self, p0, p1);
72 var = var1;
73 RET_LABEL:;
74 return var;
75 }
76 /* method sorter#AbstractSorter#sort for (self: AbstractSorter[nullable Object], Array[nullable Object]) */
77 void sorter__AbstractSorter__sort(val* self, val* p0) {
78 short int var /* : Bool */;
79 int cltype;
80 int idtype;
81 const struct type* type_struct;
82 const char* var_class_name;
83 val* var_array /* var array: Array[nullable Object] */;
84 long var1 /* : Int */;
85 long var2 /* : Int */;
86 long var3 /* : Int */;
87 long var4 /* : Int */;
88 long var6 /* : Int */;
89 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
90 /* <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
91 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0];
92 cltype = type_struct->color;
93 idtype = type_struct->id;
94 if(cltype >= p0->type->table_size) {
95 var = 0;
96 } else {
97 var = p0->type->type_table[cltype] == idtype;
98 }
99 if (!var) {
100 var_class_name = p0 == NULL ? "null" : p0->type->name;
101 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name);
102 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 30);
103 show_backtrace(1);
104 }
105 var_array = p0;
106 var1 = 0;
107 var2 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on <var_array:Array[nullable Object]>*/;
108 var3 = 1;
109 { /* Inline kernel#Int#- (var2,var3) */
110 var6 = var2 - var3;
111 var4 = var6;
112 goto RET_LABEL5;
113 RET_LABEL5:(void)0;
114 }
115 ((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__sub_sort]))(self, var_array, var1, var4) /* sub_sort on <self:AbstractSorter[nullable Object]>*/;
116 RET_LABEL:;
117 }
118 /* method sorter#AbstractSorter#sort for (self: Object, Array[nullable Object]) */
119 void VIRTUAL_sorter__AbstractSorter__sort(val* self, val* p0) {
120 sorter__AbstractSorter__sort(self, p0);
121 RET_LABEL:;
122 }
123 /* method sorter#AbstractSorter#sub_sort for (self: AbstractSorter[nullable Object], Array[nullable Object], Int, Int) */
124 void sorter__AbstractSorter__sub_sort(val* self, val* p0, long p1, long p2) {
125 short int var /* : Bool */;
126 int cltype;
127 int idtype;
128 const struct type* type_struct;
129 const char* var_class_name;
130 val* var_array /* var array: Array[nullable Object] */;
131 long var_from /* var from: Int */;
132 long var_to /* var to: Int */;
133 short int var1 /* : Bool */;
134 short int var3 /* : Bool */;
135 int cltype4;
136 int idtype5;
137 const char* var_class_name6;
138 short int var7 /* : Bool */;
139 long var8 /* : Int */;
140 long var9 /* : Int */;
141 long var11 /* : Int */;
142 short int var12 /* : Bool */;
143 short int var14 /* : Bool */;
144 int cltype15;
145 int idtype16;
146 const char* var_class_name17;
147 short int var18 /* : Bool */;
148 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
149 /* <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
150 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0];
151 cltype = type_struct->color;
152 idtype = type_struct->id;
153 if(cltype >= p0->type->table_size) {
154 var = 0;
155 } else {
156 var = p0->type->type_table[cltype] == idtype;
157 }
158 if (!var) {
159 var_class_name = p0 == NULL ? "null" : p0->type->name;
160 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name);
161 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 33);
162 show_backtrace(1);
163 }
164 var_array = p0;
165 var_from = p1;
166 var_to = p2;
167 { /* Inline kernel#Int#>= (var_from,var_to) */
168 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
169 /* <var_to:Int> isa OTHER */
170 var3 = 1; /* easy <var_to:Int> isa OTHER*/
171 if (!var3) {
172 var_class_name6 = type_kernel__Int.name;
173 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6);
174 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
175 show_backtrace(1);
176 }
177 var7 = var_from >= var_to;
178 var1 = var7;
179 goto RET_LABEL2;
180 RET_LABEL2:(void)0;
181 }
182 if (var1){
183 goto RET_LABEL;
184 } else {
185 var8 = 7;
186 { /* Inline kernel#Int#+ (var_from,var8) */
187 var11 = var_from + var8;
188 var9 = var11;
189 goto RET_LABEL10;
190 RET_LABEL10:(void)0;
191 }
192 { /* Inline kernel#Int#< (var9,var_to) */
193 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
194 /* <var_to:Int> isa OTHER */
195 var14 = 1; /* easy <var_to:Int> isa OTHER*/
196 if (!var14) {
197 var_class_name17 = type_kernel__Int.name;
198 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17);
199 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
200 show_backtrace(1);
201 }
202 var18 = var9 < var_to;
203 var12 = var18;
204 goto RET_LABEL13;
205 RET_LABEL13:(void)0;
206 }
207 if (var12){
208 ((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__quick_sort]))(self, var_array, var_from, var_to) /* quick_sort on <self:AbstractSorter[nullable Object]>*/;
209 } else {
210 ((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__bubble_sort]))(self, var_array, var_from, var_to) /* bubble_sort on <self:AbstractSorter[nullable Object]>*/;
211 }
212 }
213 RET_LABEL:;
214 }
215 /* method sorter#AbstractSorter#sub_sort for (self: Object, Array[nullable Object], Int, Int) */
216 void VIRTUAL_sorter__AbstractSorter__sub_sort(val* self, val* p0, long p1, long p2) {
217 sorter__AbstractSorter__sub_sort(self, p0, p1, p2);
218 RET_LABEL:;
219 }
220 /* method sorter#AbstractSorter#quick_sort for (self: AbstractSorter[nullable Object], Array[nullable Object], Int, Int) */
221 void sorter__AbstractSorter__quick_sort(val* self, val* p0, long p1, long p2) {
222 short int var /* : Bool */;
223 int cltype;
224 int idtype;
225 const struct type* type_struct;
226 const char* var_class_name;
227 val* var_array /* var array: Array[nullable Object] */;
228 long var_from /* var from: Int */;
229 long var_to /* var to: Int */;
230 val* var1 /* : nullable Object */;
231 val* var_pivot /* var pivot: nullable Object */;
232 long var_i /* var i: Int */;
233 long var_j /* var j: Int */;
234 short int var2 /* : Bool */;
235 short int var4 /* : Bool */;
236 int cltype5;
237 int idtype6;
238 const char* var_class_name7;
239 short int var8 /* : Bool */;
240 short int var9 /* : Bool */;
241 short int var10 /* : Bool */;
242 short int var12 /* : Bool */;
243 int cltype13;
244 int idtype14;
245 const char* var_class_name15;
246 short int var16 /* : Bool */;
247 short int var_ /* var : Bool */;
248 val* var17 /* : nullable Object */;
249 long var18 /* : Int */;
250 long var19 /* : Int */;
251 short int var20 /* : Bool */;
252 short int var22 /* : Bool */;
253 int cltype23;
254 int idtype24;
255 const char* var_class_name25;
256 short int var26 /* : Bool */;
257 long var27 /* : Int */;
258 long var28 /* : Int */;
259 long var30 /* : Int */;
260 short int var31 /* : Bool */;
261 short int var32 /* : Bool */;
262 short int var34 /* : Bool */;
263 int cltype35;
264 int idtype36;
265 const char* var_class_name37;
266 short int var38 /* : Bool */;
267 short int var_39 /* var : Bool */;
268 val* var40 /* : nullable Object */;
269 long var41 /* : Int */;
270 long var42 /* : Int */;
271 short int var43 /* : Bool */;
272 short int var45 /* : Bool */;
273 int cltype46;
274 int idtype47;
275 const char* var_class_name48;
276 short int var49 /* : Bool */;
277 long var50 /* : Int */;
278 long var51 /* : Int */;
279 long var53 /* : Int */;
280 short int var55 /* : Bool */;
281 short int var57 /* : Bool */;
282 int cltype58;
283 int idtype59;
284 const char* var_class_name60;
285 short int var61 /* : Bool */;
286 val* var62 /* : nullable Object */;
287 val* var_t /* var t: nullable Object */;
288 val* var63 /* : nullable Object */;
289 long var65 /* : Int */;
290 long var66 /* : Int */;
291 long var68 /* : Int */;
292 val* var69 /* : nullable Object */;
293 long var70 /* : Int */;
294 long var71 /* : Int */;
295 long var73 /* : Int */;
296 long var74 /* : Int */;
297 long var75 /* : Int */;
298 long var77 /* : Int */;
299 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
300 /* <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
301 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0];
302 cltype = type_struct->color;
303 idtype = type_struct->id;
304 if(cltype >= p0->type->table_size) {
305 var = 0;
306 } else {
307 var = p0->type->type_table[cltype] == idtype;
308 }
309 if (!var) {
310 var_class_name = p0 == NULL ? "null" : p0->type->name;
311 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name);
312 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 45);
313 show_backtrace(1);
314 }
315 var_array = p0;
316 var_from = p1;
317 var_to = p2;
318 var1 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_from) /* [] on <var_array:Array[nullable Object]>*/;
319 var_pivot = var1;
320 var_i = var_from;
321 var_j = var_to;
322 for(;;) {
323 { /* Inline kernel#Int#> (var_j,var_i) */
324 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
325 /* <var_i:Int> isa OTHER */
326 var4 = 1; /* easy <var_i:Int> isa OTHER*/
327 if (!var4) {
328 var_class_name7 = type_kernel__Int.name;
329 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
330 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
331 show_backtrace(1);
332 }
333 var8 = var_j > var_i;
334 var2 = var8;
335 goto RET_LABEL3;
336 RET_LABEL3:(void)0;
337 }
338 if (!var2) break;
339 for(;;) {
340 { /* Inline kernel#Int#<= (var_i,var_to) */
341 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
342 /* <var_to:Int> isa OTHER */
343 var12 = 1; /* easy <var_to:Int> isa OTHER*/
344 if (!var12) {
345 var_class_name15 = type_kernel__Int.name;
346 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
347 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
348 show_backtrace(1);
349 }
350 var16 = var_i <= var_to;
351 var10 = var16;
352 goto RET_LABEL11;
353 RET_LABEL11:(void)0;
354 }
355 var_ = var10;
356 if (var10){
357 var17 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
358 var18 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var17, var_pivot) /* compare on <self:AbstractSorter[nullable Object]>*/;
359 var19 = 0;
360 { /* Inline kernel#Int#<= (var18,var19) */
361 /* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
362 /* <var19:Int> isa OTHER */
363 var22 = 1; /* easy <var19:Int> isa OTHER*/
364 if (!var22) {
365 var_class_name25 = type_kernel__Int.name;
366 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
367 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
368 show_backtrace(1);
369 }
370 var26 = var18 <= var19;
371 var20 = var26;
372 goto RET_LABEL21;
373 RET_LABEL21:(void)0;
374 }
375 var9 = var20;
376 } else {
377 var9 = var_;
378 }
379 if (!var9) break;
380 var27 = 1;
381 { /* Inline kernel#Int#+ (var_i,var27) */
382 var30 = var_i + var27;
383 var28 = var30;
384 goto RET_LABEL29;
385 RET_LABEL29:(void)0;
386 }
387 var_i = var28;
388 CONTINUE_label: (void)0;
389 }
390 BREAK_label: (void)0;
391 for(;;) {
392 { /* Inline kernel#Int#> (var_j,var_i) */
393 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
394 /* <var_i:Int> isa OTHER */
395 var34 = 1; /* easy <var_i:Int> isa OTHER*/
396 if (!var34) {
397 var_class_name37 = type_kernel__Int.name;
398 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name37);
399 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
400 show_backtrace(1);
401 }
402 var38 = var_j > var_i;
403 var32 = var38;
404 goto RET_LABEL33;
405 RET_LABEL33:(void)0;
406 }
407 var_39 = var32;
408 if (var32){
409 var40 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
410 var41 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var40, var_pivot) /* compare on <self:AbstractSorter[nullable Object]>*/;
411 var42 = 0;
412 { /* Inline kernel#Int#>= (var41,var42) */
413 /* Covariant cast for argument 0 (i) <var42:Int> isa OTHER */
414 /* <var42:Int> isa OTHER */
415 var45 = 1; /* easy <var42:Int> isa OTHER*/
416 if (!var45) {
417 var_class_name48 = type_kernel__Int.name;
418 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48);
419 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266);
420 show_backtrace(1);
421 }
422 var49 = var41 >= var42;
423 var43 = var49;
424 goto RET_LABEL44;
425 RET_LABEL44:(void)0;
426 }
427 var31 = var43;
428 } else {
429 var31 = var_39;
430 }
431 if (!var31) break;
432 var50 = 1;
433 { /* Inline kernel#Int#- (var_j,var50) */
434 var53 = var_j - var50;
435 var51 = var53;
436 goto RET_LABEL52;
437 RET_LABEL52:(void)0;
438 }
439 var_j = var51;
440 CONTINUE_label54: (void)0;
441 }
442 BREAK_label54: (void)0;
443 { /* Inline kernel#Int#> (var_j,var_i) */
444 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
445 /* <var_i:Int> isa OTHER */
446 var57 = 1; /* easy <var_i:Int> isa OTHER*/
447 if (!var57) {
448 var_class_name60 = type_kernel__Int.name;
449 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name60);
450 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
451 show_backtrace(1);
452 }
453 var61 = var_j > var_i;
454 var55 = var61;
455 goto RET_LABEL56;
456 RET_LABEL56:(void)0;
457 }
458 if (var55){
459 var62 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
460 var_t = var62;
461 var63 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
462 ((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_i, var63) /* []= on <var_array:Array[nullable Object]>*/;
463 ((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_j, var_t) /* []= on <var_array:Array[nullable Object]>*/;
464 } else {
465 }
466 CONTINUE_label64: (void)0;
467 }
468 BREAK_label64: (void)0;
469 var65 = 1;
470 { /* Inline kernel#Int#- (var_i,var65) */
471 var68 = var_i - var65;
472 var66 = var68;
473 goto RET_LABEL67;
474 RET_LABEL67:(void)0;
475 }
476 var69 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var66) /* [] on <var_array:Array[nullable Object]>*/;
477 ((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_from, var69) /* []= on <var_array:Array[nullable Object]>*/;
478 var70 = 1;
479 { /* Inline kernel#Int#- (var_i,var70) */
480 var73 = var_i - var70;
481 var71 = var73;
482 goto RET_LABEL72;
483 RET_LABEL72:(void)0;
484 }
485 ((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var71, var_pivot) /* []= on <var_array:Array[nullable Object]>*/;
486 var74 = 2;
487 { /* Inline kernel#Int#- (var_i,var74) */
488 var77 = var_i - var74;
489 var75 = var77;
490 goto RET_LABEL76;
491 RET_LABEL76:(void)0;
492 }
493 ((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__sub_sort]))(self, var_array, var_from, var75) /* sub_sort on <self:AbstractSorter[nullable Object]>*/;
494 ((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__sub_sort]))(self, var_array, var_i, var_to) /* sub_sort on <self:AbstractSorter[nullable Object]>*/;
495 RET_LABEL:;
496 }
497 /* method sorter#AbstractSorter#quick_sort for (self: Object, Array[nullable Object], Int, Int) */
498 void VIRTUAL_sorter__AbstractSorter__quick_sort(val* self, val* p0, long p1, long p2) {
499 sorter__AbstractSorter__quick_sort(self, p0, p1, p2);
500 RET_LABEL:;
501 }
502 /* method sorter#AbstractSorter#bubble_sort for (self: AbstractSorter[nullable Object], Array[nullable Object], Int, Int) */
503 void sorter__AbstractSorter__bubble_sort(val* self, val* p0, long p1, long p2) {
504 short int var /* : Bool */;
505 int cltype;
506 int idtype;
507 const struct type* type_struct;
508 const char* var_class_name;
509 val* var_array /* var array: Array[nullable Object] */;
510 long var_from /* var from: Int */;
511 long var_to /* var to: Int */;
512 long var_i /* var i: Int */;
513 short int var1 /* : Bool */;
514 short int var3 /* : Bool */;
515 int cltype4;
516 int idtype5;
517 const char* var_class_name6;
518 short int var7 /* : Bool */;
519 long var_min /* var min: Int */;
520 val* var8 /* : nullable Object */;
521 val* var_min_v /* var min_v: nullable Object */;
522 long var_j /* var j: Int */;
523 short int var9 /* : Bool */;
524 short int var11 /* : Bool */;
525 int cltype12;
526 int idtype13;
527 const char* var_class_name14;
528 short int var15 /* : Bool */;
529 val* var16 /* : nullable Object */;
530 long var17 /* : Int */;
531 long var18 /* : Int */;
532 short int var19 /* : Bool */;
533 short int var21 /* : Bool */;
534 int cltype22;
535 int idtype23;
536 const char* var_class_name24;
537 short int var25 /* : Bool */;
538 val* var26 /* : nullable Object */;
539 long var27 /* : Int */;
540 long var28 /* : Int */;
541 long var30 /* : Int */;
542 short int var31 /* : Bool */;
543 short int var33 /* : Bool */;
544 short int var34 /* : Bool */;
545 val* var35 /* : nullable Object */;
546 long var36 /* : Int */;
547 long var37 /* : Int */;
548 long var39 /* : Int */;
549 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
550 /* <p0:Array[nullable Object]> isa Array[AbstractSorter#0] */
551 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0];
552 cltype = type_struct->color;
553 idtype = type_struct->id;
554 if(cltype >= p0->type->table_size) {
555 var = 0;
556 } else {
557 var = p0->type->type_table[cltype] == idtype;
558 }
559 if (!var) {
560 var_class_name = p0 == NULL ? "null" : p0->type->name;
561 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name);
562 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 66);
563 show_backtrace(1);
564 }
565 var_array = p0;
566 var_from = p1;
567 var_to = p2;
568 var_i = var_from;
569 for(;;) {
570 { /* Inline kernel#Int#< (var_i,var_to) */
571 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
572 /* <var_to:Int> isa OTHER */
573 var3 = 1; /* easy <var_to:Int> isa OTHER*/
574 if (!var3) {
575 var_class_name6 = type_kernel__Int.name;
576 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6);
577 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265);
578 show_backtrace(1);
579 }
580 var7 = var_i < var_to;
581 var1 = var7;
582 goto RET_LABEL2;
583 RET_LABEL2:(void)0;
584 }
585 if (!var1) break;
586 var_min = var_i;
587 var8 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
588 var_min_v = var8;
589 var_j = var_i;
590 for(;;) {
591 { /* Inline kernel#Int#<= (var_j,var_to) */
592 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
593 /* <var_to:Int> isa OTHER */
594 var11 = 1; /* easy <var_to:Int> isa OTHER*/
595 if (!var11) {
596 var_class_name14 = type_kernel__Int.name;
597 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
598 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264);
599 show_backtrace(1);
600 }
601 var15 = var_j <= var_to;
602 var9 = var15;
603 goto RET_LABEL10;
604 RET_LABEL10:(void)0;
605 }
606 if (!var9) break;
607 var16 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
608 var17 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var_min_v, var16) /* compare on <self:AbstractSorter[nullable Object]>*/;
609 var18 = 0;
610 { /* Inline kernel#Int#> (var17,var18) */
611 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
612 /* <var18:Int> isa OTHER */
613 var21 = 1; /* easy <var18:Int> isa OTHER*/
614 if (!var21) {
615 var_class_name24 = type_kernel__Int.name;
616 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
617 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267);
618 show_backtrace(1);
619 }
620 var25 = var17 > var18;
621 var19 = var25;
622 goto RET_LABEL20;
623 RET_LABEL20:(void)0;
624 }
625 if (var19){
626 var_min = var_j;
627 var26 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on <var_array:Array[nullable Object]>*/;
628 var_min_v = var26;
629 } else {
630 }
631 var27 = 1;
632 { /* Inline kernel#Int#+ (var_j,var27) */
633 var30 = var_j + var27;
634 var28 = var30;
635 goto RET_LABEL29;
636 RET_LABEL29:(void)0;
637 }
638 var_j = var28;
639 CONTINUE_label: (void)0;
640 }
641 BREAK_label: (void)0;
642 { /* Inline kernel#Int#!= (var_min,var_i) */
643 var33 = var_min == var_i;
644 var34 = !var33;
645 var31 = var34;
646 goto RET_LABEL32;
647 RET_LABEL32:(void)0;
648 }
649 if (var31){
650 var35 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on <var_array:Array[nullable Object]>*/;
651 ((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_min, var35) /* []= on <var_array:Array[nullable Object]>*/;
652 ((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_i, var_min_v) /* []= on <var_array:Array[nullable Object]>*/;
653 } else {
654 }
655 var36 = 1;
656 { /* Inline kernel#Int#+ (var_i,var36) */
657 var39 = var_i + var36;
658 var37 = var39;
659 goto RET_LABEL38;
660 RET_LABEL38:(void)0;
661 }
662 var_i = var37;
663 CONTINUE_label40: (void)0;
664 }
665 BREAK_label40: (void)0;
666 RET_LABEL:;
667 }
668 /* method sorter#AbstractSorter#bubble_sort for (self: Object, Array[nullable Object], Int, Int) */
669 void VIRTUAL_sorter__AbstractSorter__bubble_sort(val* self, val* p0, long p1, long p2) {
670 sorter__AbstractSorter__bubble_sort(self, p0, p1, p2);
671 RET_LABEL:;
672 }
673 /* method sorter#ComparableSorter#compare for (self: ComparableSorter[Comparable], Comparable, Comparable): Int */
674 long sorter__ComparableSorter__compare(val* self, val* p0, val* p1) {
675 long var /* : Int */;
676 short int var1 /* : Bool */;
677 int cltype;
678 int idtype;
679 const struct type* type_struct;
680 const char* var_class_name;
681 short int var2 /* : Bool */;
682 int cltype3;
683 int idtype4;
684 const struct type* type_struct5;
685 const char* var_class_name6;
686 val* var_a /* var a: Comparable */;
687 val* var_b /* var b: Comparable */;
688 long var7 /* : Int */;
689 /* Covariant cast for argument 0 (a) <p0:Comparable> isa AbstractSorter#0 */
690 /* <p0:Comparable> isa AbstractSorter#0 */
691 type_struct = self->type->resolution_table->types[COLOR_sorter__AbstractSorter_FT0];
692 cltype = type_struct->color;
693 idtype = type_struct->id;
694 if(cltype >= p0->type->table_size) {
695 var1 = 0;
696 } else {
697 var1 = p0->type->type_table[cltype] == idtype;
698 }
699 if (!var1) {
700 var_class_name = p0 == NULL ? "null" : p0->type->name;
701 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name);
702 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 94);
703 show_backtrace(1);
704 }
705 /* Covariant cast for argument 1 (b) <p1:Comparable> isa AbstractSorter#0 */
706 /* <p1:Comparable> isa AbstractSorter#0 */
707 type_struct5 = self->type->resolution_table->types[COLOR_sorter__AbstractSorter_FT0];
708 cltype3 = type_struct5->color;
709 idtype4 = type_struct5->id;
710 if(cltype3 >= p1->type->table_size) {
711 var2 = 0;
712 } else {
713 var2 = p1->type->type_table[cltype3] == idtype4;
714 }
715 if (!var2) {
716 var_class_name6 = p1 == NULL ? "null" : p1->type->name;
717 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name6);
718 fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 94);
719 show_backtrace(1);
720 }
721 var_a = p0;
722 var_b = p1;
723 var7 = ((long (*)(val*, val*))(var_a->class->vft[COLOR_kernel__Comparable___60d_61d_62d]))(var_a, var_b) /* <=> on <var_a:Comparable>*/;
724 var = var7;
725 goto RET_LABEL;
726 RET_LABEL:;
727 return var;
728 }
729 /* method sorter#ComparableSorter#compare for (self: Object, nullable Object, nullable Object): Int */
730 long VIRTUAL_sorter__ComparableSorter__compare(val* self, val* p0, val* p1) {
731 long var /* : Int */;
732 long var1 /* : Int */;
733 var1 = sorter__ComparableSorter__compare(self, p0, p1);
734 var = var1;
735 RET_LABEL:;
736 return var;
737 }
738 /* method sorter#ComparableSorter#init for (self: ComparableSorter[Comparable]) */
739 void sorter__ComparableSorter__init(val* self) {
740 RET_LABEL:;
741 }
742 /* method sorter#ComparableSorter#init for (self: Object) */
743 void VIRTUAL_sorter__ComparableSorter__init(val* self) {
744 sorter__ComparableSorter__init(self);
745 RET_LABEL:;
746 }