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