X-Git-Url: http://nitlanguage.org diff --git a/c_src/more_collections.sep.1.c b/c_src/more_collections.sep.1.c index 2c11ad7..6f4a4e7 100644 --- a/c_src/more_collections.sep.1.c +++ b/c_src/more_collections.sep.1.c @@ -18,9 +18,9 @@ short int var6 /* : Bool */; val* var7 /* : nullable Object */; val* var8 /* : Array[nullable Object] */; long var9 /* : Int */; -val* var10 /* : NativeArray[nullable Object] */; -/* Covariant cast for argument 0 (k) isa MultiHashMap#0 */ -/* isa MultiHashMap#0 */ +val* var_ /* var : Array[nullable Object] */; +/* Covariant cast for argument 0 (k) isa K */ +/* isa K */ type_struct = self->type->resolution_table->types[COLOR_more_collections__MultiHashMap_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -29,14 +29,14 @@ 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`", "MultiHashMap#0", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 22); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 35); show_backtrace(1); } -/* Covariant cast for argument 1 (v) isa MultiHashMap#1 */ -/* isa MultiHashMap#1 */ +/* Covariant cast for argument 1 (v) isa V */ +/* isa V */ type_struct4 = self->type->resolution_table->types[COLOR_more_collections__MultiHashMap_FT1]; cltype2 = type_struct4->color; idtype3 = type_struct4->id; @@ -50,53 +50,120 @@ var1 = 0; var1 = p1->type->type_table[cltype2] == idtype3; } } -if (!var1) { +if (unlikely(!var1)) { var_class_name5 = p1 == NULL ? "null" : p1->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "MultiHashMap#1", var_class_name5); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 22); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "V", var_class_name5); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 35); show_backtrace(1); } var_k = p0; var_v = p1; -var6 = ((short int (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__MapRead__has_key]))(self, var_k) /* has_key on */; +{ +var6 = abstract_collection__MapRead__has_key(self, var_k); +} if (var6){ -var7 = ((val* (*)(val*, val*))(self->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(self, var_k) /* [] on */; -((void (*)(val*, val*))(var7->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var7, var_v) /* add on */; +{ +var7 = hash_collection__HashMap___91d_93d(self, var_k); +} +{ +array__Array__add(var7, var_v); /* Direct call array#Array#add on */ +} } else { var8 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymore_collections__MultiHashMap_FT1]); -{ /* var8 = array_instance Array[MultiHashMap#1] */ var9 = 1; -var10 = NEW_array__NativeArray(var9, self->type->resolution_table->types[COLOR_array__NativeArraymore_collections__MultiHashMap_FT1]); -((struct instance_array__NativeArray*)var10)->values[0] = (val*) var_v; -((void (*)(val*, val*, long))(var8->class->vft[COLOR_array__Array__with_native]))(var8, var10, var9) /* with_native on */; +{ +array__Array__with_capacity(var8, var9); /* Direct call array#Array#with_capacity on */ +} +var_ = var8; +{ +array__AbstractArray__push(var_, var_v); /* Direct call array#AbstractArray#push on */ +} +{ +hash_collection__HashMap___91d_93d_61d(self, var_k, var_); /* Direct call hash_collection#HashMap#[]= on */ } -((void (*)(val*, val*, val*))(self->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(self, var_k, var8) /* []= on */; } RET_LABEL:; } /* method more_collections#MultiHashMap#add_one for (self: Object, Object, nullable Object) */ void VIRTUAL_more_collections__MultiHashMap__add_one(val* self, val* p0, val* p1) { -more_collections__MultiHashMap__add_one(self, p0, p1); +more_collections__MultiHashMap__add_one(self, p0, p1); /* Direct call more_collections#MultiHashMap#add_one on */ +RET_LABEL:; +} +/* method more_collections#MultiHashMap#provide_default_value for (self: MultiHashMap[Object, nullable Object], Object): Array[nullable Object] */ +val* more_collections__MultiHashMap__provide_default_value(val* self, val* p0) { +val* var /* : Array[nullable Object] */; +short int var1 /* : Bool */; +int cltype; +int idtype; +const struct type* type_struct; +const char* var_class_name; +val* var_key /* var key: Object */; +val* var2 /* : Array[nullable Object] */; +val* var_res /* var res: Array[nullable Object] */; +/* Covariant cast for argument 0 (key) isa K */ +/* isa K */ +type_struct = self->type->resolution_table->types[COLOR_abstract_collection__MapRead_FT0]; +cltype = type_struct->color; +idtype = type_struct->id; +if(cltype >= p0->type->table_size) { +var1 = 0; +} else { +var1 = p0->type->type_table[cltype] == idtype; +} +if (unlikely(!var1)) { +var_class_name = p0 == NULL ? "null" : p0->type->name; +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 46); +show_backtrace(1); +} +var_key = p0; +var2 = NEW_array__Array(self->type->resolution_table->types[COLOR_array__Arraymore_collections__MultiHashMap_FT1]); +{ +((void (*)(val*))(var2->class->vft[COLOR_kernel__Object__init]))(var2) /* init on */; +} +var_res = var2; +{ +hash_collection__HashMap___91d_93d_61d(self, var_key, var_res); /* Direct call hash_collection#HashMap#[]= on */ +} +var = var_res; +goto RET_LABEL; +RET_LABEL:; +return var; +} +/* method more_collections#MultiHashMap#provide_default_value for (self: Object, Object): nullable Object */ +val* VIRTUAL_more_collections__MultiHashMap__provide_default_value(val* self, val* p0) { +val* var /* : nullable Object */; +val* var1 /* : Array[nullable Object] */; +var1 = more_collections__MultiHashMap__provide_default_value(self, p0); +var = var1; RET_LABEL:; +return var; } /* method more_collections#MultiHashMap#init for (self: MultiHashMap[Object, nullable Object]) */ void more_collections__MultiHashMap__init(val* self) { -((void (*)(val*))(self->class->vft[COLOR_hash_collection__HashMap__init]))(self) /* init on */; +{ +((void (*)(val*))(self->class->vft[COLOR_more_collections__MultiHashMap__init]))(self) /* init on */; +} RET_LABEL:; } /* method more_collections#MultiHashMap#init for (self: Object) */ void VIRTUAL_more_collections__MultiHashMap__init(val* self) { -more_collections__MultiHashMap__init(self); +{ /* Inline more_collections#MultiHashMap#init (self) on */ +{ +((void (*)(val*))(self->class->vft[COLOR_more_collections__MultiHashMap__init]))(self) /* init on */; +} +RET_LABEL1:(void)0; +} RET_LABEL:; } /* method more_collections#HashMap2#level1 for (self: HashMap2[Object, Object, nullable Object]): HashMap[Object, HashMap[Object, nullable Object]] */ val* more_collections__HashMap2__level1(val* self) { val* var /* : HashMap[Object, HashMap[Object, nullable Object]] */; val* var1 /* : HashMap[Object, HashMap[Object, nullable Object]] */; -var1 = self->attrs[COLOR_more_collections__HashMap2___64dlevel1].val; /* @level1 on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @level1"); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 38); +var1 = self->attrs[COLOR_more_collections__HashMap2___level1].val; /* _level1 on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1"); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 57); show_backtrace(1); } var = var1; @@ -107,41 +174,20 @@ return var; val* VIRTUAL_more_collections__HashMap2__level1(val* self) { val* var /* : HashMap[Object, HashMap[Object, nullable Object]] */; val* var1 /* : HashMap[Object, HashMap[Object, nullable Object]] */; -var1 = more_collections__HashMap2__level1(self); -var = var1; -RET_LABEL:; -return var; -} -/* method more_collections#HashMap2#level1= for (self: HashMap2[Object, Object, nullable Object], HashMap[Object, HashMap[Object, nullable Object]]) */ -void more_collections__HashMap2__level1_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -const char* var_class_name; -/* Covariant cast for argument 0 (level1) isa HashMap[HashMap2#0, HashMap[HashMap2#1, HashMap2#2]] */ -/* isa HashMap[HashMap2#0, HashMap[HashMap2#1, HashMap2#2]] */ -type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMapmore_collections__HashMap2_FT0hash_collection__HashMapmore_collections__HashMap2_FT1more_collections__HashMap2_FT2]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; -} -if (!var) { -var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap[HashMap2#0, HashMap[HashMap2#1, HashMap2#2]]", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 38); +val* var3 /* : HashMap[Object, HashMap[Object, nullable Object]] */; +{ /* Inline more_collections#HashMap2#level1 (self) on */ +var3 = self->attrs[COLOR_more_collections__HashMap2___level1].val; /* _level1 on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1"); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 57); show_backtrace(1); } -self->attrs[COLOR_more_collections__HashMap2___64dlevel1].val = p0; /* @level1 on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method more_collections#HashMap2#level1= for (self: Object, HashMap[Object, HashMap[Object, nullable Object]]) */ -void VIRTUAL_more_collections__HashMap2__level1_61d(val* self, val* p0) { -more_collections__HashMap2__level1_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method more_collections#HashMap2#[] for (self: HashMap2[Object, Object, nullable Object], Object, Object): nullable Object */ val* more_collections__HashMap2___91d_93d(val* self, val* p0, val* p1) { @@ -159,18 +205,19 @@ const char* var_class_name6; val* var_k1 /* var k1: Object */; val* var_k2 /* var k2: Object */; val* var7 /* : HashMap[Object, HashMap[Object, nullable Object]] */; +val* var9 /* : HashMap[Object, HashMap[Object, nullable Object]] */; val* var_level1 /* var level1: HashMap[Object, HashMap[Object, nullable Object]] */; -short int var8 /* : Bool */; -short int var9 /* : Bool */; -val* var10 /* : null */; -val* var11 /* : nullable Object */; +short int var10 /* : Bool */; +short int var11 /* : Bool */; +val* var12 /* : null */; +val* var13 /* : nullable Object */; val* var_level2 /* var level2: HashMap[Object, nullable Object] */; -short int var12 /* : Bool */; -short int var13 /* : Bool */; -val* var14 /* : null */; -val* var15 /* : nullable Object */; -/* Covariant cast for argument 0 (k1) isa HashMap2#0 */ -/* isa HashMap2#0 */ +short int var14 /* : Bool */; +short int var15 /* : Bool */; +val* var16 /* : null */; +val* var17 /* : nullable Object */; +/* Covariant cast for argument 0 (k1) isa K1 */ +/* isa K1 */ type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -179,14 +226,14 @@ 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`", "HashMap2#0", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 40); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K1", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 59); show_backtrace(1); } -/* Covariant cast for argument 1 (k2) isa HashMap2#1 */ -/* isa HashMap2#1 */ +/* Covariant cast for argument 1 (k2) isa K2 */ +/* isa K2 */ type_struct5 = self->type->resolution_table->types[COLOR_more_collections__HashMap2_FT1]; cltype3 = type_struct5->color; idtype4 = type_struct5->id; @@ -195,36 +242,55 @@ 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`", "HashMap2#1", var_class_name6); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 40); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K2", var_class_name6); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 59); show_backtrace(1); } var_k1 = p0; var_k2 = p1; -var7 = ((val* (*)(val*))(self->class->vft[COLOR_more_collections__HashMap2__level1]))(self) /* level1 on */; +{ +{ /* Inline more_collections#HashMap2#level1 (self) on */ +var9 = self->attrs[COLOR_more_collections__HashMap2___level1].val; /* _level1 on */ +if (unlikely(var9 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1"); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 57); +show_backtrace(1); +} +var7 = var9; +RET_LABEL8:(void)0; +} +} var_level1 = var7; -var8 = ((short int (*)(val*, val*))(var_level1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_level1, var_k1) /* has_key on */; -var9 = !var8; -if (var9){ -var10 = NULL; -var = var10; +{ +var10 = abstract_collection__MapRead__has_key(var_level1, var_k1); +} +var11 = !var10; +if (var11){ +var12 = NULL; +var = var12; goto RET_LABEL; } else { } -var11 = ((val* (*)(val*, val*))(var_level1->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_level1, var_k1) /* [] on */; -var_level2 = var11; -var12 = ((short int (*)(val*, val*))(var_level2->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_level2, var_k2) /* has_key on */; -var13 = !var12; -if (var13){ -var14 = NULL; -var = var14; +{ +var13 = hash_collection__HashMap___91d_93d(var_level1, var_k1); +} +var_level2 = var13; +{ +var14 = abstract_collection__MapRead__has_key(var_level2, var_k2); +} +var15 = !var14; +if (var15){ +var16 = NULL; +var = var16; goto RET_LABEL; } else { } -var15 = ((val* (*)(val*, val*))(var_level2->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_level2, var_k2) /* [] on */; -var = var15; +{ +var17 = hash_collection__HashMap___91d_93d(var_level2, var_k2); +} +var = var17; goto RET_LABEL; RET_LABEL:; return var; @@ -260,14 +326,15 @@ val* var_k1 /* var k1: Object */; val* var_k2 /* var k2: Object */; val* var_v /* var v: nullable Object */; val* var11 /* : HashMap[Object, HashMap[Object, nullable Object]] */; +val* var13 /* : HashMap[Object, HashMap[Object, nullable Object]] */; val* var_level1 /* var level1: HashMap[Object, HashMap[Object, nullable Object]] */; -short int var12 /* : Bool */; -short int var13 /* : Bool */; -val* var14 /* : HashMap[Object, nullable Object] */; +short int var14 /* : Bool */; +short int var15 /* : Bool */; +val* var16 /* : HashMap[Object, nullable Object] */; val* var_level2 /* var level2: HashMap[Object, nullable Object] */; -val* var15 /* : nullable Object */; -/* Covariant cast for argument 0 (k1) isa HashMap2#0 */ -/* isa HashMap2#0 */ +val* var17 /* : nullable Object */; +/* Covariant cast for argument 0 (k1) isa K1 */ +/* isa K1 */ type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap2_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -276,14 +343,14 @@ 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`", "HashMap2#0", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 51); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K1", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 70); show_backtrace(1); } -/* Covariant cast for argument 1 (k2) isa HashMap2#1 */ -/* isa HashMap2#1 */ +/* Covariant cast for argument 1 (k2) isa K2 */ +/* isa K2 */ type_struct4 = self->type->resolution_table->types[COLOR_more_collections__HashMap2_FT1]; cltype2 = type_struct4->color; idtype3 = type_struct4->id; @@ -292,14 +359,14 @@ var1 = 0; } else { var1 = p1->type->type_table[cltype2] == idtype3; } -if (!var1) { +if (unlikely(!var1)) { var_class_name5 = p1 == NULL ? "null" : p1->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap2#1", var_class_name5); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 51); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K2", var_class_name5); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 70); show_backtrace(1); } -/* Covariant cast for argument 2 (v) isa HashMap2#2 */ -/* isa HashMap2#2 */ +/* Covariant cast for argument 2 (v) isa V */ +/* isa V */ type_struct9 = self->type->resolution_table->types[COLOR_more_collections__HashMap2_FT2]; cltype7 = type_struct9->color; idtype8 = type_struct9->id; @@ -313,53 +380,65 @@ var6 = 0; var6 = p2->type->type_table[cltype7] == idtype8; } } -if (!var6) { +if (unlikely(!var6)) { var_class_name10 = p2 == NULL ? "null" : p2->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap2#2", var_class_name10); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 51); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "V", var_class_name10); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 70); show_backtrace(1); } var_k1 = p0; var_k2 = p1; var_v = p2; -var11 = ((val* (*)(val*))(self->class->vft[COLOR_more_collections__HashMap2__level1]))(self) /* level1 on */; +{ +{ /* Inline more_collections#HashMap2#level1 (self) on */ +var13 = self->attrs[COLOR_more_collections__HashMap2___level1].val; /* _level1 on */ +if (unlikely(var13 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1"); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 57); +show_backtrace(1); +} +var11 = var13; +RET_LABEL12:(void)0; +} +} var_level1 = var11; -var12 = ((short int (*)(val*, val*))(var_level1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_level1, var_k1) /* has_key on */; -var13 = !var12; -if (var13){ -var14 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMapmore_collections__HashMap2_FT1more_collections__HashMap2_FT2]); -((void (*)(val*))(var14->class->vft[COLOR_hash_collection__HashMap__init]))(var14) /* init on */; -var_level2 = var14; -((void (*)(val*, val*, val*))(var_level1->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_level1, var_k1, var_level2) /* []= on */; +{ +var14 = abstract_collection__MapRead__has_key(var_level1, var_k1); +} +var15 = !var14; +if (var15){ +var16 = NEW_hash_collection__HashMap(self->type->resolution_table->types[COLOR_hash_collection__HashMapmore_collections__HashMap2_FT1more_collections__HashMap2_FT2]); +{ +((void (*)(val*))(var16->class->vft[COLOR_kernel__Object__init]))(var16) /* init on */; +} +var_level2 = var16; +{ +hash_collection__HashMap___91d_93d_61d(var_level1, var_k1, var_level2); /* Direct call hash_collection#HashMap#[]= on */ +} } else { -var15 = ((val* (*)(val*, val*))(var_level1->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_level1, var_k1) /* [] on */; -var_level2 = var15; +{ +var17 = hash_collection__HashMap___91d_93d(var_level1, var_k1); } -((void (*)(val*, val*, val*))(var_level2->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_level2, var_k2, var_v) /* []= on */; -RET_LABEL:; +var_level2 = var17; } -/* method more_collections#HashMap2#[]= for (self: Object, Object, Object, nullable Object) */ -void VIRTUAL_more_collections__HashMap2___91d_93d_61d(val* self, val* p0, val* p1, val* p2) { -more_collections__HashMap2___91d_93d_61d(self, p0, p1, p2); -RET_LABEL:; +{ +hash_collection__HashMap___91d_93d_61d(var_level2, var_k2, var_v); /* Direct call hash_collection#HashMap#[]= on */ } -/* method more_collections#HashMap2#init for (self: HashMap2[Object, Object, nullable Object]) */ -void more_collections__HashMap2__init(val* self) { RET_LABEL:; } -/* method more_collections#HashMap2#init for (self: Object) */ -void VIRTUAL_more_collections__HashMap2__init(val* self) { -more_collections__HashMap2__init(self); +/* method more_collections#HashMap2#[]= for (self: Object, Object, Object, nullable Object) */ +void VIRTUAL_more_collections__HashMap2___91d_93d_61d(val* self, val* p0, val* p1, val* p2) { +more_collections__HashMap2___91d_93d_61d(self, p0, p1, p2); /* Direct call more_collections#HashMap2#[]= on */ RET_LABEL:; } /* method more_collections#HashMap3#level1 for (self: HashMap3[Object, Object, Object, nullable Object]): HashMap[Object, HashMap2[Object, Object, nullable Object]] */ val* more_collections__HashMap3__level1(val* self) { val* var /* : HashMap[Object, HashMap2[Object, Object, nullable Object]] */; val* var1 /* : HashMap[Object, HashMap2[Object, Object, nullable Object]] */; -var1 = self->attrs[COLOR_more_collections__HashMap3___64dlevel1].val; /* @level1 on */ -if (var1 == NULL) { -fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @level1"); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 68); +var1 = self->attrs[COLOR_more_collections__HashMap3___level1].val; /* _level1 on */ +if (unlikely(var1 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1"); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 87); show_backtrace(1); } var = var1; @@ -370,41 +449,20 @@ return var; val* VIRTUAL_more_collections__HashMap3__level1(val* self) { val* var /* : HashMap[Object, HashMap2[Object, Object, nullable Object]] */; val* var1 /* : HashMap[Object, HashMap2[Object, Object, nullable Object]] */; -var1 = more_collections__HashMap3__level1(self); -var = var1; -RET_LABEL:; -return var; -} -/* method more_collections#HashMap3#level1= for (self: HashMap3[Object, Object, Object, nullable Object], HashMap[Object, HashMap2[Object, Object, nullable Object]]) */ -void more_collections__HashMap3__level1_61d(val* self, val* p0) { -short int var /* : Bool */; -int cltype; -int idtype; -const struct type* type_struct; -const char* var_class_name; -/* Covariant cast for argument 0 (level1) isa HashMap[HashMap3#0, HashMap2[HashMap3#1, HashMap3#2, HashMap3#3]] */ -/* isa HashMap[HashMap3#0, HashMap2[HashMap3#1, HashMap3#2, HashMap3#3]] */ -type_struct = self->type->resolution_table->types[COLOR_hash_collection__HashMapmore_collections__HashMap3_FT0more_collections__HashMap2more_collections__HashMap3_FT1more_collections__HashMap3_FT2more_collections__HashMap3_FT3]; -cltype = type_struct->color; -idtype = type_struct->id; -if(cltype >= p0->type->table_size) { -var = 0; -} else { -var = p0->type->type_table[cltype] == idtype; -} -if (!var) { -var_class_name = p0 == NULL ? "null" : p0->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap[HashMap3#0, HashMap2[HashMap3#1, HashMap3#2, HashMap3#3]]", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 68); +val* var3 /* : HashMap[Object, HashMap2[Object, Object, nullable Object]] */; +{ /* Inline more_collections#HashMap3#level1 (self) on */ +var3 = self->attrs[COLOR_more_collections__HashMap3___level1].val; /* _level1 on */ +if (unlikely(var3 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1"); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 87); show_backtrace(1); } -self->attrs[COLOR_more_collections__HashMap3___64dlevel1].val = p0; /* @level1 on */ -RET_LABEL:; +var1 = var3; +RET_LABEL2:(void)0; } -/* method more_collections#HashMap3#level1= for (self: Object, HashMap[Object, HashMap2[Object, Object, nullable Object]]) */ -void VIRTUAL_more_collections__HashMap3__level1_61d(val* self, val* p0) { -more_collections__HashMap3__level1_61d(self, p0); +var = var1; RET_LABEL:; +return var; } /* method more_collections#HashMap3#[] for (self: HashMap3[Object, Object, Object, nullable Object], Object, Object, Object): nullable Object */ val* more_collections__HashMap3___91d_93d(val* self, val* p0, val* p1, val* p2) { @@ -428,15 +486,16 @@ val* var_k1 /* var k1: Object */; val* var_k2 /* var k2: Object */; val* var_k3 /* var k3: Object */; val* var12 /* : HashMap[Object, HashMap2[Object, Object, nullable Object]] */; +val* var14 /* : HashMap[Object, HashMap2[Object, Object, nullable Object]] */; val* var_level1 /* var level1: HashMap[Object, HashMap2[Object, Object, nullable Object]] */; -short int var13 /* : Bool */; -short int var14 /* : Bool */; -val* var15 /* : null */; -val* var16 /* : nullable Object */; +short int var15 /* : Bool */; +short int var16 /* : Bool */; +val* var17 /* : null */; +val* var18 /* : nullable Object */; val* var_level2 /* var level2: HashMap2[Object, Object, nullable Object] */; -val* var17 /* : nullable Object */; -/* Covariant cast for argument 0 (k1) isa HashMap3#0 */ -/* isa HashMap3#0 */ +val* var19 /* : nullable Object */; +/* Covariant cast for argument 0 (k1) isa K1 */ +/* isa K1 */ type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap3_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -445,14 +504,14 @@ 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`", "HashMap3#0", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 70); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K1", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 89); show_backtrace(1); } -/* Covariant cast for argument 1 (k2) isa HashMap3#1 */ -/* isa HashMap3#1 */ +/* Covariant cast for argument 1 (k2) isa K2 */ +/* isa K2 */ type_struct5 = self->type->resolution_table->types[COLOR_more_collections__HashMap3_FT1]; cltype3 = type_struct5->color; idtype4 = type_struct5->id; @@ -461,14 +520,14 @@ 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`", "HashMap3#1", var_class_name6); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 70); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K2", var_class_name6); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 89); show_backtrace(1); } -/* Covariant cast for argument 2 (k3) isa HashMap3#2 */ -/* isa HashMap3#2 */ +/* Covariant cast for argument 2 (k3) isa K3 */ +/* isa K3 */ type_struct10 = self->type->resolution_table->types[COLOR_more_collections__HashMap3_FT2]; cltype8 = type_struct10->color; idtype9 = type_struct10->id; @@ -477,29 +536,46 @@ var7 = 0; } else { var7 = p2->type->type_table[cltype8] == idtype9; } -if (!var7) { +if (unlikely(!var7)) { var_class_name11 = p2 == NULL ? "null" : p2->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap3#2", var_class_name11); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 70); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K3", var_class_name11); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 89); show_backtrace(1); } var_k1 = p0; var_k2 = p1; var_k3 = p2; -var12 = ((val* (*)(val*))(self->class->vft[COLOR_more_collections__HashMap3__level1]))(self) /* level1 on */; +{ +{ /* Inline more_collections#HashMap3#level1 (self) on */ +var14 = self->attrs[COLOR_more_collections__HashMap3___level1].val; /* _level1 on */ +if (unlikely(var14 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1"); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 87); +show_backtrace(1); +} +var12 = var14; +RET_LABEL13:(void)0; +} +} var_level1 = var12; -var13 = ((short int (*)(val*, val*))(var_level1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_level1, var_k1) /* has_key on */; -var14 = !var13; -if (var14){ -var15 = NULL; -var = var15; +{ +var15 = abstract_collection__MapRead__has_key(var_level1, var_k1); +} +var16 = !var15; +if (var16){ +var17 = NULL; +var = var17; goto RET_LABEL; } else { } -var16 = ((val* (*)(val*, val*))(var_level1->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_level1, var_k1) /* [] on */; -var_level2 = var16; -var17 = ((val* (*)(val*, val*, val*))(var_level2->class->vft[COLOR_more_collections__HashMap2___91d_93d]))(var_level2, var_k2, var_k3) /* [] on */; -var = var17; +{ +var18 = hash_collection__HashMap___91d_93d(var_level1, var_k1); +} +var_level2 = var18; +{ +var19 = more_collections__HashMap2___91d_93d(var_level2, var_k2, var_k3); +} +var = var19; goto RET_LABEL; RET_LABEL:; return var; @@ -541,14 +617,15 @@ val* var_k2 /* var k2: Object */; val* var_k3 /* var k3: Object */; val* var_v /* var v: nullable Object */; val* var16 /* : HashMap[Object, HashMap2[Object, Object, nullable Object]] */; +val* var18 /* : HashMap[Object, HashMap2[Object, Object, nullable Object]] */; val* var_level1 /* var level1: HashMap[Object, HashMap2[Object, Object, nullable Object]] */; -short int var17 /* : Bool */; -short int var18 /* : Bool */; -val* var19 /* : HashMap2[Object, Object, nullable Object] */; +short int var19 /* : Bool */; +short int var20 /* : Bool */; +val* var21 /* : HashMap2[Object, Object, nullable Object] */; val* var_level2 /* var level2: HashMap2[Object, Object, nullable Object] */; -val* var20 /* : nullable Object */; -/* Covariant cast for argument 0 (k1) isa HashMap3#0 */ -/* isa HashMap3#0 */ +val* var22 /* : nullable Object */; +/* Covariant cast for argument 0 (k1) isa K1 */ +/* isa K1 */ type_struct = self->type->resolution_table->types[COLOR_more_collections__HashMap3_FT0]; cltype = type_struct->color; idtype = type_struct->id; @@ -557,14 +634,14 @@ 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`", "HashMap3#0", var_class_name); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 80); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K1", var_class_name); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 99); show_backtrace(1); } -/* Covariant cast for argument 1 (k2) isa HashMap3#1 */ -/* isa HashMap3#1 */ +/* Covariant cast for argument 1 (k2) isa K2 */ +/* isa K2 */ type_struct4 = self->type->resolution_table->types[COLOR_more_collections__HashMap3_FT1]; cltype2 = type_struct4->color; idtype3 = type_struct4->id; @@ -573,14 +650,14 @@ var1 = 0; } else { var1 = p1->type->type_table[cltype2] == idtype3; } -if (!var1) { +if (unlikely(!var1)) { var_class_name5 = p1 == NULL ? "null" : p1->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap3#1", var_class_name5); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 80); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K2", var_class_name5); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 99); show_backtrace(1); } -/* Covariant cast for argument 2 (k3) isa HashMap3#2 */ -/* isa HashMap3#2 */ +/* Covariant cast for argument 2 (k3) isa K3 */ +/* isa K3 */ type_struct9 = self->type->resolution_table->types[COLOR_more_collections__HashMap3_FT2]; cltype7 = type_struct9->color; idtype8 = type_struct9->id; @@ -589,14 +666,14 @@ var6 = 0; } else { var6 = p2->type->type_table[cltype7] == idtype8; } -if (!var6) { +if (unlikely(!var6)) { var_class_name10 = p2 == NULL ? "null" : p2->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap3#2", var_class_name10); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 80); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "K3", var_class_name10); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 99); show_backtrace(1); } -/* Covariant cast for argument 3 (v) isa HashMap3#3 */ -/* isa HashMap3#3 */ +/* Covariant cast for argument 3 (v) isa V */ +/* isa V */ type_struct14 = self->type->resolution_table->types[COLOR_more_collections__HashMap3_FT3]; cltype12 = type_struct14->color; idtype13 = type_struct14->id; @@ -610,43 +687,55 @@ var11 = 0; var11 = p3->type->type_table[cltype12] == idtype13; } } -if (!var11) { +if (unlikely(!var11)) { var_class_name15 = p3 == NULL ? "null" : p3->type->name; -fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "HashMap3#3", var_class_name15); -fprintf(stderr, " (%s:%d)\n", "lib/more_collections.nit", 80); +PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "V", var_class_name15); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 99); show_backtrace(1); } var_k1 = p0; var_k2 = p1; var_k3 = p2; var_v = p3; -var16 = ((val* (*)(val*))(self->class->vft[COLOR_more_collections__HashMap3__level1]))(self) /* level1 on */; +{ +{ /* Inline more_collections#HashMap3#level1 (self) on */ +var18 = self->attrs[COLOR_more_collections__HashMap3___level1].val; /* _level1 on */ +if (unlikely(var18 == NULL)) { +PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _level1"); +PRINT_ERROR(" (%s:%d)\n", "../lib/more_collections.nit", 87); +show_backtrace(1); +} +var16 = var18; +RET_LABEL17:(void)0; +} +} var_level1 = var16; -var17 = ((short int (*)(val*, val*))(var_level1->class->vft[COLOR_abstract_collection__MapRead__has_key]))(var_level1, var_k1) /* has_key on */; -var18 = !var17; -if (var18){ -var19 = NEW_more_collections__HashMap2(self->type->resolution_table->types[COLOR_more_collections__HashMap2more_collections__HashMap3_FT1more_collections__HashMap3_FT2more_collections__HashMap3_FT3]); -((void (*)(val*))(var19->class->vft[COLOR_more_collections__HashMap2__init]))(var19) /* init on */; -var_level2 = var19; -((void (*)(val*, val*, val*))(var_level1->class->vft[COLOR_abstract_collection__Map___91d_93d_61d]))(var_level1, var_k1, var_level2) /* []= on */; +{ +var19 = abstract_collection__MapRead__has_key(var_level1, var_k1); +} +var20 = !var19; +if (var20){ +var21 = NEW_more_collections__HashMap2(self->type->resolution_table->types[COLOR_more_collections__HashMap2more_collections__HashMap3_FT1more_collections__HashMap3_FT2more_collections__HashMap3_FT3]); +{ +((void (*)(val*))(var21->class->vft[COLOR_kernel__Object__init]))(var21) /* init on */; +} +var_level2 = var21; +{ +hash_collection__HashMap___91d_93d_61d(var_level1, var_k1, var_level2); /* Direct call hash_collection#HashMap#[]= on */ +} } else { -var20 = ((val* (*)(val*, val*))(var_level1->class->vft[COLOR_abstract_collection__MapRead___91d_93d]))(var_level1, var_k1) /* [] on */; -var_level2 = var20; +{ +var22 = hash_collection__HashMap___91d_93d(var_level1, var_k1); } -((void (*)(val*, val*, val*, val*))(var_level2->class->vft[COLOR_more_collections__HashMap2___91d_93d_61d]))(var_level2, var_k2, var_k3, var_v) /* []= on */; -RET_LABEL:; +var_level2 = var22; } -/* method more_collections#HashMap3#[]= for (self: Object, Object, Object, Object, nullable Object) */ -void VIRTUAL_more_collections__HashMap3___91d_93d_61d(val* self, val* p0, val* p1, val* p2, val* p3) { -more_collections__HashMap3___91d_93d_61d(self, p0, p1, p2, p3); -RET_LABEL:; +{ +more_collections__HashMap2___91d_93d_61d(var_level2, var_k2, var_k3, var_v); /* Direct call more_collections#HashMap2#[]= on */ } -/* method more_collections#HashMap3#init for (self: HashMap3[Object, Object, Object, nullable Object]) */ -void more_collections__HashMap3__init(val* self) { RET_LABEL:; } -/* method more_collections#HashMap3#init for (self: Object) */ -void VIRTUAL_more_collections__HashMap3__init(val* self) { -more_collections__HashMap3__init(self); +/* method more_collections#HashMap3#[]= for (self: Object, Object, Object, Object, nullable Object) */ +void VIRTUAL_more_collections__HashMap3___91d_93d_61d(val* self, val* p0, val* p1, val* p2, val* p3) { +more_collections__HashMap3___91d_93d_61d(self, p0, p1, p2, p3); /* Direct call more_collections#HashMap3#[]= on */ RET_LABEL:; }