update NOTICE
[nit.git] / c_src / sorter.sep.1.c
1 #include "sorter.sep.0.h"
2 /* method sorter#Comparator#sort for (self: Comparator, Array[nullable Object]) */
3 void sorter__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 var2 /* : Int */;
12 long var4 /* : Int */;
13 long var5 /* : Int */;
14 long var6 /* : Int */;
15 short int var8 /* : Bool */;
16 int cltype9;
17 int idtype10;
18 const char* var_class_name11;
19 long var12 /* : Int */;
20 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[COMPARED] */
21 /* <p0:Array[nullable Object]> isa Array[COMPARED] */
22 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__Comparator_VTCOMPARED];
23 cltype = type_struct->color;
24 idtype = type_struct->id;
25 if(cltype >= p0->type->table_size) {
26 var = 0;
27 } else {
28 var = p0->type->type_table[cltype] == idtype;
29 }
30 if (unlikely(!var)) {
31 var_class_name = p0 == NULL ? "null" : p0->type->name;
32 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name);
33 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 80);
34 show_backtrace(1);
35 }
36 var_array = p0;
37 var1 = 0;
38 {
39 { /* Inline array#AbstractArrayRead#length (var_array) on <var_array:Array[nullable Object]> */
40 var4 = var_array->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on <var_array:Array[nullable Object]> */
41 var2 = var4;
42 RET_LABEL3:(void)0;
43 }
44 }
45 var5 = 1;
46 {
47 { /* Inline kernel#Int#- (var2,var5) on <var2:Int> */
48 /* Covariant cast for argument 0 (i) <var5:Int> isa OTHER */
49 /* <var5:Int> isa OTHER */
50 var8 = 1; /* easy <var5:Int> isa OTHER*/
51 if (unlikely(!var8)) {
52 var_class_name11 = type_kernel__Int.name;
53 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11);
54 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
55 show_backtrace(1);
56 }
57 var12 = var2 - var5;
58 var6 = var12;
59 goto RET_LABEL7;
60 RET_LABEL7:(void)0;
61 }
62 }
63 {
64 sorter__Comparator__sub_sort(self, var_array, var1, var6); /* Direct call sorter#Comparator#sub_sort on <self:Comparator>*/
65 }
66 RET_LABEL:;
67 }
68 /* method sorter#Comparator#sort for (self: Object, Array[nullable Object]) */
69 void VIRTUAL_sorter__Comparator__sort(val* self, val* p0) {
70 sorter__Comparator__sort(self, p0); /* Direct call sorter#Comparator#sort on <self:Object(Comparator)>*/
71 RET_LABEL:;
72 }
73 /* method sorter#Comparator#sub_sort for (self: Comparator, Array[nullable Object], Int, Int) */
74 void sorter__Comparator__sub_sort(val* self, val* p0, long p1, long p2) {
75 short int var /* : Bool */;
76 int cltype;
77 int idtype;
78 const struct type* type_struct;
79 const char* var_class_name;
80 val* var_array /* var array: Array[nullable Object] */;
81 long var_from /* var from: Int */;
82 long var_to /* var to: Int */;
83 short int var1 /* : Bool */;
84 short int var3 /* : Bool */;
85 int cltype4;
86 int idtype5;
87 const char* var_class_name6;
88 short int var7 /* : Bool */;
89 long var8 /* : Int */;
90 long var9 /* : Int */;
91 short int var11 /* : Bool */;
92 int cltype12;
93 int idtype13;
94 const char* var_class_name14;
95 long var15 /* : Int */;
96 short int var16 /* : Bool */;
97 short int var18 /* : Bool */;
98 int cltype19;
99 int idtype20;
100 const char* var_class_name21;
101 short int var22 /* : Bool */;
102 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[COMPARED] */
103 /* <p0:Array[nullable Object]> isa Array[COMPARED] */
104 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__Comparator_VTCOMPARED];
105 cltype = type_struct->color;
106 idtype = type_struct->id;
107 if(cltype >= p0->type->table_size) {
108 var = 0;
109 } else {
110 var = p0->type->type_table[cltype] == idtype;
111 }
112 if (unlikely(!var)) {
113 var_class_name = p0 == NULL ? "null" : p0->type->name;
114 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name);
115 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 89);
116 show_backtrace(1);
117 }
118 var_array = p0;
119 var_from = p1;
120 var_to = p2;
121 {
122 { /* Inline kernel#Int#>= (var_from,var_to) on <var_from:Int> */
123 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
124 /* <var_to:Int> isa OTHER */
125 var3 = 1; /* easy <var_to:Int> isa OTHER*/
126 if (unlikely(!var3)) {
127 var_class_name6 = type_kernel__Int.name;
128 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6);
129 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
130 show_backtrace(1);
131 }
132 var7 = var_from >= var_to;
133 var1 = var7;
134 goto RET_LABEL2;
135 RET_LABEL2:(void)0;
136 }
137 }
138 if (var1){
139 goto RET_LABEL;
140 } else {
141 var8 = 7;
142 {
143 { /* Inline kernel#Int#+ (var_from,var8) on <var_from:Int> */
144 /* Covariant cast for argument 0 (i) <var8:Int> isa OTHER */
145 /* <var8:Int> isa OTHER */
146 var11 = 1; /* easy <var8:Int> isa OTHER*/
147 if (unlikely(!var11)) {
148 var_class_name14 = type_kernel__Int.name;
149 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
150 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
151 show_backtrace(1);
152 }
153 var15 = var_from + var8;
154 var9 = var15;
155 goto RET_LABEL10;
156 RET_LABEL10:(void)0;
157 }
158 }
159 {
160 { /* Inline kernel#Int#< (var9,var_to) on <var9:Int> */
161 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
162 /* <var_to:Int> isa OTHER */
163 var18 = 1; /* easy <var_to:Int> isa OTHER*/
164 if (unlikely(!var18)) {
165 var_class_name21 = type_kernel__Int.name;
166 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21);
167 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
168 show_backtrace(1);
169 }
170 var22 = var9 < var_to;
171 var16 = var22;
172 goto RET_LABEL17;
173 RET_LABEL17:(void)0;
174 }
175 }
176 if (var16){
177 {
178 sorter__Comparator__quick_sort(self, var_array, var_from, var_to); /* Direct call sorter#Comparator#quick_sort on <self:Comparator>*/
179 }
180 } else {
181 {
182 sorter__Comparator__bubble_sort(self, var_array, var_from, var_to); /* Direct call sorter#Comparator#bubble_sort on <self:Comparator>*/
183 }
184 }
185 }
186 RET_LABEL:;
187 }
188 /* method sorter#Comparator#sub_sort for (self: Object, Array[nullable Object], Int, Int) */
189 void VIRTUAL_sorter__Comparator__sub_sort(val* self, val* p0, long p1, long p2) {
190 sorter__Comparator__sub_sort(self, p0, p1, p2); /* Direct call sorter#Comparator#sub_sort on <self:Object(Comparator)>*/
191 RET_LABEL:;
192 }
193 /* method sorter#Comparator#quick_sort for (self: Comparator, Array[nullable Object], Int, Int) */
194 void sorter__Comparator__quick_sort(val* self, val* p0, long p1, long p2) {
195 short int var /* : Bool */;
196 int cltype;
197 int idtype;
198 const struct type* type_struct;
199 const char* var_class_name;
200 val* var_array /* var array: Array[nullable Object] */;
201 long var_from /* var from: Int */;
202 long var_to /* var to: Int */;
203 val* var1 /* : nullable Object */;
204 val* var_pivot /* var pivot: nullable Object */;
205 long var_i /* var i: Int */;
206 long var_j /* var j: Int */;
207 short int var2 /* : Bool */;
208 short int var4 /* : Bool */;
209 int cltype5;
210 int idtype6;
211 const char* var_class_name7;
212 short int var8 /* : Bool */;
213 short int var9 /* : Bool */;
214 short int var10 /* : Bool */;
215 short int var12 /* : Bool */;
216 int cltype13;
217 int idtype14;
218 const char* var_class_name15;
219 short int var16 /* : Bool */;
220 short int var_ /* var : Bool */;
221 val* var17 /* : nullable Object */;
222 long var18 /* : Int */;
223 long var19 /* : Int */;
224 short int var20 /* : Bool */;
225 short int var22 /* : Bool */;
226 int cltype23;
227 int idtype24;
228 const char* var_class_name25;
229 short int var26 /* : Bool */;
230 long var27 /* : Int */;
231 long var28 /* : Int */;
232 short int var30 /* : Bool */;
233 int cltype31;
234 int idtype32;
235 const char* var_class_name33;
236 long var34 /* : Int */;
237 short int var35 /* : Bool */;
238 short int var36 /* : Bool */;
239 short int var38 /* : Bool */;
240 int cltype39;
241 int idtype40;
242 const char* var_class_name41;
243 short int var42 /* : Bool */;
244 short int var_43 /* var : Bool */;
245 val* var44 /* : nullable Object */;
246 long var45 /* : Int */;
247 long var46 /* : Int */;
248 short int var47 /* : Bool */;
249 short int var49 /* : Bool */;
250 int cltype50;
251 int idtype51;
252 const char* var_class_name52;
253 short int var53 /* : Bool */;
254 long var54 /* : Int */;
255 long var55 /* : Int */;
256 short int var57 /* : Bool */;
257 int cltype58;
258 int idtype59;
259 const char* var_class_name60;
260 long var61 /* : Int */;
261 short int var63 /* : Bool */;
262 short int var65 /* : Bool */;
263 int cltype66;
264 int idtype67;
265 const char* var_class_name68;
266 short int var69 /* : Bool */;
267 val* var70 /* : nullable Object */;
268 val* var_t /* var t: nullable Object */;
269 val* var71 /* : nullable Object */;
270 long var73 /* : Int */;
271 long var74 /* : Int */;
272 short int var76 /* : Bool */;
273 int cltype77;
274 int idtype78;
275 const char* var_class_name79;
276 long var80 /* : Int */;
277 val* var81 /* : nullable Object */;
278 long var82 /* : Int */;
279 long var83 /* : Int */;
280 short int var85 /* : Bool */;
281 int cltype86;
282 int idtype87;
283 const char* var_class_name88;
284 long var89 /* : Int */;
285 long var90 /* : Int */;
286 long var91 /* : Int */;
287 short int var93 /* : Bool */;
288 int cltype94;
289 int idtype95;
290 const char* var_class_name96;
291 long var97 /* : Int */;
292 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[COMPARED] */
293 /* <p0:Array[nullable Object]> isa Array[COMPARED] */
294 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__Comparator_VTCOMPARED];
295 cltype = type_struct->color;
296 idtype = type_struct->id;
297 if(cltype >= p0->type->table_size) {
298 var = 0;
299 } else {
300 var = p0->type->type_table[cltype] == idtype;
301 }
302 if (unlikely(!var)) {
303 var_class_name = p0 == NULL ? "null" : p0->type->name;
304 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name);
305 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 101);
306 show_backtrace(1);
307 }
308 var_array = p0;
309 var_from = p1;
310 var_to = p2;
311 {
312 var1 = array__Array___91d_93d(var_array, var_from);
313 }
314 var_pivot = var1;
315 var_i = var_from;
316 var_j = var_to;
317 for(;;) {
318 {
319 { /* Inline kernel#Int#> (var_j,var_i) on <var_j:Int> */
320 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
321 /* <var_i:Int> isa OTHER */
322 var4 = 1; /* easy <var_i:Int> isa OTHER*/
323 if (unlikely(!var4)) {
324 var_class_name7 = type_kernel__Int.name;
325 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7);
326 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
327 show_backtrace(1);
328 }
329 var8 = var_j > var_i;
330 var2 = var8;
331 goto RET_LABEL3;
332 RET_LABEL3:(void)0;
333 }
334 }
335 if (var2){
336 for(;;) {
337 {
338 { /* Inline kernel#Int#<= (var_i,var_to) on <var_i:Int> */
339 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
340 /* <var_to:Int> isa OTHER */
341 var12 = 1; /* easy <var_to:Int> isa OTHER*/
342 if (unlikely(!var12)) {
343 var_class_name15 = type_kernel__Int.name;
344 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15);
345 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
346 show_backtrace(1);
347 }
348 var16 = var_i <= var_to;
349 var10 = var16;
350 goto RET_LABEL11;
351 RET_LABEL11:(void)0;
352 }
353 }
354 var_ = var10;
355 if (var10){
356 {
357 var17 = array__Array___91d_93d(var_array, var_i);
358 }
359 {
360 var18 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__Comparator__compare]))(self, var17, var_pivot) /* compare on <self:Comparator>*/;
361 }
362 var19 = 0;
363 {
364 { /* Inline kernel#Int#<= (var18,var19) on <var18:Int> */
365 /* Covariant cast for argument 0 (i) <var19:Int> isa OTHER */
366 /* <var19:Int> isa OTHER */
367 var22 = 1; /* easy <var19:Int> isa OTHER*/
368 if (unlikely(!var22)) {
369 var_class_name25 = type_kernel__Int.name;
370 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
371 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
372 show_backtrace(1);
373 }
374 var26 = var18 <= var19;
375 var20 = var26;
376 goto RET_LABEL21;
377 RET_LABEL21:(void)0;
378 }
379 }
380 var9 = var20;
381 } else {
382 var9 = var_;
383 }
384 if (var9){
385 var27 = 1;
386 {
387 { /* Inline kernel#Int#+ (var_i,var27) on <var_i:Int> */
388 /* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
389 /* <var27:Int> isa OTHER */
390 var30 = 1; /* easy <var27:Int> isa OTHER*/
391 if (unlikely(!var30)) {
392 var_class_name33 = type_kernel__Int.name;
393 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
394 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
395 show_backtrace(1);
396 }
397 var34 = var_i + var27;
398 var28 = var34;
399 goto RET_LABEL29;
400 RET_LABEL29:(void)0;
401 }
402 }
403 var_i = var28;
404 } else {
405 goto BREAK_label;
406 }
407 }
408 BREAK_label: (void)0;
409 for(;;) {
410 {
411 { /* Inline kernel#Int#> (var_j,var_i) on <var_j:Int> */
412 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
413 /* <var_i:Int> isa OTHER */
414 var38 = 1; /* easy <var_i:Int> isa OTHER*/
415 if (unlikely(!var38)) {
416 var_class_name41 = type_kernel__Int.name;
417 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41);
418 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
419 show_backtrace(1);
420 }
421 var42 = var_j > var_i;
422 var36 = var42;
423 goto RET_LABEL37;
424 RET_LABEL37:(void)0;
425 }
426 }
427 var_43 = var36;
428 if (var36){
429 {
430 var44 = array__Array___91d_93d(var_array, var_j);
431 }
432 {
433 var45 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__Comparator__compare]))(self, var44, var_pivot) /* compare on <self:Comparator>*/;
434 }
435 var46 = 0;
436 {
437 { /* Inline kernel#Int#>= (var45,var46) on <var45:Int> */
438 /* Covariant cast for argument 0 (i) <var46:Int> isa OTHER */
439 /* <var46:Int> isa OTHER */
440 var49 = 1; /* easy <var46:Int> isa OTHER*/
441 if (unlikely(!var49)) {
442 var_class_name52 = type_kernel__Int.name;
443 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name52);
444 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372);
445 show_backtrace(1);
446 }
447 var53 = var45 >= var46;
448 var47 = var53;
449 goto RET_LABEL48;
450 RET_LABEL48:(void)0;
451 }
452 }
453 var35 = var47;
454 } else {
455 var35 = var_43;
456 }
457 if (var35){
458 var54 = 1;
459 {
460 { /* Inline kernel#Int#- (var_j,var54) on <var_j:Int> */
461 /* Covariant cast for argument 0 (i) <var54:Int> isa OTHER */
462 /* <var54:Int> isa OTHER */
463 var57 = 1; /* easy <var54:Int> isa OTHER*/
464 if (unlikely(!var57)) {
465 var_class_name60 = type_kernel__Int.name;
466 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name60);
467 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
468 show_backtrace(1);
469 }
470 var61 = var_j - var54;
471 var55 = var61;
472 goto RET_LABEL56;
473 RET_LABEL56:(void)0;
474 }
475 }
476 var_j = var55;
477 } else {
478 goto BREAK_label62;
479 }
480 }
481 BREAK_label62: (void)0;
482 {
483 { /* Inline kernel#Int#> (var_j,var_i) on <var_j:Int> */
484 /* Covariant cast for argument 0 (i) <var_i:Int> isa OTHER */
485 /* <var_i:Int> isa OTHER */
486 var65 = 1; /* easy <var_i:Int> isa OTHER*/
487 if (unlikely(!var65)) {
488 var_class_name68 = type_kernel__Int.name;
489 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name68);
490 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
491 show_backtrace(1);
492 }
493 var69 = var_j > var_i;
494 var63 = var69;
495 goto RET_LABEL64;
496 RET_LABEL64:(void)0;
497 }
498 }
499 if (var63){
500 {
501 var70 = array__Array___91d_93d(var_array, var_i);
502 }
503 var_t = var70;
504 {
505 var71 = array__Array___91d_93d(var_array, var_j);
506 }
507 {
508 array__Array___91d_93d_61d(var_array, var_i, var71); /* Direct call array#Array#[]= on <var_array:Array[nullable Object]>*/
509 }
510 {
511 array__Array___91d_93d_61d(var_array, var_j, var_t); /* Direct call array#Array#[]= on <var_array:Array[nullable Object]>*/
512 }
513 } else {
514 }
515 } else {
516 goto BREAK_label72;
517 }
518 }
519 BREAK_label72: (void)0;
520 var73 = 1;
521 {
522 { /* Inline kernel#Int#- (var_i,var73) on <var_i:Int> */
523 /* Covariant cast for argument 0 (i) <var73:Int> isa OTHER */
524 /* <var73:Int> isa OTHER */
525 var76 = 1; /* easy <var73:Int> isa OTHER*/
526 if (unlikely(!var76)) {
527 var_class_name79 = type_kernel__Int.name;
528 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name79);
529 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
530 show_backtrace(1);
531 }
532 var80 = var_i - var73;
533 var74 = var80;
534 goto RET_LABEL75;
535 RET_LABEL75:(void)0;
536 }
537 }
538 {
539 var81 = array__Array___91d_93d(var_array, var74);
540 }
541 {
542 array__Array___91d_93d_61d(var_array, var_from, var81); /* Direct call array#Array#[]= on <var_array:Array[nullable Object]>*/
543 }
544 var82 = 1;
545 {
546 { /* Inline kernel#Int#- (var_i,var82) on <var_i:Int> */
547 /* Covariant cast for argument 0 (i) <var82:Int> isa OTHER */
548 /* <var82:Int> isa OTHER */
549 var85 = 1; /* easy <var82:Int> isa OTHER*/
550 if (unlikely(!var85)) {
551 var_class_name88 = type_kernel__Int.name;
552 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name88);
553 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
554 show_backtrace(1);
555 }
556 var89 = var_i - var82;
557 var83 = var89;
558 goto RET_LABEL84;
559 RET_LABEL84:(void)0;
560 }
561 }
562 {
563 array__Array___91d_93d_61d(var_array, var83, var_pivot); /* Direct call array#Array#[]= on <var_array:Array[nullable Object]>*/
564 }
565 var90 = 2;
566 {
567 { /* Inline kernel#Int#- (var_i,var90) on <var_i:Int> */
568 /* Covariant cast for argument 0 (i) <var90:Int> isa OTHER */
569 /* <var90:Int> isa OTHER */
570 var93 = 1; /* easy <var90:Int> isa OTHER*/
571 if (unlikely(!var93)) {
572 var_class_name96 = type_kernel__Int.name;
573 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name96);
574 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377);
575 show_backtrace(1);
576 }
577 var97 = var_i - var90;
578 var91 = var97;
579 goto RET_LABEL92;
580 RET_LABEL92:(void)0;
581 }
582 }
583 {
584 sorter__Comparator__sub_sort(self, var_array, var_from, var91); /* Direct call sorter#Comparator#sub_sort on <self:Comparator>*/
585 }
586 {
587 sorter__Comparator__sub_sort(self, var_array, var_i, var_to); /* Direct call sorter#Comparator#sub_sort on <self:Comparator>*/
588 }
589 RET_LABEL:;
590 }
591 /* method sorter#Comparator#quick_sort for (self: Object, Array[nullable Object], Int, Int) */
592 void VIRTUAL_sorter__Comparator__quick_sort(val* self, val* p0, long p1, long p2) {
593 sorter__Comparator__quick_sort(self, p0, p1, p2); /* Direct call sorter#Comparator#quick_sort on <self:Object(Comparator)>*/
594 RET_LABEL:;
595 }
596 /* method sorter#Comparator#bubble_sort for (self: Comparator, Array[nullable Object], Int, Int) */
597 void sorter__Comparator__bubble_sort(val* self, val* p0, long p1, long p2) {
598 short int var /* : Bool */;
599 int cltype;
600 int idtype;
601 const struct type* type_struct;
602 const char* var_class_name;
603 val* var_array /* var array: Array[nullable Object] */;
604 long var_from /* var from: Int */;
605 long var_to /* var to: Int */;
606 long var_i /* var i: Int */;
607 short int var1 /* : Bool */;
608 short int var3 /* : Bool */;
609 int cltype4;
610 int idtype5;
611 const char* var_class_name6;
612 short int var7 /* : Bool */;
613 long var_min /* var min: Int */;
614 val* var8 /* : nullable Object */;
615 val* var_min_v /* var min_v: nullable Object */;
616 long var_j /* var j: Int */;
617 short int var9 /* : Bool */;
618 short int var11 /* : Bool */;
619 int cltype12;
620 int idtype13;
621 const char* var_class_name14;
622 short int var15 /* : Bool */;
623 val* var16 /* : nullable Object */;
624 long var17 /* : Int */;
625 long var18 /* : Int */;
626 short int var19 /* : Bool */;
627 short int var21 /* : Bool */;
628 int cltype22;
629 int idtype23;
630 const char* var_class_name24;
631 short int var25 /* : Bool */;
632 val* var26 /* : nullable Object */;
633 long var27 /* : Int */;
634 long var28 /* : Int */;
635 short int var30 /* : Bool */;
636 int cltype31;
637 int idtype32;
638 const char* var_class_name33;
639 long var34 /* : Int */;
640 short int var35 /* : Bool */;
641 short int var36 /* : Bool */;
642 short int var38 /* : Bool */;
643 short int var39 /* : Bool */;
644 val* var40 /* : nullable Object */;
645 long var41 /* : Int */;
646 long var42 /* : Int */;
647 short int var44 /* : Bool */;
648 int cltype45;
649 int idtype46;
650 const char* var_class_name47;
651 long var48 /* : Int */;
652 /* Covariant cast for argument 0 (array) <p0:Array[nullable Object]> isa Array[COMPARED] */
653 /* <p0:Array[nullable Object]> isa Array[COMPARED] */
654 type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__Comparator_VTCOMPARED];
655 cltype = type_struct->color;
656 idtype = type_struct->id;
657 if(cltype >= p0->type->table_size) {
658 var = 0;
659 } else {
660 var = p0->type->type_table[cltype] == idtype;
661 }
662 if (unlikely(!var)) {
663 var_class_name = p0 == NULL ? "null" : p0->type->name;
664 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name);
665 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 126);
666 show_backtrace(1);
667 }
668 var_array = p0;
669 var_from = p1;
670 var_to = p2;
671 var_i = var_from;
672 for(;;) {
673 {
674 { /* Inline kernel#Int#< (var_i,var_to) on <var_i:Int> */
675 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
676 /* <var_to:Int> isa OTHER */
677 var3 = 1; /* easy <var_to:Int> isa OTHER*/
678 if (unlikely(!var3)) {
679 var_class_name6 = type_kernel__Int.name;
680 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6);
681 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371);
682 show_backtrace(1);
683 }
684 var7 = var_i < var_to;
685 var1 = var7;
686 goto RET_LABEL2;
687 RET_LABEL2:(void)0;
688 }
689 }
690 if (var1){
691 var_min = var_i;
692 {
693 var8 = array__Array___91d_93d(var_array, var_i);
694 }
695 var_min_v = var8;
696 var_j = var_i;
697 for(;;) {
698 {
699 { /* Inline kernel#Int#<= (var_j,var_to) on <var_j:Int> */
700 /* Covariant cast for argument 0 (i) <var_to:Int> isa OTHER */
701 /* <var_to:Int> isa OTHER */
702 var11 = 1; /* easy <var_to:Int> isa OTHER*/
703 if (unlikely(!var11)) {
704 var_class_name14 = type_kernel__Int.name;
705 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14);
706 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370);
707 show_backtrace(1);
708 }
709 var15 = var_j <= var_to;
710 var9 = var15;
711 goto RET_LABEL10;
712 RET_LABEL10:(void)0;
713 }
714 }
715 if (var9){
716 {
717 var16 = array__Array___91d_93d(var_array, var_j);
718 }
719 {
720 var17 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__Comparator__compare]))(self, var_min_v, var16) /* compare on <self:Comparator>*/;
721 }
722 var18 = 0;
723 {
724 { /* Inline kernel#Int#> (var17,var18) on <var17:Int> */
725 /* Covariant cast for argument 0 (i) <var18:Int> isa OTHER */
726 /* <var18:Int> isa OTHER */
727 var21 = 1; /* easy <var18:Int> isa OTHER*/
728 if (unlikely(!var21)) {
729 var_class_name24 = type_kernel__Int.name;
730 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24);
731 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373);
732 show_backtrace(1);
733 }
734 var25 = var17 > var18;
735 var19 = var25;
736 goto RET_LABEL20;
737 RET_LABEL20:(void)0;
738 }
739 }
740 if (var19){
741 var_min = var_j;
742 {
743 var26 = array__Array___91d_93d(var_array, var_j);
744 }
745 var_min_v = var26;
746 } else {
747 }
748 var27 = 1;
749 {
750 { /* Inline kernel#Int#+ (var_j,var27) on <var_j:Int> */
751 /* Covariant cast for argument 0 (i) <var27:Int> isa OTHER */
752 /* <var27:Int> isa OTHER */
753 var30 = 1; /* easy <var27:Int> isa OTHER*/
754 if (unlikely(!var30)) {
755 var_class_name33 = type_kernel__Int.name;
756 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
757 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
758 show_backtrace(1);
759 }
760 var34 = var_j + var27;
761 var28 = var34;
762 goto RET_LABEL29;
763 RET_LABEL29:(void)0;
764 }
765 }
766 var_j = var28;
767 } else {
768 goto BREAK_label;
769 }
770 }
771 BREAK_label: (void)0;
772 {
773 { /* Inline kernel#Int#!= (var_min,var_i) on <var_min:Int> */
774 var38 = var_min == var_i;
775 var39 = !var38;
776 var36 = var39;
777 goto RET_LABEL37;
778 RET_LABEL37:(void)0;
779 }
780 var35 = var36;
781 }
782 if (var35){
783 {
784 var40 = array__Array___91d_93d(var_array, var_i);
785 }
786 {
787 array__Array___91d_93d_61d(var_array, var_min, var40); /* Direct call array#Array#[]= on <var_array:Array[nullable Object]>*/
788 }
789 {
790 array__Array___91d_93d_61d(var_array, var_i, var_min_v); /* Direct call array#Array#[]= on <var_array:Array[nullable Object]>*/
791 }
792 } else {
793 }
794 var41 = 1;
795 {
796 { /* Inline kernel#Int#+ (var_i,var41) on <var_i:Int> */
797 /* Covariant cast for argument 0 (i) <var41:Int> isa OTHER */
798 /* <var41:Int> isa OTHER */
799 var44 = 1; /* easy <var41:Int> isa OTHER*/
800 if (unlikely(!var44)) {
801 var_class_name47 = type_kernel__Int.name;
802 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name47);
803 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374);
804 show_backtrace(1);
805 }
806 var48 = var_i + var41;
807 var42 = var48;
808 goto RET_LABEL43;
809 RET_LABEL43:(void)0;
810 }
811 }
812 var_i = var42;
813 } else {
814 goto BREAK_label49;
815 }
816 }
817 BREAK_label49: (void)0;
818 RET_LABEL:;
819 }
820 /* method sorter#Comparator#bubble_sort for (self: Object, Array[nullable Object], Int, Int) */
821 void VIRTUAL_sorter__Comparator__bubble_sort(val* self, val* p0, long p1, long p2) {
822 sorter__Comparator__bubble_sort(self, p0, p1, p2); /* Direct call sorter#Comparator#bubble_sort on <self:Object(Comparator)>*/
823 RET_LABEL:;
824 }
825 /* method sorter#DefaultComparator#compare for (self: DefaultComparator, Comparable, Comparable): Int */
826 long sorter__DefaultComparator__compare(val* self, val* p0, val* p1) {
827 long var /* : Int */;
828 short int var1 /* : Bool */;
829 int cltype;
830 int idtype;
831 const struct type* type_struct;
832 const char* var_class_name;
833 short int var2 /* : Bool */;
834 int cltype3;
835 int idtype4;
836 const struct type* type_struct5;
837 const char* var_class_name6;
838 val* var_a /* var a: Comparable */;
839 val* var_b /* var b: Comparable */;
840 long var7 /* : Int */;
841 /* Covariant cast for argument 0 (a) <p0:Comparable> isa COMPARED */
842 /* <p0:Comparable> isa COMPARED */
843 type_struct = self->type->resolution_table->types[COLOR_sorter__Comparator_VTCOMPARED];
844 cltype = type_struct->color;
845 idtype = type_struct->id;
846 if(cltype >= p0->type->table_size) {
847 var1 = 0;
848 } else {
849 var1 = p0->type->type_table[cltype] == idtype;
850 }
851 if (unlikely(!var1)) {
852 var_class_name = p0 == NULL ? "null" : p0->type->name;
853 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPARED", var_class_name);
854 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 258);
855 show_backtrace(1);
856 }
857 /* Covariant cast for argument 1 (b) <p1:Comparable> isa COMPARED */
858 /* <p1:Comparable> isa COMPARED */
859 type_struct5 = self->type->resolution_table->types[COLOR_sorter__Comparator_VTCOMPARED];
860 cltype3 = type_struct5->color;
861 idtype4 = type_struct5->id;
862 if(cltype3 >= p1->type->table_size) {
863 var2 = 0;
864 } else {
865 var2 = p1->type->type_table[cltype3] == idtype4;
866 }
867 if (unlikely(!var2)) {
868 var_class_name6 = p1 == NULL ? "null" : p1->type->name;
869 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPARED", var_class_name6);
870 PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 258);
871 show_backtrace(1);
872 }
873 var_a = p0;
874 var_b = p1;
875 {
876 var7 = ((long (*)(val*, val*))(var_a->class->vft[COLOR_kernel__Comparable___60d_61d_62d]))(var_a, var_b) /* <=> on <var_a:Comparable>*/;
877 }
878 var = var7;
879 goto RET_LABEL;
880 RET_LABEL:;
881 return var;
882 }
883 /* method sorter#DefaultComparator#compare for (self: Object, nullable Object, nullable Object): Int */
884 long VIRTUAL_sorter__DefaultComparator__compare(val* self, val* p0, val* p1) {
885 long var /* : Int */;
886 long var1 /* : Int */;
887 var1 = sorter__DefaultComparator__compare(self, p0, p1);
888 var = var1;
889 RET_LABEL:;
890 return var;
891 }
892 /* method sorter#Object#default_comparator for (self: Object): DefaultComparator */
893 val* sorter__Object__default_comparator(val* self) {
894 val* var /* : DefaultComparator */;
895 static val* varonce;
896 static int varonce_guard;
897 val* var1 /* : DefaultComparator */;
898 val* var2 /* : DefaultComparator */;
899 if (varonce_guard) {
900 var1 = varonce;
901 } else {
902 var2 = NEW_sorter__DefaultComparator(&type_sorter__DefaultComparator);
903 {
904 ((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on <var2:DefaultComparator>*/;
905 }
906 var1 = var2;
907 varonce = var1;
908 varonce_guard = 1;
909 }
910 var = var1;
911 goto RET_LABEL;
912 RET_LABEL:;
913 return var;
914 }
915 /* method sorter#Object#default_comparator for (self: Object): DefaultComparator */
916 val* VIRTUAL_sorter__Object__default_comparator(val* self) {
917 val* var /* : DefaultComparator */;
918 val* var1 /* : DefaultComparator */;
919 var1 = sorter__Object__default_comparator(self);
920 var = var1;
921 RET_LABEL:;
922 return var;
923 }