Merge: doc: fixed some typos and other misc. corrections
[nit.git] / c_src / core__sorter.sep.1.c
1 #include "core__sorter.sep.0.h"
2 /* method sorter$Comparator$sort for (self: Comparator, Array[nullable Object]) */
3 void core___core__Comparator___sort(val* self, val* p0) {
4 short int var /* : Bool */;
5 int cltype;
6 int idtype;
7 const struct type* type_struct;
8 const char* var_class_name;
9 val* var_array /* var array: Array[nullable Object] */;
10 long var1 /* : Int */;
11 long var3 /* : Int */;
12 long var4 /* : Int */;
13 short int var6 /* : Bool */;
14 int cltype7;
15 int idtype8;
16 const char* var_class_name9;
17 long var10 /* : Int */;
18 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[COMPARED] */
19 /* <p0:Array[nullable Object]> isa Array[COMPARED] */
20 type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Array__core__sorter__Comparator__COMPARED];
21 cltype = type_struct->color;
22 idtype = type_struct->id;
23 if(cltype >= p0->type->table_size) {
24 var = 0;
25 } else {
26 var = p0->type->type_table[cltype] == idtype;
27 }
28 if (unlikely(!var)) {
29 var_class_name = p0 == NULL ? "null" : p0->type->name;
30 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name);
31 PRINT_ERROR(" (%s:%d)\n", FILE_core__sorter, 82);
32 fatal_exit(1);
33 }
34 var_array = p0;
35 {
36 { /* Inline array$AbstractArrayRead$length (var_array) on <var_array:Array[nullable Object]> */
37 var3 = var_array->attrs[COLOR_core__array__AbstractArrayRead___length].l; /* _length on <var_array:Array[nullable Object]> */
38 var1 = var3;
39 RET_LABEL2:(void)0;
40 }
41 }
42 {
43 { /* Inline kernel$Int$- (var1,1l) on <var1:Int> */
44 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
45 /* <1l:Int> isa OTHER */
46 var6 = 1; /* easy <1l:Int> isa OTHER*/
47 if (unlikely(!var6)) {
48 var_class_name9 = type_core__Int.name;
49 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name9);
50 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
51 fatal_exit(1);
52 }
53 var10 = var1 - 1l;
54 var4 = var10;
55 goto RET_LABEL5;
56 RET_LABEL5:(void)0;
57 }
58 }
59 {
60 core___core__Comparator___sub_sort(self, var_array, 0l, var4); /* Direct call sorter$Comparator$sub_sort on <self:Comparator>*/
61 }
62 RET_LABEL:;
63 }
64 /* method sorter$Comparator$sub_sort for (self: Comparator, Array[nullable Object], Int, Int) */
65 void core___core__Comparator___sub_sort(val* self, val* p0, long p1, long p2) {
66 short int var /* : Bool */;
67 int cltype;
68 int idtype;
69 const struct type* type_struct;
70 const char* var_class_name;
71 val* var_array /* var array: Array[nullable Object] */;
72 long var_from /* var from: Int */;
73 long var_to /* var to: Int */;
74 short int var1 /* : Bool */;
75 short int var3 /* : Bool */;
76 int cltype4;
77 int idtype5;
78 const char* var_class_name6;
79 short int var7 /* : Bool */;
80 long var8 /* : Int */;
81 short int var10 /* : Bool */;
82 int cltype11;
83 int idtype12;
84 const char* var_class_name13;
85 long var14 /* : Int */;
86 short int var15 /* : Bool */;
87 short int var17 /* : Bool */;
88 int cltype18;
89 int idtype19;
90 const char* var_class_name20;
91 short int var21 /* : Bool */;
92 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[COMPARED] */
93 /* <p0:Array[nullable Object]> isa Array[COMPARED] */
94 type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Array__core__sorter__Comparator__COMPARED];
95 cltype = type_struct->color;
96 idtype = type_struct->id;
97 if(cltype >= p0->type->table_size) {
98 var = 0;
99 } else {
100 var = p0->type->type_table[cltype] == idtype;
101 }
102 if (unlikely(!var)) {
103 var_class_name = p0 == NULL ? "null" : p0->type->name;
104 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name);
105 PRINT_ERROR(" (%s:%d)\n", FILE_core__sorter, 91);
106 fatal_exit(1);
107 }
108 var_array = p0;
109 var_from = p1;
110 var_to = p2;
111 {
112 { /* Inline kernel$Int$>= (var_from,var_to) on <var_from:Int> */
113 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
114 /* <var_to:Int> isa OTHER */
115 var3 = 1; /* easy <var_to:Int> isa OTHER*/
116 if (unlikely(!var3)) {
117 var_class_name6 = type_core__Int.name;
118 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6);
119 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
120 fatal_exit(1);
121 }
122 var7 = var_from >= var_to;
123 var1 = var7;
124 goto RET_LABEL2;
125 RET_LABEL2:(void)0;
126 }
127 }
128 if (var1){
129 goto RET_LABEL;
130 } else {
131 {
132 { /* Inline kernel$Int$+ (var_from,7l) on <var_from:Int> */
133 /* Covariant cast for argument 0 (i) <7l:Int> isa OTHER */
134 /* <7l:Int> isa OTHER */
135 var10 = 1; /* easy <7l:Int> isa OTHER*/
136 if (unlikely(!var10)) {
137 var_class_name13 = type_core__Int.name;
138 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name13);
139 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
140 fatal_exit(1);
141 }
142 var14 = var_from + 7l;
143 var8 = var14;
144 goto RET_LABEL9;
145 RET_LABEL9:(void)0;
146 }
147 }
148 {
149 { /* Inline kernel$Int$< (var8,var_to) on <var8:Int> */
150 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
151 /* <var_to:Int> isa OTHER */
152 var17 = 1; /* easy <var_to:Int> isa OTHER*/
153 if (unlikely(!var17)) {
154 var_class_name20 = type_core__Int.name;
155 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name20);
156 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
157 fatal_exit(1);
158 }
159 var21 = var8 < var_to;
160 var15 = var21;
161 goto RET_LABEL16;
162 RET_LABEL16:(void)0;
163 }
164 }
165 if (var15){
166 {
167 core___core__Comparator___quick_sort(self, var_array, var_from, var_to); /* Direct call sorter$Comparator$quick_sort on <self:Comparator>*/
168 }
169 } else {
170 {
171 core___core__Comparator___bubble_sort(self, var_array, var_from, var_to); /* Direct call sorter$Comparator$bubble_sort on <self:Comparator>*/
172 }
173 }
174 }
175 RET_LABEL:;
176 }
177 /* method sorter$Comparator$quick_sort for (self: Comparator, Array[nullable Object], Int, Int) */
178 void core___core__Comparator___quick_sort(val* self, val* p0, long p1, long p2) {
179 short int var /* : Bool */;
180 int cltype;
181 int idtype;
182 const struct type* type_struct;
183 const char* var_class_name;
184 val* var_array /* var array: Array[nullable Object] */;
185 long var_from /* var from: Int */;
186 long var_to /* var to: Int */;
187 val* var1 /* : nullable Object */;
188 val* var_pivot /* var pivot: nullable Object */;
189 long var_i /* var i: Int */;
190 long var_j /* var j: Int */;
191 short int var2 /* : Bool */;
192 short int var4 /* : Bool */;
193 int cltype5;
194 int idtype6;
195 const char* var_class_name7;
196 short int var8 /* : Bool */;
197 short int var9 /* : Bool */;
198 short int var10 /* : Bool */;
199 short int var12 /* : Bool */;
200 int cltype13;
201 int idtype14;
202 const char* var_class_name15;
203 short int var16 /* : Bool */;
204 short int var_ /* var : Bool */;
205 val* var17 /* : nullable Object */;
206 long var18 /* : Int */;
207 short int var19 /* : Bool */;
208 short int var21 /* : Bool */;
209 int cltype22;
210 int idtype23;
211 const char* var_class_name24;
212 short int var25 /* : Bool */;
213 long var26 /* : Int */;
214 short int var28 /* : Bool */;
215 int cltype29;
216 int idtype30;
217 const char* var_class_name31;
218 long var32 /* : Int */;
219 short int var33 /* : Bool */;
220 short int var34 /* : Bool */;
221 short int var36 /* : Bool */;
222 int cltype37;
223 int idtype38;
224 const char* var_class_name39;
225 short int var40 /* : Bool */;
226 short int var_41 /* var : Bool */;
227 val* var42 /* : nullable Object */;
228 long var43 /* : Int */;
229 short int var44 /* : Bool */;
230 short int var46 /* : Bool */;
231 int cltype47;
232 int idtype48;
233 const char* var_class_name49;
234 short int var50 /* : Bool */;
235 long var51 /* : Int */;
236 short int var53 /* : Bool */;
237 int cltype54;
238 int idtype55;
239 const char* var_class_name56;
240 long var57 /* : Int */;
241 short int var59 /* : Bool */;
242 short int var61 /* : Bool */;
243 int cltype62;
244 int idtype63;
245 const char* var_class_name64;
246 short int var65 /* : Bool */;
247 val* var66 /* : nullable Object */;
248 val* var_t /* var t: nullable Object */;
249 val* var67 /* : nullable Object */;
250 long var69 /* : Int */;
251 short int var71 /* : Bool */;
252 int cltype72;
253 int idtype73;
254 const char* var_class_name74;
255 long var75 /* : Int */;
256 val* var76 /* : nullable Object */;
257 long var77 /* : Int */;
258 short int var79 /* : Bool */;
259 int cltype80;
260 int idtype81;
261 const char* var_class_name82;
262 long var83 /* : Int */;
263 long var84 /* : Int */;
264 short int var86 /* : Bool */;
265 int cltype87;
266 int idtype88;
267 const char* var_class_name89;
268 long var90 /* : Int */;
269 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[COMPARED] */
270 /* <p0:Array[nullable Object]> isa Array[COMPARED] */
271 type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Array__core__sorter__Comparator__COMPARED];
272 cltype = type_struct->color;
273 idtype = type_struct->id;
274 if(cltype >= p0->type->table_size) {
275 var = 0;
276 } else {
277 var = p0->type->type_table[cltype] == idtype;
278 }
279 if (unlikely(!var)) {
280 var_class_name = p0 == NULL ? "null" : p0->type->name;
281 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name);
282 PRINT_ERROR(" (%s:%d)\n", FILE_core__sorter, 103);
283 fatal_exit(1);
284 }
285 var_array = p0;
286 var_from = p1;
287 var_to = p2;
288 {
289 var1 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_array, var_from);
290 }
291 var_pivot = var1;
292 var_i = var_from;
293 var_j = var_to;
294 for(;;) {
295 {
296 { /* Inline kernel$Int$> (var_j,var_i) on <var_j:Int> */
297 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
298 /* <var_i:Int> isa OTHER */
299 var4 = 1; /* easy <var_i:Int> isa OTHER*/
300 if (unlikely(!var4)) {
301 var_class_name7 = type_core__Int.name;
302 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
303 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
304 fatal_exit(1);
305 }
306 var8 = var_j > var_i;
307 var2 = var8;
308 goto RET_LABEL3;
309 RET_LABEL3:(void)0;
310 }
311 }
312 if (var2){
313 for(;;) {
314 {
315 { /* Inline kernel$Int$<= (var_i,var_to) on <var_i:Int> */
316 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
317 /* <var_to:Int> isa OTHER */
318 var12 = 1; /* easy <var_to:Int> isa OTHER*/
319 if (unlikely(!var12)) {
320 var_class_name15 = type_core__Int.name;
321 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
322 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
323 fatal_exit(1);
324 }
325 var16 = var_i <= var_to;
326 var10 = var16;
327 goto RET_LABEL11;
328 RET_LABEL11:(void)0;
329 }
330 }
331 var_ = var10;
332 if (var10){
333 {
334 var17 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_array, var_i);
335 }
336 {
337 var18 = ((long(*)(val* self, val* p0, val* p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__sorter__Comparator__compare]))(self, var17, var_pivot); /* compare on <self:Comparator>*/
338 }
339 {
340 { /* Inline kernel$Int$<= (var18,0l) on <var18:Int> */
341 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
342 /* <0l:Int> isa OTHER */
343 var21 = 1; /* easy <0l:Int> isa OTHER*/
344 if (unlikely(!var21)) {
345 var_class_name24 = type_core__Int.name;
346 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
347 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
348 fatal_exit(1);
349 }
350 var25 = var18 <= 0l;
351 var19 = var25;
352 goto RET_LABEL20;
353 RET_LABEL20:(void)0;
354 }
355 }
356 var9 = var19;
357 } else {
358 var9 = var_;
359 }
360 if (var9){
361 {
362 { /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
363 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
364 /* <1l:Int> isa OTHER */
365 var28 = 1; /* easy <1l:Int> isa OTHER*/
366 if (unlikely(!var28)) {
367 var_class_name31 = type_core__Int.name;
368 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
369 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
370 fatal_exit(1);
371 }
372 var32 = var_i + 1l;
373 var26 = var32;
374 goto RET_LABEL27;
375 RET_LABEL27:(void)0;
376 }
377 }
378 var_i = var26;
379 } else {
380 goto BREAK_label;
381 }
382 }
383 BREAK_label: (void)0;
384 for(;;) {
385 {
386 { /* Inline kernel$Int$> (var_j,var_i) on <var_j:Int> */
387 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
388 /* <var_i:Int> isa OTHER */
389 var36 = 1; /* easy <var_i:Int> isa OTHER*/
390 if (unlikely(!var36)) {
391 var_class_name39 = type_core__Int.name;
392 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name39);
393 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
394 fatal_exit(1);
395 }
396 var40 = var_j > var_i;
397 var34 = var40;
398 goto RET_LABEL35;
399 RET_LABEL35:(void)0;
400 }
401 }
402 var_41 = var34;
403 if (var34){
404 {
405 var42 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_array, var_j);
406 }
407 {
408 var43 = ((long(*)(val* self, val* p0, val* p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__sorter__Comparator__compare]))(self, var42, var_pivot); /* compare on <self:Comparator>*/
409 }
410 {
411 { /* Inline kernel$Int$>= (var43,0l) on <var43:Int> */
412 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
413 /* <0l:Int> isa OTHER */
414 var46 = 1; /* easy <0l:Int> isa OTHER*/
415 if (unlikely(!var46)) {
416 var_class_name49 = type_core__Int.name;
417 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name49);
418 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 726);
419 fatal_exit(1);
420 }
421 var50 = var43 >= 0l;
422 var44 = var50;
423 goto RET_LABEL45;
424 RET_LABEL45:(void)0;
425 }
426 }
427 var33 = var44;
428 } else {
429 var33 = var_41;
430 }
431 if (var33){
432 {
433 { /* Inline kernel$Int$- (var_j,1l) on <var_j:Int> */
434 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
435 /* <1l:Int> isa OTHER */
436 var53 = 1; /* easy <1l:Int> isa OTHER*/
437 if (unlikely(!var53)) {
438 var_class_name56 = type_core__Int.name;
439 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name56);
440 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
441 fatal_exit(1);
442 }
443 var57 = var_j - 1l;
444 var51 = var57;
445 goto RET_LABEL52;
446 RET_LABEL52:(void)0;
447 }
448 }
449 var_j = var51;
450 } else {
451 goto BREAK_label58;
452 }
453 }
454 BREAK_label58: (void)0;
455 {
456 { /* Inline kernel$Int$> (var_j,var_i) on <var_j:Int> */
457 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
458 /* <var_i:Int> isa OTHER */
459 var61 = 1; /* easy <var_i:Int> isa OTHER*/
460 if (unlikely(!var61)) {
461 var_class_name64 = type_core__Int.name;
462 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name64);
463 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
464 fatal_exit(1);
465 }
466 var65 = var_j > var_i;
467 var59 = var65;
468 goto RET_LABEL60;
469 RET_LABEL60:(void)0;
470 }
471 }
472 if (var59){
473 {
474 var66 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_array, var_i);
475 }
476 var_t = var66;
477 {
478 var67 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_array, var_j);
479 }
480 {
481 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_array, var_i, var67); /* Direct call array$Array$[]= on <var_array:Array[nullable Object]>*/
482 }
483 {
484 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_array, var_j, var_t); /* Direct call array$Array$[]= on <var_array:Array[nullable Object]>*/
485 }
486 } else {
487 }
488 } else {
489 goto BREAK_label68;
490 }
491 }
492 BREAK_label68: (void)0;
493 {
494 { /* Inline kernel$Int$- (var_i,1l) on <var_i:Int> */
495 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
496 /* <1l:Int> isa OTHER */
497 var71 = 1; /* easy <1l:Int> isa OTHER*/
498 if (unlikely(!var71)) {
499 var_class_name74 = type_core__Int.name;
500 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name74);
501 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
502 fatal_exit(1);
503 }
504 var75 = var_i - 1l;
505 var69 = var75;
506 goto RET_LABEL70;
507 RET_LABEL70:(void)0;
508 }
509 }
510 {
511 var76 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_array, var69);
512 }
513 {
514 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_array, var_from, var76); /* Direct call array$Array$[]= on <var_array:Array[nullable Object]>*/
515 }
516 {
517 { /* Inline kernel$Int$- (var_i,1l) on <var_i:Int> */
518 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
519 /* <1l:Int> isa OTHER */
520 var79 = 1; /* easy <1l:Int> isa OTHER*/
521 if (unlikely(!var79)) {
522 var_class_name82 = type_core__Int.name;
523 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name82);
524 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
525 fatal_exit(1);
526 }
527 var83 = var_i - 1l;
528 var77 = var83;
529 goto RET_LABEL78;
530 RET_LABEL78:(void)0;
531 }
532 }
533 {
534 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_array, var77, var_pivot); /* Direct call array$Array$[]= on <var_array:Array[nullable Object]>*/
535 }
536 {
537 { /* Inline kernel$Int$- (var_i,2l) on <var_i:Int> */
538 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
539 /* <2l:Int> isa OTHER */
540 var86 = 1; /* easy <2l:Int> isa OTHER*/
541 if (unlikely(!var86)) {
542 var_class_name89 = type_core__Int.name;
543 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name89);
544 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
545 fatal_exit(1);
546 }
547 var90 = var_i - 2l;
548 var84 = var90;
549 goto RET_LABEL85;
550 RET_LABEL85:(void)0;
551 }
552 }
553 {
554 core___core__Comparator___sub_sort(self, var_array, var_from, var84); /* Direct call sorter$Comparator$sub_sort on <self:Comparator>*/
555 }
556 {
557 core___core__Comparator___sub_sort(self, var_array, var_i, var_to); /* Direct call sorter$Comparator$sub_sort on <self:Comparator>*/
558 }
559 RET_LABEL:;
560 }
561 /* method sorter$Comparator$bubble_sort for (self: Comparator, Array[nullable Object], Int, Int) */
562 void core___core__Comparator___bubble_sort(val* self, val* p0, long p1, long p2) {
563 short int var /* : Bool */;
564 int cltype;
565 int idtype;
566 const struct type* type_struct;
567 const char* var_class_name;
568 val* var_array /* var array: Array[nullable Object] */;
569 long var_from /* var from: Int */;
570 long var_to /* var to: Int */;
571 long var_i /* var i: Int */;
572 short int var1 /* : Bool */;
573 short int var3 /* : Bool */;
574 int cltype4;
575 int idtype5;
576 const char* var_class_name6;
577 short int var7 /* : Bool */;
578 long var_min /* var min: Int */;
579 val* var8 /* : nullable Object */;
580 val* var_min_v /* var min_v: nullable Object */;
581 long var_j /* var j: Int */;
582 short int var9 /* : Bool */;
583 short int var11 /* : Bool */;
584 int cltype12;
585 int idtype13;
586 const char* var_class_name14;
587 short int var15 /* : Bool */;
588 val* var16 /* : nullable Object */;
589 long var17 /* : Int */;
590 short int var18 /* : Bool */;
591 short int var20 /* : Bool */;
592 int cltype21;
593 int idtype22;
594 const char* var_class_name23;
595 short int var24 /* : Bool */;
596 val* var25 /* : nullable Object */;
597 long var26 /* : Int */;
598 short int var28 /* : Bool */;
599 int cltype29;
600 int idtype30;
601 const char* var_class_name31;
602 long var32 /* : Int */;
603 short int var33 /* : Bool */;
604 short int var35 /* : Bool */;
605 short int var36 /* : Bool */;
606 val* var37 /* : nullable Object */;
607 long var38 /* : Int */;
608 short int var40 /* : Bool */;
609 int cltype41;
610 int idtype42;
611 const char* var_class_name43;
612 long var44 /* : Int */;
613 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[COMPARED] */
614 /* <p0:Array[nullable Object]> isa Array[COMPARED] */
615 type_struct = (((long)self&3)?type_info[((long)self&3)]:self->type)->resolution_table->types[COLOR_core__Array__core__sorter__Comparator__COMPARED];
616 cltype = type_struct->color;
617 idtype = type_struct->id;
618 if(cltype >= p0->type->table_size) {
619 var = 0;
620 } else {
621 var = p0->type->type_table[cltype] == idtype;
622 }
623 if (unlikely(!var)) {
624 var_class_name = p0 == NULL ? "null" : p0->type->name;
625 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name);
626 PRINT_ERROR(" (%s:%d)\n", FILE_core__sorter, 128);
627 fatal_exit(1);
628 }
629 var_array = p0;
630 var_from = p1;
631 var_to = p2;
632 var_i = var_from;
633 for(;;) {
634 {
635 { /* Inline kernel$Int$< (var_i,var_to) on <var_i:Int> */
636 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
637 /* <var_to:Int> isa OTHER */
638 var3 = 1; /* easy <var_to:Int> isa OTHER*/
639 if (unlikely(!var3)) {
640 var_class_name6 = type_core__Int.name;
641 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6);
642 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 725);
643 fatal_exit(1);
644 }
645 var7 = var_i < var_to;
646 var1 = var7;
647 goto RET_LABEL2;
648 RET_LABEL2:(void)0;
649 }
650 }
651 if (var1){
652 var_min = var_i;
653 {
654 var8 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_array, var_i);
655 }
656 var_min_v = var8;
657 var_j = var_i;
658 for(;;) {
659 {
660 { /* Inline kernel$Int$<= (var_j,var_to) on <var_j:Int> */
661 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
662 /* <var_to:Int> isa OTHER */
663 var11 = 1; /* easy <var_to:Int> isa OTHER*/
664 if (unlikely(!var11)) {
665 var_class_name14 = type_core__Int.name;
666 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
667 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 724);
668 fatal_exit(1);
669 }
670 var15 = var_j <= var_to;
671 var9 = var15;
672 goto RET_LABEL10;
673 RET_LABEL10:(void)0;
674 }
675 }
676 if (var9){
677 {
678 var16 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_array, var_j);
679 }
680 {
681 var17 = ((long(*)(val* self, val* p0, val* p1))((((long)self&3)?class_info[((long)self&3)]:self->class)->vft[COLOR_core__sorter__Comparator__compare]))(self, var_min_v, var16); /* compare on <self:Comparator>*/
682 }
683 {
684 { /* Inline kernel$Int$> (var17,0l) on <var17:Int> */
685 /* Covariant cast for argument 0 (i) <0l:Int> isa OTHER */
686 /* <0l:Int> isa OTHER */
687 var20 = 1; /* easy <0l:Int> isa OTHER*/
688 if (unlikely(!var20)) {
689 var_class_name23 = type_core__Int.name;
690 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name23);
691 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 727);
692 fatal_exit(1);
693 }
694 var24 = var17 > 0l;
695 var18 = var24;
696 goto RET_LABEL19;
697 RET_LABEL19:(void)0;
698 }
699 }
700 if (var18){
701 var_min = var_j;
702 {
703 var25 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_array, var_j);
704 }
705 var_min_v = var25;
706 } else {
707 }
708 {
709 { /* Inline kernel$Int$+ (var_j,1l) on <var_j:Int> */
710 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
711 /* <1l:Int> isa OTHER */
712 var28 = 1; /* easy <1l:Int> isa OTHER*/
713 if (unlikely(!var28)) {
714 var_class_name31 = type_core__Int.name;
715 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
716 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
717 fatal_exit(1);
718 }
719 var32 = var_j + 1l;
720 var26 = var32;
721 goto RET_LABEL27;
722 RET_LABEL27:(void)0;
723 }
724 }
725 var_j = var26;
726 } else {
727 goto BREAK_label;
728 }
729 }
730 BREAK_label: (void)0;
731 {
732 { /* Inline kernel$Int$!= (var_min,var_i) on <var_min:Int> */
733 var35 = var_min == var_i;
734 var36 = !var35;
735 var33 = var36;
736 goto RET_LABEL34;
737 RET_LABEL34:(void)0;
738 }
739 }
740 if (var33){
741 {
742 var37 = core___core__Array___core__abstract_collection__SequenceRead___91d_93d(var_array, var_i);
743 }
744 {
745 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_array, var_min, var37); /* Direct call array$Array$[]= on <var_array:Array[nullable Object]>*/
746 }
747 {
748 core___core__Array___core__abstract_collection__Sequence___91d_93d_61d(var_array, var_i, var_min_v); /* Direct call array$Array$[]= on <var_array:Array[nullable Object]>*/
749 }
750 } else {
751 }
752 {
753 { /* Inline kernel$Int$+ (var_i,1l) on <var_i:Int> */
754 /* Covariant cast for argument 0 (i) <1l:Int> isa OTHER */
755 /* <1l:Int> isa OTHER */
756 var40 = 1; /* easy <1l:Int> isa OTHER*/
757 if (unlikely(!var40)) {
758 var_class_name43 = type_core__Int.name;
759 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name43);
760 PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
761 fatal_exit(1);
762 }
763 var44 = var_i + 1l;
764 var38 = var44;
765 goto RET_LABEL39;
766 RET_LABEL39:(void)0;
767 }
768 }
769 var_i = var38;
770 } else {
771 goto BREAK_label45;
772 }
773 }
774 BREAK_label45: (void)0;
775 RET_LABEL:;
776 }
777 /* method sorter$DefaultComparator$compare for (self: DefaultComparator, Comparable, Comparable): Int */
778 long core___core__DefaultComparator___Comparator__compare(val* self, val* p0, val* p1) {
779 long var /* : Int */;
780 short int var1 /* : Bool */;
781 int cltype;
782 int idtype;
783 const struct type* type_struct;
784 const char* var_class_name;
785 short int var2 /* : Bool */;
786 int cltype3;
787 int idtype4;
788 const struct type* type_struct5;
789 const char* var_class_name6;
790 val* var_a /* var a: Comparable */;
791 val* var_b /* var b: Comparable */;
792 long var7 /* : Int */;
793 /* Covariant cast for argument 0 (a) <p0:Comparable> isa COMPARED */
794 /* <p0:Comparable> isa COMPARED */
795 type_struct = self->type->resolution_table->types[COLOR_core__sorter__Comparator__COMPARED];
796 cltype = type_struct->color;
797 idtype = type_struct->id;
798 if(cltype >= (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->table_size) {
799 var1 = 0;
800 } else {
801 var1 = (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->type_table[cltype] == idtype;
802 }
803 if (unlikely(!var1)) {
804 var_class_name = p0 == NULL ? "null" : (((long)p0&3)?type_info[((long)p0&3)]:p0->type)->name;
805 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPARED", var_class_name);
806 PRINT_ERROR(" (%s:%d)\n", FILE_core__sorter, 335);
807 fatal_exit(1);
808 }
809 /* Covariant cast for argument 1 (b) <p1:Comparable> isa COMPARED */
810 /* <p1:Comparable> isa COMPARED */
811 type_struct5 = self->type->resolution_table->types[COLOR_core__sorter__Comparator__COMPARED];
812 cltype3 = type_struct5->color;
813 idtype4 = type_struct5->id;
814 if(cltype3 >= (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->table_size) {
815 var2 = 0;
816 } else {
817 var2 = (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->type_table[cltype3] == idtype4;
818 }
819 if (unlikely(!var2)) {
820 var_class_name6 = p1 == NULL ? "null" : (((long)p1&3)?type_info[((long)p1&3)]:p1->type)->name;
821 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPARED", var_class_name6);
822 PRINT_ERROR(" (%s:%d)\n", FILE_core__sorter, 335);
823 fatal_exit(1);
824 }
825 var_a = p0;
826 var_b = p1;
827 {
828 var7 = ((long(*)(val* self, val* p0))((((long)var_a&3)?class_info[((long)var_a&3)]:var_a->class)->vft[COLOR_core__kernel__Comparable___60d_61d_62d]))(var_a, var_b); /* <=> on <var_a:Comparable>*/
829 }
830 var = var7;
831 goto RET_LABEL;
832 RET_LABEL:;
833 return var;
834 }
835 /* method sorter$Sys$default_comparator for (self: Sys): DefaultComparator */
836 val* core__sorter___Sys___default_comparator(val* self) {
837 val* var /* : DefaultComparator */;
838 static val* varonce;
839 static int varonce_guard;
840 val* var1 /* : DefaultComparator */;
841 val* var2 /* : DefaultComparator */;
842 if (likely(varonce_guard)) {
843 var1 = varonce;
844 } else {
845 var2 = NEW_core__DefaultComparator(&type_core__DefaultComparator);
846 {
847 { /* Inline kernel$Object$init (var2) on <var2:DefaultComparator> */
848 RET_LABEL3:(void)0;
849 }
850 }
851 var1 = var2;
852 varonce = var1;
853 varonce_guard = 1;
854 }
855 var = var1;
856 goto RET_LABEL;
857 RET_LABEL:;
858 return var;
859 }