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