X-Git-Url: http://nitlanguage.org diff --git a/c_src/sorter.sep.1.c b/c_src/sorter.sep.1.c index f4316ad..0f3c605 100644 --- a/c_src/sorter.sep.1.c +++ b/c_src/sorter.sep.1.c @@ -1,80 +1,6 @@ #include "sorter.sep.0.h" -/* method sorter#AbstractSorter#compare for (self: AbstractSorter[nullable Object], nullable Object, nullable Object): Int */ -long sorter__AbstractSorter__compare(val* self, val* p0, val* p1) { -long var /* : Int */; -short int var1 /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -short int is_nullable; -const char* var_class_name; -short int var2 /* : Bool */; -int cltype3; -int idtype4; -const struct type* type_struct5; -short int is_nullable6; -const char* var_class_name7; -const char* var_class_name8; -/* Covariant cast for argument 0 (a) isa AbstractSorter#0 */ -/* isa AbstractSorter#0 */ -type_struct = self->type->resolution_table->types[COLOR_sorter__AbstractSorter_FT0]; -cltype = type_struct->color; -idtype = type_struct->id; -is_nullable = type_struct->is_nullable; -if(p0 == NULL) { -var1 = is_nullable; -} else { -if(cltype >= p0->type->table_size) { -var1 = 0; -} else { -var1 = p0->type->type_table[cltype] == idtype; -} -} -if (!var1) { -var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 23); -show_backtrace(1); -} -/* Covariant cast for argument 1 (b) isa AbstractSorter#0 */ -/* isa AbstractSorter#0 */ -type_struct5 = self->type->resolution_table->types[COLOR_sorter__AbstractSorter_FT0]; -cltype3 = type_struct5->color; -idtype4 = type_struct5->id; -is_nullable6 = type_struct5->is_nullable; -if(p1 == NULL) { -var2 = is_nullable6; -} else { -if(cltype3 >= p1->type->table_size) { -var2 = 0; -} else { -var2 = p1->type->type_table[cltype3] == idtype4; -} -} -if (!var2) { -var_class_name7 = p1 == NULL ? "null" : p1->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name7); -fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 23); -show_backtrace(1); -} -var_class_name8 = self == NULL ? "null" : self->type->name; -fprintf(stderr, "Runtime error: Abstract method `%s` called on `%s`", "compare", var_class_name8); -fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 23); -show_backtrace(1); -RET_LABEL:; -return var; -} -/* method sorter#AbstractSorter#compare for (self: Object, nullable Object, nullable Object): Int */ -long VIRTUAL_sorter__AbstractSorter__compare(val* self, val* p0, val* p1) { -long var /* : Int */; -long var1 /* : Int */; -var1 = sorter__AbstractSorter__compare(self, p0, p1); -var = var1; -RET_LABEL:; -return var; -} -/* method sorter#AbstractSorter#sort for (self: AbstractSorter[nullable Object], Array[nullable Object]) */ -void sorter__AbstractSorter__sort(val* self, val* p0) { +/* method sorter#Comparator#sort for (self: Comparator, Array[nullable Object]) */ +void sorter__Comparator__sort(val* self, val* p0) { short int var /* : Bool */; int cltype; int idtype; @@ -83,12 +9,17 @@ const char* var_class_name; val* var_array /* var array: Array[nullable Object] */; long var1 /* : Int */; long var2 /* : Int */; -long var3 /* : Int */; long var4 /* : Int */; +long var5 /* : Int */; long var6 /* : Int */; -/* Covariant cast for argument 0 (array) isa Array[AbstractSorter#0] */ -/* isa Array[AbstractSorter#0] */ -type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0]; +short int var8 /* : Bool */; +int cltype9; +int idtype10; +const char* var_class_name11; +long var12 /* : Int */; +/* Covariant cast for argument 0 (array) isa Array[COMPARED] */ +/* isa Array[COMPARED] */ +type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__Comparator_VTCOMPARED]; cltype = type_struct->color; idtype = type_struct->id; if(cltype >= p0->type->table_size) { @@ -96,32 +27,51 @@ var = 0; } else { var = p0->type->type_table[cltype] == idtype; } -if (!var) { +if (unlikely(!var)) { var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 30); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 80); show_backtrace(1); } var_array = p0; var1 = 0; -var2 = ((long (*)(val*))(var_array->class->vft[COLOR_abstract_collection__Collection__length]))(var_array) /* length on */; -var3 = 1; -{ /* Inline kernel#Int#- (var2,var3) */ -var6 = var2 - var3; -var4 = var6; -goto RET_LABEL5; -RET_LABEL5:(void)0; -} -((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__sub_sort]))(self, var_array, var1, var4) /* sub_sort on */; +{ +{ /* Inline array#AbstractArrayRead#length (var_array) on */ +var4 = var_array->attrs[COLOR_array__AbstractArrayRead___length].l; /* _length on */ +var2 = var4; +RET_LABEL3:(void)0; +} +} +var5 = 1; +{ +{ /* Inline kernel#Int#- (var2,var5) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var8 = 1; /* easy isa OTHER*/ +if (unlikely(!var8)) { +var_class_name11 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name11); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); +} +var12 = var2 - var5; +var6 = var12; +goto RET_LABEL7; +RET_LABEL7:(void)0; +} +} +{ +sorter__Comparator__sub_sort(self, var_array, var1, var6); /* Direct call sorter#Comparator#sub_sort on */ +} RET_LABEL:; } -/* method sorter#AbstractSorter#sort for (self: Object, Array[nullable Object]) */ -void VIRTUAL_sorter__AbstractSorter__sort(val* self, val* p0) { -sorter__AbstractSorter__sort(self, p0); +/* method sorter#Comparator#sort for (self: Object, Array[nullable Object]) */ +void VIRTUAL_sorter__Comparator__sort(val* self, val* p0) { +sorter__Comparator__sort(self, p0); /* Direct call sorter#Comparator#sort on */ RET_LABEL:; } -/* method sorter#AbstractSorter#sub_sort for (self: AbstractSorter[nullable Object], Array[nullable Object], Int, Int) */ -void sorter__AbstractSorter__sub_sort(val* self, val* p0, long p1, long p2) { +/* method sorter#Comparator#sub_sort for (self: Comparator, Array[nullable Object], Int, Int) */ +void sorter__Comparator__sub_sort(val* self, val* p0, long p1, long p2) { short int var /* : Bool */; int cltype; int idtype; @@ -138,16 +88,20 @@ const char* var_class_name6; short int var7 /* : Bool */; long var8 /* : Int */; long var9 /* : Int */; -long var11 /* : Int */; -short int var12 /* : Bool */; -short int var14 /* : Bool */; -int cltype15; -int idtype16; -const char* var_class_name17; +short int var11 /* : Bool */; +int cltype12; +int idtype13; +const char* var_class_name14; +long var15 /* : Int */; +short int var16 /* : Bool */; short int var18 /* : Bool */; -/* Covariant cast for argument 0 (array) isa Array[AbstractSorter#0] */ -/* isa Array[AbstractSorter#0] */ -type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0]; +int cltype19; +int idtype20; +const char* var_class_name21; +short int var22 /* : Bool */; +/* Covariant cast for argument 0 (array) isa Array[COMPARED] */ +/* isa Array[COMPARED] */ +type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__Comparator_VTCOMPARED]; cltype = type_struct->color; idtype = type_struct->id; if(cltype >= p0->type->table_size) { @@ -155,23 +109,24 @@ var = 0; } else { var = p0->type->type_table[cltype] == idtype; } -if (!var) { +if (unlikely(!var)) { var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 33); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 89); show_backtrace(1); } var_array = p0; var_from = p1; var_to = p2; -{ /* Inline kernel#Int#>= (var_from,var_to) */ +{ +{ /* Inline kernel#Int#>= (var_from,var_to) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ var3 = 1; /* easy isa OTHER*/ -if (!var3) { +if (unlikely(!var3)) { var_class_name6 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372); show_backtrace(1); } var7 = var_from >= var_to; @@ -179,46 +134,64 @@ var1 = var7; goto RET_LABEL2; RET_LABEL2:(void)0; } +} if (var1){ goto RET_LABEL; } else { var8 = 7; -{ /* Inline kernel#Int#+ (var_from,var8) */ -var11 = var_from + var8; -var9 = var11; +{ +{ /* Inline kernel#Int#+ (var_from,var8) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var11 = 1; /* easy isa OTHER*/ +if (unlikely(!var11)) { +var_class_name14 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var15 = var_from + var8; +var9 = var15; goto RET_LABEL10; RET_LABEL10:(void)0; } -{ /* Inline kernel#Int#< (var9,var_to) */ +} +{ +{ /* Inline kernel#Int#< (var9,var_to) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ -var14 = 1; /* easy isa OTHER*/ -if (!var14) { -var_class_name17 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name17); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265); +var18 = 1; /* easy isa OTHER*/ +if (unlikely(!var18)) { +var_class_name21 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name21); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371); show_backtrace(1); } -var18 = var9 < var_to; -var12 = var18; -goto RET_LABEL13; -RET_LABEL13:(void)0; +var22 = var9 < var_to; +var16 = var22; +goto RET_LABEL17; +RET_LABEL17:(void)0; +} +} +if (var16){ +{ +sorter__Comparator__quick_sort(self, var_array, var_from, var_to); /* Direct call sorter#Comparator#quick_sort on */ } -if (var12){ -((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__quick_sort]))(self, var_array, var_from, var_to) /* quick_sort on */; } else { -((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__bubble_sort]))(self, var_array, var_from, var_to) /* bubble_sort on */; +{ +sorter__Comparator__bubble_sort(self, var_array, var_from, var_to); /* Direct call sorter#Comparator#bubble_sort on */ +} } } RET_LABEL:; } -/* method sorter#AbstractSorter#sub_sort for (self: Object, Array[nullable Object], Int, Int) */ -void VIRTUAL_sorter__AbstractSorter__sub_sort(val* self, val* p0, long p1, long p2) { -sorter__AbstractSorter__sub_sort(self, p0, p1, p2); +/* method sorter#Comparator#sub_sort for (self: Object, Array[nullable Object], Int, Int) */ +void VIRTUAL_sorter__Comparator__sub_sort(val* self, val* p0, long p1, long p2) { +sorter__Comparator__sub_sort(self, p0, p1, p2); /* Direct call sorter#Comparator#sub_sort on */ RET_LABEL:; } -/* method sorter#AbstractSorter#quick_sort for (self: AbstractSorter[nullable Object], Array[nullable Object], Int, Int) */ -void sorter__AbstractSorter__quick_sort(val* self, val* p0, long p1, long p2) { +/* method sorter#Comparator#quick_sort for (self: Comparator, Array[nullable Object], Int, Int) */ +void sorter__Comparator__quick_sort(val* self, val* p0, long p1, long p2) { short int var /* : Bool */; int cltype; int idtype; @@ -256,49 +229,69 @@ const char* var_class_name25; short int var26 /* : Bool */; long var27 /* : Int */; long var28 /* : Int */; -long var30 /* : Int */; -short int var31 /* : Bool */; -short int var32 /* : Bool */; -short int var34 /* : Bool */; -int cltype35; -int idtype36; -const char* var_class_name37; +short int var30 /* : Bool */; +int cltype31; +int idtype32; +const char* var_class_name33; +long var34 /* : Int */; +short int var35 /* : Bool */; +short int var36 /* : Bool */; short int var38 /* : Bool */; -short int var_39 /* var : Bool */; -val* var40 /* : nullable Object */; -long var41 /* : Int */; -long var42 /* : Int */; -short int var43 /* : Bool */; -short int var45 /* : Bool */; -int cltype46; -int idtype47; -const char* var_class_name48; +int cltype39; +int idtype40; +const char* var_class_name41; +short int var42 /* : Bool */; +short int var_43 /* var : Bool */; +val* var44 /* : nullable Object */; +long var45 /* : Int */; +long var46 /* : Int */; +short int var47 /* : Bool */; short int var49 /* : Bool */; -long var50 /* : Int */; -long var51 /* : Int */; -long var53 /* : Int */; -short int var55 /* : Bool */; +int cltype50; +int idtype51; +const char* var_class_name52; +short int var53 /* : Bool */; +long var54 /* : Int */; +long var55 /* : Int */; short int var57 /* : Bool */; int cltype58; int idtype59; const char* var_class_name60; -short int var61 /* : Bool */; -val* var62 /* : nullable Object */; +long var61 /* : Int */; +short int var63 /* : Bool */; +short int var65 /* : Bool */; +int cltype66; +int idtype67; +const char* var_class_name68; +short int var69 /* : Bool */; +val* var70 /* : nullable Object */; val* var_t /* var t: nullable Object */; -val* var63 /* : nullable Object */; -long var65 /* : Int */; -long var66 /* : Int */; -long var68 /* : Int */; -val* var69 /* : nullable Object */; -long var70 /* : Int */; -long var71 /* : Int */; +val* var71 /* : nullable Object */; long var73 /* : Int */; long var74 /* : Int */; -long var75 /* : Int */; -long var77 /* : Int */; -/* Covariant cast for argument 0 (array) isa Array[AbstractSorter#0] */ -/* isa Array[AbstractSorter#0] */ -type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0]; +short int var76 /* : Bool */; +int cltype77; +int idtype78; +const char* var_class_name79; +long var80 /* : Int */; +val* var81 /* : nullable Object */; +long var82 /* : Int */; +long var83 /* : Int */; +short int var85 /* : Bool */; +int cltype86; +int idtype87; +const char* var_class_name88; +long var89 /* : Int */; +long var90 /* : Int */; +long var91 /* : Int */; +short int var93 /* : Bool */; +int cltype94; +int idtype95; +const char* var_class_name96; +long var97 /* : Int */; +/* Covariant cast for argument 0 (array) isa Array[COMPARED] */ +/* isa Array[COMPARED] */ +type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__Comparator_VTCOMPARED]; cltype = type_struct->color; idtype = type_struct->id; if(cltype >= p0->type->table_size) { @@ -306,28 +299,31 @@ var = 0; } else { var = p0->type->type_table[cltype] == idtype; } -if (!var) { +if (unlikely(!var)) { var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 45); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 101); show_backtrace(1); } var_array = p0; var_from = p1; var_to = p2; -var1 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_from) /* [] on */; +{ +var1 = array__Array___91d_93d(var_array, var_from); +} var_pivot = var1; var_i = var_from; var_j = var_to; for(;;) { -{ /* Inline kernel#Int#> (var_j,var_i) */ +{ +{ /* Inline kernel#Int#> (var_j,var_i) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ var4 = 1; /* easy isa OTHER*/ -if (!var4) { +if (unlikely(!var4)) { var_class_name7 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name7); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); show_backtrace(1); } var8 = var_j > var_i; @@ -335,16 +331,18 @@ var2 = var8; goto RET_LABEL3; RET_LABEL3:(void)0; } -if (!var2) break; +} +if (var2){ for(;;) { -{ /* Inline kernel#Int#<= (var_i,var_to) */ +{ +{ /* Inline kernel#Int#<= (var_i,var_to) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ var12 = 1; /* easy isa OTHER*/ -if (!var12) { +if (unlikely(!var12)) { var_class_name15 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name15); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370); show_backtrace(1); } var16 = var_i <= var_to; @@ -352,19 +350,25 @@ var10 = var16; goto RET_LABEL11; RET_LABEL11:(void)0; } +} var_ = var10; if (var10){ -var17 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on */; -var18 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var17, var_pivot) /* compare on */; +{ +var17 = array__Array___91d_93d(var_array, var_i); +} +{ +var18 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__Comparator__compare]))(self, var17, var_pivot) /* compare on */; +} var19 = 0; -{ /* Inline kernel#Int#<= (var18,var19) */ +{ +{ /* Inline kernel#Int#<= (var18,var19) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ var22 = 1; /* easy isa OTHER*/ -if (!var22) { +if (unlikely(!var22)) { var_class_name25 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370); show_backtrace(1); } var26 = var18 <= var19; @@ -372,135 +376,225 @@ var20 = var26; goto RET_LABEL21; RET_LABEL21:(void)0; } +} var9 = var20; } else { var9 = var_; } -if (!var9) break; +if (var9){ var27 = 1; -{ /* Inline kernel#Int#+ (var_i,var27) */ -var30 = var_i + var27; -var28 = var30; +{ +{ /* Inline kernel#Int#+ (var_i,var27) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var30 = 1; /* easy isa OTHER*/ +if (unlikely(!var30)) { +var_class_name33 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var34 = var_i + var27; +var28 = var34; goto RET_LABEL29; RET_LABEL29:(void)0; } +} var_i = var28; -CONTINUE_label: (void)0; +} else { +goto BREAK_label; +} } BREAK_label: (void)0; for(;;) { -{ /* Inline kernel#Int#> (var_j,var_i) */ +{ +{ /* Inline kernel#Int#> (var_j,var_i) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ -var34 = 1; /* easy isa OTHER*/ -if (!var34) { -var_class_name37 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name37); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267); +var38 = 1; /* easy isa OTHER*/ +if (unlikely(!var38)) { +var_class_name41 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name41); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); show_backtrace(1); } -var38 = var_j > var_i; -var32 = var38; -goto RET_LABEL33; -RET_LABEL33:(void)0; -} -var_39 = var32; -if (var32){ -var40 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on */; -var41 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var40, var_pivot) /* compare on */; -var42 = 0; -{ /* Inline kernel#Int#>= (var41,var42) */ -/* Covariant cast for argument 0 (i) isa OTHER */ -/* isa OTHER */ -var45 = 1; /* easy isa OTHER*/ -if (!var45) { -var_class_name48 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name48); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 266); +var42 = var_j > var_i; +var36 = var42; +goto RET_LABEL37; +RET_LABEL37:(void)0; +} +} +var_43 = var36; +if (var36){ +{ +var44 = array__Array___91d_93d(var_array, var_j); +} +{ +var45 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__Comparator__compare]))(self, var44, var_pivot) /* compare on */; +} +var46 = 0; +{ +{ /* Inline kernel#Int#>= (var45,var46) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var49 = 1; /* easy isa OTHER*/ +if (unlikely(!var49)) { +var_class_name52 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name52); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 372); show_backtrace(1); } -var49 = var41 >= var42; -var43 = var49; -goto RET_LABEL44; -RET_LABEL44:(void)0; +var53 = var45 >= var46; +var47 = var53; +goto RET_LABEL48; +RET_LABEL48:(void)0; +} } -var31 = var43; +var35 = var47; } else { -var31 = var_39; +var35 = var_43; +} +if (var35){ +var54 = 1; +{ +{ /* Inline kernel#Int#- (var_j,var54) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var57 = 1; /* easy isa OTHER*/ +if (unlikely(!var57)) { +var_class_name60 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name60); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); } -if (!var31) break; -var50 = 1; -{ /* Inline kernel#Int#- (var_j,var50) */ -var53 = var_j - var50; -var51 = var53; -goto RET_LABEL52; -RET_LABEL52:(void)0; +var61 = var_j - var54; +var55 = var61; +goto RET_LABEL56; +RET_LABEL56:(void)0; } -var_j = var51; -CONTINUE_label54: (void)0; } -BREAK_label54: (void)0; -{ /* Inline kernel#Int#> (var_j,var_i) */ +var_j = var55; +} else { +goto BREAK_label62; +} +} +BREAK_label62: (void)0; +{ +{ /* Inline kernel#Int#> (var_j,var_i) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ -var57 = 1; /* easy isa OTHER*/ -if (!var57) { -var_class_name60 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name60); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267); +var65 = 1; /* easy isa OTHER*/ +if (unlikely(!var65)) { +var_class_name68 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name68); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); show_backtrace(1); } -var61 = var_j > var_i; -var55 = var61; -goto RET_LABEL56; -RET_LABEL56:(void)0; +var69 = var_j > var_i; +var63 = var69; +goto RET_LABEL64; +RET_LABEL64:(void)0; +} +} +if (var63){ +{ +var70 = array__Array___91d_93d(var_array, var_i); +} +var_t = var70; +{ +var71 = array__Array___91d_93d(var_array, var_j); +} +{ +array__Array___91d_93d_61d(var_array, var_i, var71); /* Direct call array#Array#[]= on */ +} +{ +array__Array___91d_93d_61d(var_array, var_j, var_t); /* Direct call array#Array#[]= on */ +} +} else { } -if (var55){ -var62 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on */; -var_t = var62; -var63 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on */; -((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_i, var63) /* []= on */; -((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_j, var_t) /* []= on */; } else { +goto BREAK_label72; +} +} +BREAK_label72: (void)0; +var73 = 1; +{ +{ /* Inline kernel#Int#- (var_i,var73) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var76 = 1; /* easy isa OTHER*/ +if (unlikely(!var76)) { +var_class_name79 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name79); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); +} +var80 = var_i - var73; +var74 = var80; +goto RET_LABEL75; +RET_LABEL75:(void)0; +} +} +{ +var81 = array__Array___91d_93d(var_array, var74); +} +{ +array__Array___91d_93d_61d(var_array, var_from, var81); /* Direct call array#Array#[]= on */ +} +var82 = 1; +{ +{ /* Inline kernel#Int#- (var_i,var82) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var85 = 1; /* easy isa OTHER*/ +if (unlikely(!var85)) { +var_class_name88 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name88); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); +} +var89 = var_i - var82; +var83 = var89; +goto RET_LABEL84; +RET_LABEL84:(void)0; +} +} +{ +array__Array___91d_93d_61d(var_array, var83, var_pivot); /* Direct call array#Array#[]= on */ +} +var90 = 2; +{ +{ /* Inline kernel#Int#- (var_i,var90) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var93 = 1; /* easy isa OTHER*/ +if (unlikely(!var93)) { +var_class_name96 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name96); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 377); +show_backtrace(1); +} +var97 = var_i - var90; +var91 = var97; +goto RET_LABEL92; +RET_LABEL92:(void)0; +} +} +{ +sorter__Comparator__sub_sort(self, var_array, var_from, var91); /* Direct call sorter#Comparator#sub_sort on */ +} +{ +sorter__Comparator__sub_sort(self, var_array, var_i, var_to); /* Direct call sorter#Comparator#sub_sort on */ } -CONTINUE_label64: (void)0; -} -BREAK_label64: (void)0; -var65 = 1; -{ /* Inline kernel#Int#- (var_i,var65) */ -var68 = var_i - var65; -var66 = var68; -goto RET_LABEL67; -RET_LABEL67:(void)0; -} -var69 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var66) /* [] on */; -((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_from, var69) /* []= on */; -var70 = 1; -{ /* Inline kernel#Int#- (var_i,var70) */ -var73 = var_i - var70; -var71 = var73; -goto RET_LABEL72; -RET_LABEL72:(void)0; -} -((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var71, var_pivot) /* []= on */; -var74 = 2; -{ /* Inline kernel#Int#- (var_i,var74) */ -var77 = var_i - var74; -var75 = var77; -goto RET_LABEL76; -RET_LABEL76:(void)0; -} -((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__sub_sort]))(self, var_array, var_from, var75) /* sub_sort on */; -((void (*)(val*, val*, long, long))(self->class->vft[COLOR_sorter__AbstractSorter__sub_sort]))(self, var_array, var_i, var_to) /* sub_sort on */; RET_LABEL:; } -/* method sorter#AbstractSorter#quick_sort for (self: Object, Array[nullable Object], Int, Int) */ -void VIRTUAL_sorter__AbstractSorter__quick_sort(val* self, val* p0, long p1, long p2) { -sorter__AbstractSorter__quick_sort(self, p0, p1, p2); +/* method sorter#Comparator#quick_sort for (self: Object, Array[nullable Object], Int, Int) */ +void VIRTUAL_sorter__Comparator__quick_sort(val* self, val* p0, long p1, long p2) { +sorter__Comparator__quick_sort(self, p0, p1, p2); /* Direct call sorter#Comparator#quick_sort on */ RET_LABEL:; } -/* method sorter#AbstractSorter#bubble_sort for (self: AbstractSorter[nullable Object], Array[nullable Object], Int, Int) */ -void sorter__AbstractSorter__bubble_sort(val* self, val* p0, long p1, long p2) { +/* method sorter#Comparator#bubble_sort for (self: Comparator, Array[nullable Object], Int, Int) */ +void sorter__Comparator__bubble_sort(val* self, val* p0, long p1, long p2) { short int var /* : Bool */; int cltype; int idtype; @@ -538,17 +632,26 @@ short int var25 /* : Bool */; val* var26 /* : nullable Object */; long var27 /* : Int */; long var28 /* : Int */; -long var30 /* : Int */; -short int var31 /* : Bool */; -short int var33 /* : Bool */; -short int var34 /* : Bool */; -val* var35 /* : nullable Object */; -long var36 /* : Int */; -long var37 /* : Int */; -long var39 /* : Int */; -/* Covariant cast for argument 0 (array) isa Array[AbstractSorter#0] */ -/* isa Array[AbstractSorter#0] */ -type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__AbstractSorter_FT0]; +short int var30 /* : Bool */; +int cltype31; +int idtype32; +const char* var_class_name33; +long var34 /* : Int */; +short int var35 /* : Bool */; +short int var36 /* : Bool */; +short int var38 /* : Bool */; +short int var39 /* : Bool */; +val* var40 /* : nullable Object */; +long var41 /* : Int */; +long var42 /* : Int */; +short int var44 /* : Bool */; +int cltype45; +int idtype46; +const char* var_class_name47; +long var48 /* : Int */; +/* Covariant cast for argument 0 (array) isa Array[COMPARED] */ +/* isa Array[COMPARED] */ +type_struct = self->type->resolution_table->types[COLOR_array__Arraysorter__Comparator_VTCOMPARED]; cltype = type_struct->color; idtype = type_struct->id; if(cltype >= p0->type->table_size) { @@ -556,10 +659,10 @@ var = 0; } else { var = p0->type->type_table[cltype] == idtype; } -if (!var) { +if (unlikely(!var)) { var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[AbstractSorter#0]", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 66); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "Array[COMPARED]", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 126); show_backtrace(1); } var_array = p0; @@ -567,14 +670,15 @@ var_from = p1; var_to = p2; var_i = var_from; for(;;) { -{ /* Inline kernel#Int#< (var_i,var_to) */ +{ +{ /* Inline kernel#Int#< (var_i,var_to) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ var3 = 1; /* easy isa OTHER*/ -if (!var3) { +if (unlikely(!var3)) { var_class_name6 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 265); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name6); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 371); show_backtrace(1); } var7 = var_i < var_to; @@ -582,20 +686,24 @@ var1 = var7; goto RET_LABEL2; RET_LABEL2:(void)0; } -if (!var1) break; +} +if (var1){ var_min = var_i; -var8 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on */; +{ +var8 = array__Array___91d_93d(var_array, var_i); +} var_min_v = var8; var_j = var_i; for(;;) { -{ /* Inline kernel#Int#<= (var_j,var_to) */ +{ +{ /* Inline kernel#Int#<= (var_j,var_to) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ var11 = 1; /* easy isa OTHER*/ -if (!var11) { +if (unlikely(!var11)) { var_class_name14 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 264); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name14); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 370); show_backtrace(1); } var15 = var_j <= var_to; @@ -603,18 +711,24 @@ var9 = var15; goto RET_LABEL10; RET_LABEL10:(void)0; } -if (!var9) break; -var16 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on */; -var17 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__AbstractSorter__compare]))(self, var_min_v, var16) /* compare on */; +} +if (var9){ +{ +var16 = array__Array___91d_93d(var_array, var_j); +} +{ +var17 = ((long (*)(val*, val*, val*))(self->class->vft[COLOR_sorter__Comparator__compare]))(self, var_min_v, var16) /* compare on */; +} var18 = 0; -{ /* Inline kernel#Int#> (var17,var18) */ +{ +{ /* Inline kernel#Int#> (var17,var18) on */ /* Covariant cast for argument 0 (i) isa OTHER */ /* isa OTHER */ var21 = 1; /* easy isa OTHER*/ -if (!var21) { +if (unlikely(!var21)) { var_class_name24 = type_kernel__Int.name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24); -fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 267); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name24); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 373); show_backtrace(1); } var25 = var17 > var18; @@ -622,56 +736,94 @@ var19 = var25; goto RET_LABEL20; RET_LABEL20:(void)0; } +} if (var19){ var_min = var_j; -var26 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_j) /* [] on */; +{ +var26 = array__Array___91d_93d(var_array, var_j); +} var_min_v = var26; } else { } var27 = 1; -{ /* Inline kernel#Int#+ (var_j,var27) */ -var30 = var_j + var27; -var28 = var30; +{ +{ /* Inline kernel#Int#+ (var_j,var27) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var30 = 1; /* easy isa OTHER*/ +if (unlikely(!var30)) { +var_class_name33 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var34 = var_j + var27; +var28 = var34; goto RET_LABEL29; RET_LABEL29:(void)0; } +} var_j = var28; -CONTINUE_label: (void)0; +} else { +goto BREAK_label; +} } BREAK_label: (void)0; -{ /* Inline kernel#Int#!= (var_min,var_i) */ -var33 = var_min == var_i; -var34 = !var33; -var31 = var34; -goto RET_LABEL32; -RET_LABEL32:(void)0; -} -if (var31){ -var35 = ((val* (*)(val*, long))(var_array->class->vft[COLOR_abstract_collection__SequenceRead___91d_93d]))(var_array, var_i) /* [] on */; -((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_min, var35) /* []= on */; -((void (*)(val*, long, val*))(var_array->class->vft[COLOR_abstract_collection__Sequence___91d_93d_61d]))(var_array, var_i, var_min_v) /* []= on */; +{ +{ /* Inline kernel#Int#!= (var_min,var_i) on */ +var38 = var_min == var_i; +var39 = !var38; +var36 = var39; +goto RET_LABEL37; +RET_LABEL37:(void)0; +} +var35 = var36; +} +if (var35){ +{ +var40 = array__Array___91d_93d(var_array, var_i); +} +{ +array__Array___91d_93d_61d(var_array, var_min, var40); /* Direct call array#Array#[]= on */ +} +{ +array__Array___91d_93d_61d(var_array, var_i, var_min_v); /* Direct call array#Array#[]= on */ +} } else { } -var36 = 1; -{ /* Inline kernel#Int#+ (var_i,var36) */ -var39 = var_i + var36; -var37 = var39; -goto RET_LABEL38; -RET_LABEL38:(void)0; +var41 = 1; +{ +{ /* Inline kernel#Int#+ (var_i,var41) on */ +/* Covariant cast for argument 0 (i) isa OTHER */ +/* isa OTHER */ +var44 = 1; /* easy isa OTHER*/ +if (unlikely(!var44)) { +var_class_name47 = type_kernel__Int.name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name47); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/kernel.nit", 374); +show_backtrace(1); +} +var48 = var_i + var41; +var42 = var48; +goto RET_LABEL43; +RET_LABEL43:(void)0; +} +} +var_i = var42; +} else { +goto BREAK_label49; } -var_i = var37; -CONTINUE_label40: (void)0; } -BREAK_label40: (void)0; +BREAK_label49: (void)0; RET_LABEL:; } -/* method sorter#AbstractSorter#bubble_sort for (self: Object, Array[nullable Object], Int, Int) */ -void VIRTUAL_sorter__AbstractSorter__bubble_sort(val* self, val* p0, long p1, long p2) { -sorter__AbstractSorter__bubble_sort(self, p0, p1, p2); +/* method sorter#Comparator#bubble_sort for (self: Object, Array[nullable Object], Int, Int) */ +void VIRTUAL_sorter__Comparator__bubble_sort(val* self, val* p0, long p1, long p2) { +sorter__Comparator__bubble_sort(self, p0, p1, p2); /* Direct call sorter#Comparator#bubble_sort on */ RET_LABEL:; } -/* method sorter#ComparableSorter#compare for (self: ComparableSorter[Comparable], Comparable, Comparable): Int */ -long sorter__ComparableSorter__compare(val* self, val* p0, val* p1) { +/* method sorter#DefaultComparator#compare for (self: DefaultComparator, Comparable, Comparable): Int */ +long sorter__DefaultComparator__compare(val* self, val* p0, val* p1) { long var /* : Int */; short int var1 /* : Bool */; int cltype; @@ -686,9 +838,9 @@ const char* var_class_name6; val* var_a /* var a: Comparable */; val* var_b /* var b: Comparable */; long var7 /* : Int */; -/* Covariant cast for argument 0 (a) isa AbstractSorter#0 */ -/* isa AbstractSorter#0 */ -type_struct = self->type->resolution_table->types[COLOR_sorter__AbstractSorter_FT0]; +/* Covariant cast for argument 0 (a) isa COMPARED */ +/* isa COMPARED */ +type_struct = self->type->resolution_table->types[COLOR_sorter__Comparator_VTCOMPARED]; cltype = type_struct->color; idtype = type_struct->id; if(cltype >= p0->type->table_size) { @@ -696,15 +848,15 @@ var1 = 0; } else { var1 = p0->type->type_table[cltype] == idtype; } -if (!var1) { +if (unlikely(!var1)) { var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 94); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPARED", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 258); show_backtrace(1); } -/* Covariant cast for argument 1 (b) isa AbstractSorter#0 */ -/* isa AbstractSorter#0 */ -type_struct5 = self->type->resolution_table->types[COLOR_sorter__AbstractSorter_FT0]; +/* Covariant cast for argument 1 (b) isa COMPARED */ +/* isa COMPARED */ +type_struct5 = self->type->resolution_table->types[COLOR_sorter__Comparator_VTCOMPARED]; cltype3 = type_struct5->color; idtype4 = type_struct5->id; if(cltype3 >= p1->type->table_size) { @@ -712,35 +864,60 @@ var2 = 0; } else { var2 = p1->type->type_table[cltype3] == idtype4; } -if (!var2) { +if (unlikely(!var2)) { var_class_name6 = p1 == NULL ? "null" : p1->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "AbstractSorter#0", var_class_name6); -fprintf(stderr, " (%s:%d)\n", "lib/standard/collection/sorter.nit", 94); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "COMPARED", var_class_name6); +PRINT_ERROR(" (%s:%d)\n", "../lib/standard/collection/sorter.nit", 258); show_backtrace(1); } var_a = p0; var_b = p1; +{ var7 = ((long (*)(val*, val*))(var_a->class->vft[COLOR_kernel__Comparable___60d_61d_62d]))(var_a, var_b) /* <=> on */; +} var = var7; goto RET_LABEL; RET_LABEL:; return var; } -/* method sorter#ComparableSorter#compare for (self: Object, nullable Object, nullable Object): Int */ -long VIRTUAL_sorter__ComparableSorter__compare(val* self, val* p0, val* p1) { +/* method sorter#DefaultComparator#compare for (self: Object, nullable Object, nullable Object): Int */ +long VIRTUAL_sorter__DefaultComparator__compare(val* self, val* p0, val* p1) { long var /* : Int */; long var1 /* : Int */; -var1 = sorter__ComparableSorter__compare(self, p0, p1); +var1 = sorter__DefaultComparator__compare(self, p0, p1); var = var1; RET_LABEL:; return var; } -/* method sorter#ComparableSorter#init for (self: ComparableSorter[Comparable]) */ -void sorter__ComparableSorter__init(val* self) { +/* method sorter#Object#default_comparator for (self: Object): DefaultComparator */ +val* sorter__Object__default_comparator(val* self) { +val* var /* : DefaultComparator */; +static val* varonce; +static int varonce_guard; +val* var1 /* : DefaultComparator */; +val* var2 /* : DefaultComparator */; +if (varonce_guard) { +var1 = varonce; +} else { +var2 = NEW_sorter__DefaultComparator(&type_sorter__DefaultComparator); +{ +((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on */; +} +var1 = var2; +varonce = var1; +varonce_guard = 1; +} +var = var1; +goto RET_LABEL; RET_LABEL:; +return var; } -/* method sorter#ComparableSorter#init for (self: Object) */ -void VIRTUAL_sorter__ComparableSorter__init(val* self) { -sorter__ComparableSorter__init(self); +/* method sorter#Object#default_comparator for (self: Object): DefaultComparator */ +val* VIRTUAL_sorter__Object__default_comparator(val* self) { +val* var /* : DefaultComparator */; +val* var1 /* : DefaultComparator */; +var1 = sorter__Object__default_comparator(self); +var = var1; RET_LABEL:; +return var; }